From nobody Sat Feb 7 09:59:02 2026 Received: from mail-pl1-f227.google.com (mail-pl1-f227.google.com [209.85.214.227]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8FAB4223708 for ; Tue, 6 Jan 2026 00:58:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767661096; cv=none; b=L3PYjUHb2IqRo+mRuTgTLAbDC7sjUn/O9dPm/3a1bA32AScgCqYSe/KhEMuEpVF75EwcIan3sF196tkzdFKASkxT4py3b/TB/FV4Wh/gClrXSRw2lUfTH1DdcDP1XESKz8kJumkD+S0hcXDiNuLHKy5hOX+QFXXQZBgClqvRFnc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767661096; c=relaxed/simple; bh=W1ZlcN21O1nUErIL2QddLDLpe6HN6kZRnr32eNyAemQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=izr1IL/bPLAgN3PH2syvZmK47JHy2vz6l7d4xiqDmA2qTUFAfVl73TvnZvtSDY48mIRdQPhMYfxhM3xx4AlDq1ERyeOo6dLmkH69hqvv/FVq7G4rylNc6hnNtBnWbRWrqoWDwOYDxsMxw7LDXDhHui7bwJ/QFJTnUTM4MxrxIfk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=AxZuJH8w; arc=none smtp.client-ip=209.85.214.227 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="AxZuJH8w" Received: by mail-pl1-f227.google.com with SMTP id d9443c01a7336-2a0abca9769so713915ad.1 for ; Mon, 05 Jan 2026 16:58:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1767661091; x=1768265891; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Jcv9O2RJUqAVhSh3+8hkyCUs42mqp2c/jNxHfDkP5b8=; b=AxZuJH8wbIWQSNz5LcKsA2GGBvgRfyBJ7Dn9hAwLesIOcKQ3VWosKqTwS8kZh9LbZD OxlO4igUZkWA6OFWW7sVl/f8igL+ej9Ddz9gG4AQahlVVzOFg1DuXUsKegs0oUAl1q5a KCLSaxf78MpvZV/5lb/ZJW7LutOWGxY6COLiVWibjjiu3uuOF42X8fSo/lJfLRaxW/3W 0EGiwEogd1prEzl8M8TB0lAfy2NSWhGQ8kwBHHylb9f+T8i/5zNnXzzefFBTuiOkZJqe Dc5Er+0NLH+WJmGD4M15mK43U0iPKne//IrWWx/PzqWr25ga3eXWvdOLDyXDdVn0WIao 5D+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767661091; x=1768265891; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Jcv9O2RJUqAVhSh3+8hkyCUs42mqp2c/jNxHfDkP5b8=; b=v2YO8JlWUvH2jJqe4w9qf/TnRs+VI73WavwCrU48dU6PMBOQMA1Z+gxm2aSUftO24x tQ1WkJcIbjl2dqe1QTe7f7XHAIceDYW7GExtGUvnPROFY71xjxtayPyMzrPfgnXnk7Ux KP6OiViigE4ZWi7HvaWhhptfNrE5S6rc2o7coYXpVbimhLoLxsTLMmTIVgdg+ama2etS 1d6VNglfrpG6zEA4t44hpSM+qUD4CXM7jflQrxb31naDZ5ev0NAalU8waCIQODDyoDgU VjZQ4ehbGWFCzNVBUFEceLsHszpRrt7a5L9OBn05vgsQ5okQqiY/llzzqoNbxseBE402 Q53w== X-Forwarded-Encrypted: i=1; AJvYcCWIx18ruC6MOL0uIExS3Lv2Jzz/7J5UxPsXT4KijOh66sNXy5LsNCp2tFATT7hk3m9uO4M3XEIGRvv2wvA=@vger.kernel.org X-Gm-Message-State: AOJu0YwvB0zcSnDXwYa2MmLbHWr4GXl1SVVCHRneFWIIm5eLtpS1KH8a hCe1nMnpXJ35O7945F2SW7dB1NwFRlapqM2GgoLQXcWno9o7HB6nrZMkosyVUWOpokkMfnG/kbX yV1Vo6CXpQ/LFwXHG2dMufO7l1H+9HosJCVPh X-Gm-Gg: AY/fxX4N48z93h3IVd1aKTVwMjyg6HuUJ1AHaQj7qHvNvzrST6qsV7LVwKLwJIqh15A HBR4ZbvXD4VKYiQUzxzyXiocOQr9bxjmX0zuBVcjO2ZKQnBsFqub0CvCbmLCVWoCN4OjDLDRqAD Zx40x2NGoJ9AYIFCGr0o+kfEujljIZbhU/CqGussyoUPdVNXUz+tUhM85Pp5ubQJ1+kQspnHoJG cH8NT6WS7oXR/xBAbZ/SVWCMPq3/krQ7W8YTFA81iOZumG/f3In7G0NswcyQpl11WmFa2ZAQm4n M/DkZAV+W8/hQrENSC4fJEFPqpePVLBACI7xvySyMFLT7ovwM7Ao7kkrROwO6P6My898zFIyEhQ Xf+rS+mhc3MnAJuAPKLDx45zKx7hVQElAGQGdaeF96w== X-Google-Smtp-Source: AGHT+IHLQX9+6t9gQS5XXoTmsg+XV0v3ZeAzjuEnNtQMHHDKs8HvmssZR5sNGfICmbVWpPQD/SfXOwS3XIFV X-Received: by 2002:a17:902:c94c:b0:266:914a:2e7a with SMTP id d9443c01a7336-2a3e2e2a904mr9242545ad.6.1767661090901; Mon, 05 Jan 2026 16:58:10 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.128]) by smtp-relay.gmail.com with ESMTPS id d9443c01a7336-2a3e3c6017asm874605ad.27.2026.01.05.16.58.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 16:58:10 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.49.34.222]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 62C8834173B; Mon, 5 Jan 2026 17:58:10 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 5472CE44554; Mon, 5 Jan 2026 17:58:10 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Jens Axboe , Shuah Khan Cc: linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Stanley Zhang , Uday Shankar , "Martin K . Petersen" , Caleb Sander Mateos Subject: [PATCH v3 13/19] selftests: ublk: add utility to get block device metadata size Date: Mon, 5 Jan 2026 17:57:45 -0700 Message-ID: <20260106005752.3784925-14-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20260106005752.3784925-1-csander@purestorage.com> References: <20260106005752.3784925-1-csander@purestorage.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Some block device integrity parameters are available in sysfs, but others are only accessible using the FS_IOC_GETLBMD_CAP ioctl. Add a metadata_size utility program to print out the logical block metadata size, PI offset, and PI size within the metadata. Example output: $ metadata_size /dev/ublkb0 metadata_size: 64 pi_offset: 56 pi_tuple_size: 8 Signed-off-by: Caleb Sander Mateos --- tools/testing/selftests/ublk/Makefile | 4 +-- tools/testing/selftests/ublk/metadata_size.c | 36 ++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 tools/testing/selftests/ublk/metadata_size.c diff --git a/tools/testing/selftests/ublk/Makefile b/tools/testing/selftest= s/ublk/Makefile index 06ba6fde098d..41f776bb86a6 100644 --- a/tools/testing/selftests/ublk/Makefile +++ b/tools/testing/selftests/ublk/Makefile @@ -47,14 +47,14 @@ TEST_PROGS +=3D test_stress_03.sh TEST_PROGS +=3D test_stress_04.sh TEST_PROGS +=3D test_stress_05.sh TEST_PROGS +=3D test_stress_06.sh TEST_PROGS +=3D test_stress_07.sh =20 -TEST_GEN_PROGS_EXTENDED =3D kublk +TEST_GEN_PROGS_EXTENDED =3D kublk metadata_size =20 LOCAL_HDRS +=3D $(wildcard *.h) include ../lib.mk =20 -$(TEST_GEN_PROGS_EXTENDED): $(wildcard *.c) +$(OUTPUT)/kublk: common.c fault_inject.c file_backed.c kublk.c null.c stri= pe.c =20 check: shellcheck -x -f gcc *.sh diff --git a/tools/testing/selftests/ublk/metadata_size.c b/tools/testing/s= elftests/ublk/metadata_size.c new file mode 100644 index 000000000000..76ecddf04d25 --- /dev/null +++ b/tools/testing/selftests/ublk/metadata_size.c @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0 +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + struct logical_block_metadata_cap cap =3D {}; + const char *filename; + int fd; + int result; + + if (argc !=3D 2) { + fprintf(stderr, "Usage: %s BLOCK_DEVICE\n", argv[0]); + return 1; + } + + filename =3D argv[1]; + fd =3D open(filename, O_RDONLY); + if (fd < 0) { + perror(filename); + return 1; + } + + result =3D ioctl(fd, FS_IOC_GETLBMD_CAP, &cap); + if (result < 0) { + perror("ioctl"); + return 1; + } + + printf("metadata_size: %u\n", cap.lbmd_size); + printf("pi_offset: %u\n", cap.lbmd_pi_offset); + printf("pi_tuple_size: %u\n", cap.lbmd_pi_size); + return 0; +} --=20 2.45.2