summaryrefslogtreecommitdiff
path: root/utils.c
diff options
context:
space:
mode:
authorMisono, Tomohiro <misono.tomohiro@jp.fujitsu.com>2017-09-27 11:01:43 +0900
committerDavid Sterba <dsterba@suse.com>2017-10-06 13:23:27 +0200
commit448763c64a68bef4b4ba0956c477db55b005862b (patch)
treeec8bde06227fcebd84af7e38ab4028fe25a464a8 /utils.c
parent75716f6a8fba11ba04aaca550bb3913a58ccb817 (diff)
btrfs-progs: move get_fsid() to utils.c
Make get_fsid() to a common functions. This will be used for 'subvol delete --commit-after'. Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com> Reviewed-by: Qu Wenruo <quwenruo.btrfs@gmx.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'utils.c')
-rw-r--r--utils.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/utils.c b/utils.c
index 7a2710fe..39629a79 100644
--- a/utils.c
+++ b/utils.c
@@ -1758,6 +1758,36 @@ out:
return ret;
}
+int get_fsid(const char *path, u8 *fsid, int silent)
+{
+ int ret;
+ int fd;
+ struct btrfs_ioctl_fs_info_args args;
+
+ fd = open(path, O_RDONLY);
+ if (fd < 0) {
+ ret = -errno;
+ if (!silent)
+ error("failed to open %s: %s", path,
+ strerror(-ret));
+ goto out;
+ }
+
+ ret = ioctl(fd, BTRFS_IOC_FS_INFO, &args);
+ if (ret < 0) {
+ ret = -errno;
+ goto out;
+ }
+
+ memcpy(fsid, args.fsid, BTRFS_FSID_SIZE);
+ ret = 0;
+
+out:
+ if (fd != -1)
+ close(fd);
+ return ret;
+}
+
static int group_profile_devs_min(u64 flag)
{
switch (flag & BTRFS_BLOCK_GROUP_PROFILE_MASK) {