From nobody Sat Feb 7 10:44:40 2026 Received: from mail-ot1-f97.google.com (mail-ot1-f97.google.com [209.85.210.97]) (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 17D6042A135 for ; Thu, 8 Jan 2026 09:20:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767864018; cv=none; b=gqWnCsRRnYNx6E7QYBWT2XOBtAbDfX5Wfa1Oh5Q5LJKYOnGWaa8ocok6VlGRwaccLbVBZWluciFGWh7uZ6oFuj3M6p0bRhreTyZw0Os9fqZAZFWQYI5PltVATKciFt6nu+QuCameREju6PSoY1nys2sMMOF6sgrTJjeThHEjDxI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767864018; c=relaxed/simple; bh=9OzlcL0OMkkabAm5Bt97yjXJPRZ7G2AIrVYrMNNwlrY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fVzrEyP6qmHKQPF6Xh72uVTTmW9sOF0ESE3uc8VhpTEXyWWb6nl43gD9RfUkpWYICOjdg2G2955on+6E+ISXOZgUhZ9UX84gfUyFXe2OC8eOw1PcnhhDx4zEBdJrG03pekiqA/1rQVJgFHcM6Nmllh0jep+DaptaWmX7Ls3RYjY= 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=SrZ1Hv1q; arc=none smtp.client-ip=209.85.210.97 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="SrZ1Hv1q" Received: by mail-ot1-f97.google.com with SMTP id 46e09a7af769-7c914482db2so493321a34.3 for ; Thu, 08 Jan 2026 01:20:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1767863998; x=1768468798; 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=VUiKvIP8HCqd3i2lEOpd43ZYOvZAdiFALGFMxkbZ3Lg=; b=SrZ1Hv1qHYthTgwMEqzYS4jICA7jn9BHX9xFIFQ8APtlvxobZbpvzDkdlhH6K8548A A90m+jwNC1vuqW8z/e0yxJhrmkfifeHZzcHKTxIOKBJeAQ2FtZepRJELUl5Q1G7kh3Rd eRePO0cb/zgNRQH4l06WiJ4nt9Vtsv84YfAGZPRcaFt7N+D+y/GOtphLCXsZWUwCra24 B1sxlysGhVNeP81LlDxLH6Idt7hyIOLghscpCuuHakiap9gkED5ayQibw0eppeEX8sOI m0BrqV4uhbRpgXhVVFM4cqs16OQU55mDWuk8UI8bc1U84bZAU5UGdcPujf3lK3MsmHf7 Ts6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767863998; x=1768468798; 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=VUiKvIP8HCqd3i2lEOpd43ZYOvZAdiFALGFMxkbZ3Lg=; b=deR6fawpu/LU9h+Tqk8P5bf8bxoMX8rA1xT1w9UMSs9GY+XrLqz1oJ/FeLZd69HzWW skgutqC7UcQYAullydsc/qPB0L0w8A/+I0Te60W6WSQqfsQv9jvvCioduHTdpM5UOYvx 3+unkNmHeRFwefG5GWiZOFiNjpBLKXrcA7yUy/dmOwZbhx2xgSbwkYkqHf64FVUcus25 6+2/uCs5M8dMcINH8fS39sQfG4Pj8EgHoGDVz6phPGrhodmV6UwmAJmYuEYJDNexA2Lq fkV+IWJAPqCrd/RcbeAjucONsy1P5SbJmYMg0J6HlWNnkgAG8gCecp5t1WYF0McmWvSL ybfg== X-Forwarded-Encrypted: i=1; AJvYcCV0eBdGtpslZEV4kpytSuBdA45RXxhtabfV0fgdVeVD/VsTV8uR19fglhdfXsSIKbK7zadGcaYHnWk+S2U=@vger.kernel.org X-Gm-Message-State: AOJu0Yy31zHRn7y1Jf+ivUU7tgI4z3w12o0eXtN6CtuOrzGkfUSjdDYj 02ucONQbT2Ejr7eMEpUO4HsdlGDuvlhF/qDF3oaWg3held0SPHNhEkk0uF8SKG0Pb0ZDj0btmVR OvAX3DurKDKy4pljI+++cGTiD9bu4d2rFLwLNV4HKPgrwVYPOaTyq X-Gm-Gg: AY/fxX5lMrymCc7384dF3O+fMvtq89pZlD2UJS1MEwcbErzjE0g/3f+jG3ZPcDF61XR XhDVTccodAE2Lu96F5uaWSs8/07034KVOPCoY/wfiqOYU56VM2UiWTxutVf9u7cUj33Sn79GESA xlnYID9rc1spz4alFze8Mt/HDmSpkGWOn3o06DM1k8vKik2tSL5Mo/5q2J05WopPsRuGpPv39HS zYkU0CJQYF7lwbV4/9jHmOJ6WTBlLNI6I+N+PNiTm/CZpQAvFPw9X355mU3cupn9Q9uhaaeogux a7+xKtdHWyN1CoHR3LxMZfjLllVGVoqBmq5fQAtws5vwFYrzVCpfH9Dc1fS5eIYPobjQmZ+CxOB sceSxIoOsQobD2QL5utWbNCr7iSQ= X-Google-Smtp-Source: AGHT+IEMYn8qGLSHkK75uAAuzyF1tc5/kRXEa/H/RxheREPQOHr9VMCDWdd15D1Qh/+p630u8i3hRg7auOGU X-Received: by 2002:a05:6870:b3d6:b0:3e8:2323:867f with SMTP id 586e51a60fabf-3ffc094ee9emr1931424fac.2.1767863997870; Thu, 08 Jan 2026 01:19:57 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 586e51a60fabf-3ffa4e3e739sm837429fac.7.2026.01.08.01.19.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Jan 2026 01:19:57 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.112.6.120]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id E12183421AE; Thu, 8 Jan 2026 02:19:56 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id DC198E42F2C; Thu, 8 Jan 2026 02:19:56 -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 v4 13/19] selftests: ublk: add utility to get block device metadata size Date: Thu, 8 Jan 2026 02:19:41 -0700 Message-ID: <20260108091948.1099139-14-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20260108091948.1099139-1-csander@purestorage.com> References: <20260108091948.1099139-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 Reviewed-by: Ming Lei --- tools/testing/selftests/ublk/Makefile | 5 +-- tools/testing/selftests/ublk/metadata_size.c | 36 ++++++++++++++++++++ 2 files changed, 39 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..351ac6438561 100644 --- a/tools/testing/selftests/ublk/Makefile +++ b/tools/testing/selftests/ublk/Makefile @@ -47,14 +47,15 @@ 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 +STANDALONE_UTILS :=3D metadata_size.c =20 LOCAL_HDRS +=3D $(wildcard *.h) include ../lib.mk =20 -$(TEST_GEN_PROGS_EXTENDED): $(wildcard *.c) +$(OUTPUT)/kublk: $(filter-out $(STANDALONE_UTILS),$(wildcard *.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