Re: [PATCH 05/23] ublk: define ublk_ch_batch_io_fops for the coming feature F_BATCH_IO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 1, 2025 at 3:03 AM Ming Lei <ming.lei@xxxxxxxxxx> wrote:
>
> Introduces the basic structure for a batched I/O feature in the ublk driver.
> It adds placeholder functions and a new file operations structure,
> ublk_ch_batch_io_fops, which will be used for fetching and committing I/O
> commands in batches. Currently, the feature is disabled and returns
> -EOPNOTSUPP.

Technically the "return -EOPNOTSUPP" isn't even reachable since
ublk_ch_batch_io_fops isn't used yet. I think saying "the feature is
disabled" would be sufficient.

Other than that,
Reviewed-by: Caleb Sander Mateos <csander@xxxxxxxxxxxxxxx>


>
> Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx>
> ---
>  drivers/block/ublk_drv.c | 26 +++++++++++++++++++++++++-
>  1 file changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c
> index f265795a8d57..a0dfad8a56f0 100644
> --- a/drivers/block/ublk_drv.c
> +++ b/drivers/block/ublk_drv.c
> @@ -256,6 +256,11 @@ static inline struct request *__ublk_check_and_get_req(struct ublk_device *ub,
>                 size_t offset);
>  static inline unsigned int ublk_req_build_flags(struct request *req);
>
> +static inline bool ublk_dev_support_batch_io(const struct ublk_device *ub)
> +{
> +       return false;
> +}
> +
>  static inline struct ublksrv_io_desc *
>  ublk_get_iod(const struct ublk_queue *ubq, unsigned tag)
>  {
> @@ -2509,6 +2514,12 @@ static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
>         return ublk_ch_uring_cmd_local(cmd, issue_flags);
>  }
>
> +static int ublk_ch_batch_io_uring_cmd(struct io_uring_cmd *cmd,
> +                                      unsigned int issue_flags)
> +{
> +       return -EOPNOTSUPP;
> +}
> +
>  static inline bool ublk_check_ubuf_dir(const struct request *req,
>                 int ubuf_dir)
>  {
> @@ -2624,6 +2635,16 @@ static const struct file_operations ublk_ch_fops = {
>         .mmap = ublk_ch_mmap,
>  };
>
> +static const struct file_operations ublk_ch_batch_io_fops = {
> +       .owner = THIS_MODULE,
> +       .open = ublk_ch_open,
> +       .release = ublk_ch_release,
> +       .read_iter = ublk_ch_read_iter,
> +       .write_iter = ublk_ch_write_iter,
> +       .uring_cmd = ublk_ch_batch_io_uring_cmd,
> +       .mmap = ublk_ch_mmap,
> +};
> +
>  static void ublk_deinit_queue(struct ublk_device *ub, int q_id)
>  {
>         int size = ublk_queue_cmd_buf_size(ub, q_id);
> @@ -2761,7 +2782,10 @@ static int ublk_add_chdev(struct ublk_device *ub)
>         if (ret)
>                 goto fail;
>
> -       cdev_init(&ub->cdev, &ublk_ch_fops);
> +       if (ublk_dev_support_batch_io(ub))
> +               cdev_init(&ub->cdev, &ublk_ch_batch_io_fops);
> +       else
> +               cdev_init(&ub->cdev, &ublk_ch_fops);
>         ret = cdev_device_add(&ub->cdev, dev);
>         if (ret)
>                 goto fail;
> --
> 2.47.0
>





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux