Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.4
btrfsprogs.24931
0001-btrfs-progs-add-get_fsid_fd-for-getting-fs...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-btrfs-progs-add-get_fsid_fd-for-getting-fsid-using-f.patch of Package btrfsprogs.24931
From b79713a33e3ed25234fed30f04532bf2f7f46434 Mon Sep 17 00:00:00 2001 From: Goldwyn Rodrigues <rgoldwyn@suse.com> Date: Tue, 25 Aug 2020 10:03:35 -0500 Subject: [PATCH] btrfs-progs: add get_fsid_fd() for getting fsid using fd Add a function get_fsid_fd() to use an open file fd to get the fsid of the mounted filesystem. Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com> Signed-off-by: David Sterba <dsterba@suse.com> --- utils.c | 30 ++++++++++++++++-------------- utils.h | 1 + 2 files changed, 17 insertions(+), 14 deletions(-) --- a/utils.c +++ b/utils.c @@ -1776,32 +1776,34 @@ return ret; } +int get_fsid_fd(int fd, u8 *fsid) +{ + int ret; + struct btrfs_ioctl_fs_info_args args; + + ret = ioctl(fd, BTRFS_IOC_FS_INFO, &args); + if (ret < 0) + return -errno; + + memcpy(fsid, args.fsid, BTRFS_FSID_SIZE); + return 0; +} + 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: %m", path); - goto out; + return -errno; } - ret = ioctl(fd, BTRFS_IOC_FS_INFO, &args); - if (ret < 0) { - ret = -errno; - goto out; - } - - memcpy(fsid, args.fsid, BTRFS_FSID_SIZE); - ret = 0; + ret = get_fsid_fd(fd, fsid); + close(fd); -out: - if (fd != -1) - close(fd); return ret; } --- a/utils.h +++ b/utils.h @@ -111,6 +111,7 @@ int get_fs_info(const char *path, struct btrfs_ioctl_fs_info_args *fi_args, struct btrfs_ioctl_dev_info_args **di_ret); int get_fsid(const char *path, u8 *fsid, int silent); +int get_fsid_fd(int fd, u8 *fsid); int is_seen_fsid(u8 *fsid, struct seen_fsid *seen_fsid_hash[]); int add_seen_fsid(u8 *fsid, struct seen_fsid *seen_fsid_hash[],
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor