util-linux/SOURCES/0037-blkid-retport-block-si...

1122 lines
41 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 9e9355c71c031f4d7445c30cb39bd6b33c10ff9d Mon Sep 17 00:00:00 2001
From: Mikulas Patocka <mpatocka@redhat.com>
Date: Mon, 2 Sep 2019 12:28:39 +0200
Subject: [PATCH 37/40] blkid: retport block size of a filesystem
This patch extends libblkid, so that it reports filesystem block size.
When blkid returns a specific number in the BLOCK_SIZE attribute, it
guarantees that all the bios submitted by the filesystem are aligned on
this boundary.
We need this because when we want to enable dm-integrity or dm-writecache
on an existing filesystem, we need to know filesystem block size, so that
dm-integrity or dm-writecache is initialized with matching block size.
We could always use block size 512 for dm-integrity and dm-writecache, but
that would cause metadata overhead and performance degradation. On the
other hand, if we used block size 4096, it would fail if the filesystem
has smaller blocksize.
[kzak@redhat.com: - move vfat BLOCK_SIZE to probing function
- remove unwanted debug fprintf from ZFS prober]
RHEL-8.3: add regression tests updates to teh patch too
Upstream: http://github.com/karelzak/util-linux/commit/cd129b7d2fecd5f2013512936de2db1bf244aa75
Upstream: http://github.com/karelzak/util-linux/commit/e7d318a9dd63c9fae8f07754ce12aa9af4dce089
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1817726
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
---
libblkid/src/superblocks/befs.c | 3 +
libblkid/src/superblocks/btrfs.c | 1 +
libblkid/src/superblocks/exfat.c | 2 +
libblkid/src/superblocks/exfs.c | 4 +
libblkid/src/superblocks/ext.c | 3 +
libblkid/src/superblocks/f2fs.c | 2 +
libblkid/src/superblocks/gfs.c | 1 +
libblkid/src/superblocks/hfs.c | 2 +
libblkid/src/superblocks/hpfs.c | 1 +
libblkid/src/superblocks/iso9660.c | 2 +
libblkid/src/superblocks/jfs.c | 1 +
libblkid/src/superblocks/minix.c | 5 ++
libblkid/src/superblocks/nilfs.c | 3 +
libblkid/src/superblocks/ntfs.c | 2 +
libblkid/src/superblocks/ocfs.c | 3 +
libblkid/src/superblocks/reiserfs.c | 10 ++-
libblkid/src/superblocks/romfs.c | 3 +
libblkid/src/superblocks/squashfs.c | 2 +
libblkid/src/superblocks/superblocks.c | 7 ++
libblkid/src/superblocks/superblocks.h | 2 +
libblkid/src/superblocks/udf.c | 2 +
libblkid/src/superblocks/ufs.c | 5 ++
libblkid/src/superblocks/vfat.c | 2 +
libblkid/src/superblocks/vxfs.c | 18 ++++-
libblkid/src/superblocks/xfs.c | 1 +
libblkid/src/superblocks/zfs.c | 74 ++++++++++++++-----
tests/expected/blkid/low-probe-befs | 1 +
tests/expected/blkid/low-probe-exfat | 1 +
tests/expected/blkid/low-probe-ext2 | 1 +
tests/expected/blkid/low-probe-ext3 | 1 +
tests/expected/blkid/low-probe-f2fs | 1 +
tests/expected/blkid/low-probe-fat | 1 +
tests/expected/blkid/low-probe-fat16_noheads | 1 +
.../blkid/low-probe-fat32_cp850_O_tilde | 1 +
.../expected/blkid/low-probe-fat32_label_64MB | 1 +
tests/expected/blkid/low-probe-gfs2 | 1 +
tests/expected/blkid/low-probe-hfsplus | 1 +
tests/expected/blkid/low-probe-hpfs | 1 +
tests/expected/blkid/low-probe-iso | 1 +
tests/expected/blkid/low-probe-iso-joliet | 1 +
tests/expected/blkid/low-probe-iso-rr-joliet | 1 +
tests/expected/blkid/low-probe-jbd | 1 +
tests/expected/blkid/low-probe-jfs | 1 +
tests/expected/blkid/low-probe-minix-BE | 1 +
tests/expected/blkid/low-probe-minix-LE | 1 +
tests/expected/blkid/low-probe-nilfs2 | 1 +
tests/expected/blkid/low-probe-ntfs | 1 +
tests/expected/blkid/low-probe-ocfs2 | 1 +
tests/expected/blkid/low-probe-reiser3 | 1 +
tests/expected/blkid/low-probe-reiser4 | 1 +
tests/expected/blkid/low-probe-romfs | 1 +
tests/expected/blkid/low-probe-small-fat32 | 1 +
tests/expected/blkid/low-probe-udf | 1 +
.../blkid/low-probe-udf-bdr-2.60-nero | 1 +
.../blkid/low-probe-udf-cd-mkudfiso-20100208 | 1 +
tests/expected/blkid/low-probe-udf-cd-nero-6 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.0.0-1 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.0.0-2 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.3-1 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.3-2 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.3-3 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.3-4 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.3-5 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.3-6 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.3-7 | 1 +
.../blkid/low-probe-udf-hdd-mkudffs-1.3-8 | 1 +
.../blkid/low-probe-udf-hdd-udfclient-0.7.5 | 1 +
.../blkid/low-probe-udf-hdd-udfclient-0.7.7 | 1 +
tests/expected/blkid/low-probe-udf-hdd-win7 | 1 +
tests/expected/blkid/low-probe-ufs | 1 +
tests/expected/blkid/low-probe-xfs | 1 +
tests/expected/blkid/low-probe-zfs | 1 +
72 files changed, 186 insertions(+), 21 deletions(-)
diff --git a/libblkid/src/superblocks/befs.c b/libblkid/src/superblocks/befs.c
index 14af97217..516d80093 100644
--- a/libblkid/src/superblocks/befs.c
+++ b/libblkid/src/superblocks/befs.c
@@ -519,6 +519,9 @@ static int probe_befs(blkid_probe pr, const struct blkid_idmag *mag)
blkid_probe_sprintf_uuid(pr, (unsigned char *) &volume_id,
sizeof(volume_id), "%016" PRIx64,
FS64_TO_CPU(volume_id, fs_le));
+
+ blkid_probe_set_block_size(pr, block_size);
+
return BLKID_PROBE_OK;
}
diff --git a/libblkid/src/superblocks/btrfs.c b/libblkid/src/superblocks/btrfs.c
index 7ce3dfff8..f0fde700d 100644
--- a/libblkid/src/superblocks/btrfs.c
+++ b/libblkid/src/superblocks/btrfs.c
@@ -74,6 +74,7 @@ static int probe_btrfs(blkid_probe pr, const struct blkid_idmag *mag)
blkid_probe_set_uuid(pr, bfs->fsid);
blkid_probe_set_uuid_as(pr, bfs->dev_item.uuid, "UUID_SUB");
+ blkid_probe_set_block_size(pr, le32_to_cpu(bfs->sectorsize));
return 0;
}
diff --git a/libblkid/src/superblocks/exfat.c b/libblkid/src/superblocks/exfat.c
index 4bf92eac8..7622320d3 100644
--- a/libblkid/src/superblocks/exfat.c
+++ b/libblkid/src/superblocks/exfat.c
@@ -137,6 +137,8 @@ static int probe_exfat(blkid_probe pr, const struct blkid_idmag *mag)
blkid_probe_sprintf_version(pr, "%u.%u",
sb->version.vermaj, sb->version.vermin);
+ blkid_probe_set_block_size(pr, BLOCK_SIZE(sb));
+
return BLKID_PROBE_OK;
}
diff --git a/libblkid/src/superblocks/exfs.c b/libblkid/src/superblocks/exfs.c
index f717b6530..e0eafafc6 100644
--- a/libblkid/src/superblocks/exfs.c
+++ b/libblkid/src/superblocks/exfs.c
@@ -170,7 +170,11 @@ static int probe_exfs(blkid_probe pr, const struct blkid_idmag *mag)
if (*xs->sb_fname != '\0')
blkid_probe_set_label(pr, (unsigned char *) xs->sb_fname,
sizeof(xs->sb_fname));
+
blkid_probe_set_uuid(pr, xs->sb_uuid);
+
+ blkid_probe_set_block_size(pr, be32_to_cpu(xs->sb_blocksize));
+
return 0;
}
diff --git a/libblkid/src/superblocks/ext.c b/libblkid/src/superblocks/ext.c
index caf82c171..3870522fa 100644
--- a/libblkid/src/superblocks/ext.c
+++ b/libblkid/src/superblocks/ext.c
@@ -187,6 +187,9 @@ static void ext_get_info(blkid_probe pr, int ver, struct ext2_super_block *es)
blkid_probe_sprintf_version(pr, "%u.%u",
le32_to_cpu(es->s_rev_level),
le16_to_cpu(es->s_minor_rev_level));
+
+ if (le32_to_cpu(es->s_log_block_size) < 32)
+ blkid_probe_set_block_size(pr, 1024U << le32_to_cpu(es->s_log_block_size));
}
diff --git a/libblkid/src/superblocks/f2fs.c b/libblkid/src/superblocks/f2fs.c
index d1bf25a3a..255ef6384 100644
--- a/libblkid/src/superblocks/f2fs.c
+++ b/libblkid/src/superblocks/f2fs.c
@@ -78,6 +78,8 @@ static int probe_f2fs(blkid_probe pr, const struct blkid_idmag *mag)
blkid_probe_set_uuid(pr, sb->uuid);
blkid_probe_sprintf_version(pr, "%u.%u", vermaj, vermin);
+ if (le32_to_cpu(sb->log_blocksize) < 32)
+ blkid_probe_set_block_size(pr, 1U << le32_to_cpu(sb->log_blocksize));
return 0;
}
diff --git a/libblkid/src/superblocks/gfs.c b/libblkid/src/superblocks/gfs.c
index ea6036cb7..e22a6a3f9 100644
--- a/libblkid/src/superblocks/gfs.c
+++ b/libblkid/src/superblocks/gfs.c
@@ -98,6 +98,7 @@ static int probe_gfs2(blkid_probe pr, const struct blkid_idmag *mag)
sizeof(sbd->sb_locktable));
blkid_probe_set_uuid(pr, sbd->sb_uuid);
blkid_probe_set_version(pr, "1");
+ blkid_probe_set_block_size(pr, be32_to_cpu(sbd->sb_bsize));
return 0;
}
return 1;
diff --git a/libblkid/src/superblocks/hfs.c b/libblkid/src/superblocks/hfs.c
index 7b0117405..185c42c92 100644
--- a/libblkid/src/superblocks/hfs.c
+++ b/libblkid/src/superblocks/hfs.c
@@ -241,6 +241,8 @@ static int probe_hfsplus(blkid_probe pr, const struct blkid_idmag *mag)
if (blocksize < HFSPLUS_SECTOR_SIZE)
return 1;
+ blkid_probe_set_block_size(pr, blocksize);
+
memcpy(extents, hfsplus->cat_file.extents, sizeof(extents));
cat_block = be32_to_cpu(extents[0].start_block);
diff --git a/libblkid/src/superblocks/hpfs.c b/libblkid/src/superblocks/hpfs.c
index 0565d370c..dcf4520b6 100644
--- a/libblkid/src/superblocks/hpfs.c
+++ b/libblkid/src/superblocks/hpfs.c
@@ -99,6 +99,7 @@ static int probe_hpfs(blkid_probe pr, const struct blkid_idmag *mag)
hbb->vol_serno[1], hbb->vol_serno[0]);
}
blkid_probe_sprintf_version(pr, "%u", version);
+ blkid_probe_set_block_size(pr, 512);
return 0;
}
diff --git a/libblkid/src/superblocks/iso9660.c b/libblkid/src/superblocks/iso9660.c
index 7356754ee..8dc2e5394 100644
--- a/libblkid/src/superblocks/iso9660.c
+++ b/libblkid/src/superblocks/iso9660.c
@@ -182,6 +182,8 @@ static int probe_iso9660(blkid_probe pr, const struct blkid_idmag *mag)
memcpy(label, iso->volume_id, sizeof(label));
+ blkid_probe_set_block_size(pr, 2048);
+
if (!is_str_empty(iso->system_id, sizeof(iso->system_id)))
blkid_probe_set_id_label(pr, "SYSTEM_ID",
iso->system_id, sizeof(iso->system_id));
diff --git a/libblkid/src/superblocks/jfs.c b/libblkid/src/superblocks/jfs.c
index 0f956ef00..3de8c2e3d 100644
--- a/libblkid/src/superblocks/jfs.c
+++ b/libblkid/src/superblocks/jfs.c
@@ -52,6 +52,7 @@ static int probe_jfs(blkid_probe pr, const struct blkid_idmag *mag)
if (*((char *) js->js_label) != '\0')
blkid_probe_set_label(pr, js->js_label, sizeof(js->js_label));
blkid_probe_set_uuid(pr, js->js_uuid);
+ blkid_probe_set_block_size(pr, le32_to_cpu(js->js_bsize));
return 0;
}
diff --git a/libblkid/src/superblocks/minix.c b/libblkid/src/superblocks/minix.c
index c47378d73..674a1f17b 100644
--- a/libblkid/src/superblocks/minix.c
+++ b/libblkid/src/superblocks/minix.c
@@ -80,6 +80,7 @@ static int probe_minix(blkid_probe pr,
unsigned long zones, ninodes, imaps, zmaps;
off_t firstz;
size_t zone_size;
+ unsigned block_size;
data = blkid_probe_get_buffer(pr, 1024,
max(sizeof(struct minix_super_block),
@@ -103,6 +104,7 @@ static int probe_minix(blkid_probe pr,
zmaps = minix_swab16(swabme, sb->s_zmap_blocks);
firstz = minix_swab16(swabme, sb->s_firstdatazone);
zone_size = sb->s_log_zone_size;
+ block_size = 1024;
break;
}
case 3: {
@@ -114,6 +116,8 @@ static int probe_minix(blkid_probe pr,
zmaps = minix_swab16(swabme, sb->s_zmap_blocks);
firstz = minix_swab16(swabme, sb->s_firstdatazone);
zone_size = sb->s_log_zone_size;
+ block_size = minix_swab16(swabme, sb->s_blocksize);
+
break;
}
default:
@@ -143,6 +147,7 @@ static int probe_minix(blkid_probe pr,
return 1;
blkid_probe_sprintf_version(pr, "%d", version);
+ blkid_probe_set_block_size(pr, block_size);
return 0;
}
diff --git a/libblkid/src/superblocks/nilfs.c b/libblkid/src/superblocks/nilfs.c
index 95538ef7b..423bd1ac4 100644
--- a/libblkid/src/superblocks/nilfs.c
+++ b/libblkid/src/superblocks/nilfs.c
@@ -157,6 +157,9 @@ static int probe_nilfs2(blkid_probe pr,
(unsigned char *) &sb->s_magic))
return 1;
+ if (le32_to_cpu(sb->s_log_block_size) < 32)
+ blkid_probe_set_block_size(pr, 1024U << le32_to_cpu(sb->s_log_block_size));
+
return 0;
}
diff --git a/libblkid/src/superblocks/ntfs.c b/libblkid/src/superblocks/ntfs.c
index 32973095b..5bfebbb78 100644
--- a/libblkid/src/superblocks/ntfs.c
+++ b/libblkid/src/superblocks/ntfs.c
@@ -206,6 +206,8 @@ static int probe_ntfs(blkid_probe pr, const struct blkid_idmag *mag)
attr_off += attr_len;
}
+ blkid_probe_set_block_size(pr, sector_size);
+
blkid_probe_sprintf_uuid(pr,
(unsigned char *) &ns->volume_serial,
sizeof(ns->volume_serial),
diff --git a/libblkid/src/superblocks/ocfs.c b/libblkid/src/superblocks/ocfs.c
index 3fe199d3f..463ed7bcf 100644
--- a/libblkid/src/superblocks/ocfs.c
+++ b/libblkid/src/superblocks/ocfs.c
@@ -153,6 +153,9 @@ static int probe_ocfs2(blkid_probe pr, const struct blkid_idmag *mag)
le16_to_cpu(osb->s_major_rev_level),
le16_to_cpu(osb->s_minor_rev_level));
+ if (le32_to_cpu(osb->s_blocksize_bits) < 32)
+ blkid_probe_set_block_size(pr, 1U << le32_to_cpu(osb->s_blocksize_bits));
+
return 0;
}
diff --git a/libblkid/src/superblocks/reiserfs.c b/libblkid/src/superblocks/reiserfs.c
index edbaaa946..6c5e5b0d7 100644
--- a/libblkid/src/superblocks/reiserfs.c
+++ b/libblkid/src/superblocks/reiserfs.c
@@ -32,7 +32,8 @@ struct reiserfs_super_block {
struct reiser4_super_block {
unsigned char rs4_magic[16];
- uint16_t rs4_dummy[2];
+ uint8_t rs4_dummy[3];
+ uint8_t rs4_blocksize;
unsigned char rs4_uuid[16];
unsigned char rs4_label[16];
uint64_t rs4_dummy2;
@@ -73,22 +74,29 @@ static int probe_reiser(blkid_probe pr, const struct blkid_idmag *mag)
else
blkid_probe_set_version(pr, "3.5");
+ blkid_probe_set_block_size(pr, blocksize);
+
return 0;
}
static int probe_reiser4(blkid_probe pr, const struct blkid_idmag *mag)
{
struct reiser4_super_block *rs4;
+ unsigned int blocksize;
rs4 = blkid_probe_get_sb(pr, mag, struct reiser4_super_block);
if (!rs4)
return errno ? -errno : 1;
+ blocksize = rs4->rs4_blocksize * 256;
+
if (*rs4->rs4_label)
blkid_probe_set_label(pr, rs4->rs4_label, sizeof(rs4->rs4_label));
blkid_probe_set_uuid(pr, rs4->rs4_uuid);
blkid_probe_set_version(pr, "4");
+ blkid_probe_set_block_size(pr, blocksize);
+
return 0;
}
diff --git a/libblkid/src/superblocks/romfs.c b/libblkid/src/superblocks/romfs.c
index f3e9f8b05..1c2ac4315 100644
--- a/libblkid/src/superblocks/romfs.c
+++ b/libblkid/src/superblocks/romfs.c
@@ -34,6 +34,9 @@ static int probe_romfs(blkid_probe pr, const struct blkid_idmag *mag)
if (*((char *) ros->ros_volume) != '\0')
blkid_probe_set_label(pr, ros->ros_volume,
sizeof(ros->ros_volume));
+
+ blkid_probe_set_block_size(pr, 1024);
+
return 0;
}
diff --git a/libblkid/src/superblocks/squashfs.c b/libblkid/src/superblocks/squashfs.c
index 7364beca2..4db842493 100644
--- a/libblkid/src/superblocks/squashfs.c
+++ b/libblkid/src/superblocks/squashfs.c
@@ -71,6 +71,8 @@ static int probe_squashfs3(blkid_probe pr, const struct blkid_idmag *mag)
blkid_probe_sprintf_version(pr, "%u.%u", vermaj, vermin);
+ blkid_probe_set_block_size(pr, 1024);
+
return 0;
}
diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c
index 6dfd2be64..a86a055fe 100644
--- a/libblkid/src/superblocks/superblocks.c
+++ b/libblkid/src/superblocks/superblocks.c
@@ -74,6 +74,8 @@
* @APPLICATION_ID: ISO9660 application identifier
*
* @BOOT_SYSTEM_ID: ISO9660 boot system identifier
+ *
+ * @BLOCK_SIZE: block size
*/
static int superblocks_probe(blkid_probe pr, struct blkid_chain *chn);
@@ -550,6 +552,11 @@ int blkid_probe_sprintf_version(blkid_probe pr, const char *fmt, ...)
return rc;
}
+int blkid_probe_set_block_size(blkid_probe pr, unsigned block_size)
+{
+ return blkid_probe_sprintf_value(pr, "BLOCK_SIZE", "%u", block_size);
+}
+
static int blkid_probe_set_usage(blkid_probe pr, int usage)
{
struct blkid_chain *chn = blkid_probe_get_chain(pr);
diff --git a/libblkid/src/superblocks/superblocks.h b/libblkid/src/superblocks/superblocks.h
index d677f85bc..d09046cfd 100644
--- a/libblkid/src/superblocks/superblocks.h
+++ b/libblkid/src/superblocks/superblocks.h
@@ -106,6 +106,8 @@ extern int blkid_probe_set_id_label(blkid_probe pr, const char *name,
extern int blkid_probe_set_utf8_id_label(blkid_probe pr, const char *name,
unsigned char *data, size_t len, int enc);
+int blkid_probe_set_block_size(blkid_probe pr, unsigned block_size);
+
extern int blkid_probe_is_bitlocker(blkid_probe pr);
#endif /* _BLKID_SUPERBLOCKS_H */
diff --git a/libblkid/src/superblocks/udf.c b/libblkid/src/superblocks/udf.c
index 97e79dab0..1ab8a1e26 100644
--- a/libblkid/src/superblocks/udf.c
+++ b/libblkid/src/superblocks/udf.c
@@ -464,6 +464,8 @@ real_blksz:
* E.g. number 0x0150 is revision 1.50, number 0x0201 is revision 2.01. */
blkid_probe_sprintf_version(pr, "%x.%02x", (unsigned int)(udf_rev >> 8), (unsigned int)(udf_rev & 0xFF));
+ blkid_probe_set_block_size(pr, bs);
+
return 0;
}
diff --git a/libblkid/src/superblocks/ufs.c b/libblkid/src/superblocks/ufs.c
index 6ef2acddc..7a8396c1c 100644
--- a/libblkid/src/superblocks/ufs.c
+++ b/libblkid/src/superblocks/ufs.c
@@ -233,6 +233,11 @@ found:
(unsigned char *) &ufs->fs_magic))
return 1;
+ if (!is_be)
+ blkid_probe_set_block_size(pr, le32_to_cpu(ufs->fs_fsize));
+ else
+ blkid_probe_set_block_size(pr, be32_to_cpu(ufs->fs_fsize));
+
return 0;
}
diff --git a/libblkid/src/superblocks/vfat.c b/libblkid/src/superblocks/vfat.c
index 29b3c501c..4e93a0e41 100644
--- a/libblkid/src/superblocks/vfat.c
+++ b/libblkid/src/superblocks/vfat.c
@@ -436,6 +436,8 @@ static int probe_vfat(blkid_probe pr, const struct blkid_idmag *mag)
if (version)
blkid_probe_set_version(pr, version);
+ blkid_probe_set_block_size(pr, sector_size);
+
return 0;
}
diff --git a/libblkid/src/superblocks/vxfs.c b/libblkid/src/superblocks/vxfs.c
index 19d284cbf..d9d26adcf 100644
--- a/libblkid/src/superblocks/vxfs.c
+++ b/libblkid/src/superblocks/vxfs.c
@@ -12,6 +12,15 @@
struct vxfs_super_block {
uint32_t vs_magic;
int32_t vs_version;
+ uint32_t vs_ctime;
+ uint32_t vs_cutime;
+ uint32_t __unused1;
+ uint32_t __unused2;
+ uint32_t vs_old_logstart;
+ uint32_t vs_old_logend;
+ uint32_t vs_bsize;
+ uint32_t vs_size;
+ uint32_t vs_dsize;
};
static int probe_vxfs(blkid_probe pr, const struct blkid_idmag *mag)
@@ -22,7 +31,13 @@ static int probe_vxfs(blkid_probe pr, const struct blkid_idmag *mag)
if (!vxs)
return errno ? -errno : 1;
- blkid_probe_sprintf_version(pr, "%u", (unsigned int) vxs->vs_version);
+ if (le32_to_cpu(vxs->vs_magic) == 0xa501fcf5) {
+ blkid_probe_sprintf_version(pr, "%u", (unsigned int)le32_to_cpu(vxs->vs_version));
+ blkid_probe_set_block_size(pr, le32_to_cpu(vxs->vs_bsize));
+ } else if (be32_to_cpu(vxs->vs_magic) == 0xa501fcf5) {
+ blkid_probe_sprintf_version(pr, "%u", (unsigned int)be32_to_cpu(vxs->vs_version));
+ blkid_probe_set_block_size(pr, be32_to_cpu(vxs->vs_bsize));
+ }
return 0;
}
@@ -35,6 +50,7 @@ const struct blkid_idinfo vxfs_idinfo =
.magics =
{
{ .magic = "\365\374\001\245", .len = 4, .kboff = 1 },
+ { .magic = "\245\001\374\365", .len = 4, .kboff = 8 },
{ NULL }
}
};
diff --git a/libblkid/src/superblocks/xfs.c b/libblkid/src/superblocks/xfs.c
index 99848f900..eb513ac3e 100644
--- a/libblkid/src/superblocks/xfs.c
+++ b/libblkid/src/superblocks/xfs.c
@@ -173,6 +173,7 @@ static int probe_xfs(blkid_probe pr, const struct blkid_idmag *mag)
blkid_probe_set_label(pr, (unsigned char *) xs->sb_fname,
sizeof(xs->sb_fname));
blkid_probe_set_uuid(pr, xs->sb_uuid);
+ blkid_probe_set_block_size(pr, xs->sb_sectsize * 256);
return 0;
}
diff --git a/libblkid/src/superblocks/zfs.c b/libblkid/src/superblocks/zfs.c
index ec3e1c5bf..cc779c02a 100644
--- a/libblkid/src/superblocks/zfs.c
+++ b/libblkid/src/superblocks/zfs.c
@@ -37,6 +37,7 @@ struct zfs_uberblock {
#define DATA_TYPE_UINT64 8
#define DATA_TYPE_STRING 9
+#define DATA_TYPE_DIRECTORY 19
struct nvpair {
uint32_t nvp_size;
@@ -60,32 +61,37 @@ struct nvuint64 {
uint64_t nvu_value;
};
+struct nvdirectory {
+ uint32_t nvd_type;
+ uint32_t nvd_unknown[3];
+};
+
struct nvlist {
uint32_t nvl_unknown[3];
struct nvpair nvl_nvpair;
};
-static int zfs_process_value(blkid_probe pr, char *name, size_t namelen,
- void *value, size_t max_value_size)
+static void zfs_process_value(blkid_probe pr, char *name, size_t namelen,
+ void *value, size_t max_value_size, unsigned directory_level)
{
if (strncmp(name, "name", namelen) == 0 &&
- sizeof(struct nvstring) <= max_value_size) {
+ sizeof(struct nvstring) <= max_value_size &&
+ !directory_level) {
struct nvstring *nvs = value;
uint32_t nvs_type = be32_to_cpu(nvs->nvs_type);
uint32_t nvs_strlen = be32_to_cpu(nvs->nvs_strlen);
if (nvs_type != DATA_TYPE_STRING ||
(uint64_t)nvs_strlen + sizeof(*nvs) > max_value_size)
- return 0;
+ return;
DBG(LOWPROBE, ul_debug("nvstring: type %u string %*s\n",
nvs_type, nvs_strlen, nvs->nvs_string));
blkid_probe_set_label(pr, nvs->nvs_string, nvs_strlen);
-
- return 1;
} else if (strncmp(name, "guid", namelen) == 0 &&
- sizeof(struct nvuint64) <= max_value_size) {
+ sizeof(struct nvuint64) <= max_value_size &&
+ !directory_level) {
struct nvuint64 *nvu = value;
uint32_t nvu_type = be32_to_cpu(nvu->nvu_type);
uint64_t nvu_value;
@@ -94,17 +100,16 @@ static int zfs_process_value(blkid_probe pr, char *name, size_t namelen,
nvu_value = be64_to_cpu(nvu_value);
if (nvu_type != DATA_TYPE_UINT64)
- return 0;
+ return;
DBG(LOWPROBE, ul_debug("nvuint64: type %u value %"PRIu64"\n",
nvu_type, nvu_value));
blkid_probe_sprintf_value(pr, "UUID_SUB",
"%"PRIu64, nvu_value);
-
- return 1;
} else if (strncmp(name, "pool_guid", namelen) == 0 &&
- sizeof(struct nvuint64) <= max_value_size) {
+ sizeof(struct nvuint64) <= max_value_size &&
+ !directory_level) {
struct nvuint64 *nvu = value;
uint32_t nvu_type = be32_to_cpu(nvu->nvu_type);
uint64_t nvu_value;
@@ -113,7 +118,7 @@ static int zfs_process_value(blkid_probe pr, char *name, size_t namelen,
nvu_value = be64_to_cpu(nvu_value);
if (nvu_type != DATA_TYPE_UINT64)
- return 0;
+ return;
DBG(LOWPROBE, ul_debug("nvuint64: type %u value %"PRIu64"\n",
nvu_type, nvu_value));
@@ -121,10 +126,21 @@ static int zfs_process_value(blkid_probe pr, char *name, size_t namelen,
blkid_probe_sprintf_uuid(pr, (unsigned char *) &nvu_value,
sizeof(nvu_value),
"%"PRIu64, nvu_value);
- return 1;
- }
+ } else if (strncmp(name, "ashift", namelen) == 0 &&
+ sizeof(struct nvuint64) <= max_value_size) {
+ struct nvuint64 *nvu = value;
+ uint32_t nvu_type = be32_to_cpu(nvu->nvu_type);
+ uint64_t nvu_value;
- return 0;
+ memcpy(&nvu_value, &nvu->nvu_value, sizeof(nvu_value));
+ nvu_value = be64_to_cpu(nvu_value);
+
+ if (nvu_type != DATA_TYPE_UINT64)
+ return;
+
+ if (nvu_value < 32)
+ blkid_probe_set_block_size(pr, 1U << nvu_value);
+ }
}
static void zfs_extract_guid_name(blkid_probe pr, loff_t offset)
@@ -133,7 +149,7 @@ static void zfs_extract_guid_name(blkid_probe pr, loff_t offset)
struct nvlist *nvl;
struct nvpair *nvp;
size_t left = 4096;
- int found = 0;
+ unsigned directory_level = 0;
offset = (offset & ~(VDEV_LABEL_SIZE - 1)) + VDEV_LABEL_NVPAIR;
@@ -152,13 +168,21 @@ static void zfs_extract_guid_name(blkid_probe pr, loff_t offset)
nvp = &nvl->nvl_nvpair;
left -= (unsigned char *)nvp - p; /* Already used up 12 bytes */
- while (left > sizeof(*nvp) && nvp->nvp_size != 0 && found < 3) {
+ while (left > sizeof(*nvp)) {
uint32_t nvp_size = be32_to_cpu(nvp->nvp_size);
uint32_t nvp_namelen = be32_to_cpu(nvp->nvp_namelen);
uint64_t namesize = ((uint64_t)nvp_namelen + 3) & ~3;
size_t max_value_size;
void *value;
+ if (!nvp->nvp_size) {
+ if (!directory_level)
+ break;
+ directory_level--;
+ nvp_size = 8;
+ goto cont;
+ }
+
DBG(LOWPROBE, ul_debug("left %zd nvp_size %u\n",
left, nvp_size));
@@ -174,9 +198,21 @@ static void zfs_extract_guid_name(blkid_probe pr, loff_t offset)
max_value_size = nvp_size - (namesize + sizeof(*nvp));
value = nvp->nvp_name + namesize;
- found += zfs_process_value(pr, nvp->nvp_name, nvp_namelen,
- value, max_value_size);
+ if (sizeof(struct nvdirectory) <= max_value_size) {
+ struct nvdirectory *nvu = value;
+ if (be32_to_cpu(nvu->nvd_type) == DATA_TYPE_DIRECTORY) {
+ nvp_size = sizeof(*nvp) + namesize + sizeof(*nvu);
+ directory_level++;
+ goto cont;
+ }
+ }
+
+ zfs_process_value(pr, nvp->nvp_name, nvp_namelen,
+ value, max_value_size, directory_level);
+cont:
+ if (nvp_size > left)
+ break;
left -= nvp_size;
nvp = (struct nvpair *)((char *)nvp + nvp_size);
diff --git a/tests/expected/blkid/low-probe-befs b/tests/expected/blkid/low-probe-befs
index b7f25cdd2..5717049d2 100644
--- a/tests/expected/blkid/low-probe-befs
+++ b/tests/expected/blkid/low-probe-befs
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=1024
ID_FS_LABEL=befs_test
ID_FS_LABEL_ENC=befs_test
ID_FS_TYPE=befs
diff --git a/tests/expected/blkid/low-probe-exfat b/tests/expected/blkid/low-probe-exfat
index b9defbdf9..59cb35225 100644
--- a/tests/expected/blkid/low-probe-exfat
+++ b/tests/expected/blkid/low-probe-exfat
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=Новый_том
ID_FS_LABEL_ENC=Новый\x20том
ID_FS_TYPE=exfat
diff --git a/tests/expected/blkid/low-probe-ext2 b/tests/expected/blkid/low-probe-ext2
index c70b85698..087da97a4 100644
--- a/tests/expected/blkid/low-probe-ext2
+++ b/tests/expected/blkid/low-probe-ext2
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=1024
ID_FS_LABEL=test-ext2
ID_FS_LABEL_ENC=test-ext2
ID_FS_TYPE=ext2
diff --git a/tests/expected/blkid/low-probe-ext3 b/tests/expected/blkid/low-probe-ext3
index 4bac43f57..8684884c1 100644
--- a/tests/expected/blkid/low-probe-ext3
+++ b/tests/expected/blkid/low-probe-ext3
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=1024
ID_FS_LABEL=test-ext3
ID_FS_LABEL_ENC=test-ext3
ID_FS_SEC_TYPE=ext2
diff --git a/tests/expected/blkid/low-probe-f2fs b/tests/expected/blkid/low-probe-f2fs
index ee328640e..272905125 100644
--- a/tests/expected/blkid/low-probe-f2fs
+++ b/tests/expected/blkid/low-probe-f2fs
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=4096
ID_FS_LABEL=test-f2fs
ID_FS_LABEL_ENC=test-f2fs
ID_FS_TYPE=f2fs
diff --git a/tests/expected/blkid/low-probe-fat b/tests/expected/blkid/low-probe-fat
index 420121117..75f99434d 100644
--- a/tests/expected/blkid/low-probe-fat
+++ b/tests/expected/blkid/low-probe-fat
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=TEST-FAT
ID_FS_LABEL_ENC=TEST-FAT
ID_FS_SEC_TYPE=msdos
diff --git a/tests/expected/blkid/low-probe-fat16_noheads b/tests/expected/blkid/low-probe-fat16_noheads
index ba47078d2..ff9ef2e69 100644
--- a/tests/expected/blkid/low-probe-fat16_noheads
+++ b/tests/expected/blkid/low-probe-fat16_noheads
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=VTech_1070
ID_FS_LABEL_ENC=VTech\x201070
ID_FS_SEC_TYPE=msdos
diff --git a/tests/expected/blkid/low-probe-fat32_cp850_O_tilde b/tests/expected/blkid/low-probe-fat32_cp850_O_tilde
index 096bcbf2c..9ce58e3d9 100644
--- a/tests/expected/blkid/low-probe-fat32_cp850_O_tilde
+++ b/tests/expected/blkid/low-probe-fat32_cp850_O_tilde
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=___
ID_FS_LABEL_ENC=\xe5\xe5\xe5
ID_FS_TYPE=vfat
diff --git a/tests/expected/blkid/low-probe-fat32_label_64MB b/tests/expected/blkid/low-probe-fat32_label_64MB
index 1179490cf..4a99f8ff6 100644
--- a/tests/expected/blkid/low-probe-fat32_label_64MB
+++ b/tests/expected/blkid/low-probe-fat32_label_64MB
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=BINGO
ID_FS_LABEL_ENC=BINGO
ID_FS_TYPE=vfat
diff --git a/tests/expected/blkid/low-probe-gfs2 b/tests/expected/blkid/low-probe-gfs2
index cd5a664b4..f04529bc0 100644
--- a/tests/expected/blkid/low-probe-gfs2
+++ b/tests/expected/blkid/low-probe-gfs2
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=4096
ID_FS_LABEL=mycluster:mygfs2
ID_FS_LABEL_ENC=mycluster:mygfs2
ID_FS_TYPE=gfs2
diff --git a/tests/expected/blkid/low-probe-hfsplus b/tests/expected/blkid/low-probe-hfsplus
index f54b59f11..cc351a042 100644
--- a/tests/expected/blkid/low-probe-hfsplus
+++ b/tests/expected/blkid/low-probe-hfsplus
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=4096
ID_FS_LABEL=123456789ABCDE
ID_FS_LABEL_ENC=123456789ABCDE
ID_FS_TYPE=hfsplus
diff --git a/tests/expected/blkid/low-probe-hpfs b/tests/expected/blkid/low-probe-hpfs
index 47ae1af28..7e4a12b97 100644
--- a/tests/expected/blkid/low-probe-hpfs
+++ b/tests/expected/blkid/low-probe-hpfs
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=P01_S16A
ID_FS_LABEL_ENC=P01\x20S16A
ID_FS_TYPE=hpfs
diff --git a/tests/expected/blkid/low-probe-iso b/tests/expected/blkid/low-probe-iso
index af9908aaa..082f0742a 100644
--- a/tests/expected/blkid/low-probe-iso
+++ b/tests/expected/blkid/low-probe-iso
@@ -1,4 +1,5 @@
ID_FS_APPLICATION_ID=GENISOIMAGE ISO 9660/HFS FILESYSTEM CREATOR (C) 1993 E.YOUNGDALE (C) 1997-2006 J.PEARSON/J.SCHILLING (C) 2006-2007 CDRKIT TEAM
+ID_FS_BLOCK_SIZE=2048
ID_FS_LABEL=IsoVolumeName
ID_FS_LABEL_ENC=IsoVolumeName
ID_FS_SYSTEM_ID=LINUX
diff --git a/tests/expected/blkid/low-probe-iso-joliet b/tests/expected/blkid/low-probe-iso-joliet
index 0229a0d2c..06f529d03 100644
--- a/tests/expected/blkid/low-probe-iso-joliet
+++ b/tests/expected/blkid/low-probe-iso-joliet
@@ -1,4 +1,5 @@
ID_FS_APPLICATION_ID=GENISOIMAGE ISO 9660/HFS FILESYSTEM CREATOR (C) 1993 E.YOUNGDALE (C) 1997-2006 J.PEARSON/J.SCHILLING (C) 2006-2007 CDRKIT TEAM
+ID_FS_BLOCK_SIZE=2048
ID_FS_LABEL=ThisWonderfulLabelIsVeryVeryLong
ID_FS_LABEL_ENC=ThisWonderfulLabelIsVeryVeryLong
ID_FS_SYSTEM_ID=LINUX
diff --git a/tests/expected/blkid/low-probe-iso-rr-joliet b/tests/expected/blkid/low-probe-iso-rr-joliet
index 14d550e90..bb3274db3 100644
--- a/tests/expected/blkid/low-probe-iso-rr-joliet
+++ b/tests/expected/blkid/low-probe-iso-rr-joliet
@@ -1,4 +1,5 @@
ID_FS_APPLICATION_ID=GENISOIMAGE ISO 9660/HFS FILESYSTEM CREATOR (C) 1993 E.YOUNGDALE (C) 1997-2006 J.PEARSON/J.SCHILLING (C) 2006-2007 CDRKIT TEAM
+ID_FS_BLOCK_SIZE=2048
ID_FS_LABEL=ThisIsVolumeName
ID_FS_LABEL_ENC=ThisIsVolumeName
ID_FS_SYSTEM_ID=LINUX
diff --git a/tests/expected/blkid/low-probe-jbd b/tests/expected/blkid/low-probe-jbd
index 8dbcdbce0..c9f9f6b79 100644
--- a/tests/expected/blkid/low-probe-jbd
+++ b/tests/expected/blkid/low-probe-jbd
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=1024
ID_FS_LOGUUID=0d7a07df-7b06-4829-bce7-3b9c3ece570c
ID_FS_TYPE=jbd
ID_FS_USAGE=other
diff --git a/tests/expected/blkid/low-probe-jfs b/tests/expected/blkid/low-probe-jfs
index 877fd168e..ac7d31bac 100644
--- a/tests/expected/blkid/low-probe-jfs
+++ b/tests/expected/blkid/low-probe-jfs
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=4096
ID_FS_LABEL=test-jfs
ID_FS_LABEL_ENC=test-jfs
ID_FS_TYPE=jfs
diff --git a/tests/expected/blkid/low-probe-minix-BE b/tests/expected/blkid/low-probe-minix-BE
index 9627799a3..f73f1b5db 100644
--- a/tests/expected/blkid/low-probe-minix-BE
+++ b/tests/expected/blkid/low-probe-minix-BE
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=1024
ID_FS_TYPE=minix
ID_FS_USAGE=filesystem
ID_FS_VERSION=1
diff --git a/tests/expected/blkid/low-probe-minix-LE b/tests/expected/blkid/low-probe-minix-LE
index 9627799a3..f73f1b5db 100644
--- a/tests/expected/blkid/low-probe-minix-LE
+++ b/tests/expected/blkid/low-probe-minix-LE
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=1024
ID_FS_TYPE=minix
ID_FS_USAGE=filesystem
ID_FS_VERSION=1
diff --git a/tests/expected/blkid/low-probe-nilfs2 b/tests/expected/blkid/low-probe-nilfs2
index c6c9cab17..ff27e0b23 100644
--- a/tests/expected/blkid/low-probe-nilfs2
+++ b/tests/expected/blkid/low-probe-nilfs2
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=4096
ID_FS_LABEL=test-nilfs2
ID_FS_LABEL_ENC=test-nilfs2
ID_FS_TYPE=nilfs2
diff --git a/tests/expected/blkid/low-probe-ntfs b/tests/expected/blkid/low-probe-ntfs
index aaaa077da..790157aaa 100644
--- a/tests/expected/blkid/low-probe-ntfs
+++ b/tests/expected/blkid/low-probe-ntfs
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=Новый_том
ID_FS_LABEL_ENC=Новый\x20том
ID_FS_TYPE=ntfs
diff --git a/tests/expected/blkid/low-probe-ocfs2 b/tests/expected/blkid/low-probe-ocfs2
index 2328d21a0..9b84dbe67 100644
--- a/tests/expected/blkid/low-probe-ocfs2
+++ b/tests/expected/blkid/low-probe-ocfs2
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=1024
ID_FS_LABEL=test-ocfs2
ID_FS_LABEL_ENC=test-ocfs2
ID_FS_TYPE=ocfs2
diff --git a/tests/expected/blkid/low-probe-reiser3 b/tests/expected/blkid/low-probe-reiser3
index d376ecae1..1c4b1478d 100644
--- a/tests/expected/blkid/low-probe-reiser3
+++ b/tests/expected/blkid/low-probe-reiser3
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=4096
ID_FS_LABEL=TESTREISER
ID_FS_LABEL_ENC=TESTREISER
ID_FS_TYPE=reiserfs
diff --git a/tests/expected/blkid/low-probe-reiser4 b/tests/expected/blkid/low-probe-reiser4
index 65d63aa65..66df064fd 100644
--- a/tests/expected/blkid/low-probe-reiser4
+++ b/tests/expected/blkid/low-probe-reiser4
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=4096
ID_FS_LABEL=TESTR4
ID_FS_LABEL_ENC=TESTR4
ID_FS_TYPE=reiser4
diff --git a/tests/expected/blkid/low-probe-romfs b/tests/expected/blkid/low-probe-romfs
index 2eb982bc1..b56a6b881 100644
--- a/tests/expected/blkid/low-probe-romfs
+++ b/tests/expected/blkid/low-probe-romfs
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=1024
ID_FS_LABEL=test-romfs
ID_FS_LABEL_ENC=test-romfs
ID_FS_TYPE=romfs
diff --git a/tests/expected/blkid/low-probe-small-fat32 b/tests/expected/blkid/low-probe-small-fat32
index 39239e6b3..5dba03ec3 100644
--- a/tests/expected/blkid/low-probe-small-fat32
+++ b/tests/expected/blkid/low-probe-small-fat32
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=TESTVFAT
ID_FS_LABEL_ENC=TESTVFAT
ID_FS_TYPE=vfat
diff --git a/tests/expected/blkid/low-probe-udf b/tests/expected/blkid/low-probe-udf
index 902fb82f0..869a335db 100644
--- a/tests/expected/blkid/low-probe-udf
+++ b/tests/expected/blkid/low-probe-udf
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=2048
ID_FS_LABEL=test-udf
ID_FS_LABEL_ENC=test-udf
ID_FS_LOGICAL_VOLUME_ID=test-udf
diff --git a/tests/expected/blkid/low-probe-udf-bdr-2.60-nero b/tests/expected/blkid/low-probe-udf-bdr-2.60-nero
index c0b8867b5..fcf29b112 100644
--- a/tests/expected/blkid/low-probe-udf-bdr-2.60-nero
+++ b/tests/expected/blkid/low-probe-udf-bdr-2.60-nero
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=2048
ID_FS_LABEL=Label
ID_FS_LABEL_ENC=Label
ID_FS_LOGICAL_VOLUME_ID=Label
diff --git a/tests/expected/blkid/low-probe-udf-cd-mkudfiso-20100208 b/tests/expected/blkid/low-probe-udf-cd-mkudfiso-20100208
index f57dee08b..768d0d2f0 100644
--- a/tests/expected/blkid/low-probe-udf-cd-mkudfiso-20100208
+++ b/tests/expected/blkid/low-probe-udf-cd-mkudfiso-20100208
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=2048
ID_FS_LABEL=Volume_Label
ID_FS_LABEL_ENC=Volume\x20Label
ID_FS_LOGICAL_VOLUME_ID=Volume Label
diff --git a/tests/expected/blkid/low-probe-udf-cd-nero-6 b/tests/expected/blkid/low-probe-udf-cd-nero-6
index cf85ea9c5..41f9ff509 100644
--- a/tests/expected/blkid/low-probe-udf-cd-nero-6
+++ b/tests/expected/blkid/low-probe-udf-cd-nero-6
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=2048
ID_FS_LABEL=UDF_Label
ID_FS_LABEL_ENC=UDF\x20Label
ID_FS_LOGICAL_VOLUME_ID=UDF Label
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.0.0-1 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.0.0-1
index 5446aec42..e26b2da0c 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.0.0-1
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.0.0-1
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=LinuxUDF
ID_FS_LABEL_ENC=LinuxUDF
ID_FS_LOGICAL_VOLUME_ID=LinuxUDF
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.0.0-2 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.0.0-2
index b72fcac72..112768353 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.0.0-2
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.0.0-2
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=Label
ID_FS_LABEL_ENC=Label
ID_FS_LOGICAL_VOLUME_ID=Label
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-1 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-1
index 20f148549..db9127d34 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-1
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-1
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=Label
ID_FS_LABEL_ENC=Label
ID_FS_LOGICAL_VOLUME_ID=Label
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-2 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-2
index 34a2f49e3..f472284f3 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-2
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-2
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=2048
ID_FS_LABEL=Label
ID_FS_LABEL_ENC=Label
ID_FS_LOGICAL_VOLUME_ID=Label
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-3 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-3
index 3fef2b3c6..6f4802ca0 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-3
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-3
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=2048
ID_FS_LABEL=ÿ
ID_FS_LABEL_ENC=ÿ
ID_FS_LOGICAL_VOLUME_ID=ÿ
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-4 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-4
index 28cd73603..0ae5b910e 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-4
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-4
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=1024
ID_FS_LABEL=Label
ID_FS_LABEL_ENC=Label
ID_FS_LOGICAL_VOLUME_ID=Label
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-5 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-5
index d84ae8964..1b98c21ed 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-5
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-5
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=4096
ID_FS_LABEL=Label
ID_FS_LABEL_ENC=Label
ID_FS_LOGICAL_VOLUME_ID=Label
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-6 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-6
index d73914970..c22c96b0a 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-6
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-6
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ID_FS_LABEL_ENC=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ID_FS_LOGICAL_VOLUME_ID=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-7 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-7
index a78606eea..c3b9d8a8a 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-7
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-7
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=4096
ID_FS_LABEL=Label4096
ID_FS_LABEL_ENC=Label4096
ID_FS_LOGICAL_VOLUME_ID=Label4096
diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-8 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-8
index 448c8f90b..58c131f7d 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-8
+++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-8
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=LinuxUDF
ID_FS_LABEL_ENC=LinuxUDF
ID_FS_LOGICAL_VOLUME_ID=LinuxUDF
diff --git a/tests/expected/blkid/low-probe-udf-hdd-udfclient-0.7.5 b/tests/expected/blkid/low-probe-udf-hdd-udfclient-0.7.5
index b33c814d6..18930cead 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-udfclient-0.7.5
+++ b/tests/expected/blkid/low-probe-udf-hdd-udfclient-0.7.5
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=discname
ID_FS_LABEL_ENC=discname
ID_FS_LOGICAL_VOLUME_ID=discname
diff --git a/tests/expected/blkid/low-probe-udf-hdd-udfclient-0.7.7 b/tests/expected/blkid/low-probe-udf-hdd-udfclient-0.7.7
index a47bd3f12..13e984167 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-udfclient-0.7.7
+++ b/tests/expected/blkid/low-probe-udf-hdd-udfclient-0.7.7
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=discname
ID_FS_LABEL_ENC=discname
ID_FS_LOGICAL_VOLUME_ID=discname
diff --git a/tests/expected/blkid/low-probe-udf-hdd-win7 b/tests/expected/blkid/low-probe-udf-hdd-win7
index 759c8db3d..e68f180e5 100644
--- a/tests/expected/blkid/low-probe-udf-hdd-win7
+++ b/tests/expected/blkid/low-probe-udf-hdd-win7
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=My_volume_label
ID_FS_LABEL_ENC=My\x20volume\x20label
ID_FS_LOGICAL_VOLUME_ID=My volume label
diff --git a/tests/expected/blkid/low-probe-ufs b/tests/expected/blkid/low-probe-ufs
index 96828d73e..256f065d2 100644
--- a/tests/expected/blkid/low-probe-ufs
+++ b/tests/expected/blkid/low-probe-ufs
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=2048
ID_FS_TYPE=ufs
ID_FS_USAGE=filesystem
ID_FS_UUID=4b0e640aec56ac70
diff --git a/tests/expected/blkid/low-probe-xfs b/tests/expected/blkid/low-probe-xfs
index f21d881a5..6eb1b4600 100644
--- a/tests/expected/blkid/low-probe-xfs
+++ b/tests/expected/blkid/low-probe-xfs
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=test-xfs
ID_FS_LABEL_ENC=test-xfs
ID_FS_TYPE=xfs
diff --git a/tests/expected/blkid/low-probe-zfs b/tests/expected/blkid/low-probe-zfs
index 952e0e591..0e7af2866 100644
--- a/tests/expected/blkid/low-probe-zfs
+++ b/tests/expected/blkid/low-probe-zfs
@@ -1,3 +1,4 @@
+ID_FS_BLOCK_SIZE=512
ID_FS_LABEL=tank
ID_FS_LABEL_ENC=tank
ID_FS_TYPE=zfs_member
--
2.25.4