All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Vignesh Raghavendra <vigneshr@ti.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	linux-nvme@lists.infradead.org,
	Phillip Potter <phil@philpotter.co.uk>, Chris Mason <clm@fb.com>,
	dm-devel@redhat.com, "Md. Haris Iqbal" <haris.iqbal@ionos.com>,
	Pavel Machek <pavel@ucw.cz>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	Jack Wang <jinpu.wang@ionos.com>,
	linux-nilfs@vger.kernel.org, linux-scsi@vger.kernel.org,
	Richard Weinberger <richard@nod.at>,
	linux-pm@vger.kernel.org, linux-um@lists.infradead.org,
	Josef Bacik <josef@toxicpanda.com>, Coly Li <colyli@suse.de>,
	linux-block@vger.kernel.org, linux-bcache@vger.kernel.org,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	David Sterba <dsterba@suse.com>,
	Christian Brauner <brauner@kernel.org>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-fsdevel@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-btrfs@vger.kernel.org
Subject: [f2fs-dev] [PATCH 20/31] scsi: replace the fmode_t argument to scsi_ioctl with a simple bool
Date: Tue,  6 Jun 2023 09:39:39 +0200	[thread overview]
Message-ID: <20230606073950.225178-21-hch@lst.de> (raw)
In-Reply-To: <20230606073950.225178-1-hch@lst.de>

Instead of passing a fmode_t and only checking it for FMODE_WRITE, pass
a bool open_for_write to prepare for callers that won't have the fmode_t.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/scsi/ch.c         |  3 ++-
 drivers/scsi/scsi_ioctl.c | 34 +++++++++++++++++-----------------
 drivers/scsi/sd.c         |  2 +-
 drivers/scsi/sg.c         |  5 +++--
 drivers/scsi/sr.c         |  2 +-
 drivers/scsi/st.c         |  2 +-
 include/scsi/scsi_ioctl.h |  2 +-
 7 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
index ac648bb8f7e7f4..cb0a399be1ccee 100644
--- a/drivers/scsi/ch.c
+++ b/drivers/scsi/ch.c
@@ -877,7 +877,8 @@ static long ch_ioctl(struct file *file,
 	}
 
 	default:
-		return scsi_ioctl(ch->device, file->f_mode, cmd, argp);
+		return scsi_ioctl(ch->device, file->f_mode & FMODE_WRITE, cmd,
+				  argp);
 
 	}
 }
diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
index dda5468ca97f90..6f6c5973c3ea95 100644
--- a/drivers/scsi/scsi_ioctl.c
+++ b/drivers/scsi/scsi_ioctl.c
@@ -346,7 +346,7 @@ bool scsi_cmd_allowed(unsigned char *cmd, bool open_for_write)
 EXPORT_SYMBOL(scsi_cmd_allowed);
 
 static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
-		struct sg_io_hdr *hdr, fmode_t mode)
+		struct sg_io_hdr *hdr, bool open_for_write)
 {
 	struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
 
@@ -354,7 +354,7 @@ static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
 		return -EMSGSIZE;
 	if (copy_from_user(scmd->cmnd, hdr->cmdp, hdr->cmd_len))
 		return -EFAULT;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		return -EPERM;
 	scmd->cmd_len = hdr->cmd_len;
 
@@ -407,7 +407,8 @@ static int scsi_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
 	return ret;
 }
 
-static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
+static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr,
+		bool open_for_write)
 {
 	unsigned long start_time;
 	ssize_t ret = 0;
@@ -448,7 +449,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 		goto out_put_request;
 	}
 
-	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, mode);
+	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, open_for_write);
 	if (ret < 0)
 		goto out_put_request;
 
@@ -477,8 +478,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 /**
  * sg_scsi_ioctl  --  handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl
  * @q:		request queue to send scsi commands down
- * @mode:	mode used to open the file through which the ioctl has been
- *		submitted
+ * @open_for_write: is the file / block device opened for writing?
  * @sic:	userspace structure describing the command to perform
  *
  * Send down the scsi command described by @sic to the device below
@@ -501,7 +501,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
  *      Positive numbers returned are the compacted SCSI error codes (4
  *      bytes in one int) where the lowest byte is the SCSI status.
  */
-static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
+static int sg_scsi_ioctl(struct request_queue *q, bool open_for_write,
 		struct scsi_ioctl_command __user *sic)
 {
 	struct request *rq;
@@ -554,7 +554,7 @@ static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
 		goto error;
 
 	err = -EPERM;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		goto error;
 
 	/* default.  possible overridden later */
@@ -776,7 +776,7 @@ static int scsi_put_cdrom_generic_arg(const struct cdrom_generic_command *cgc,
 	return 0;
 }
 
-static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
+static int scsi_cdrom_send_packet(struct scsi_device *sdev, bool open_for_write,
 		void __user *arg)
 {
 	struct cdrom_generic_command cgc;
@@ -817,7 +817,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	hdr.cmdp = ((struct cdrom_generic_command __user *) arg)->cmd;
 	hdr.cmd_len = sizeof(cgc.cmd);
 
-	err = sg_io(sdev, &hdr, mode);
+	err = sg_io(sdev, &hdr, open_for_write);
 	if (err == -EFAULT)
 		return -EFAULT;
 
@@ -832,7 +832,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	return err;
 }
 
-static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
+static int scsi_ioctl_sg_io(struct scsi_device *sdev, bool open_for_write,
 		void __user *argp)
 {
 	struct sg_io_hdr hdr;
@@ -841,7 +841,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 	error = get_sg_io_hdr(&hdr, argp);
 	if (error)
 		return error;
-	error = sg_io(sdev, &hdr, mode);
+	error = sg_io(sdev, &hdr, open_for_write);
 	if (error == -EFAULT)
 		return error;
 	if (put_sg_io_hdr(&hdr, argp))
@@ -852,7 +852,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 /**
  * scsi_ioctl - Dispatch ioctl to scsi device
  * @sdev: scsi device receiving ioctl
- * @mode: mode the block/char device is opened with
+ * @open_for_write: is the file / block device opened for writing?
  * @cmd: which ioctl is it
  * @arg: data associated with ioctl
  *
@@ -860,7 +860,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
  * does not take a major/minor number as the dev field.  Rather, it takes
  * a pointer to a &struct scsi_device.
  */
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg)
 {
 	struct request_queue *q = sdev->request_queue;
@@ -896,11 +896,11 @@ int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
 	case SG_EMULATED_HOST:
 		return sg_emulated_host(q, arg);
 	case SG_IO:
-		return scsi_ioctl_sg_io(sdev, mode, arg);
+		return scsi_ioctl_sg_io(sdev, open_for_write, arg);
 	case SCSI_IOCTL_SEND_COMMAND:
-		return sg_scsi_ioctl(q, mode, arg);
+		return sg_scsi_ioctl(q, open_for_write, arg);
 	case CDROM_SEND_PACKET:
-		return scsi_cdrom_send_packet(sdev, mode, arg);
+		return scsi_cdrom_send_packet(sdev, open_for_write, arg);
 	case CDROMCLOSETRAY:
 		return scsi_send_start_stop(sdev, 3);
 	case CDROMEJECT:
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index c67c84f6ba6178..02b6704ec2b401 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1463,7 +1463,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
 
 	if (is_sed_ioctl(cmd))
 		return sed_ioctl(sdkp->opal_dev, cmd, p);
-	return scsi_ioctl(sdp, mode, cmd, p);
+	return scsi_ioctl(sdp, mode & FMODE_WRITE, cmd, p);
 }
 
 static void set_media_not_present(struct scsi_disk *sdkp)
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index e49ea693d0b656..138e28bb76b749 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -1103,7 +1103,8 @@ sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp,
 	case SCSI_IOCTL_SEND_COMMAND:
 		if (atomic_read(&sdp->detaching))
 			return -ENODEV;
-		return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+		return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE,
+				  cmd_in, p);
 	case SG_SET_DEBUG:
 		result = get_user(val, ip);
 		if (result)
@@ -1159,7 +1160,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
 	ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p);
 	if (ret != -ENOIOCTLCMD)
 		return ret;
-	return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+	return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE, cmd_in, p);
 }
 
 static __poll_t
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 55082acb59bcaa..00aaafc8dd78f8 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -543,7 +543,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
 		if (ret != -ENOSYS)
 			goto put;
 	}
-	ret = scsi_ioctl(sdev, mode, cmd, argp);
+	ret = scsi_ioctl(sdev, mode & FMODE_WRITE, cmd, argp);
 
 put:
 	scsi_autopm_put_device(sdev);
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index b90a440e135dc4..14d7981ddcdd19 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -3832,7 +3832,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg)
 		break;
 	}
 
-	retval = scsi_ioctl(STp->device, file->f_mode, cmd_in, p);
+	retval = scsi_ioctl(STp->device, file->f_mode & FMODE_WRITE, cmd_in, p);
 	if (!retval && cmd_in == SCSI_IOCTL_STOP_UNIT) {
 		/* unload */
 		STp->rew_at_close = 0;
diff --git a/include/scsi/scsi_ioctl.h b/include/scsi/scsi_ioctl.h
index 914201a8cb947c..a207c07da9d20c 100644
--- a/include/scsi/scsi_ioctl.h
+++ b/include/scsi/scsi_ioctl.h
@@ -45,7 +45,7 @@ typedef struct scsi_fctargaddress {
 
 int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev,
 		int cmd, bool ndelay);
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg);
 int get_sg_io_hdr(struct sg_io_hdr *hdr, const void __user *argp);
 int put_sg_io_hdr(const struct sg_io_hdr *hdr, void __user *argp);
-- 
2.39.2



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Vignesh Raghavendra <vigneshr@ti.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	linux-nvme@lists.infradead.org,
	Phillip Potter <phil@philpotter.co.uk>, Chris Mason <clm@fb.com>,
	dm-devel@redhat.com, "Md. Haris Iqbal" <haris.iqbal@ionos.com>,
	Pavel Machek <pavel@ucw.cz>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	Jack Wang <jinpu.wang@ionos.com>,
	linux-nilfs@vger.kernel.org, linux-scsi@vger.kernel.org,
	Richard Weinberger <richard@nod.at>,
	linux-pm@vger.kernel.org, linux-um@lists.infradead.org,
	Josef Bacik <josef@toxicpanda.com>, Coly Li <colyli@suse.de>,
	linux-block@vger.kernel.org, linux-bcache@vger.kernel.org,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	David Sterba <dsterba@suse.com>,
	Christian Brauner <brauner@kernel.org>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-fsdevel@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-btrfs@vger.kernel.org
Subject: [dm-devel] [PATCH 20/31] scsi: replace the fmode_t argument to scsi_ioctl with a simple bool
Date: Tue,  6 Jun 2023 09:39:39 +0200	[thread overview]
Message-ID: <20230606073950.225178-21-hch@lst.de> (raw)
In-Reply-To: <20230606073950.225178-1-hch@lst.de>

Instead of passing a fmode_t and only checking it for FMODE_WRITE, pass
a bool open_for_write to prepare for callers that won't have the fmode_t.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/scsi/ch.c         |  3 ++-
 drivers/scsi/scsi_ioctl.c | 34 +++++++++++++++++-----------------
 drivers/scsi/sd.c         |  2 +-
 drivers/scsi/sg.c         |  5 +++--
 drivers/scsi/sr.c         |  2 +-
 drivers/scsi/st.c         |  2 +-
 include/scsi/scsi_ioctl.h |  2 +-
 7 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
index ac648bb8f7e7f4..cb0a399be1ccee 100644
--- a/drivers/scsi/ch.c
+++ b/drivers/scsi/ch.c
@@ -877,7 +877,8 @@ static long ch_ioctl(struct file *file,
 	}
 
 	default:
-		return scsi_ioctl(ch->device, file->f_mode, cmd, argp);
+		return scsi_ioctl(ch->device, file->f_mode & FMODE_WRITE, cmd,
+				  argp);
 
 	}
 }
diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
index dda5468ca97f90..6f6c5973c3ea95 100644
--- a/drivers/scsi/scsi_ioctl.c
+++ b/drivers/scsi/scsi_ioctl.c
@@ -346,7 +346,7 @@ bool scsi_cmd_allowed(unsigned char *cmd, bool open_for_write)
 EXPORT_SYMBOL(scsi_cmd_allowed);
 
 static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
-		struct sg_io_hdr *hdr, fmode_t mode)
+		struct sg_io_hdr *hdr, bool open_for_write)
 {
 	struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
 
@@ -354,7 +354,7 @@ static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
 		return -EMSGSIZE;
 	if (copy_from_user(scmd->cmnd, hdr->cmdp, hdr->cmd_len))
 		return -EFAULT;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		return -EPERM;
 	scmd->cmd_len = hdr->cmd_len;
 
@@ -407,7 +407,8 @@ static int scsi_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
 	return ret;
 }
 
-static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
+static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr,
+		bool open_for_write)
 {
 	unsigned long start_time;
 	ssize_t ret = 0;
@@ -448,7 +449,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 		goto out_put_request;
 	}
 
-	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, mode);
+	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, open_for_write);
 	if (ret < 0)
 		goto out_put_request;
 
@@ -477,8 +478,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 /**
  * sg_scsi_ioctl  --  handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl
  * @q:		request queue to send scsi commands down
- * @mode:	mode used to open the file through which the ioctl has been
- *		submitted
+ * @open_for_write: is the file / block device opened for writing?
  * @sic:	userspace structure describing the command to perform
  *
  * Send down the scsi command described by @sic to the device below
@@ -501,7 +501,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
  *      Positive numbers returned are the compacted SCSI error codes (4
  *      bytes in one int) where the lowest byte is the SCSI status.
  */
-static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
+static int sg_scsi_ioctl(struct request_queue *q, bool open_for_write,
 		struct scsi_ioctl_command __user *sic)
 {
 	struct request *rq;
@@ -554,7 +554,7 @@ static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
 		goto error;
 
 	err = -EPERM;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		goto error;
 
 	/* default.  possible overridden later */
@@ -776,7 +776,7 @@ static int scsi_put_cdrom_generic_arg(const struct cdrom_generic_command *cgc,
 	return 0;
 }
 
-static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
+static int scsi_cdrom_send_packet(struct scsi_device *sdev, bool open_for_write,
 		void __user *arg)
 {
 	struct cdrom_generic_command cgc;
@@ -817,7 +817,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	hdr.cmdp = ((struct cdrom_generic_command __user *) arg)->cmd;
 	hdr.cmd_len = sizeof(cgc.cmd);
 
-	err = sg_io(sdev, &hdr, mode);
+	err = sg_io(sdev, &hdr, open_for_write);
 	if (err == -EFAULT)
 		return -EFAULT;
 
@@ -832,7 +832,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	return err;
 }
 
-static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
+static int scsi_ioctl_sg_io(struct scsi_device *sdev, bool open_for_write,
 		void __user *argp)
 {
 	struct sg_io_hdr hdr;
@@ -841,7 +841,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 	error = get_sg_io_hdr(&hdr, argp);
 	if (error)
 		return error;
-	error = sg_io(sdev, &hdr, mode);
+	error = sg_io(sdev, &hdr, open_for_write);
 	if (error == -EFAULT)
 		return error;
 	if (put_sg_io_hdr(&hdr, argp))
@@ -852,7 +852,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 /**
  * scsi_ioctl - Dispatch ioctl to scsi device
  * @sdev: scsi device receiving ioctl
- * @mode: mode the block/char device is opened with
+ * @open_for_write: is the file / block device opened for writing?
  * @cmd: which ioctl is it
  * @arg: data associated with ioctl
  *
@@ -860,7 +860,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
  * does not take a major/minor number as the dev field.  Rather, it takes
  * a pointer to a &struct scsi_device.
  */
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg)
 {
 	struct request_queue *q = sdev->request_queue;
@@ -896,11 +896,11 @@ int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
 	case SG_EMULATED_HOST:
 		return sg_emulated_host(q, arg);
 	case SG_IO:
-		return scsi_ioctl_sg_io(sdev, mode, arg);
+		return scsi_ioctl_sg_io(sdev, open_for_write, arg);
 	case SCSI_IOCTL_SEND_COMMAND:
-		return sg_scsi_ioctl(q, mode, arg);
+		return sg_scsi_ioctl(q, open_for_write, arg);
 	case CDROM_SEND_PACKET:
-		return scsi_cdrom_send_packet(sdev, mode, arg);
+		return scsi_cdrom_send_packet(sdev, open_for_write, arg);
 	case CDROMCLOSETRAY:
 		return scsi_send_start_stop(sdev, 3);
 	case CDROMEJECT:
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index c67c84f6ba6178..02b6704ec2b401 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1463,7 +1463,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
 
 	if (is_sed_ioctl(cmd))
 		return sed_ioctl(sdkp->opal_dev, cmd, p);
-	return scsi_ioctl(sdp, mode, cmd, p);
+	return scsi_ioctl(sdp, mode & FMODE_WRITE, cmd, p);
 }
 
 static void set_media_not_present(struct scsi_disk *sdkp)
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index e49ea693d0b656..138e28bb76b749 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -1103,7 +1103,8 @@ sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp,
 	case SCSI_IOCTL_SEND_COMMAND:
 		if (atomic_read(&sdp->detaching))
 			return -ENODEV;
-		return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+		return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE,
+				  cmd_in, p);
 	case SG_SET_DEBUG:
 		result = get_user(val, ip);
 		if (result)
@@ -1159,7 +1160,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
 	ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p);
 	if (ret != -ENOIOCTLCMD)
 		return ret;
-	return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+	return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE, cmd_in, p);
 }
 
 static __poll_t
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 55082acb59bcaa..00aaafc8dd78f8 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -543,7 +543,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
 		if (ret != -ENOSYS)
 			goto put;
 	}
-	ret = scsi_ioctl(sdev, mode, cmd, argp);
+	ret = scsi_ioctl(sdev, mode & FMODE_WRITE, cmd, argp);
 
 put:
 	scsi_autopm_put_device(sdev);
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index b90a440e135dc4..14d7981ddcdd19 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -3832,7 +3832,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg)
 		break;
 	}
 
-	retval = scsi_ioctl(STp->device, file->f_mode, cmd_in, p);
+	retval = scsi_ioctl(STp->device, file->f_mode & FMODE_WRITE, cmd_in, p);
 	if (!retval && cmd_in == SCSI_IOCTL_STOP_UNIT) {
 		/* unload */
 		STp->rew_at_close = 0;
diff --git a/include/scsi/scsi_ioctl.h b/include/scsi/scsi_ioctl.h
index 914201a8cb947c..a207c07da9d20c 100644
--- a/include/scsi/scsi_ioctl.h
+++ b/include/scsi/scsi_ioctl.h
@@ -45,7 +45,7 @@ typedef struct scsi_fctargaddress {
 
 int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev,
 		int cmd, bool ndelay);
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg);
 int get_sg_io_hdr(struct sg_io_hdr *hdr, const void __user *argp);
 int put_sg_io_hdr(const struct sg_io_hdr *hdr, void __user *argp);
-- 
2.39.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Richard Weinberger <richard@nod.at>,
	Josef Bacik <josef@toxicpanda.com>,
	"Md. Haris Iqbal" <haris.iqbal@ionos.com>,
	Jack Wang <jinpu.wang@ionos.com>,
	Phillip Potter <phil@philpotter.co.uk>, Coly Li <colyli@suse.de>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Chris Mason <clm@fb.com>, David Sterba <dsterba@suse.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Pavel Machek <pavel@ucw.cz>,
	dm-devel@redhat.com, linux-block@vger.kernel.org,
	linux-um@lists.infradead.org, linux-scsi@vger.kernel.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-nvme@lists.infradead.org, linux-btrfs@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-nilfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-pm@vger.kernel.org
Subject: [PATCH 20/31] scsi: replace the fmode_t argument to scsi_ioctl with a simple bool
Date: Tue,  6 Jun 2023 09:39:39 +0200	[thread overview]
Message-ID: <20230606073950.225178-21-hch@lst.de> (raw)
In-Reply-To: <20230606073950.225178-1-hch@lst.de>

Instead of passing a fmode_t and only checking it for FMODE_WRITE, pass
a bool open_for_write to prepare for callers that won't have the fmode_t.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/scsi/ch.c         |  3 ++-
 drivers/scsi/scsi_ioctl.c | 34 +++++++++++++++++-----------------
 drivers/scsi/sd.c         |  2 +-
 drivers/scsi/sg.c         |  5 +++--
 drivers/scsi/sr.c         |  2 +-
 drivers/scsi/st.c         |  2 +-
 include/scsi/scsi_ioctl.h |  2 +-
 7 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
index ac648bb8f7e7f4..cb0a399be1ccee 100644
--- a/drivers/scsi/ch.c
+++ b/drivers/scsi/ch.c
@@ -877,7 +877,8 @@ static long ch_ioctl(struct file *file,
 	}
 
 	default:
-		return scsi_ioctl(ch->device, file->f_mode, cmd, argp);
+		return scsi_ioctl(ch->device, file->f_mode & FMODE_WRITE, cmd,
+				  argp);
 
 	}
 }
diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
index dda5468ca97f90..6f6c5973c3ea95 100644
--- a/drivers/scsi/scsi_ioctl.c
+++ b/drivers/scsi/scsi_ioctl.c
@@ -346,7 +346,7 @@ bool scsi_cmd_allowed(unsigned char *cmd, bool open_for_write)
 EXPORT_SYMBOL(scsi_cmd_allowed);
 
 static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
-		struct sg_io_hdr *hdr, fmode_t mode)
+		struct sg_io_hdr *hdr, bool open_for_write)
 {
 	struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
 
@@ -354,7 +354,7 @@ static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
 		return -EMSGSIZE;
 	if (copy_from_user(scmd->cmnd, hdr->cmdp, hdr->cmd_len))
 		return -EFAULT;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		return -EPERM;
 	scmd->cmd_len = hdr->cmd_len;
 
@@ -407,7 +407,8 @@ static int scsi_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
 	return ret;
 }
 
-static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
+static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr,
+		bool open_for_write)
 {
 	unsigned long start_time;
 	ssize_t ret = 0;
@@ -448,7 +449,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 		goto out_put_request;
 	}
 
-	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, mode);
+	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, open_for_write);
 	if (ret < 0)
 		goto out_put_request;
 
@@ -477,8 +478,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 /**
  * sg_scsi_ioctl  --  handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl
  * @q:		request queue to send scsi commands down
- * @mode:	mode used to open the file through which the ioctl has been
- *		submitted
+ * @open_for_write: is the file / block device opened for writing?
  * @sic:	userspace structure describing the command to perform
  *
  * Send down the scsi command described by @sic to the device below
@@ -501,7 +501,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
  *      Positive numbers returned are the compacted SCSI error codes (4
  *      bytes in one int) where the lowest byte is the SCSI status.
  */
-static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
+static int sg_scsi_ioctl(struct request_queue *q, bool open_for_write,
 		struct scsi_ioctl_command __user *sic)
 {
 	struct request *rq;
@@ -554,7 +554,7 @@ static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
 		goto error;
 
 	err = -EPERM;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		goto error;
 
 	/* default.  possible overridden later */
@@ -776,7 +776,7 @@ static int scsi_put_cdrom_generic_arg(const struct cdrom_generic_command *cgc,
 	return 0;
 }
 
-static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
+static int scsi_cdrom_send_packet(struct scsi_device *sdev, bool open_for_write,
 		void __user *arg)
 {
 	struct cdrom_generic_command cgc;
@@ -817,7 +817,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	hdr.cmdp = ((struct cdrom_generic_command __user *) arg)->cmd;
 	hdr.cmd_len = sizeof(cgc.cmd);
 
-	err = sg_io(sdev, &hdr, mode);
+	err = sg_io(sdev, &hdr, open_for_write);
 	if (err == -EFAULT)
 		return -EFAULT;
 
@@ -832,7 +832,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	return err;
 }
 
-static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
+static int scsi_ioctl_sg_io(struct scsi_device *sdev, bool open_for_write,
 		void __user *argp)
 {
 	struct sg_io_hdr hdr;
@@ -841,7 +841,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 	error = get_sg_io_hdr(&hdr, argp);
 	if (error)
 		return error;
-	error = sg_io(sdev, &hdr, mode);
+	error = sg_io(sdev, &hdr, open_for_write);
 	if (error == -EFAULT)
 		return error;
 	if (put_sg_io_hdr(&hdr, argp))
@@ -852,7 +852,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 /**
  * scsi_ioctl - Dispatch ioctl to scsi device
  * @sdev: scsi device receiving ioctl
- * @mode: mode the block/char device is opened with
+ * @open_for_write: is the file / block device opened for writing?
  * @cmd: which ioctl is it
  * @arg: data associated with ioctl
  *
@@ -860,7 +860,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
  * does not take a major/minor number as the dev field.  Rather, it takes
  * a pointer to a &struct scsi_device.
  */
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg)
 {
 	struct request_queue *q = sdev->request_queue;
@@ -896,11 +896,11 @@ int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
 	case SG_EMULATED_HOST:
 		return sg_emulated_host(q, arg);
 	case SG_IO:
-		return scsi_ioctl_sg_io(sdev, mode, arg);
+		return scsi_ioctl_sg_io(sdev, open_for_write, arg);
 	case SCSI_IOCTL_SEND_COMMAND:
-		return sg_scsi_ioctl(q, mode, arg);
+		return sg_scsi_ioctl(q, open_for_write, arg);
 	case CDROM_SEND_PACKET:
-		return scsi_cdrom_send_packet(sdev, mode, arg);
+		return scsi_cdrom_send_packet(sdev, open_for_write, arg);
 	case CDROMCLOSETRAY:
 		return scsi_send_start_stop(sdev, 3);
 	case CDROMEJECT:
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index c67c84f6ba6178..02b6704ec2b401 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1463,7 +1463,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
 
 	if (is_sed_ioctl(cmd))
 		return sed_ioctl(sdkp->opal_dev, cmd, p);
-	return scsi_ioctl(sdp, mode, cmd, p);
+	return scsi_ioctl(sdp, mode & FMODE_WRITE, cmd, p);
 }
 
 static void set_media_not_present(struct scsi_disk *sdkp)
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index e49ea693d0b656..138e28bb76b749 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -1103,7 +1103,8 @@ sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp,
 	case SCSI_IOCTL_SEND_COMMAND:
 		if (atomic_read(&sdp->detaching))
 			return -ENODEV;
-		return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+		return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE,
+				  cmd_in, p);
 	case SG_SET_DEBUG:
 		result = get_user(val, ip);
 		if (result)
@@ -1159,7 +1160,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
 	ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p);
 	if (ret != -ENOIOCTLCMD)
 		return ret;
-	return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+	return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE, cmd_in, p);
 }
 
 static __poll_t
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 55082acb59bcaa..00aaafc8dd78f8 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -543,7 +543,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
 		if (ret != -ENOSYS)
 			goto put;
 	}
-	ret = scsi_ioctl(sdev, mode, cmd, argp);
+	ret = scsi_ioctl(sdev, mode & FMODE_WRITE, cmd, argp);
 
 put:
 	scsi_autopm_put_device(sdev);
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index b90a440e135dc4..14d7981ddcdd19 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -3832,7 +3832,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg)
 		break;
 	}
 
-	retval = scsi_ioctl(STp->device, file->f_mode, cmd_in, p);
+	retval = scsi_ioctl(STp->device, file->f_mode & FMODE_WRITE, cmd_in, p);
 	if (!retval && cmd_in == SCSI_IOCTL_STOP_UNIT) {
 		/* unload */
 		STp->rew_at_close = 0;
diff --git a/include/scsi/scsi_ioctl.h b/include/scsi/scsi_ioctl.h
index 914201a8cb947c..a207c07da9d20c 100644
--- a/include/scsi/scsi_ioctl.h
+++ b/include/scsi/scsi_ioctl.h
@@ -45,7 +45,7 @@ typedef struct scsi_fctargaddress {
 
 int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev,
 		int cmd, bool ndelay);
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg);
 int get_sg_io_hdr(struct sg_io_hdr *hdr, const void __user *argp);
 int put_sg_io_hdr(const struct sg_io_hdr *hdr, void __user *argp);
-- 
2.39.2


WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Richard Weinberger <richard@nod.at>,
	Josef Bacik <josef@toxicpanda.com>,
	"Md. Haris Iqbal" <haris.iqbal@ionos.com>,
	Jack Wang <jinpu.wang@ionos.com>,
	Phillip Potter <phil@philpotter.co.uk>, Coly Li <colyli@suse.de>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Chris Mason <clm@fb.com>, David Sterba <dsterba@suse.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Pavel Machek <pavel@ucw.cz>,
	dm-devel@redhat.com, linux-block@vger.kernel.org,
	linux-um@lists.infradead.org, linux-scsi@vger.kernel.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-nvme@lists.infradead.org, linux-btrfs@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-nilfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-pm@vger.kernel.org
Subject: [PATCH 20/31] scsi: replace the fmode_t argument to scsi_ioctl with a simple bool
Date: Tue,  6 Jun 2023 09:39:39 +0200	[thread overview]
Message-ID: <20230606073950.225178-21-hch@lst.de> (raw)
In-Reply-To: <20230606073950.225178-1-hch@lst.de>

Instead of passing a fmode_t and only checking it for FMODE_WRITE, pass
a bool open_for_write to prepare for callers that won't have the fmode_t.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/scsi/ch.c         |  3 ++-
 drivers/scsi/scsi_ioctl.c | 34 +++++++++++++++++-----------------
 drivers/scsi/sd.c         |  2 +-
 drivers/scsi/sg.c         |  5 +++--
 drivers/scsi/sr.c         |  2 +-
 drivers/scsi/st.c         |  2 +-
 include/scsi/scsi_ioctl.h |  2 +-
 7 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
index ac648bb8f7e7f4..cb0a399be1ccee 100644
--- a/drivers/scsi/ch.c
+++ b/drivers/scsi/ch.c
@@ -877,7 +877,8 @@ static long ch_ioctl(struct file *file,
 	}
 
 	default:
-		return scsi_ioctl(ch->device, file->f_mode, cmd, argp);
+		return scsi_ioctl(ch->device, file->f_mode & FMODE_WRITE, cmd,
+				  argp);
 
 	}
 }
diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
index dda5468ca97f90..6f6c5973c3ea95 100644
--- a/drivers/scsi/scsi_ioctl.c
+++ b/drivers/scsi/scsi_ioctl.c
@@ -346,7 +346,7 @@ bool scsi_cmd_allowed(unsigned char *cmd, bool open_for_write)
 EXPORT_SYMBOL(scsi_cmd_allowed);
 
 static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
-		struct sg_io_hdr *hdr, fmode_t mode)
+		struct sg_io_hdr *hdr, bool open_for_write)
 {
 	struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
 
@@ -354,7 +354,7 @@ static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
 		return -EMSGSIZE;
 	if (copy_from_user(scmd->cmnd, hdr->cmdp, hdr->cmd_len))
 		return -EFAULT;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		return -EPERM;
 	scmd->cmd_len = hdr->cmd_len;
 
@@ -407,7 +407,8 @@ static int scsi_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
 	return ret;
 }
 
-static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
+static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr,
+		bool open_for_write)
 {
 	unsigned long start_time;
 	ssize_t ret = 0;
@@ -448,7 +449,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 		goto out_put_request;
 	}
 
-	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, mode);
+	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, open_for_write);
 	if (ret < 0)
 		goto out_put_request;
 
@@ -477,8 +478,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 /**
  * sg_scsi_ioctl  --  handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl
  * @q:		request queue to send scsi commands down
- * @mode:	mode used to open the file through which the ioctl has been
- *		submitted
+ * @open_for_write: is the file / block device opened for writing?
  * @sic:	userspace structure describing the command to perform
  *
  * Send down the scsi command described by @sic to the device below
@@ -501,7 +501,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
  *      Positive numbers returned are the compacted SCSI error codes (4
  *      bytes in one int) where the lowest byte is the SCSI status.
  */
-static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
+static int sg_scsi_ioctl(struct request_queue *q, bool open_for_write,
 		struct scsi_ioctl_command __user *sic)
 {
 	struct request *rq;
@@ -554,7 +554,7 @@ static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
 		goto error;
 
 	err = -EPERM;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		goto error;
 
 	/* default.  possible overridden later */
@@ -776,7 +776,7 @@ static int scsi_put_cdrom_generic_arg(const struct cdrom_generic_command *cgc,
 	return 0;
 }
 
-static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
+static int scsi_cdrom_send_packet(struct scsi_device *sdev, bool open_for_write,
 		void __user *arg)
 {
 	struct cdrom_generic_command cgc;
@@ -817,7 +817,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	hdr.cmdp = ((struct cdrom_generic_command __user *) arg)->cmd;
 	hdr.cmd_len = sizeof(cgc.cmd);
 
-	err = sg_io(sdev, &hdr, mode);
+	err = sg_io(sdev, &hdr, open_for_write);
 	if (err == -EFAULT)
 		return -EFAULT;
 
@@ -832,7 +832,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	return err;
 }
 
-static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
+static int scsi_ioctl_sg_io(struct scsi_device *sdev, bool open_for_write,
 		void __user *argp)
 {
 	struct sg_io_hdr hdr;
@@ -841,7 +841,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 	error = get_sg_io_hdr(&hdr, argp);
 	if (error)
 		return error;
-	error = sg_io(sdev, &hdr, mode);
+	error = sg_io(sdev, &hdr, open_for_write);
 	if (error == -EFAULT)
 		return error;
 	if (put_sg_io_hdr(&hdr, argp))
@@ -852,7 +852,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 /**
  * scsi_ioctl - Dispatch ioctl to scsi device
  * @sdev: scsi device receiving ioctl
- * @mode: mode the block/char device is opened with
+ * @open_for_write: is the file / block device opened for writing?
  * @cmd: which ioctl is it
  * @arg: data associated with ioctl
  *
@@ -860,7 +860,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
  * does not take a major/minor number as the dev field.  Rather, it takes
  * a pointer to a &struct scsi_device.
  */
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg)
 {
 	struct request_queue *q = sdev->request_queue;
@@ -896,11 +896,11 @@ int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
 	case SG_EMULATED_HOST:
 		return sg_emulated_host(q, arg);
 	case SG_IO:
-		return scsi_ioctl_sg_io(sdev, mode, arg);
+		return scsi_ioctl_sg_io(sdev, open_for_write, arg);
 	case SCSI_IOCTL_SEND_COMMAND:
-		return sg_scsi_ioctl(q, mode, arg);
+		return sg_scsi_ioctl(q, open_for_write, arg);
 	case CDROM_SEND_PACKET:
-		return scsi_cdrom_send_packet(sdev, mode, arg);
+		return scsi_cdrom_send_packet(sdev, open_for_write, arg);
 	case CDROMCLOSETRAY:
 		return scsi_send_start_stop(sdev, 3);
 	case CDROMEJECT:
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index c67c84f6ba6178..02b6704ec2b401 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1463,7 +1463,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
 
 	if (is_sed_ioctl(cmd))
 		return sed_ioctl(sdkp->opal_dev, cmd, p);
-	return scsi_ioctl(sdp, mode, cmd, p);
+	return scsi_ioctl(sdp, mode & FMODE_WRITE, cmd, p);
 }
 
 static void set_media_not_present(struct scsi_disk *sdkp)
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index e49ea693d0b656..138e28bb76b749 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -1103,7 +1103,8 @@ sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp,
 	case SCSI_IOCTL_SEND_COMMAND:
 		if (atomic_read(&sdp->detaching))
 			return -ENODEV;
-		return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+		return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE,
+				  cmd_in, p);
 	case SG_SET_DEBUG:
 		result = get_user(val, ip);
 		if (result)
@@ -1159,7 +1160,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
 	ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p);
 	if (ret != -ENOIOCTLCMD)
 		return ret;
-	return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+	return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE, cmd_in, p);
 }
 
 static __poll_t
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 55082acb59bcaa..00aaafc8dd78f8 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -543,7 +543,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
 		if (ret != -ENOSYS)
 			goto put;
 	}
-	ret = scsi_ioctl(sdev, mode, cmd, argp);
+	ret = scsi_ioctl(sdev, mode & FMODE_WRITE, cmd, argp);
 
 put:
 	scsi_autopm_put_device(sdev);
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index b90a440e135dc4..14d7981ddcdd19 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -3832,7 +3832,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg)
 		break;
 	}
 
-	retval = scsi_ioctl(STp->device, file->f_mode, cmd_in, p);
+	retval = scsi_ioctl(STp->device, file->f_mode & FMODE_WRITE, cmd_in, p);
 	if (!retval && cmd_in == SCSI_IOCTL_STOP_UNIT) {
 		/* unload */
 		STp->rew_at_close = 0;
diff --git a/include/scsi/scsi_ioctl.h b/include/scsi/scsi_ioctl.h
index 914201a8cb947c..a207c07da9d20c 100644
--- a/include/scsi/scsi_ioctl.h
+++ b/include/scsi/scsi_ioctl.h
@@ -45,7 +45,7 @@ typedef struct scsi_fctargaddress {
 
 int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev,
 		int cmd, bool ndelay);
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg);
 int get_sg_io_hdr(struct sg_io_hdr *hdr, const void __user *argp);
 int put_sg_io_hdr(const struct sg_io_hdr *hdr, void __user *argp);
-- 
2.39.2


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Richard Weinberger <richard@nod.at>,
	Josef Bacik <josef@toxicpanda.com>,
	"Md. Haris Iqbal" <haris.iqbal@ionos.com>,
	Jack Wang <jinpu.wang@ionos.com>,
	Phillip Potter <phil@philpotter.co.uk>, Coly Li <colyli@suse.de>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Chris Mason <clm@fb.com>, David Sterba <dsterba@suse.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Pavel Machek <pavel@ucw.cz>,
	dm-devel@redhat.com, linux-block@vger.kernel.org,
	linux-um@lists.infradead.org, linux-scsi@vger.kernel.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-nvme@lists.infradead.org, linux-btrfs@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-nilfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-pm@vger.kernel.org
Subject: [PATCH 20/31] scsi: replace the fmode_t argument to scsi_ioctl with a simple bool
Date: Tue,  6 Jun 2023 09:39:39 +0200	[thread overview]
Message-ID: <20230606073950.225178-21-hch@lst.de> (raw)
In-Reply-To: <20230606073950.225178-1-hch@lst.de>

Instead of passing a fmode_t and only checking it for FMODE_WRITE, pass
a bool open_for_write to prepare for callers that won't have the fmode_t.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/scsi/ch.c         |  3 ++-
 drivers/scsi/scsi_ioctl.c | 34 +++++++++++++++++-----------------
 drivers/scsi/sd.c         |  2 +-
 drivers/scsi/sg.c         |  5 +++--
 drivers/scsi/sr.c         |  2 +-
 drivers/scsi/st.c         |  2 +-
 include/scsi/scsi_ioctl.h |  2 +-
 7 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
index ac648bb8f7e7f4..cb0a399be1ccee 100644
--- a/drivers/scsi/ch.c
+++ b/drivers/scsi/ch.c
@@ -877,7 +877,8 @@ static long ch_ioctl(struct file *file,
 	}
 
 	default:
-		return scsi_ioctl(ch->device, file->f_mode, cmd, argp);
+		return scsi_ioctl(ch->device, file->f_mode & FMODE_WRITE, cmd,
+				  argp);
 
 	}
 }
diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
index dda5468ca97f90..6f6c5973c3ea95 100644
--- a/drivers/scsi/scsi_ioctl.c
+++ b/drivers/scsi/scsi_ioctl.c
@@ -346,7 +346,7 @@ bool scsi_cmd_allowed(unsigned char *cmd, bool open_for_write)
 EXPORT_SYMBOL(scsi_cmd_allowed);
 
 static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
-		struct sg_io_hdr *hdr, fmode_t mode)
+		struct sg_io_hdr *hdr, bool open_for_write)
 {
 	struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
 
@@ -354,7 +354,7 @@ static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
 		return -EMSGSIZE;
 	if (copy_from_user(scmd->cmnd, hdr->cmdp, hdr->cmd_len))
 		return -EFAULT;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		return -EPERM;
 	scmd->cmd_len = hdr->cmd_len;
 
@@ -407,7 +407,8 @@ static int scsi_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
 	return ret;
 }
 
-static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
+static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr,
+		bool open_for_write)
 {
 	unsigned long start_time;
 	ssize_t ret = 0;
@@ -448,7 +449,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 		goto out_put_request;
 	}
 
-	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, mode);
+	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, open_for_write);
 	if (ret < 0)
 		goto out_put_request;
 
@@ -477,8 +478,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 /**
  * sg_scsi_ioctl  --  handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl
  * @q:		request queue to send scsi commands down
- * @mode:	mode used to open the file through which the ioctl has been
- *		submitted
+ * @open_for_write: is the file / block device opened for writing?
  * @sic:	userspace structure describing the command to perform
  *
  * Send down the scsi command described by @sic to the device below
@@ -501,7 +501,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
  *      Positive numbers returned are the compacted SCSI error codes (4
  *      bytes in one int) where the lowest byte is the SCSI status.
  */
-static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
+static int sg_scsi_ioctl(struct request_queue *q, bool open_for_write,
 		struct scsi_ioctl_command __user *sic)
 {
 	struct request *rq;
@@ -554,7 +554,7 @@ static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
 		goto error;
 
 	err = -EPERM;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		goto error;
 
 	/* default.  possible overridden later */
@@ -776,7 +776,7 @@ static int scsi_put_cdrom_generic_arg(const struct cdrom_generic_command *cgc,
 	return 0;
 }
 
-static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
+static int scsi_cdrom_send_packet(struct scsi_device *sdev, bool open_for_write,
 		void __user *arg)
 {
 	struct cdrom_generic_command cgc;
@@ -817,7 +817,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	hdr.cmdp = ((struct cdrom_generic_command __user *) arg)->cmd;
 	hdr.cmd_len = sizeof(cgc.cmd);
 
-	err = sg_io(sdev, &hdr, mode);
+	err = sg_io(sdev, &hdr, open_for_write);
 	if (err == -EFAULT)
 		return -EFAULT;
 
@@ -832,7 +832,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	return err;
 }
 
-static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
+static int scsi_ioctl_sg_io(struct scsi_device *sdev, bool open_for_write,
 		void __user *argp)
 {
 	struct sg_io_hdr hdr;
@@ -841,7 +841,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 	error = get_sg_io_hdr(&hdr, argp);
 	if (error)
 		return error;
-	error = sg_io(sdev, &hdr, mode);
+	error = sg_io(sdev, &hdr, open_for_write);
 	if (error == -EFAULT)
 		return error;
 	if (put_sg_io_hdr(&hdr, argp))
@@ -852,7 +852,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 /**
  * scsi_ioctl - Dispatch ioctl to scsi device
  * @sdev: scsi device receiving ioctl
- * @mode: mode the block/char device is opened with
+ * @open_for_write: is the file / block device opened for writing?
  * @cmd: which ioctl is it
  * @arg: data associated with ioctl
  *
@@ -860,7 +860,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
  * does not take a major/minor number as the dev field.  Rather, it takes
  * a pointer to a &struct scsi_device.
  */
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg)
 {
 	struct request_queue *q = sdev->request_queue;
@@ -896,11 +896,11 @@ int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
 	case SG_EMULATED_HOST:
 		return sg_emulated_host(q, arg);
 	case SG_IO:
-		return scsi_ioctl_sg_io(sdev, mode, arg);
+		return scsi_ioctl_sg_io(sdev, open_for_write, arg);
 	case SCSI_IOCTL_SEND_COMMAND:
-		return sg_scsi_ioctl(q, mode, arg);
+		return sg_scsi_ioctl(q, open_for_write, arg);
 	case CDROM_SEND_PACKET:
-		return scsi_cdrom_send_packet(sdev, mode, arg);
+		return scsi_cdrom_send_packet(sdev, open_for_write, arg);
 	case CDROMCLOSETRAY:
 		return scsi_send_start_stop(sdev, 3);
 	case CDROMEJECT:
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index c67c84f6ba6178..02b6704ec2b401 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1463,7 +1463,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
 
 	if (is_sed_ioctl(cmd))
 		return sed_ioctl(sdkp->opal_dev, cmd, p);
-	return scsi_ioctl(sdp, mode, cmd, p);
+	return scsi_ioctl(sdp, mode & FMODE_WRITE, cmd, p);
 }
 
 static void set_media_not_present(struct scsi_disk *sdkp)
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index e49ea693d0b656..138e28bb76b749 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -1103,7 +1103,8 @@ sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp,
 	case SCSI_IOCTL_SEND_COMMAND:
 		if (atomic_read(&sdp->detaching))
 			return -ENODEV;
-		return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+		return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE,
+				  cmd_in, p);
 	case SG_SET_DEBUG:
 		result = get_user(val, ip);
 		if (result)
@@ -1159,7 +1160,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
 	ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p);
 	if (ret != -ENOIOCTLCMD)
 		return ret;
-	return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+	return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE, cmd_in, p);
 }
 
 static __poll_t
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 55082acb59bcaa..00aaafc8dd78f8 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -543,7 +543,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
 		if (ret != -ENOSYS)
 			goto put;
 	}
-	ret = scsi_ioctl(sdev, mode, cmd, argp);
+	ret = scsi_ioctl(sdev, mode & FMODE_WRITE, cmd, argp);
 
 put:
 	scsi_autopm_put_device(sdev);
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index b90a440e135dc4..14d7981ddcdd19 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -3832,7 +3832,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg)
 		break;
 	}
 
-	retval = scsi_ioctl(STp->device, file->f_mode, cmd_in, p);
+	retval = scsi_ioctl(STp->device, file->f_mode & FMODE_WRITE, cmd_in, p);
 	if (!retval && cmd_in == SCSI_IOCTL_STOP_UNIT) {
 		/* unload */
 		STp->rew_at_close = 0;
diff --git a/include/scsi/scsi_ioctl.h b/include/scsi/scsi_ioctl.h
index 914201a8cb947c..a207c07da9d20c 100644
--- a/include/scsi/scsi_ioctl.h
+++ b/include/scsi/scsi_ioctl.h
@@ -45,7 +45,7 @@ typedef struct scsi_fctargaddress {
 
 int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev,
 		int cmd, bool ndelay);
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg);
 int get_sg_io_hdr(struct sg_io_hdr *hdr, const void __user *argp);
 int put_sg_io_hdr(const struct sg_io_hdr *hdr, void __user *argp);
-- 
2.39.2


_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Vignesh Raghavendra <vigneshr@ti.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	linux-nvme@lists.infradead.org,
	Phillip Potter <phil@philpotter.co.uk>, Chris Mason <clm@fb.com>,
	dm-devel@redhat.com, "Md. Haris Iqbal" <haris.iqbal@ionos.com>,
	Pavel Machek <pavel@ucw.cz>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	Jack Wang <jinpu.wang@ionos.com>,
	linux-nilfs@vger.kernel.org, linux-scsi@vger.kernel.org,
	Richard Weinberger <richard@nod.at>,
	linux-pm@vger.kernel.org, linux-um@lists.infradead.org,
	Josef Bacik <josef@toxicpanda.com>, Coly Li <colyli@suse.de>,
	linux-block@vger.kernel.org, linux-bcache@vger.kernel.org,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	David Sterba <dsterba@suse.com>,
	Christian Brauner <brauner@kernel.org>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-fsdevel@vger.kernel.org, linux-mtd@lists.infradead.
Subject: [PATCH 20/31] scsi: replace the fmode_t argument to scsi_ioctl with a simple bool
Date: Tue,  6 Jun 2023 09:39:39 +0200	[thread overview]
Message-ID: <20230606073950.225178-21-hch@lst.de> (raw)
In-Reply-To: <20230606073950.225178-1-hch@lst.de>

Instead of passing a fmode_t and only checking it for FMODE_WRITE, pass
a bool open_for_write to prepare for callers that won't have the fmode_t.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/scsi/ch.c         |  3 ++-
 drivers/scsi/scsi_ioctl.c | 34 +++++++++++++++++-----------------
 drivers/scsi/sd.c         |  2 +-
 drivers/scsi/sg.c         |  5 +++--
 drivers/scsi/sr.c         |  2 +-
 drivers/scsi/st.c         |  2 +-
 include/scsi/scsi_ioctl.h |  2 +-
 7 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
index ac648bb8f7e7f4..cb0a399be1ccee 100644
--- a/drivers/scsi/ch.c
+++ b/drivers/scsi/ch.c
@@ -877,7 +877,8 @@ static long ch_ioctl(struct file *file,
 	}
 
 	default:
-		return scsi_ioctl(ch->device, file->f_mode, cmd, argp);
+		return scsi_ioctl(ch->device, file->f_mode & FMODE_WRITE, cmd,
+				  argp);
 
 	}
 }
diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
index dda5468ca97f90..6f6c5973c3ea95 100644
--- a/drivers/scsi/scsi_ioctl.c
+++ b/drivers/scsi/scsi_ioctl.c
@@ -346,7 +346,7 @@ bool scsi_cmd_allowed(unsigned char *cmd, bool open_for_write)
 EXPORT_SYMBOL(scsi_cmd_allowed);
 
 static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
-		struct sg_io_hdr *hdr, fmode_t mode)
+		struct sg_io_hdr *hdr, bool open_for_write)
 {
 	struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
 
@@ -354,7 +354,7 @@ static int scsi_fill_sghdr_rq(struct scsi_device *sdev, struct request *rq,
 		return -EMSGSIZE;
 	if (copy_from_user(scmd->cmnd, hdr->cmdp, hdr->cmd_len))
 		return -EFAULT;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		return -EPERM;
 	scmd->cmd_len = hdr->cmd_len;
 
@@ -407,7 +407,8 @@ static int scsi_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
 	return ret;
 }
 
-static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
+static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr,
+		bool open_for_write)
 {
 	unsigned long start_time;
 	ssize_t ret = 0;
@@ -448,7 +449,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 		goto out_put_request;
 	}
 
-	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, mode);
+	ret = scsi_fill_sghdr_rq(sdev, rq, hdr, open_for_write);
 	if (ret < 0)
 		goto out_put_request;
 
@@ -477,8 +478,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 /**
  * sg_scsi_ioctl  --  handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl
  * @q:		request queue to send scsi commands down
- * @mode:	mode used to open the file through which the ioctl has been
- *		submitted
+ * @open_for_write: is the file / block device opened for writing?
  * @sic:	userspace structure describing the command to perform
  *
  * Send down the scsi command described by @sic to the device below
@@ -501,7 +501,7 @@ static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
  *      Positive numbers returned are the compacted SCSI error codes (4
  *      bytes in one int) where the lowest byte is the SCSI status.
  */
-static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
+static int sg_scsi_ioctl(struct request_queue *q, bool open_for_write,
 		struct scsi_ioctl_command __user *sic)
 {
 	struct request *rq;
@@ -554,7 +554,7 @@ static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
 		goto error;
 
 	err = -EPERM;
-	if (!scsi_cmd_allowed(scmd->cmnd, mode & FMODE_WRITE))
+	if (!scsi_cmd_allowed(scmd->cmnd, open_for_write))
 		goto error;
 
 	/* default.  possible overridden later */
@@ -776,7 +776,7 @@ static int scsi_put_cdrom_generic_arg(const struct cdrom_generic_command *cgc,
 	return 0;
 }
 
-static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
+static int scsi_cdrom_send_packet(struct scsi_device *sdev, bool open_for_write,
 		void __user *arg)
 {
 	struct cdrom_generic_command cgc;
@@ -817,7 +817,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	hdr.cmdp = ((struct cdrom_generic_command __user *) arg)->cmd;
 	hdr.cmd_len = sizeof(cgc.cmd);
 
-	err = sg_io(sdev, &hdr, mode);
+	err = sg_io(sdev, &hdr, open_for_write);
 	if (err == -EFAULT)
 		return -EFAULT;
 
@@ -832,7 +832,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
 	return err;
 }
 
-static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
+static int scsi_ioctl_sg_io(struct scsi_device *sdev, bool open_for_write,
 		void __user *argp)
 {
 	struct sg_io_hdr hdr;
@@ -841,7 +841,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 	error = get_sg_io_hdr(&hdr, argp);
 	if (error)
 		return error;
-	error = sg_io(sdev, &hdr, mode);
+	error = sg_io(sdev, &hdr, open_for_write);
 	if (error == -EFAULT)
 		return error;
 	if (put_sg_io_hdr(&hdr, argp))
@@ -852,7 +852,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
 /**
  * scsi_ioctl - Dispatch ioctl to scsi device
  * @sdev: scsi device receiving ioctl
- * @mode: mode the block/char device is opened with
+ * @open_for_write: is the file / block device opened for writing?
  * @cmd: which ioctl is it
  * @arg: data associated with ioctl
  *
@@ -860,7 +860,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
  * does not take a major/minor number as the dev field.  Rather, it takes
  * a pointer to a &struct scsi_device.
  */
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg)
 {
 	struct request_queue *q = sdev->request_queue;
@@ -896,11 +896,11 @@ int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
 	case SG_EMULATED_HOST:
 		return sg_emulated_host(q, arg);
 	case SG_IO:
-		return scsi_ioctl_sg_io(sdev, mode, arg);
+		return scsi_ioctl_sg_io(sdev, open_for_write, arg);
 	case SCSI_IOCTL_SEND_COMMAND:
-		return sg_scsi_ioctl(q, mode, arg);
+		return sg_scsi_ioctl(q, open_for_write, arg);
 	case CDROM_SEND_PACKET:
-		return scsi_cdrom_send_packet(sdev, mode, arg);
+		return scsi_cdrom_send_packet(sdev, open_for_write, arg);
 	case CDROMCLOSETRAY:
 		return scsi_send_start_stop(sdev, 3);
 	case CDROMEJECT:
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index c67c84f6ba6178..02b6704ec2b401 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1463,7 +1463,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
 
 	if (is_sed_ioctl(cmd))
 		return sed_ioctl(sdkp->opal_dev, cmd, p);
-	return scsi_ioctl(sdp, mode, cmd, p);
+	return scsi_ioctl(sdp, mode & FMODE_WRITE, cmd, p);
 }
 
 static void set_media_not_present(struct scsi_disk *sdkp)
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index e49ea693d0b656..138e28bb76b749 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -1103,7 +1103,8 @@ sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp,
 	case SCSI_IOCTL_SEND_COMMAND:
 		if (atomic_read(&sdp->detaching))
 			return -ENODEV;
-		return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+		return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE,
+				  cmd_in, p);
 	case SG_SET_DEBUG:
 		result = get_user(val, ip);
 		if (result)
@@ -1159,7 +1160,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
 	ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p);
 	if (ret != -ENOIOCTLCMD)
 		return ret;
-	return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
+	return scsi_ioctl(sdp->device, filp->f_mode & FMODE_WRITE, cmd_in, p);
 }
 
 static __poll_t
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 55082acb59bcaa..00aaafc8dd78f8 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -543,7 +543,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
 		if (ret != -ENOSYS)
 			goto put;
 	}
-	ret = scsi_ioctl(sdev, mode, cmd, argp);
+	ret = scsi_ioctl(sdev, mode & FMODE_WRITE, cmd, argp);
 
 put:
 	scsi_autopm_put_device(sdev);
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index b90a440e135dc4..14d7981ddcdd19 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -3832,7 +3832,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg)
 		break;
 	}
 
-	retval = scsi_ioctl(STp->device, file->f_mode, cmd_in, p);
+	retval = scsi_ioctl(STp->device, file->f_mode & FMODE_WRITE, cmd_in, p);
 	if (!retval && cmd_in == SCSI_IOCTL_STOP_UNIT) {
 		/* unload */
 		STp->rew_at_close = 0;
diff --git a/include/scsi/scsi_ioctl.h b/include/scsi/scsi_ioctl.h
index 914201a8cb947c..a207c07da9d20c 100644
--- a/include/scsi/scsi_ioctl.h
+++ b/include/scsi/scsi_ioctl.h
@@ -45,7 +45,7 @@ typedef struct scsi_fctargaddress {
 
 int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev,
 		int cmd, bool ndelay);
-int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+int scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd,
 		void __user *arg);
 int get_sg_io_hdr(struct sg_io_hdr *hdr, const void __user *argp);
 int put_sg_io_hdr(const struct sg_io_hdr *hdr, void __user *argp);
-- 
2.39.2

  parent reply	other threads:[~2023-06-06  7:41 UTC|newest]

Thread overview: 750+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-06  7:39 decouple block open flags from fmode_t Christoph Hellwig
2023-06-06  7:39 ` Christoph Hellwig
2023-06-06  7:39 ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39 ` [f2fs-dev] " Christoph Hellwig
2023-06-06  7:39 ` Christoph Hellwig
2023-06-06  7:39 ` Christoph Hellwig
2023-06-06  7:39 ` [PATCH 01/31] block: also call ->open for incremental partition opens Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-07  8:14   ` Christian Brauner
2023-06-07  8:14     ` Christian Brauner
2023-06-07  8:14     ` [dm-devel] " Christian Brauner
2023-06-07  8:14     ` Christian Brauner
2023-06-07  8:14     ` Christian Brauner
2023-06-07  8:14     ` [f2fs-dev] " Christian Brauner
2023-06-07  8:32     ` Christoph Hellwig
2023-06-07  8:32       ` Christoph Hellwig
2023-06-07  8:32       ` [dm-devel] " Christoph Hellwig
2023-06-07  8:32       ` Christoph Hellwig
2023-06-07  8:32       ` Christoph Hellwig
2023-06-07  8:32       ` [f2fs-dev] " Christoph Hellwig
2023-06-07 12:10   ` Hannes Reinecke
2023-06-07 12:10     ` Hannes Reinecke
2023-06-07 12:10     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:10     ` Hannes Reinecke
2023-06-07 12:10     ` Hannes Reinecke
2023-06-07 12:10     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [PATCH 02/31] cdrom: remove the unused bdev argument to cdrom_open Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06 22:50   ` Phillip Potter
2023-06-06 22:50     ` Phillip Potter
2023-06-06 22:50     ` [dm-devel] " Phillip Potter
2023-06-06 22:50     ` [f2fs-dev] " Phillip Potter
2023-06-06 22:50     ` Phillip Potter
2023-06-06 22:50     ` Phillip Potter
2023-06-07  8:16   ` Christian Brauner
2023-06-07  8:16     ` Christian Brauner
2023-06-07  8:16     ` [dm-devel] " Christian Brauner
2023-06-07  8:16     ` Christian Brauner
2023-06-07  8:16     ` Christian Brauner
2023-06-07  8:16     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:10   ` Hannes Reinecke
2023-06-07 12:10     ` Hannes Reinecke
2023-06-07 12:10     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:10     ` Hannes Reinecke
2023-06-07 12:10     ` Hannes Reinecke
2023-06-07 12:10     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [PATCH 03/31] cdrom: remove the unused mode argument to cdrom_ioctl Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06 22:54   ` Phillip Potter
2023-06-06 22:54     ` Phillip Potter
2023-06-06 22:54     ` [dm-devel] " Phillip Potter
2023-06-06 22:54     ` [f2fs-dev] " Phillip Potter
2023-06-06 22:54     ` Phillip Potter
2023-06-06 22:54     ` Phillip Potter
2023-06-07  8:17   ` Christian Brauner
2023-06-07  8:17     ` Christian Brauner
2023-06-07  8:17     ` [dm-devel] " Christian Brauner
2023-06-07  8:17     ` Christian Brauner
2023-06-07  8:17     ` Christian Brauner
2023-06-07  8:17     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:11   ` Hannes Reinecke
2023-06-07 12:11     ` Hannes Reinecke
2023-06-07 12:11     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:11     ` Hannes Reinecke
2023-06-07 12:11     ` Hannes Reinecke
2023-06-07 12:11     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [PATCH 04/31] cdrom: remove the unused cdrom_close_write release code Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06 22:56   ` Phillip Potter
2023-06-06 22:56     ` Phillip Potter
2023-06-06 22:56     ` [dm-devel] " Phillip Potter
2023-06-06 22:56     ` [f2fs-dev] " Phillip Potter
2023-06-06 22:56     ` Phillip Potter
2023-06-06 22:56     ` Phillip Potter
2023-06-07  8:17   ` Christian Brauner
2023-06-07  8:17     ` Christian Brauner
2023-06-07  8:17     ` [dm-devel] " Christian Brauner
2023-06-07  8:17     ` Christian Brauner
2023-06-07  8:17     ` Christian Brauner
2023-06-07  8:17     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:12   ` Hannes Reinecke
2023-06-07 12:12     ` Hannes Reinecke
2023-06-07 12:12     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:12     ` Hannes Reinecke
2023-06-07 12:12     ` Hannes Reinecke
2023-06-07 12:12     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [PATCH 05/31] cdrom: track if a cdrom_device_info was opened for data Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06 22:59   ` Phillip Potter
2023-06-06 22:59     ` Phillip Potter
2023-06-06 22:59     ` [dm-devel] " Phillip Potter
2023-06-06 22:59     ` [f2fs-dev] " Phillip Potter
2023-06-06 22:59     ` Phillip Potter
2023-06-06 22:59     ` Phillip Potter
2023-06-07  8:19   ` Christian Brauner
2023-06-07  8:19     ` Christian Brauner
2023-06-07  8:19     ` [dm-devel] " Christian Brauner
2023-06-07  8:19     ` Christian Brauner
2023-06-07  8:19     ` Christian Brauner
2023-06-07  8:19     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:13   ` Hannes Reinecke
2023-06-07 12:13     ` Hannes Reinecke
2023-06-07 12:13     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:13     ` Hannes Reinecke
2023-06-07 12:13     ` Hannes Reinecke
2023-06-07 12:13     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 12:20     ` Christoph Hellwig
2023-06-07 12:20       ` Christoph Hellwig
2023-06-07 12:20       ` [dm-devel] " Christoph Hellwig
2023-06-07 12:20       ` Christoph Hellwig
2023-06-07 12:20       ` Christoph Hellwig
2023-06-07 12:20       ` [f2fs-dev] " Christoph Hellwig
2023-06-06  7:39 ` [PATCH 06/31] cdrom: remove the unused mode argument to cdrom_release Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06 23:00   ` Phillip Potter
2023-06-06 23:00     ` Phillip Potter
2023-06-06 23:00     ` [dm-devel] " Phillip Potter
2023-06-06 23:00     ` [f2fs-dev] " Phillip Potter
2023-06-06 23:00     ` Phillip Potter
2023-06-06 23:00     ` Phillip Potter
2023-06-08  8:41     ` Christoph Hellwig
2023-06-08  8:41       ` Christoph Hellwig
2023-06-08  8:41       ` Christoph Hellwig
2023-06-08  8:41       ` [dm-devel] " Christoph Hellwig
2023-06-08  8:41       ` Christoph Hellwig
2023-06-08  8:41       ` [f2fs-dev] " Christoph Hellwig
2023-06-08  8:47       ` Phillip Potter
2023-06-08  8:47         ` Phillip Potter
2023-06-08  8:47         ` [dm-devel] " Phillip Potter
2023-06-08  8:47         ` [f2fs-dev] " Phillip Potter
2023-06-08  8:47         ` Phillip Potter
2023-06-08  8:47         ` Phillip Potter
2023-06-08  9:04         ` Christoph Hellwig
2023-06-08  9:04           ` Christoph Hellwig
2023-06-08  9:04           ` Christoph Hellwig
2023-06-08  9:04           ` [dm-devel] " Christoph Hellwig
2023-06-08  9:04           ` Christoph Hellwig
2023-06-08  9:04           ` [f2fs-dev] " Christoph Hellwig
2023-06-08  9:44           ` Phillip Potter
2023-06-08  9:44             ` Phillip Potter
2023-06-08  9:44             ` [dm-devel] " Phillip Potter
2023-06-08  9:44             ` [f2fs-dev] " Phillip Potter
2023-06-08  9:44             ` Phillip Potter
2023-06-08  9:44             ` Phillip Potter
2023-06-07  8:20   ` Christian Brauner
2023-06-07  8:20     ` Christian Brauner
2023-06-07  8:20     ` [dm-devel] " Christian Brauner
2023-06-07  8:20     ` Christian Brauner
2023-06-07  8:20     ` Christian Brauner
2023-06-07  8:20     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:14   ` Hannes Reinecke
2023-06-07 12:14     ` Hannes Reinecke
2023-06-07 12:14     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:14     ` Hannes Reinecke
2023-06-07 12:14     ` Hannes Reinecke
2023-06-07 12:14     ` [f2fs-dev] " Hannes Reinecke
2023-06-27  5:41   ` Guenter Roeck
2023-06-27  5:41     ` Guenter Roeck
2023-06-27  5:41     ` Guenter Roeck
2023-06-27  5:41     ` [dm-devel] " Guenter Roeck
2023-06-27  5:41     ` Guenter Roeck
2023-06-27  5:41     ` [f2fs-dev] " Guenter Roeck
2023-06-06  7:39 ` [PATCH 07/31] block: pass a gendisk on bdev_check_media_change Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-07  8:25   ` Christian Brauner
2023-06-07  8:25     ` Christian Brauner
2023-06-07  8:25     ` [dm-devel] " Christian Brauner
2023-06-07  8:25     ` Christian Brauner
2023-06-07  8:25     ` Christian Brauner
2023-06-07  8:25     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:15   ` Hannes Reinecke
2023-06-07 12:15     ` Hannes Reinecke
2023-06-07 12:15     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:15     ` Hannes Reinecke
2023-06-07 12:15     ` Hannes Reinecke
2023-06-07 12:15     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [PATCH 08/31] block: share code between disk_check_media_change and disk_force_media_change Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-07  8:26   ` Christian Brauner
2023-06-07  8:26     ` Christian Brauner
2023-06-07  8:26     ` [dm-devel] " Christian Brauner
2023-06-07  8:26     ` Christian Brauner
2023-06-07  8:26     ` Christian Brauner
2023-06-07  8:26     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:19   ` Hannes Reinecke
2023-06-07 12:19     ` Hannes Reinecke
2023-06-07 12:19     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:19     ` Hannes Reinecke
2023-06-07 12:19     ` Hannes Reinecke
2023-06-07 12:19     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 12:21     ` Christoph Hellwig
2023-06-07 12:21       ` Christoph Hellwig
2023-06-07 12:21       ` [dm-devel] " Christoph Hellwig
2023-06-07 12:21       ` Christoph Hellwig
2023-06-07 12:21       ` Christoph Hellwig
2023-06-07 12:21       ` [f2fs-dev] " Christoph Hellwig
2023-06-07 13:18       ` Hannes Reinecke
2023-06-07 13:18         ` Hannes Reinecke
2023-06-07 13:18         ` [dm-devel] " Hannes Reinecke
2023-06-07 13:18         ` Hannes Reinecke
2023-06-07 13:18         ` Hannes Reinecke
2023-06-07 13:18         ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 09/31] block: pass a gendisk to ->open Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-07  8:34   ` Christian Brauner
2023-06-07  8:34     ` Christian Brauner
2023-06-07  8:34     ` [dm-devel] " Christian Brauner
2023-06-07  8:34     ` Christian Brauner
2023-06-07  8:34     ` Christian Brauner
2023-06-07  8:34     ` [f2fs-dev] " Christian Brauner
2023-06-07  9:42   ` Jinpu Wang
2023-06-07  9:42     ` Jinpu Wang
2023-06-07  9:42     ` [dm-devel] " Jinpu Wang
2023-06-07  9:42     ` [f2fs-dev] " Jinpu Wang via Linux-f2fs-devel
2023-06-07  9:42     ` Jinpu Wang
2023-06-07  9:42     ` Jinpu Wang
2023-06-07 12:19   ` Hannes Reinecke
2023-06-07 12:19     ` Hannes Reinecke
2023-06-07 12:19     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:19     ` Hannes Reinecke
2023-06-07 12:19     ` Hannes Reinecke
2023-06-07 12:19     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [PATCH 10/31] block: remove the unused mode argument to ->release Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-07  8:34   ` Christian Brauner
2023-06-07  8:34     ` Christian Brauner
2023-06-07  8:34     ` [dm-devel] " Christian Brauner
2023-06-07  8:34     ` Christian Brauner
2023-06-07  8:34     ` Christian Brauner
2023-06-07  8:34     ` [f2fs-dev] " Christian Brauner
2023-06-07  9:41   ` Jinpu Wang
2023-06-07  9:41     ` Jinpu Wang
2023-06-07  9:41     ` [dm-devel] " Jinpu Wang
2023-06-07  9:41     ` [f2fs-dev] " Jinpu Wang via Linux-f2fs-devel
2023-06-07  9:41     ` Jinpu Wang
2023-06-07  9:41     ` Jinpu Wang
2023-06-07 12:20   ` Hannes Reinecke
2023-06-07 12:20     ` Hannes Reinecke
2023-06-07 12:20     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:20     ` Hannes Reinecke
2023-06-07 12:20     ` Hannes Reinecke
2023-06-07 12:20     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 11/31] block: rename blkdev_close to blkdev_release Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-07  8:35   ` Christian Brauner
2023-06-07  8:35     ` Christian Brauner
2023-06-07  8:35     ` [dm-devel] " Christian Brauner
2023-06-07  8:35     ` Christian Brauner
2023-06-07  8:35     ` [f2fs-dev] " Christian Brauner
2023-06-07  8:35     ` Christian Brauner
2023-06-07 12:21   ` Hannes Reinecke
2023-06-07 12:21     ` Hannes Reinecke
2023-06-07 12:21     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:21     ` Hannes Reinecke
2023-06-07 12:21     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 12:21     ` Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 12/31] swsusp: don't pass a stack address to blkdev_get_by_path Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-07 12:22   ` Hannes Reinecke
2023-06-07 12:22     ` Hannes Reinecke
2023-06-07 12:22     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:22     ` Hannes Reinecke
2023-06-07 12:22     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 12:22     ` Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 13/31] bcache: " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-07 12:23   ` Hannes Reinecke
2023-06-07 12:23     ` Hannes Reinecke
2023-06-07 12:23     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:23     ` Hannes Reinecke
2023-06-07 12:23     ` Hannes Reinecke
2023-06-07 12:23     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 14/31] rnbd-srv: don't pass a holder for non-exclusive blkdev_get_by_path Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-07  8:39   ` Christian Brauner
2023-06-07  8:39     ` Christian Brauner
2023-06-07  8:39     ` [dm-devel] " Christian Brauner
2023-06-07  8:39     ` Christian Brauner
2023-06-07  8:39     ` Christian Brauner
2023-06-07  8:39     ` [f2fs-dev] " Christian Brauner
2023-06-07  9:38   ` Jinpu Wang
2023-06-07  9:38     ` Jinpu Wang
2023-06-07  9:38     ` [dm-devel] " Jinpu Wang
2023-06-07  9:38     ` [f2fs-dev] " Jinpu Wang via Linux-f2fs-devel
2023-06-07  9:38     ` Jinpu Wang
2023-06-07  9:38     ` Jinpu Wang
2023-06-07 12:24   ` Hannes Reinecke
2023-06-07 12:24     ` Hannes Reinecke
2023-06-07 12:24     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:24     ` Hannes Reinecke
2023-06-07 12:24     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 12:24     ` Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 15/31] btrfs: " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-07  8:40   ` Christian Brauner
2023-06-07  8:40     ` Christian Brauner
2023-06-07  8:40     ` [dm-devel] " Christian Brauner
2023-06-07  8:40     ` Christian Brauner
2023-06-07  8:40     ` Christian Brauner
2023-06-07  8:40     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:24   ` Hannes Reinecke
2023-06-07 12:24     ` Hannes Reinecke
2023-06-07 12:24     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:24     ` Hannes Reinecke
2023-06-07 12:24     ` Hannes Reinecke
2023-06-07 12:24     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 13:32   ` David Sterba
2023-06-07 13:32     ` David Sterba
2023-06-07 13:32     ` [dm-devel] " David Sterba
2023-06-07 13:32     ` David Sterba
2023-06-07 13:32     ` [f2fs-dev] " David Sterba
2023-06-07 13:32     ` David Sterba
2023-06-06  7:39 ` [f2fs-dev] [PATCH 16/31] block: use the holder as indication for exclusive opens Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  8:49   ` [f2fs-dev] " Christian Brauner
2023-06-07  8:49     ` Christian Brauner
2023-06-07  8:49     ` [dm-devel] " Christian Brauner
2023-06-07  8:49     ` Christian Brauner
2023-06-07  8:49     ` Christian Brauner
2023-06-07  8:49     ` Christian Brauner
2023-06-07  9:40   ` Jinpu Wang
2023-06-07  9:40     ` Jinpu Wang
2023-06-07  9:40     ` [dm-devel] " Jinpu Wang
2023-06-07  9:40     ` [f2fs-dev] " Jinpu Wang via Linux-f2fs-devel
2023-06-07  9:40     ` Jinpu Wang
2023-06-07  9:40     ` Jinpu Wang
2023-06-07 12:29   ` Hannes Reinecke
2023-06-07 12:29     ` Hannes Reinecke
2023-06-07 12:29     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:29     ` Hannes Reinecke
2023-06-07 12:29     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 12:29     ` Hannes Reinecke
2023-06-07 13:53   ` David Sterba
2023-06-07 13:53     ` David Sterba
2023-06-07 13:53     ` [dm-devel] " David Sterba
2023-06-07 13:53     ` David Sterba
2023-06-07 13:53     ` [f2fs-dev] " David Sterba
2023-06-07 13:53     ` David Sterba
2023-06-06  7:39 ` [PATCH 17/31] block: add a sb_open_mode helper Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` [f2fs-dev] " Christoph Hellwig
2023-06-07  8:55   ` Christian Brauner
2023-06-07  8:55     ` Christian Brauner
2023-06-07  8:55     ` [dm-devel] " Christian Brauner
2023-06-07  8:55     ` Christian Brauner
2023-06-07  8:55     ` Christian Brauner
2023-06-07  8:55     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:30   ` Hannes Reinecke
2023-06-07 12:30     ` Hannes Reinecke
2023-06-07 12:30     ` [dm-devel] " Hannes Reinecke
2023-06-07 12:30     ` Hannes Reinecke
2023-06-07 12:30     ` Hannes Reinecke
2023-06-07 12:30     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 18/31] fs: remove sb->s_mode Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  8:56   ` Christian Brauner
2023-06-07  8:56     ` Christian Brauner
2023-06-07  8:56     ` [dm-devel] " Christian Brauner
2023-06-07  8:56     ` Christian Brauner
2023-06-07  8:56     ` Christian Brauner
2023-06-07  8:56     ` [f2fs-dev] " Christian Brauner
2023-06-07 13:01   ` Hannes Reinecke
2023-06-07 13:01     ` Hannes Reinecke
2023-06-07 13:01     ` Hannes Reinecke
2023-06-07 13:01     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:01     ` Hannes Reinecke
2023-06-07 13:01     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 19/31] scsi: replace the fmode_t argument to scsi_cmd_allowed with a simple bool Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  8:57   ` Christian Brauner
2023-06-07  8:57     ` Christian Brauner
2023-06-07  8:57     ` [dm-devel] " Christian Brauner
2023-06-07  8:57     ` [f2fs-dev] " Christian Brauner
2023-06-07  8:57     ` Christian Brauner
2023-06-07  8:57     ` Christian Brauner
2023-06-07 13:02   ` Hannes Reinecke
2023-06-07 13:02     ` Hannes Reinecke
2023-06-07 13:02     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:02     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 13:02     ` Hannes Reinecke
2023-06-07 13:02     ` Hannes Reinecke
2023-06-08  1:18   ` Martin K. Petersen
2023-06-08  1:18     ` Martin K. Petersen
2023-06-08  1:18     ` [dm-devel] " Martin K. Petersen
2023-06-08  1:18     ` Martin K. Petersen
2023-06-08  1:18     ` Martin K. Petersen
2023-06-08  1:18     ` [f2fs-dev] " Martin K. Petersen
2023-06-06  7:39 ` Christoph Hellwig [this message]
2023-06-06  7:39   ` [PATCH 20/31] scsi: replace the fmode_t argument to scsi_ioctl " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  8:58   ` Christian Brauner
2023-06-07  8:58     ` Christian Brauner
2023-06-07  8:58     ` [dm-devel] " Christian Brauner
2023-06-07  8:58     ` Christian Brauner
2023-06-07  8:58     ` Christian Brauner
2023-06-07  8:58     ` [f2fs-dev] " Christian Brauner
2023-06-07 13:04   ` Hannes Reinecke
2023-06-07 13:04     ` Hannes Reinecke
2023-06-07 13:04     ` Hannes Reinecke
2023-06-07 13:04     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:04     ` Hannes Reinecke
2023-06-07 13:04     ` [f2fs-dev] " Hannes Reinecke
2023-06-08  1:17   ` Martin K. Petersen
2023-06-08  1:17     ` Martin K. Petersen
2023-06-08  1:17     ` [dm-devel] " Martin K. Petersen
2023-06-08  1:17     ` Martin K. Petersen
2023-06-08  1:17     ` Martin K. Petersen
2023-06-08  1:17     ` [f2fs-dev] " Martin K. Petersen
2023-06-06  7:39 ` [f2fs-dev] [PATCH 21/31] scsi: replace the fmode_t argument to ->sg_io_fn " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  8:58   ` Christian Brauner
2023-06-07  8:58     ` Christian Brauner
2023-06-07  8:58     ` [dm-devel] " Christian Brauner
2023-06-07  8:58     ` Christian Brauner
2023-06-07  8:58     ` Christian Brauner
2023-06-07  8:58     ` [f2fs-dev] " Christian Brauner
2023-06-07 13:05   ` Hannes Reinecke
2023-06-07 13:05     ` Hannes Reinecke
2023-06-07 13:05     ` Hannes Reinecke
2023-06-07 13:05     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:05     ` Hannes Reinecke
2023-06-07 13:05     ` [f2fs-dev] " Hannes Reinecke
2023-06-08  1:18   ` Martin K. Petersen
2023-06-08  1:18     ` Martin K. Petersen
2023-06-08  1:18     ` [dm-devel] " Martin K. Petersen
2023-06-08  1:18     ` Martin K. Petersen
2023-06-08  1:18     ` Martin K. Petersen
2023-06-08  1:18     ` [f2fs-dev] " Martin K. Petersen
2023-06-06  7:39 ` [f2fs-dev] [PATCH 22/31] nvme: replace the fmode_t argument to the nvme ioctl handlers " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  8:59   ` Christian Brauner
2023-06-07  8:59     ` Christian Brauner
2023-06-07  8:59     ` [dm-devel] " Christian Brauner
2023-06-07  8:59     ` Christian Brauner
2023-06-07  8:59     ` Christian Brauner
2023-06-07  8:59     ` [f2fs-dev] " Christian Brauner
2023-06-07 13:06   ` Hannes Reinecke
2023-06-07 13:06     ` Hannes Reinecke
2023-06-07 13:06     ` Hannes Reinecke
2023-06-07 13:06     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:06     ` Hannes Reinecke
2023-06-07 13:06     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 23/31] mtd: block: use a simple bool to track open for write Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  8:24   ` Richard Weinberger
2023-06-06  8:24     ` Richard Weinberger
2023-06-06  8:24     ` [dm-devel] " Richard Weinberger
2023-06-06  8:24     ` [f2fs-dev] " Richard Weinberger
2023-06-06  8:24     ` Richard Weinberger
2023-06-06  8:24     ` Richard Weinberger
2023-06-07  9:00   ` Christian Brauner
2023-06-07  9:00     ` Christian Brauner
2023-06-07  9:00     ` [dm-devel] " Christian Brauner
2023-06-07  9:00     ` [f2fs-dev] " Christian Brauner
2023-06-07  9:00     ` Christian Brauner
2023-06-07  9:00     ` Christian Brauner
2023-06-07 13:07   ` Hannes Reinecke
2023-06-07 13:07     ` Hannes Reinecke
2023-06-07 13:07     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:07     ` Hannes Reinecke
2023-06-07 13:07     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 13:07     ` Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 24/31] rnbd-srv: replace sess->open_flags with a "bool readonly" Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  9:01   ` Christian Brauner
2023-06-07  9:01     ` Christian Brauner
2023-06-07  9:01     ` [dm-devel] " Christian Brauner
2023-06-07  9:01     ` Christian Brauner
2023-06-07  9:01     ` Christian Brauner
2023-06-07  9:01     ` [f2fs-dev] " Christian Brauner
2023-06-07  9:43   ` Jinpu Wang
2023-06-07  9:43     ` Jinpu Wang
2023-06-07  9:43     ` [dm-devel] " Jinpu Wang
2023-06-07  9:43     ` [f2fs-dev] " Jinpu Wang via Linux-f2fs-devel
2023-06-07  9:43     ` Jinpu Wang
2023-06-07  9:43     ` Jinpu Wang
2023-06-07 13:07   ` Hannes Reinecke
2023-06-07 13:07     ` Hannes Reinecke
2023-06-07 13:07     ` Hannes Reinecke
2023-06-07 13:07     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:07     ` Hannes Reinecke
2023-06-07 13:07     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 25/31] ubd: remove commented out code in ubd_open Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  8:20   ` Richard Weinberger
2023-06-06  8:20     ` Richard Weinberger
2023-06-06  8:20     ` [dm-devel] " Richard Weinberger
2023-06-06  8:20     ` [f2fs-dev] " Richard Weinberger
2023-06-06  8:20     ` Richard Weinberger
2023-06-06  8:20     ` Richard Weinberger
2023-06-07  9:02   ` Christian Brauner
2023-06-07  9:02     ` Christian Brauner
2023-06-07  9:02     ` [dm-devel] " Christian Brauner
2023-06-07  9:02     ` Christian Brauner
2023-06-07  9:02     ` [f2fs-dev] " Christian Brauner
2023-06-07  9:02     ` Christian Brauner
2023-06-07 13:08   ` Hannes Reinecke
2023-06-07 13:08     ` Hannes Reinecke
2023-06-07 13:08     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:08     ` Hannes Reinecke
2023-06-07 13:08     ` [f2fs-dev] " Hannes Reinecke
2023-06-07 13:08     ` Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 26/31] block: move a few internal definitions out of blkdev.h Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  9:03   ` Christian Brauner
2023-06-07  9:03     ` Christian Brauner
2023-06-07  9:03     ` [dm-devel] " Christian Brauner
2023-06-07  9:03     ` Christian Brauner
2023-06-07  9:03     ` Christian Brauner
2023-06-07  9:03     ` [f2fs-dev] " Christian Brauner
2023-06-07 13:09   ` Hannes Reinecke
2023-06-07 13:09     ` Hannes Reinecke
2023-06-07 13:09     ` Hannes Reinecke
2023-06-07 13:09     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:09     ` Hannes Reinecke
2023-06-07 13:09     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 27/31] block: remove unused fmode_t arguments from ioctl handlers Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  9:03   ` Christian Brauner
2023-06-07  9:03     ` Christian Brauner
2023-06-07  9:03     ` [dm-devel] " Christian Brauner
2023-06-07  9:03     ` Christian Brauner
2023-06-07  9:03     ` Christian Brauner
2023-06-07  9:03     ` [f2fs-dev] " Christian Brauner
2023-06-07 13:10   ` Hannes Reinecke
2023-06-07 13:10     ` Hannes Reinecke
2023-06-07 13:10     ` Hannes Reinecke
2023-06-07 13:10     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:10     ` Hannes Reinecke
2023-06-07 13:10     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 28/31] block: replace fmode_t with a block-specific type for block open flags Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  9:21   ` Christian Brauner
2023-06-07  9:21     ` Christian Brauner
2023-06-07  9:21     ` [dm-devel] " Christian Brauner
2023-06-07  9:21     ` Christian Brauner
2023-06-07  9:21     ` Christian Brauner
2023-06-07  9:21     ` [f2fs-dev] " Christian Brauner
2023-06-07  9:32     ` Christian Brauner
2023-06-07  9:32       ` Christian Brauner
2023-06-07  9:32       ` [dm-devel] " Christian Brauner
2023-06-07  9:32       ` Christian Brauner
2023-06-07  9:32       ` Christian Brauner
2023-06-07  9:32       ` [f2fs-dev] " Christian Brauner
2023-06-07 12:16     ` Christoph Hellwig
2023-06-07 12:16       ` Christoph Hellwig
2023-06-07 12:16       ` [dm-devel] " Christoph Hellwig
2023-06-07 12:16       ` Christoph Hellwig
2023-06-07 12:16       ` Christoph Hellwig
2023-06-07 12:16       ` [f2fs-dev] " Christoph Hellwig
2023-06-07 12:47       ` Christian Brauner
2023-06-07 12:47         ` Christian Brauner
2023-06-07 12:47         ` [dm-devel] " Christian Brauner
2023-06-07 12:47         ` Christian Brauner
2023-06-07 12:47         ` Christian Brauner
2023-06-07 12:47         ` [f2fs-dev] " Christian Brauner
2023-06-07  9:45   ` Jinpu Wang
2023-06-07  9:45     ` Jinpu Wang
2023-06-07  9:45     ` [dm-devel] " Jinpu Wang
2023-06-07  9:45     ` [f2fs-dev] " Jinpu Wang via Linux-f2fs-devel
2023-06-07  9:45     ` Jinpu Wang
2023-06-07  9:45     ` Jinpu Wang
2023-06-06  7:39 ` [f2fs-dev] [PATCH 29/31] block: always use I_BDEV on file->f_mapping->host to find the bdev Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  9:23   ` Christian Brauner
2023-06-07  9:23     ` Christian Brauner
2023-06-07  9:23     ` [dm-devel] " Christian Brauner
2023-06-07  9:23     ` Christian Brauner
2023-06-07  9:23     ` Christian Brauner
2023-06-07  9:23     ` [f2fs-dev] " Christian Brauner
2023-06-07 13:11   ` Hannes Reinecke
2023-06-07 13:11     ` Hannes Reinecke
2023-06-07 13:11     ` Hannes Reinecke
2023-06-07 13:11     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:11     ` Hannes Reinecke
2023-06-07 13:11     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 30/31] block: store the holder in file->private_data Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-07  9:24   ` Christian Brauner
2023-06-07  9:24     ` Christian Brauner
2023-06-07  9:24     ` [dm-devel] " Christian Brauner
2023-06-07  9:24     ` Christian Brauner
2023-06-07  9:24     ` Christian Brauner
2023-06-07  9:24     ` [f2fs-dev] " Christian Brauner
2023-06-07 12:18     ` Christoph Hellwig
2023-06-07 12:18       ` Christoph Hellwig
2023-06-07 12:18       ` [dm-devel] " Christoph Hellwig
2023-06-07 12:18       ` Christoph Hellwig
2023-06-07 12:18       ` Christoph Hellwig
2023-06-07 12:18       ` [f2fs-dev] " Christoph Hellwig
2023-06-07 13:14   ` Hannes Reinecke
2023-06-07 13:14     ` Hannes Reinecke
2023-06-07 13:14     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:14     ` Hannes Reinecke
2023-06-07 13:14     ` Hannes Reinecke
2023-06-07 13:14     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  7:39 ` [f2fs-dev] [PATCH 31/31] fs: remove the now unused FMODE_* flags Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` Christoph Hellwig
2023-06-06  7:39   ` [dm-devel] " Christoph Hellwig
2023-06-07  9:25   ` Christian Brauner
2023-06-07  9:25     ` Christian Brauner
2023-06-07  9:25     ` [dm-devel] " Christian Brauner
2023-06-07  9:25     ` [f2fs-dev] " Christian Brauner
2023-06-07  9:25     ` Christian Brauner
2023-06-07  9:25     ` Christian Brauner
2023-06-07 13:15   ` Hannes Reinecke
2023-06-07 13:15     ` Hannes Reinecke
2023-06-07 13:15     ` Hannes Reinecke
2023-06-07 13:15     ` [dm-devel] " Hannes Reinecke
2023-06-07 13:15     ` Hannes Reinecke
2023-06-07 13:15     ` [f2fs-dev] " Hannes Reinecke
2023-06-06  8:27 ` decouple block open flags from fmode_t Christian Brauner
2023-06-06  8:27   ` Christian Brauner
2023-06-06  8:27   ` [dm-devel] " Christian Brauner
2023-06-06  8:27   ` Christian Brauner
2023-06-06  8:27   ` Christian Brauner
2023-06-06  8:27   ` [f2fs-dev] " Christian Brauner
2023-06-06  8:40   ` Christoph Hellwig
2023-06-06  8:40     ` Christoph Hellwig
2023-06-06  8:40     ` Christoph Hellwig
2023-06-06  8:40     ` Christoph Hellwig
2023-06-06  8:40     ` [dm-devel] " Christoph Hellwig
2023-06-06  8:40     ` [f2fs-dev] " Christoph Hellwig
2023-06-07  9:27     ` Christian Brauner
2023-06-07  9:27       ` Christian Brauner
2023-06-07  9:27       ` [dm-devel] " Christian Brauner
2023-06-07  9:27       ` Christian Brauner
2023-06-07  9:27       ` Christian Brauner
2023-06-07  9:27       ` [f2fs-dev] " Christian Brauner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230606073950.225178-21-hch@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=brauner@kernel.org \
    --cc=clm@fb.com \
    --cc=colyli@suse.de \
    --cc=dm-devel@redhat.com \
    --cc=dsterba@suse.com \
    --cc=haris.iqbal@ionos.com \
    --cc=jinpu.wang@ionos.com \
    --cc=josef@toxicpanda.com \
    --cc=linux-bcache@vger.kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-nilfs@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-um@lists.infradead.org \
    --cc=martin.petersen@oracle.com \
    --cc=miquel.raynal@bootlin.com \
    --cc=pavel@ucw.cz \
    --cc=phil@philpotter.co.uk \
    --cc=rafael@kernel.org \
    --cc=richard@nod.at \
    --cc=vigneshr@ti.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.