Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP7:Update
btrfsprogs.23274
0001-btrfs-progs-inspect-add-support-for-LOGICA...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-btrfs-progs-inspect-add-support-for-LOGICAL_INO_V2-i.patch of Package btrfsprogs.23274
From ff3843b87d09a0d8c1ca88a190752ddb70063185 Mon Sep 17 00:00:00 2001 From: Zygo Blaxell <ce3g8jdj@umail.furryterror.org> Date: Tue, 26 Nov 2019 22:55:07 -0500 Subject: [PATCH] btrfs-progs: inspect: add support for LOGICAL_INO_V2 ioctl Increase the maximum buffer size to SZ_16M. Add an option (-o) to set the ..._IGNORE_OFFSET flag. If the buffer size is greater than 64K or the IGNORE_OFFSET option is used, call ioctl V2; otherwise, use ioctl V1 to be compatible with older kernels. Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org> Signed-off-by: David Sterba <dsterba@suse.com> --- cmds-inspect.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) --- a/cmds-inspect.c +++ b/cmds-inspect.c @@ -124,13 +124,16 @@ static int cmd_inspect_inode_resolve(int } static const char * const cmd_inspect_logical_resolve_usage[] = { - "btrfs inspect-internal logical-resolve [-Pv] [-s bufsize] <logical> <path>", + "btrfs inspect-internal logical-resolve [-Pvo] [-s bufsize] <logical> <path>", "Get file system paths for the given logical address", "-P skip the path resolving and print the inodes instead", "-v verbose mode", + "-o ignore offsets when matching references (requires v2 ioctl", + " support in the kernel 4.15+)", "-s bufsize set inode container's size. This is used to increase inode", " container's size in case it is not enough to read all the ", - " resolved results. The max value one can set is 64k", + " resolved results. The max value one can set is 64k with the", + " v1 ioctl. Sizes over 64k will use the v2 ioctl (kernel 4.15+)", NULL }; @@ -148,10 +151,12 @@ static int cmd_inspect_logical_resolve(i char full_path[PATH_MAX]; char *path_ptr; DIR *dirstream = NULL; + u64 flags = 0; + unsigned long request = BTRFS_IOC_LOGICAL_INO; optind = 0; while (1) { - int c = getopt(argc, argv, "Pvs:"); + int c = getopt(argc, argv, "Pvos:"); if (c < 0) break; @@ -162,6 +167,9 @@ static int cmd_inspect_logical_resolve(i case 'v': verbose = 1; break; + case 'o': + flags |= BTRFS_LOGICAL_INO_ARGS_IGNORE_OFFSET; + break; case 's': size = arg_strtou64(optarg); break; @@ -173,14 +181,18 @@ static int cmd_inspect_logical_resolve(i if (check_argc_exact(argc - optind, 2)) usage(cmd_inspect_logical_resolve_usage); - size = min(size, (u64)SZ_64K); + size = min(size, (u64)SZ_16M); inodes = malloc(size); if (!inodes) return 1; + if (size > SZ_64K || flags != 0) + request = BTRFS_IOC_LOGICAL_INO_V2; + memset(inodes, 0, sizeof(*inodes)); loi.logical = arg_strtou64(argv[optind]); loi.size = size; + loi.flags = flags; loi.inodes = ptr_to_u64(inodes); fd = btrfs_open_dir(argv[optind + 1], &dirstream, 1); @@ -189,7 +201,7 @@ static int cmd_inspect_logical_resolve(i goto out; } - ret = ioctl(fd, BTRFS_IOC_LOGICAL_INO, &loi); + ret = ioctl(fd, request, &loi); if (ret < 0) { error("logical ino ioctl: %m"); goto out;
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