diff options
author | Karel Zak | 2017-01-13 13:26:37 +0100 |
---|---|---|
committer | Karel Zak | 2017-01-13 13:26:37 +0100 |
commit | 76fab513b8f2c128a29c36cbc622d1a624b0be19 (patch) | |
tree | a1201a04ce757f3b6a60b7f056e7c0a48d0a3c04 /libblkid | |
parent | libfdisk: change the way how apply user device properties (diff) | |
download | kernel-qcow2-util-linux-76fab513b8f2c128a29c36cbc622d1a624b0be19.tar.gz kernel-qcow2-util-linux-76fab513b8f2c128a29c36cbc622d1a624b0be19.tar.xz kernel-qcow2-util-linux-76fab513b8f2c128a29c36cbc622d1a624b0be19.zip |
libblkid: add blkid_probe_set_sectorsize()
The usual way is to use ioctl to ask block device for sector size, but
this is useless for disk images (regular files). And the default
(512-bytes) may be pretty wrong for disk images from 4K disks. Let's
support a way how to specify proper sector size.
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libblkid')
-rw-r--r-- | libblkid/docs/libblkid-sections.txt | 1 | ||||
-rw-r--r-- | libblkid/src/blkid.h.in | 2 | ||||
-rw-r--r-- | libblkid/src/libblkid.sym | 4 | ||||
-rw-r--r-- | libblkid/src/probe.c | 16 |
4 files changed, 23 insertions, 0 deletions
diff --git a/libblkid/docs/libblkid-sections.txt b/libblkid/docs/libblkid-sections.txt index 53cf84b78..78db25ec9 100644 --- a/libblkid/docs/libblkid-sections.txt +++ b/libblkid/docs/libblkid-sections.txt @@ -56,6 +56,7 @@ blkid_probe_get_size blkid_probe_get_wholedisk_devno blkid_probe_is_wholedisk blkid_probe_set_device +blkid_probe_set_sectorsize blkid_probe_step_back blkid_reset_probe </SECTION> diff --git a/libblkid/src/blkid.h.in b/libblkid/src/blkid.h.in index d7bbced7f..06e2c1771 100644 --- a/libblkid/src/blkid.h.in +++ b/libblkid/src/blkid.h.in @@ -243,6 +243,8 @@ extern blkid_loff_t blkid_probe_get_offset(blkid_probe pr) __ul_attribute__((nonnull)); extern unsigned int blkid_probe_get_sectorsize(blkid_probe pr) __ul_attribute__((nonnull)); +extern int blkid_probe_set_sectorsize(blkid_probe pr, unsigned int sz) + __ul_attribute__((nonnull)); extern blkid_loff_t blkid_probe_get_sectors(blkid_probe pr) __ul_attribute__((nonnull)); diff --git a/libblkid/src/libblkid.sym b/libblkid/src/libblkid.sym index 6b3cf0805..cd76d6592 100644 --- a/libblkid/src/libblkid.sym +++ b/libblkid/src/libblkid.sym @@ -164,3 +164,7 @@ global: BLKID_2.25 { blkid_partlist_get_partition_by_partno; } BLKID_2.23; + +BLKID_2.30 { + blkid_probe_set_sectorsize; +} BLKID_2.25; diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c index ea50f5a6b..df90a82e0 100644 --- a/libblkid/src/probe.c +++ b/libblkid/src/probe.c @@ -1672,6 +1672,22 @@ unsigned int blkid_probe_get_sectorsize(blkid_probe pr) } /** + * blkid_probe_set_sectorsize: + * @pr: probe + * @sz: new size (to overwrite system default) + * + * Note that blkid_probe_set_device() resets this setting. Use it after + * blkid_probe_set_device() and before any probing call. + * + * Returns: 0 or <0 in case of error + */ +int blkid_probe_set_sectorsize(blkid_probe pr, unsigned int sz) +{ + pr->blkssz = sz; + return 0; +} + +/** * blkid_probe_get_sectors: * @pr: probe * |