summaryrefslogtreecommitdiff
path: root/libblkid
diff options
context:
space:
mode:
authorThomas Weißschuh <thomas@t-8ch.de>2022-12-28 01:47:08 +0000
committerThomas Weißschuh <thomas@t-8ch.de>2022-12-28 12:34:20 +0000
commit0cb7e07830c412103a0e939683c2c74b7bcf5be9 (patch)
tree0b51776eec0d60467a7b6962213ab3aa5d3cacb3 /libblkid
parent3ab9e699a8d90f55e0447516b7e05a8686180467 (diff)
downloadutil-linux-0cb7e07830c412103a0e939683c2c74b7bcf5be9.tar.gz
libblkid: topology: probe diskseq
Diffstat (limited to 'libblkid')
-rw-r--r--libblkid/docs/libblkid-sections.txt1
-rw-r--r--libblkid/samples/topology.c3
-rw-r--r--libblkid/src/blkid.h.in2
-rw-r--r--libblkid/src/libblkid.sym4
-rw-r--r--libblkid/src/topology/ioctl.c3
-rw-r--r--libblkid/src/topology/sysfs.c1
-rw-r--r--libblkid/src/topology/topology.c22
-rw-r--r--libblkid/src/topology/topology.h1
8 files changed, 36 insertions, 1 deletions
diff --git a/libblkid/docs/libblkid-sections.txt b/libblkid/docs/libblkid-sections.txt
index d54cf66e0..929700253 100644
--- a/libblkid/docs/libblkid-sections.txt
+++ b/libblkid/docs/libblkid-sections.txt
@@ -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
diff --git a/libblkid/samples/topology.c b/libblkid/samples/topology.c
index 7d21567d5..8dfb9c5bb 100644
--- a/libblkid/samples/topology.c
+++ b/libblkid/samples/topology.c
@@ -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));
}
/*
diff --git a/libblkid/src/blkid.h.in b/libblkid/src/blkid.h.in
index 6132cb8a1..c232d72fd 100644
--- a/libblkid/src/blkid.h.in
+++ b/libblkid/src/blkid.h.in
@@ -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
diff --git a/libblkid/src/libblkid.sym b/libblkid/src/libblkid.sym
index 366f2c0c0..775b0246c 100644
--- a/libblkid/src/libblkid.sym
+++ b/libblkid/src/libblkid.sym
@@ -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;
diff --git a/libblkid/src/topology/ioctl.c b/libblkid/src/topology/ioctl.c
index 3aba09e4f..0603eb912 100644
--- a/libblkid/src/topology/ioctl.c
+++ b/libblkid/src/topology/ioctl.c
@@ -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 */
};
diff --git a/libblkid/src/topology/sysfs.c b/libblkid/src/topology/sysfs.c
index 745cd115a..fe13f940f 100644
--- a/libblkid/src/topology/sysfs.c
+++ b/libblkid/src/topology/sysfs.c
@@ -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,
diff --git a/libblkid/src/topology/topology.c b/libblkid/src/topology/topology.c
index d638c4c20..d34e7a0bb 100644
--- a/libblkid/src/topology/topology.c
+++ b/libblkid/src/topology/topology.c
@@ -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;
+}
diff --git a/libblkid/src/topology/topology.h b/libblkid/src/topology/topology.h
index 3e46af9ac..9810fe46b 100644
--- a/libblkid/src/topology/topology.h
+++ b/libblkid/src/topology/topology.h
@@ -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