]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
libxfs: make platform_set_blocksize optional with directio
authorDarrick J. Wong <djwong@kernel.org>
Mon, 25 Sep 2023 21:59:10 +0000 (14:59 -0700)
committerCarlos Maiolino <cem@kernel.org>
Thu, 5 Oct 2023 12:57:19 +0000 (14:57 +0200)
If we're accessing the block device with directio (and hence bypassing
the page cache), then don't fail on BLKBSZSET not working.  We don't
care what happens to the pagecache bufferheads.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
libxfs/init.c

index fda36ba0f7dc3e6d011eda8947c1b655c0cb1fbe..ce6e62cde9449002785fa9c23f928954a4926bf0 100644 (file)
@@ -125,10 +125,14 @@ retry:
        }
 
        if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) {
-               if (setblksize == 1)
+               if (setblksize == 1) {
                        /* use the default blocksize */
                        (void)platform_set_blocksize(fd, path, statb.st_rdev, XFS_MIN_SECTORSIZE, 0);
-               else {
+               } else if (dio) {
+                       /* try to use the given explicit blocksize */
+                       (void)platform_set_blocksize(fd, path, statb.st_rdev,
+                                       setblksize, 0);
+               } else {
                        /* given an explicit blocksize to use */
                        if (platform_set_blocksize(fd, path, statb.st_rdev, setblksize, 1))
                            exit(1);