From: Pankaj Raghav Date: Tue, 14 Jul 2026 20:32:06 +0000 (+0200) Subject: fiemap: add a nosync option X-Git-Tag: v7.1.1~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ac14db9cd430eace5d638b217cbded8a75b235cb;p=thirdparty%2Fxfsprogs-dev.git fiemap: add a nosync option 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/ca21b3c4-e1df-4ba7-8e9c-5d221337c86b@huaweicloud.com/ Signed-off-by: Pankaj Raghav Reviewed-by: Christoph Hellwig Reviewed-by: Zhang Yi Reviewed-by: "Darrick J. Wong" --- diff --git a/io/fiemap.c b/io/fiemap.c index b41f71bfd..cf3a1b3e8 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 61defcc37..a3ddab029 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)