public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] xfs_spaceman: add fsuuid command
@ 2022-11-09 22:23 Catherine Hoang
  2022-11-11 21:05 ` Dave Chinner
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Catherine Hoang @ 2022-11-09 22:23 UTC (permalink / raw)
  To: linux-xfs

Add support for the fsuuid command to retrieve the UUID of a mounted
filesystem.

Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
---
 spaceman/Makefile |  4 +--
 spaceman/fsuuid.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++
 spaceman/init.c   |  1 +
 spaceman/space.h  |  1 +
 4 files changed, 67 insertions(+), 2 deletions(-)
 create mode 100644 spaceman/fsuuid.c

diff --git a/spaceman/Makefile b/spaceman/Makefile
index 1f048d54..901e4e6d 100644
--- a/spaceman/Makefile
+++ b/spaceman/Makefile
@@ -7,10 +7,10 @@ include $(TOPDIR)/include/builddefs
 
 LTCOMMAND = xfs_spaceman
 HFILES = init.h space.h
-CFILES = info.c init.c file.c health.c prealloc.c trim.c
+CFILES = info.c init.c file.c health.c prealloc.c trim.c fsuuid.c
 LSRCFILES = xfs_info.sh
 
-LLDLIBS = $(LIBXCMD) $(LIBFROG)
+LLDLIBS = $(LIBXCMD) $(LIBFROG) $(LIBUUID)
 LTDEPENDENCIES = $(LIBXCMD) $(LIBFROG)
 LLDFLAGS = -static
 
diff --git a/spaceman/fsuuid.c b/spaceman/fsuuid.c
new file mode 100644
index 00000000..be12c1ad
--- /dev/null
+++ b/spaceman/fsuuid.c
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2022 Oracle.
+ * All Rights Reserved.
+ */
+
+#include "libxfs.h"
+#include "libfrog/fsgeom.h"
+#include "libfrog/paths.h"
+#include "command.h"
+#include "init.h"
+#include "space.h"
+#include <sys/ioctl.h>
+
+#ifndef FS_IOC_GETFSUUID
+#define FS_IOC_GETFSUUID	_IOR('f', 44, struct fsuuid)
+#define UUID_SIZE 16
+struct fsuuid {
+    __u32   fsu_len;
+    __u32   fsu_flags;
+    __u8    fsu_uuid[];
+};
+#endif
+
+static cmdinfo_t fsuuid_cmd;
+
+static int
+fsuuid_f(
+	int		argc,
+	char		**argv)
+{
+	struct fsuuid	fsuuid;
+	int		error;
+	char		bp[40];
+
+	fsuuid.fsu_len = UUID_SIZE;
+	fsuuid.fsu_flags = 0;
+
+	error = ioctl(file->xfd.fd, FS_IOC_GETFSUUID, &fsuuid);
+
+	if (error) {
+		perror("fsuuid");
+		exitcode = 1;
+	} else {
+		platform_uuid_unparse((uuid_t *)fsuuid.fsu_uuid, bp);
+		printf("UUID = %s\n", bp);
+	}
+
+	return 0;
+}
+
+void
+fsuuid_init(void)
+{
+	fsuuid_cmd.name = "fsuuid";
+	fsuuid_cmd.cfunc = fsuuid_f;
+	fsuuid_cmd.argmin = 0;
+	fsuuid_cmd.argmax = 0;
+	fsuuid_cmd.flags = CMD_FLAG_ONESHOT;
+	fsuuid_cmd.oneline = _("get mounted filesystem UUID");
+
+	add_command(&fsuuid_cmd);
+}
diff --git a/spaceman/init.c b/spaceman/init.c
index cf1ff3cb..efe1bf9b 100644
--- a/spaceman/init.c
+++ b/spaceman/init.c
@@ -35,6 +35,7 @@ init_commands(void)
 	trim_init();
 	freesp_init();
 	health_init();
+	fsuuid_init();
 }
 
 static int
diff --git a/spaceman/space.h b/spaceman/space.h
index 723209ed..dcbdca08 100644
--- a/spaceman/space.h
+++ b/spaceman/space.h
@@ -33,5 +33,6 @@ extern void	freesp_init(void);
 #endif
 extern void	info_init(void);
 extern void	health_init(void);
+extern void	fsuuid_init(void);
 
 #endif /* XFS_SPACEMAN_SPACE_H_ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-11-22 23:45 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-09 22:23 [PATCH v1] xfs_spaceman: add fsuuid command Catherine Hoang
2022-11-11 21:05 ` Dave Chinner
2022-11-14 22:55   ` Catherine Hoang
2022-11-11 21:31 ` Allison Henderson
2022-11-17 20:37 ` Darrick J. Wong
2022-11-17 21:51   ` Dave Chinner
2022-11-17 23:58     ` Darrick J. Wong
2022-11-21 23:33       ` Dave Chinner
2022-11-22  6:21         ` Darrick J. Wong
2022-11-22 23:45           ` Dave Chinner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox