From 244199cd9ae1d136cec985885e4c336145e74a26 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Mon, 25 Sep 2023 14:59:10 -0700 Subject: [PATCH] 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 --- libxfs/init.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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); -- 2.39.5