|
|
673c78 |
From 863ecca27cfc937bc6fb2131e0d0e35947e38ce6 Mon Sep 17 00:00:00 2001
|
|
|
673c78 |
From: Andrey Albershteyn <aalbersh@redhat.com>
|
|
|
673c78 |
Date: Mon, 25 Apr 2022 17:08:37 +0200
|
|
|
673c78 |
Subject: libblkid: add interface for FSSIZE field
|
|
|
673c78 |
|
|
|
673c78 |
Add interface to let filesystem probe calculate and set FSSIZE.
|
|
|
673c78 |
Enable that field in the 'superblocks' sample.
|
|
|
673c78 |
|
|
|
673c78 |
Upstream: http://github.com/util-linux/util-linux/commit/ad08ae0aa
|
|
|
673c78 |
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
|
|
673c78 |
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
|
|
673c78 |
---
|
|
|
673c78 |
libblkid/samples/superblocks.c | 2 +-
|
|
|
673c78 |
libblkid/src/blkid.h.in | 1 +
|
|
|
673c78 |
libblkid/src/superblocks/superblocks.c | 11 +++++++++++
|
|
|
673c78 |
libblkid/src/superblocks/superblocks.h | 1 +
|
|
|
673c78 |
4 files changed, 14 insertions(+), 1 deletion(-)
|
|
|
673c78 |
|
|
|
673c78 |
diff --git a/libblkid/samples/superblocks.c b/libblkid/samples/superblocks.c
|
|
|
673c78 |
index 7d9555771..38903ecee 100644
|
|
|
673c78 |
--- a/libblkid/samples/superblocks.c
|
|
|
673c78 |
+++ b/libblkid/samples/superblocks.c
|
|
|
673c78 |
@@ -44,7 +44,7 @@ int main(int argc, char *argv[])
|
|
|
673c78 |
BLKID_SUBLKS_UUID | BLKID_SUBLKS_UUIDRAW |
|
|
|
673c78 |
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE |
|
|
|
673c78 |
BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION |
|
|
|
673c78 |
- BLKID_SUBLKS_MAGIC);
|
|
|
673c78 |
+ BLKID_SUBLKS_MAGIC | BLKID_SUBLKS_FSSIZE);
|
|
|
673c78 |
|
|
|
673c78 |
rc = blkid_do_safeprobe(pr);
|
|
|
673c78 |
if (rc == -1)
|
|
|
673c78 |
diff --git a/libblkid/src/blkid.h.in b/libblkid/src/blkid.h.in
|
|
|
673c78 |
index 3cd4116d9..ad4becf0a 100644
|
|
|
673c78 |
--- a/libblkid/src/blkid.h.in
|
|
|
673c78 |
+++ b/libblkid/src/blkid.h.in
|
|
|
673c78 |
@@ -281,6 +281,7 @@ extern int blkid_probe_enable_superblocks(blkid_probe pr, int enable)
|
|
|
673c78 |
#define BLKID_SUBLKS_VERSION (1 << 8) /* read FS type from superblock */
|
|
|
673c78 |
#define BLKID_SUBLKS_MAGIC (1 << 9) /* define SBMAGIC and SBMAGIC_OFFSET */
|
|
|
673c78 |
#define BLKID_SUBLKS_BADCSUM (1 << 10) /* allow a bad checksum */
|
|
|
673c78 |
+#define BLKID_SUBLKS_FSSIZE (1 << 11) /* read and define FSSIZE from superblock */
|
|
|
673c78 |
|
|
|
673c78 |
#define BLKID_SUBLKS_DEFAULT (BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID | \
|
|
|
673c78 |
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE)
|
|
|
673c78 |
diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c
|
|
|
673c78 |
index f21365538..9adc2cfa3 100644
|
|
|
673c78 |
--- a/libblkid/src/superblocks/superblocks.c
|
|
|
673c78 |
+++ b/libblkid/src/superblocks/superblocks.c
|
|
|
673c78 |
@@ -7,6 +7,7 @@
|
|
|
673c78 |
* GNU Lesser General Public License.
|
|
|
673c78 |
*/
|
|
|
673c78 |
|
|
|
673c78 |
+#include <inttypes.h>
|
|
|
673c78 |
#include <stdio.h>
|
|
|
673c78 |
#include <string.h>
|
|
|
673c78 |
#include <stdlib.h>
|
|
|
673c78 |
@@ -584,6 +585,16 @@ static int blkid_probe_set_usage(blkid_probe pr, int usage)
|
|
|
673c78 |
return blkid_probe_set_value(pr, "USAGE", (unsigned char *) u, strlen(u) + 1);
|
|
|
673c78 |
}
|
|
|
673c78 |
|
|
|
673c78 |
+int blkid_probe_set_fssize(blkid_probe pr, uint64_t size)
|
|
|
673c78 |
+{
|
|
|
673c78 |
+ struct blkid_chain *chn = blkid_probe_get_chain(pr);
|
|
|
673c78 |
+
|
|
|
673c78 |
+ if (!(chn->flags & BLKID_SUBLKS_FSSIZE))
|
|
|
673c78 |
+ return 0;
|
|
|
673c78 |
+
|
|
|
673c78 |
+ return blkid_probe_sprintf_value(pr, "FSSIZE", "%" PRIu64, size);
|
|
|
673c78 |
+}
|
|
|
673c78 |
+
|
|
|
673c78 |
int blkid_probe_set_id_label(blkid_probe pr, const char *name,
|
|
|
673c78 |
const unsigned char *data, size_t len)
|
|
|
673c78 |
{
|
|
|
673c78 |
diff --git a/libblkid/src/superblocks/superblocks.h b/libblkid/src/superblocks/superblocks.h
|
|
|
673c78 |
index 9c489c438..67803679f 100644
|
|
|
673c78 |
--- a/libblkid/src/superblocks/superblocks.h
|
|
|
673c78 |
+++ b/libblkid/src/superblocks/superblocks.h
|
|
|
673c78 |
@@ -111,6 +111,7 @@ extern int blkid_probe_set_utf8_id_label(blkid_probe pr, const char *name,
|
|
|
673c78 |
const unsigned char *data, size_t len, int enc);
|
|
|
673c78 |
|
|
|
673c78 |
int blkid_probe_set_block_size(blkid_probe pr, unsigned block_size);
|
|
|
673c78 |
+int blkid_probe_set_fssize(blkid_probe pr, uint64_t size);
|
|
|
673c78 |
|
|
|
673c78 |
extern int blkid_probe_is_bitlocker(blkid_probe pr);
|
|
|
673c78 |
extern int blkid_probe_is_ntfs(blkid_probe pr);
|
|
|
673c78 |
--
|
|
|
673c78 |
2.36.1
|
|
|
673c78 |
|