On 4/21/23 2:00?PM, Jens Axboe wrote: > Hi Linus, > > Here are the block updates for the 6.4 merge window. This pull request > contains: Forgot to mention that this will throw a trivial reject in drivers/block/ublk_drv.c due to this commit: commit 8c68ae3b22fa6fb2dbe83ef955ff10936503d28e Author: Jens Axboe <axboe@xxxxxxxxx> Date: Wed Apr 5 20:00:46 2023 -0600 ublk: read any SQE values upfront going into 6.3-rc late in the cycle. The resolution is straight forward, I'm including it here just in case (though I can't imagine it causing you much trouble). commit 5a3c8eaf1f50321138a7c282332a034c2ef4cba3 Merge: 6ea31a32652e 55793ea54d77 Author: Jens Axboe <axboe@xxxxxxxxx> Date: Mon Apr 24 08:09:29 2023 -0600 Merge branch 'for-6.4/block' into test * for-6.4/block: (118 commits) nbd: fix incomplete validation of ioctl arg ublk: don't return 0 in case of any failure sed-opal: geometry feature reporting command null_blk: Always check queue mode setting from configfs block: ublk: switch to ioctl command encoding blk-mq: fix the blk_mq_add_to_requeue_list call in blk_kick_flush block, bfq: Fix division by zero error on zero wsum fault-inject: fix build error when FAULT_INJECTION_CONFIGFS=y and CONFIGFS_FS=m block: store bdev->bd_disk->fops->submit_bio state in bdev block: re-arrange the struct block_device fields for better layout md/raid5: remove unused working_disks variable md/raid10: don't call bio_start_io_acct twice for bio which experienced read error md/raid10: fix memleak of md thread md/raid10: fix memleak for 'conf->bio_split' md/raid10: fix leak of 'r10bio->remaining' for recovery md/raid10: don't BUG_ON() in raise_barrier() md: fix soft lockup in status_resync md: add error_handlers for raid0 and linear md: Use optimal I/O size for last bitmap page md: Fix types in sb writer ... Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> diff --cc drivers/block/ublk_drv.c index 604c1a13c76e,253008b2091d..afbef182820b --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@@ -1261,10 -1254,22 +1259,23 @@@ static void ublk_handle_need_get_data(s ublk_queue_cmd(ubq, req); } + static inline int ublk_check_cmd_op(u32 cmd_op) + { + u32 ioc_type = _IOC_TYPE(cmd_op); + + if (IS_ENABLED(CONFIG_BLKDEV_UBLK_LEGACY_OPCODES) && ioc_type != 'u') + return -EOPNOTSUPP; + + if (ioc_type != 'u' && ioc_type != 0) + return -EOPNOTSUPP; + + return 0; + } + -static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags) +static int __ublk_ch_uring_cmd(struct io_uring_cmd *cmd, + unsigned int issue_flags, + struct ublksrv_io_cmd *ub_cmd) { - struct ublksrv_io_cmd *ub_cmd = (struct ublksrv_io_cmd *)cmd->cmd; struct ublk_device *ub = cmd->file->private_data; struct ublk_queue *ubq; struct ublk_io *io; -- Jens Axboe