libblkid: topology: probe diskseq

This commit is contained in:
Thomas Weißschuh 2022-12-28 01:47:08 +00:00
parent 3ab9e699a8
commit 0cb7e07830
11 changed files with 40 additions and 1 deletions

View file

@ -151,6 +151,7 @@ blkid_probe_enable_topology
blkid_probe_get_topology
blkid_topology_get_alignment_offset
blkid_topology_get_dax
blkid_topology_get_diskseq
blkid_topology_get_logical_sector_size
blkid_topology_get_minimum_io_size
blkid_topology_get_optimal_io_size

View file

@ -11,6 +11,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <inttypes.h>
#include <blkid.h>
@ -53,6 +54,8 @@ int main(int argc, char *argv[])
blkid_topology_get_physical_sector_size(tp));
printf("\tdax support : %lu\n",
blkid_topology_get_dax(tp));
printf("\tdiskseq : %"PRId64"\n",
blkid_topology_get_diskseq(tp));
}
/*

View file

@ -333,6 +333,8 @@ extern unsigned long blkid_topology_get_physical_sector_size(blkid_topology tp)
__ul_attribute__((nonnull));
extern unsigned long blkid_topology_get_dax(blkid_topology tp)
__ul_attribute__((nonnull));
extern uint64_t blkid_topology_get_diskseq(blkid_topology tp)
__ul_attribute__((nonnull));
/*
* partitions probing

View file

@ -183,3 +183,7 @@ BLKID_2_37 {
blkid_probe_set_hint;
blkid_probe_reset_hints;
} BLKID_2_36;
BLKID_2_39 {
blkid_topology_get_diskseq;
} BLKID_2_37;

View file

@ -33,7 +33,8 @@ static struct topology_val {
{ BLKALIGNOFF, NULL, blkid_topology_set_alignment_offset },
{ BLKIOMIN, blkid_topology_set_minimum_io_size },
{ BLKIOOPT, blkid_topology_set_optimal_io_size },
{ BLKPBSZGET, blkid_topology_set_physical_sector_size }
{ BLKPBSZGET, blkid_topology_set_physical_sector_size },
{ BLKGETDISKSEQ, blkid_topology_set_diskseq },
/* we read BLKSSZGET in topology.c */
};

View file

@ -38,6 +38,7 @@ static struct topology_val {
{ "queue/optimal_io_size", blkid_topology_set_optimal_io_size },
{ "queue/physical_block_size", blkid_topology_set_physical_sector_size },
{ "queue/dax", blkid_topology_set_dax },
{ "diskseq", blkid_topology_set_diskseq },
};
static int probe_sysfs_tp(blkid_probe pr,

View file

@ -68,6 +68,7 @@ struct blkid_struct_topology {
unsigned long logical_sector_size;
unsigned long physical_sector_size;
unsigned long dax;
uint64_t diskseq;
};
/*
@ -312,6 +313,14 @@ int blkid_topology_set_dax(blkid_probe pr, unsigned long val)
val);
}
int blkid_topology_set_diskseq(blkid_probe pr, uint64_t val)
{
return topology_set_value(pr,
"DISKSEQ",
offsetof(struct blkid_struct_topology, diskseq),
val);
}
/**
* blkid_topology_get_alignment_offset:
* @tp: topology
@ -379,3 +388,16 @@ unsigned long blkid_topology_get_dax(blkid_topology tp)
{
return tp->dax;
}
/**
* blkid_topology_get_diskseq
* @tp: topology
*
* Returns: disk sequence number
*
* Since: 2.39
*/
uint64_t blkid_topology_get_diskseq(blkid_topology tp)
{
return tp->diskseq;
}

View file

@ -8,6 +8,7 @@ extern int blkid_topology_set_minimum_io_size(blkid_probe pr, unsigned long val)
extern int blkid_topology_set_optimal_io_size(blkid_probe pr, unsigned long val);
extern int blkid_topology_set_physical_sector_size(blkid_probe pr, unsigned long val);
extern int blkid_topology_set_dax(blkid_probe pr, unsigned long val);
extern int blkid_topology_set_diskseq(blkid_probe pr, uint64_t val);
/*
* topology probers

View file

@ -1,3 +1,4 @@
ID_FS_DISKSEQ=S
ID_IOLIMIT_LOGICAL_SECTOR_SIZE=512
ID_IOLIMIT_MINIMUM_IO_SIZE=512
ID_IOLIMIT_PHYSICAL_SECTOR_SIZE=512

View file

@ -1,3 +1,4 @@
ID_FS_DISKSEQ=S
ID_IOLIMIT_LOGICAL_SECTOR_SIZE=512
ID_IOLIMIT_MINIMUM_IO_SIZE=512
ID_IOLIMIT_PHYSICAL_SECTOR_SIZE=512

View file

@ -36,6 +36,7 @@ echo -e 'label: dos\n- - - -' | "$TS_CMD_SFDISK" -q "$TS_LODEV"
"$TS_CMD_BLKID" -i -o udev "$TS_LODEV" \
2> "$TS_ERRLOG" \
| sed -E -e 's/^ID_FS_DISKSEQ=[[:digit:]]+$/ID_FS_DISKSEQ=S/' \
| sort > "$TS_OUTPUT"
ts_finalize_subtest
@ -45,6 +46,7 @@ ts_init_subtest partition
"$TS_CMD_BLKID" -i -o udev "$TS_LODEV"p1 \
2> "$TS_ERRLOG" \
| sed -E -e 's/^ID_FS_DISKSEQ=[[:digit:]]+$/ID_FS_DISKSEQ=S/' \
| sort > "$TS_OUTPUT"
ts_finalize_subtest