Re: [PATCH v3] fiemap: add a nosync option
Zhang Yi <[email protected]>
| Newsgroups | org.kernel.vger.linux-xfs |
|---|---|
| Message-ID | <[email protected]> |
On 7/15/2026 4:32 AM, Pankaj Raghav wrote: > io/fiemap adds FIEMAP_FLAG_SYNC by default. There are some test cases > where adding this flag might have an undesired side effect on the > results [1]. > > Add an option that does not pass FIEMAP_FLAG_SYNC flag. > > [1] https://lore.kernel.org/linux-xfs/[email protected]/ > > Signed-off-by: Pankaj Raghav <[email protected]> Thanks for the patch, this looks good to me! Reviewed-by: Zhang Yi <[email protected]> > --- > Changes since v2: > - Add this option to the man page (Darrick) > - Add more information about this flag in the help. > Changes since v1: > - Change '-s' to '-e' to match xfs_bmap (Christoph). > > io/fiemap.c | 9 +++++++-- > man/man8/xfs_io.8 | 2 +- > 2 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/io/fiemap.c b/io/fiemap.c > index b41f71bf..cf3a1b3e 100644 > --- a/io/fiemap.c > +++ b/io/fiemap.c > @@ -36,6 +36,7 @@ fiemap_help(void) > " -a -- prints the attribute fork map instead of the data fork.\n" > " -l -- also displays the length of each extent in 512-byte blocks.\n" > " -n -- query n extents.\n" > +" -e -- obtains also delayed allocation extents by not using FIEMAP_FLAG_SYNC.\n" > " -v -- Verbose information\n" > " offset is the starting offset to map, and is optional. If offset is\n" > " specified, mapping length may (optionally) be specified as well." > @@ -242,7 +243,7 @@ fiemap_f( > > init_cvtnum(&fsblocksize, &fssectsize); > > - while ((c = getopt(argc, argv, "aln:v")) != EOF) { > + while ((c = getopt(argc, argv, "aln:ev")) != EOF) { > switch (c) { > case 'a': > fiemap_flags |= FIEMAP_FLAG_XATTR; > @@ -253,6 +254,10 @@ fiemap_f( > case 'n': > max_extents = atoi(optarg); > break; > + case 'e': > + /* nosync */ > + fiemap_flags &= ~(FIEMAP_FLAG_SYNC); > + break; > case 'v': > vflag++; > break; > @@ -393,7 +398,7 @@ fiemap_init(void) > fiemap_cmd.argmin = 0; > fiemap_cmd.argmax = -1; > fiemap_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; > - fiemap_cmd.args = _("[-alv] [-n nx] [offset [len]]"); > + fiemap_cmd.args = _("[-alev] [-n nx] [offset [len]]"); > fiemap_cmd.oneline = _("print block mapping for a file"); > fiemap_cmd.help = fiemap_help; > > diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 > index 61defcc3..a3ddab02 100644 > --- a/man/man8/xfs_io.8 > +++ b/man/man8/xfs_io.8 > @@ -353,7 +353,7 @@ Prints the block mapping for the current open file. Refer to the > .BR xfs_bmap (8) > manual page for complete documentation. > .TP > -.BI "fiemap [ \-alv ] [ \-n " nx " ] [ " offset " [ " len " ]]" > +.BI "fiemap [ \-alev ] [ \-n " nx " ] [ " offset " [ " len " ]]" > Prints the block mapping for the current open file using the fiemap > ioctl. Options behave as described in the > .BR xfs_bmap (8) > > base-commit: e80b048d87fdc5735e0d03ae29b497b402ea8bbe