From: Darrick J. Wong Date: Mon, 25 Sep 2023 21:59:10 +0000 (-0700) Subject: libxfs: make platform_set_blocksize optional with directio X-Git-Tag: v6.5.0~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=244199cd9ae1d136cec985885e4c336145e74a26;p=thirdparty%2Fxfsprogs-dev.git libxfs: make platform_set_blocksize optional with directio 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 Reviewed-by: Carlos Maiolino Signed-off-by: Carlos Maiolino --- diff --git a/libxfs/init.c b/libxfs/init.c index fda36ba0f..ce6e62cde 100644 --- a/libxfs/init.c +++ b/libxfs/init.c @@ -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);