diff mbox series

[16/23] libfrog: make platform_set_blocksize exit on fatal failure

Message ID 20231211163742.837427-17-hch@lst.de (mailing list archive)
State Accepted
Headers show
Series [01/23] libxfs: remove the unused icache_flags member from struct libxfs_xinit | expand

Commit Message

Christoph Hellwig Dec. 11, 2023, 4:37 p.m. UTC
platform_set_blocksize has a fatal argument that is currently only
used to change the printed message.  Make it actually fatal similar to
other libfrog platform helpers to simplify the caller.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 libfrog/linux.c    | 27 +++++++++++++++------------
 libfrog/platform.h |  4 ++--
 libxfs/init.c      | 15 ++++++---------
 3 files changed, 23 insertions(+), 23 deletions(-)

Comments

Carlos Maiolino Dec. 18, 2023, 12:48 p.m. UTC | #1
On Mon, Dec 11, 2023 at 05:37:35PM +0100, Christoph Hellwig wrote:
> platform_set_blocksize has a fatal argument that is currently only
> used to change the printed message.  Make it actually fatal similar to
> other libfrog platform helpers to simplify the caller.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>

> ---
>  libfrog/linux.c    | 27 +++++++++++++++------------
>  libfrog/platform.h |  4 ++--
>  libxfs/init.c      | 15 ++++++---------
>  3 files changed, 23 insertions(+), 23 deletions(-)
> 
> diff --git a/libfrog/linux.c b/libfrog/linux.c
> index 2e4fd316e..46a5ff39e 100644
> --- a/libfrog/linux.c
> +++ b/libfrog/linux.c
> @@ -127,20 +127,23 @@ platform_check_iswritable(char *name, char *block, struct stat *s)
>  	return platform_check_mount(name, block, s, flags);
>  }
> 
> -int
> -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal)
> +void
> +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize,
> +		bool fatal)
>  {
> -	int error = 0;
> -
> -	if (major(device) != RAMDISK_MAJOR) {
> -		if ((error = ioctl(fd, BLKBSZSET, &blocksize)) < 0) {
> -			fprintf(stderr, _("%s: %s - cannot set blocksize "
> -					"%d on block device %s: %s\n"),
> -				progname, fatal ? "error": "warning",
> -				blocksize, path, strerror(errno));
> -		}
> +	int error;
> +
> +	if (major(device) == RAMDISK_MAJOR)
> +		return;
> +	error = ioctl(fd, BLKBSZSET, &blocksize);
> +	if (error < 0) {
> +		fprintf(stderr, _("%s: %s - cannot set blocksize "
> +				"%d on block device %s: %s\n"),
> +			progname, fatal ? "error": "warning",
> +			blocksize, path, strerror(errno));
> +		if (fatal)
> +			exit(1);
>  	}
> -	return error;
>  }
> 
>  /*
> diff --git a/libfrog/platform.h b/libfrog/platform.h
> index e3e6b7c71..20f9bdf5c 100644
> --- a/libfrog/platform.h
> +++ b/libfrog/platform.h
> @@ -10,8 +10,8 @@
>  int platform_check_ismounted(char *path, char *block, struct stat *sptr,
>  		int verbose);
>  int platform_check_iswritable(char *path, char *block, struct stat *sptr);
> -int platform_set_blocksize(int fd, char *path, dev_t device, int bsz,
> -		int fatal);
> +void platform_set_blocksize(int fd, char *path, dev_t device, int bsz,
> +		bool fatal);
>  int platform_flush_device(int fd, dev_t device);
>  int platform_direct_blockdev(void);
>  int platform_align_blockdev(void);
> diff --git a/libxfs/init.c b/libxfs/init.c
> index 6570c595a..5be6f8cf1 100644
> --- a/libxfs/init.c
> +++ b/libxfs/init.c
> @@ -125,15 +125,12 @@ retry:
>  	}
> 
>  	if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) {
> -		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);
> -		}
> +		/*
> +		 * Try to use the given explicit blocksize.  Failure to set the
> +		 * block size is only fatal for direct I/O.
> +		 */
> +		platform_set_blocksize(fd, path, statb.st_rdev, setblksize,
> +				dio);
>  	}
> 
>  	/*
> --
> 2.39.2
>
diff mbox series

Patch

diff --git a/libfrog/linux.c b/libfrog/linux.c
index 2e4fd316e..46a5ff39e 100644
--- a/libfrog/linux.c
+++ b/libfrog/linux.c
@@ -127,20 +127,23 @@  platform_check_iswritable(char *name, char *block, struct stat *s)
 	return platform_check_mount(name, block, s, flags);
 }
 
-int
-platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal)
+void
+platform_set_blocksize(int fd, char *path, dev_t device, int blocksize,
+		bool fatal)
 {
-	int error = 0;
-
-	if (major(device) != RAMDISK_MAJOR) {
-		if ((error = ioctl(fd, BLKBSZSET, &blocksize)) < 0) {
-			fprintf(stderr, _("%s: %s - cannot set blocksize "
-					"%d on block device %s: %s\n"),
-				progname, fatal ? "error": "warning",
-				blocksize, path, strerror(errno));
-		}
+	int error;
+
+	if (major(device) == RAMDISK_MAJOR)
+		return;
+	error = ioctl(fd, BLKBSZSET, &blocksize);
+	if (error < 0) {
+		fprintf(stderr, _("%s: %s - cannot set blocksize "
+				"%d on block device %s: %s\n"),
+			progname, fatal ? "error": "warning",
+			blocksize, path, strerror(errno));
+		if (fatal)
+			exit(1);
 	}
-	return error;
 }
 
 /*
diff --git a/libfrog/platform.h b/libfrog/platform.h
index e3e6b7c71..20f9bdf5c 100644
--- a/libfrog/platform.h
+++ b/libfrog/platform.h
@@ -10,8 +10,8 @@ 
 int platform_check_ismounted(char *path, char *block, struct stat *sptr,
 		int verbose);
 int platform_check_iswritable(char *path, char *block, struct stat *sptr);
-int platform_set_blocksize(int fd, char *path, dev_t device, int bsz,
-		int fatal);
+void platform_set_blocksize(int fd, char *path, dev_t device, int bsz,
+		bool fatal);
 int platform_flush_device(int fd, dev_t device);
 int platform_direct_blockdev(void);
 int platform_align_blockdev(void);
diff --git a/libxfs/init.c b/libxfs/init.c
index 6570c595a..5be6f8cf1 100644
--- a/libxfs/init.c
+++ b/libxfs/init.c
@@ -125,15 +125,12 @@  retry:
 	}
 
 	if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) {
-		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);
-		}
+		/*
+		 * Try to use the given explicit blocksize.  Failure to set the
+		 * block size is only fatal for direct I/O.
+		 */
+		platform_set_blocksize(fd, path, statb.st_rdev, setblksize,
+				dio);
 	}
 
 	/*