Skip to content

Commit 4bf9cbf

Browse files
Ming Leiaxboe
authored andcommitted
ublk_drv: cleanup ublksrv_ctrl_dev_info
Remove all block device related info from ublksrv_ctrl_dev_info, meantime reduce its size into 64 bytes because: 1) ublksrv_ctrl_dev_info becomes cleaner without including any block related info 2) generic set/get parameter command can be used to set block related setting easily and cleanly 3) generic set/get parameter command can be used for extending ublk without needing more info in ublksrv_ctrl_dev_info Signed-off-by: Ming Lei <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 0aa7317 commit 4bf9cbf

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

drivers/block/ublk_drv.c

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ struct ublk_device {
122122
char *__queues;
123123

124124
unsigned short queue_size;
125-
unsigned short bs_shift;
126125
struct ublksrv_ctrl_dev_info dev_info;
127126

128127
struct blk_mq_tag_set tag_set;
@@ -223,8 +222,7 @@ static int ublk_validate_params(const struct ublk_device *ub)
223222
if (p->logical_bs_shift > p->physical_bs_shift)
224223
return -EINVAL;
225224

226-
if (p->max_sectors > (ub->dev_info.rq_max_blocks <<
227-
(ub->bs_shift - 9)))
225+
if (p->max_sectors > (ub->dev_info.max_io_buf_bytes >> 9))
228226
return -EINVAL;
229227
} else
230228
return -EINVAL;
@@ -1185,13 +1183,13 @@ static void ublk_stop_work_fn(struct work_struct *work)
11851183
ublk_stop_dev(ub);
11861184
}
11871185

1188-
/* align maximum I/O size to PAGE_SIZE */
1186+
/* align max io buffer size with PAGE_SIZE */
11891187
static void ublk_align_max_io_size(struct ublk_device *ub)
11901188
{
1191-
unsigned int max_rq_bytes = ub->dev_info.rq_max_blocks << ub->bs_shift;
1189+
unsigned int max_io_bytes = ub->dev_info.max_io_buf_bytes;
11921190

1193-
ub->dev_info.rq_max_blocks =
1194-
round_down(max_rq_bytes, PAGE_SIZE) >> ub->bs_shift;
1191+
ub->dev_info.max_io_buf_bytes =
1192+
round_down(max_io_bytes, PAGE_SIZE);
11951193
}
11961194

11971195
static int ublk_add_tag_set(struct ublk_device *ub)
@@ -1348,9 +1346,8 @@ static inline void ublk_dump_dev_info(struct ublksrv_ctrl_dev_info *info)
13481346
{
13491347
pr_devel("%s: dev id %d flags %llx\n", __func__,
13501348
info->dev_id, info->flags);
1351-
pr_devel("\t nr_hw_queues %d queue_depth %d block size %d dev_capacity %lld\n",
1352-
info->nr_hw_queues, info->queue_depth,
1353-
info->block_size, info->dev_blocks);
1349+
pr_devel("\t nr_hw_queues %d queue_depth %d\n",
1350+
info->nr_hw_queues, info->queue_depth);
13541351
}
13551352

13561353
static int ublk_ctrl_add_dev(struct io_uring_cmd *cmd)
@@ -1410,7 +1407,6 @@ static int ublk_ctrl_add_dev(struct io_uring_cmd *cmd)
14101407
/* We are not ready to support zero copy */
14111408
ub->dev_info.flags &= ~UBLK_F_SUPPORT_ZERO_COPY;
14121409

1413-
ub->bs_shift = ilog2(ub->dev_info.block_size);
14141410
ub->dev_info.nr_hw_queues = min_t(unsigned int,
14151411
ub->dev_info.nr_hw_queues, nr_cpu_ids);
14161412
ublk_align_max_io_size(ub);

include/uapi/linux/ublk_cmd.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,22 +80,23 @@ struct ublksrv_ctrl_cmd {
8080
struct ublksrv_ctrl_dev_info {
8181
__u16 nr_hw_queues;
8282
__u16 queue_depth;
83-
__u16 block_size;
8483
__u16 state;
84+
__u16 pad0;
8585

86-
__u32 rq_max_blocks;
86+
__u32 max_io_buf_bytes;
8787
__u32 dev_id;
8888

89-
__u64 dev_blocks;
90-
9189
__s32 ublksrv_pid;
92-
__s32 reserved0;
90+
__u32 pad1;
91+
9392
__u64 flags;
94-
__u64 flags_reserved;
9593

9694
/* For ublksrv internal use, invisible to ublk driver */
9795
__u64 ublksrv_flags;
98-
__u64 reserved1[9];
96+
97+
__u64 reserved0;
98+
__u64 reserved1;
99+
__u64 reserved2;
99100
};
100101

101102
#define UBLK_IO_OP_READ 0

0 commit comments

Comments
 (0)