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>
}
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);