Skip to content

Commit d7b78de

Browse files
Christoph Hellwigaxboe
authored andcommitted
rnbd-srv: remove struct rnbd_dev_blk_io
Only the priv field of rnbd_dev_blk_io is used, so store the value of that in bio->bi_private directly and remove the entire bio_set overhead. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Jack Wang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 1fe0640 commit d7b78de

File tree

4 files changed

+7
-38
lines changed

4 files changed

+7
-38
lines changed

drivers/block/rnbd/rnbd-srv-dev.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
#include "rnbd-srv-dev.h"
1313
#include "rnbd-log.h"
1414

15-
struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags,
16-
struct bio_set *bs)
15+
struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags)
1716
{
1817
struct rnbd_dev *dev;
1918
int ret;
@@ -30,7 +29,6 @@ struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags,
3029

3130
dev->blk_open_flags = flags;
3231
bdevname(dev->bdev, dev->name);
33-
dev->ibd_bio_set = bs;
3432

3533
return dev;
3634

drivers/block/rnbd/rnbd-srv-dev.h

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,16 @@
1414

1515
struct rnbd_dev {
1616
struct block_device *bdev;
17-
struct bio_set *ibd_bio_set;
1817
fmode_t blk_open_flags;
1918
char name[BDEVNAME_SIZE];
2019
};
2120

22-
struct rnbd_dev_blk_io {
23-
struct rnbd_dev *dev;
24-
void *priv;
25-
/* have to be last member for front_pad usage of bioset_init */
26-
struct bio bio;
27-
};
28-
2921
/**
3022
* rnbd_dev_open() - Open a device
23+
* @path: path to open
3124
* @flags: open flags
32-
* @bs: bio_set to use during block io,
3325
*/
34-
struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags,
35-
struct bio_set *bs);
26+
struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags);
3627

3728
/**
3829
* rnbd_dev_close() - Close a device

drivers/block/rnbd/rnbd-srv.c

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,7 @@ rnbd_get_sess_dev(int dev_id, struct rnbd_srv_session *srv_sess)
116116

117117
static void rnbd_dev_bi_end_io(struct bio *bio)
118118
{
119-
struct rnbd_dev_blk_io *io = bio->bi_private;
120-
121-
rnbd_endio(io->priv, blk_status_to_errno(bio->bi_status));
119+
rnbd_endio(bio->bi_private, blk_status_to_errno(bio->bi_status));
122120
bio_put(bio);
123121
}
124122

@@ -131,7 +129,6 @@ static int process_rdma(struct rnbd_srv_session *srv_sess,
131129
struct rnbd_srv_sess_dev *sess_dev;
132130
u32 dev_id;
133131
int err;
134-
struct rnbd_dev_blk_io *io;
135132
struct bio *bio;
136133
short prio;
137134

@@ -152,20 +149,16 @@ static int process_rdma(struct rnbd_srv_session *srv_sess,
152149
priv->sess_dev = sess_dev;
153150
priv->id = id;
154151

155-
bio = bio_alloc_bioset(GFP_KERNEL, 1, sess_dev->rnbd_dev->ibd_bio_set);
152+
bio = bio_alloc(GFP_KERNEL, 1);
156153
if (bio_add_page(bio, virt_to_page(data), datalen,
157154
offset_in_page(data)) != datalen) {
158155
rnbd_srv_err(sess_dev, "Failed to map data to bio\n");
159156
err = -EINVAL;
160157
goto bio_put;
161158
}
162159

163-
io = container_of(bio, struct rnbd_dev_blk_io, bio);
164-
io->dev = sess_dev->rnbd_dev;
165-
io->priv = priv;
166-
167160
bio->bi_end_io = rnbd_dev_bi_end_io;
168-
bio->bi_private = io;
161+
bio->bi_private = priv;
169162
bio->bi_opf = rnbd_to_bio_flags(le32_to_cpu(msg->rw));
170163
bio->bi_iter.bi_sector = le64_to_cpu(msg->sector);
171164
bio->bi_iter.bi_size = le32_to_cpu(msg->bi_size);
@@ -260,7 +253,6 @@ static void destroy_sess(struct rnbd_srv_session *srv_sess)
260253

261254
out:
262255
xa_destroy(&srv_sess->index_idr);
263-
bioset_exit(&srv_sess->sess_bio_set);
264256

265257
pr_info("RTRS Session %s disconnected\n", srv_sess->sessname);
266258

@@ -289,16 +281,6 @@ static int create_sess(struct rtrs_srv_sess *rtrs)
289281
return -ENOMEM;
290282

291283
srv_sess->queue_depth = rtrs_srv_get_queue_depth(rtrs);
292-
err = bioset_init(&srv_sess->sess_bio_set, srv_sess->queue_depth,
293-
offsetof(struct rnbd_dev_blk_io, bio),
294-
BIOSET_NEED_BVECS);
295-
if (err) {
296-
pr_err("Allocating srv_session for path %s failed\n",
297-
pathname);
298-
kfree(srv_sess);
299-
return err;
300-
}
301-
302284
xa_init_flags(&srv_sess->index_idr, XA_FLAGS_ALLOC);
303285
INIT_LIST_HEAD(&srv_sess->sess_dev_list);
304286
mutex_init(&srv_sess->lock);
@@ -747,8 +729,7 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess,
747729
goto reject;
748730
}
749731

750-
rnbd_dev = rnbd_dev_open(full_path, open_flags,
751-
&srv_sess->sess_bio_set);
732+
rnbd_dev = rnbd_dev_open(full_path, open_flags);
752733
if (IS_ERR(rnbd_dev)) {
753734
pr_err("Opening device '%s' on session %s failed, failed to open the block device, err: %ld\n",
754735
full_path, srv_sess->sessname, PTR_ERR(rnbd_dev));

drivers/block/rnbd/rnbd-srv.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ struct rnbd_srv_session {
2323
struct rtrs_srv_sess *rtrs;
2424
char sessname[NAME_MAX];
2525
int queue_depth;
26-
struct bio_set sess_bio_set;
2726

2827
struct xarray index_idr;
2928
/* List of struct rnbd_srv_sess_dev */

0 commit comments

Comments
 (0)