* rnbd cleanups
@ 2022-08-22 6:17 Christoph Hellwig
2022-08-22 6:17 ` [PATCH 1/4] rnbd-srv: simplify rnbd_srv_fill_msg_open_rsp Christoph Hellwig
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Christoph Hellwig @ 2022-08-22 6:17 UTC (permalink / raw)
To: Md. Haris Iqbal, Jack Wang, Jens Axboe; +Cc: linux-block
Hi all,
this series has a few simple rnbd cleanups.
Slightly related question: why does rnbd send the max_hw_sectors value
to the client given that it can't in any way be used by the client?
Diffstat:
drivers/block/rnbd/Makefile | 1
drivers/block/rnbd/rnbd-srv.c | 92 +++++++++++++++-----------------------
drivers/block/rnbd/rnbd-srv.h | 2
drivers/block/rnbd/rnbd-srv-dev.c | 43 -----------------
drivers/block/rnbd/rnbd-srv-dev.h | 64 --------------------------
5 files changed, 39 insertions(+), 163 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 1/4] rnbd-srv: simplify rnbd_srv_fill_msg_open_rsp 2022-08-22 6:17 rnbd cleanups Christoph Hellwig @ 2022-08-22 6:17 ` Christoph Hellwig 2022-08-23 1:08 ` Chaitanya Kulkarni 2022-08-22 6:17 ` [PATCH 2/4] rnbd-srv: remove rnbd_endio Christoph Hellwig ` (3 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Christoph Hellwig @ 2022-08-22 6:17 UTC (permalink / raw) To: Md. Haris Iqbal, Jack Wang, Jens Axboe; +Cc: linux-block Remove all the wrappers and just get the information directly from the block device, or where no such helpers exist the request_queue. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/block/rnbd/rnbd-srv-dev.h | 30 -------------------------- drivers/block/rnbd/rnbd-srv.c | 35 ++++++++++++------------------- 2 files changed, 13 insertions(+), 52 deletions(-) diff --git a/drivers/block/rnbd/rnbd-srv-dev.h b/drivers/block/rnbd/rnbd-srv-dev.h index 8407d12f70afe..8eeb3d607e7b5 100644 --- a/drivers/block/rnbd/rnbd-srv-dev.h +++ b/drivers/block/rnbd/rnbd-srv-dev.h @@ -31,34 +31,4 @@ void rnbd_dev_close(struct rnbd_dev *dev); void rnbd_endio(void *priv, int error); -static inline int rnbd_dev_get_max_segs(const struct rnbd_dev *dev) -{ - return queue_max_segments(bdev_get_queue(dev->bdev)); -} - -static inline int rnbd_dev_get_max_hw_sects(const struct rnbd_dev *dev) -{ - return queue_max_hw_sectors(bdev_get_queue(dev->bdev)); -} - -static inline int rnbd_dev_get_secure_discard(const struct rnbd_dev *dev) -{ - return bdev_max_secure_erase_sectors(dev->bdev); -} - -static inline int rnbd_dev_get_max_discard_sects(const struct rnbd_dev *dev) -{ - return bdev_max_discard_sectors(dev->bdev); -} - -static inline int rnbd_dev_get_discard_granularity(const struct rnbd_dev *dev) -{ - return bdev_get_queue(dev->bdev)->limits.discard_granularity; -} - -static inline int rnbd_dev_get_discard_alignment(const struct rnbd_dev *dev) -{ - return bdev_discard_alignment(dev->bdev); -} - #endif /* RNBD_SRV_DEV_H */ diff --git a/drivers/block/rnbd/rnbd-srv.c b/drivers/block/rnbd/rnbd-srv.c index 3f6c268e04ef8..db1fe73998703 100644 --- a/drivers/block/rnbd/rnbd-srv.c +++ b/drivers/block/rnbd/rnbd-srv.c @@ -540,34 +540,25 @@ rnbd_srv_get_or_create_srv_dev(struct rnbd_dev *rnbd_dev, static void rnbd_srv_fill_msg_open_rsp(struct rnbd_msg_open_rsp *rsp, struct rnbd_srv_sess_dev *sess_dev) { - struct rnbd_dev *rnbd_dev = sess_dev->rnbd_dev; + struct block_device *bdev = sess_dev->rnbd_dev->bdev; rsp->hdr.type = cpu_to_le16(RNBD_MSG_OPEN_RSP); - rsp->device_id = - cpu_to_le32(sess_dev->device_id); - rsp->nsectors = - cpu_to_le64(get_capacity(rnbd_dev->bdev->bd_disk)); - rsp->logical_block_size = - cpu_to_le16(bdev_logical_block_size(rnbd_dev->bdev)); - rsp->physical_block_size = - cpu_to_le16(bdev_physical_block_size(rnbd_dev->bdev)); - rsp->max_segments = - cpu_to_le16(rnbd_dev_get_max_segs(rnbd_dev)); + rsp->device_id = cpu_to_le32(sess_dev->device_id); + rsp->nsectors = cpu_to_le64(bdev_nr_sectors(bdev)); + rsp->logical_block_size = cpu_to_le16(bdev_logical_block_size(bdev)); + rsp->physical_block_size = cpu_to_le16(bdev_physical_block_size(bdev)); + rsp->max_segments = cpu_to_le16(bdev_max_segments(bdev)); rsp->max_hw_sectors = - cpu_to_le32(rnbd_dev_get_max_hw_sects(rnbd_dev)); + cpu_to_le32(queue_max_hw_sectors(bdev_get_queue(bdev))); rsp->max_write_same_sectors = 0; - rsp->max_discard_sectors = - cpu_to_le32(rnbd_dev_get_max_discard_sects(rnbd_dev)); - rsp->discard_granularity = - cpu_to_le32(rnbd_dev_get_discard_granularity(rnbd_dev)); - rsp->discard_alignment = - cpu_to_le32(rnbd_dev_get_discard_alignment(rnbd_dev)); - rsp->secure_discard = - cpu_to_le16(rnbd_dev_get_secure_discard(rnbd_dev)); + rsp->max_discard_sectors = cpu_to_le32(bdev_max_discard_sectors(bdev)); + rsp->discard_granularity = cpu_to_le32(bdev_discard_granularity(bdev)); + rsp->discard_alignment = cpu_to_le32(bdev_discard_alignment(bdev)); + rsp->secure_discard = cpu_to_le16(bdev_max_secure_erase_sectors(bdev)); rsp->cache_policy = 0; - if (bdev_write_cache(rnbd_dev->bdev)) + if (bdev_write_cache(bdev)) rsp->cache_policy |= RNBD_WRITEBACK; - if (bdev_fua(rnbd_dev->bdev)) + if (bdev_fua(bdev)) rsp->cache_policy |= RNBD_FUA; } -- 2.30.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] rnbd-srv: simplify rnbd_srv_fill_msg_open_rsp 2022-08-22 6:17 ` [PATCH 1/4] rnbd-srv: simplify rnbd_srv_fill_msg_open_rsp Christoph Hellwig @ 2022-08-23 1:08 ` Chaitanya Kulkarni 0 siblings, 0 replies; 11+ messages in thread From: Chaitanya Kulkarni @ 2022-08-23 1:08 UTC (permalink / raw) To: Christoph Hellwig, Md. Haris Iqbal, Jack Wang, Jens Axboe Cc: linux-block@vger.kernel.org On 8/21/22 23:17, Christoph Hellwig wrote: > Remove all the wrappers and just get the information directly from > the block device, or where no such helpers exist the request_queue. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- Looks good. Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> -ck ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/4] rnbd-srv: remove rnbd_endio 2022-08-22 6:17 rnbd cleanups Christoph Hellwig 2022-08-22 6:17 ` [PATCH 1/4] rnbd-srv: simplify rnbd_srv_fill_msg_open_rsp Christoph Hellwig @ 2022-08-22 6:17 ` Christoph Hellwig 2022-08-23 1:09 ` Chaitanya Kulkarni 2022-08-22 6:17 ` [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} Christoph Hellwig ` (2 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Christoph Hellwig @ 2022-08-22 6:17 UTC (permalink / raw) To: Md. Haris Iqbal, Jack Wang, Jens Axboe; +Cc: linux-block Fold rnbd_endio into the only caller. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/block/rnbd/rnbd-srv-dev.h | 2 -- drivers/block/rnbd/rnbd-srv.c | 20 +++++++------------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/drivers/block/rnbd/rnbd-srv-dev.h b/drivers/block/rnbd/rnbd-srv-dev.h index 8eeb3d607e7b5..328dc915832cd 100644 --- a/drivers/block/rnbd/rnbd-srv-dev.h +++ b/drivers/block/rnbd/rnbd-srv-dev.h @@ -29,6 +29,4 @@ struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags); */ void rnbd_dev_close(struct rnbd_dev *dev); -void rnbd_endio(void *priv, int error); - #endif /* RNBD_SRV_DEV_H */ diff --git a/drivers/block/rnbd/rnbd-srv.c b/drivers/block/rnbd/rnbd-srv.c index db1fe73998703..8303de61e8094 100644 --- a/drivers/block/rnbd/rnbd-srv.c +++ b/drivers/block/rnbd/rnbd-srv.c @@ -85,18 +85,6 @@ static inline void rnbd_put_sess_dev(struct rnbd_srv_sess_dev *sess_dev) kref_put(&sess_dev->kref, rnbd_sess_dev_release); } -void rnbd_endio(void *priv, int error) -{ - struct rnbd_io_private *rnbd_priv = priv; - struct rnbd_srv_sess_dev *sess_dev = rnbd_priv->sess_dev; - - rnbd_put_sess_dev(sess_dev); - - rtrs_srv_resp_rdma(rnbd_priv->id, error); - - kfree(priv); -} - static struct rnbd_srv_sess_dev * rnbd_get_sess_dev(int dev_id, struct rnbd_srv_session *srv_sess) { @@ -117,7 +105,13 @@ rnbd_get_sess_dev(int dev_id, struct rnbd_srv_session *srv_sess) static void rnbd_dev_bi_end_io(struct bio *bio) { - rnbd_endio(bio->bi_private, blk_status_to_errno(bio->bi_status)); + struct rnbd_io_private *rnbd_priv = bio->bi_private; + struct rnbd_srv_sess_dev *sess_dev = rnbd_priv->sess_dev; + + rnbd_put_sess_dev(sess_dev); + rtrs_srv_resp_rdma(rnbd_priv->id, blk_status_to_errno(bio->bi_status)); + + kfree(rnbd_priv); bio_put(bio); } -- 2.30.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/4] rnbd-srv: remove rnbd_endio 2022-08-22 6:17 ` [PATCH 2/4] rnbd-srv: remove rnbd_endio Christoph Hellwig @ 2022-08-23 1:09 ` Chaitanya Kulkarni 0 siblings, 0 replies; 11+ messages in thread From: Chaitanya Kulkarni @ 2022-08-23 1:09 UTC (permalink / raw) To: Christoph Hellwig, Md. Haris Iqbal, Jack Wang, Jens Axboe Cc: linux-block@vger.kernel.org On 8/21/22 23:17, Christoph Hellwig wrote: > Fold rnbd_endio into the only caller. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- Looks good. Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> -ck ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} 2022-08-22 6:17 rnbd cleanups Christoph Hellwig 2022-08-22 6:17 ` [PATCH 1/4] rnbd-srv: simplify rnbd_srv_fill_msg_open_rsp Christoph Hellwig 2022-08-22 6:17 ` [PATCH 2/4] rnbd-srv: remove rnbd_endio Christoph Hellwig @ 2022-08-22 6:17 ` Christoph Hellwig 2022-08-23 1:09 ` Chaitanya Kulkarni 2022-08-22 6:17 ` [PATCH 4/4] rnbd-srv: remove struct rnbd_dev Christoph Hellwig 2022-08-22 7:20 ` rnbd cleanups Jinpu Wang 4 siblings, 1 reply; 11+ messages in thread From: Christoph Hellwig @ 2022-08-22 6:17 UTC (permalink / raw) To: Md. Haris Iqbal, Jack Wang, Jens Axboe; +Cc: linux-block These can be trivially open coded in the callers. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/block/rnbd/Makefile | 1 - drivers/block/rnbd/rnbd-srv-dev.c | 43 ------------------------------- drivers/block/rnbd/rnbd-srv-dev.h | 12 --------- drivers/block/rnbd/rnbd-srv.c | 25 +++++++++++++----- 4 files changed, 18 insertions(+), 63 deletions(-) delete mode 100644 drivers/block/rnbd/rnbd-srv-dev.c diff --git a/drivers/block/rnbd/Makefile b/drivers/block/rnbd/Makefile index 5fc05e6679503..40b31630822ce 100644 --- a/drivers/block/rnbd/Makefile +++ b/drivers/block/rnbd/Makefile @@ -10,7 +10,6 @@ CFLAGS_rnbd-srv-trace.o = -I$(src) rnbd-server-y := rnbd-common.o \ rnbd-srv.o \ - rnbd-srv-dev.o \ rnbd-srv-sysfs.o \ rnbd-srv-trace.o diff --git a/drivers/block/rnbd/rnbd-srv-dev.c b/drivers/block/rnbd/rnbd-srv-dev.c deleted file mode 100644 index c63017f6e4214..0000000000000 --- a/drivers/block/rnbd/rnbd-srv-dev.c +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * RDMA Network Block Driver - * - * Copyright (c) 2014 - 2018 ProfitBricks GmbH. All rights reserved. - * Copyright (c) 2018 - 2019 1&1 IONOS Cloud GmbH. All rights reserved. - * Copyright (c) 2019 - 2020 1&1 IONOS SE. All rights reserved. - */ -#undef pr_fmt -#define pr_fmt(fmt) KBUILD_MODNAME " L" __stringify(__LINE__) ": " fmt - -#include "rnbd-srv-dev.h" -#include "rnbd-log.h" - -struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags) -{ - struct rnbd_dev *dev; - int ret; - - dev = kzalloc(sizeof(*dev), GFP_KERNEL); - if (!dev) - return ERR_PTR(-ENOMEM); - - dev->blk_open_flags = flags; - dev->bdev = blkdev_get_by_path(path, flags, THIS_MODULE); - ret = PTR_ERR_OR_ZERO(dev->bdev); - if (ret) - goto err; - - dev->blk_open_flags = flags; - - return dev; - -err: - kfree(dev); - return ERR_PTR(ret); -} - -void rnbd_dev_close(struct rnbd_dev *dev) -{ - blkdev_put(dev->bdev, dev->blk_open_flags); - kfree(dev); -} diff --git a/drivers/block/rnbd/rnbd-srv-dev.h b/drivers/block/rnbd/rnbd-srv-dev.h index 328dc915832cd..abaf77d68e5b9 100644 --- a/drivers/block/rnbd/rnbd-srv-dev.h +++ b/drivers/block/rnbd/rnbd-srv-dev.h @@ -17,16 +17,4 @@ struct rnbd_dev { fmode_t blk_open_flags; }; -/** - * rnbd_dev_open() - Open a device - * @path: path to open - * @flags: open flags - */ -struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags); - -/** - * rnbd_dev_close() - Close a device - */ -void rnbd_dev_close(struct rnbd_dev *dev); - #endif /* RNBD_SRV_DEV_H */ diff --git a/drivers/block/rnbd/rnbd-srv.c b/drivers/block/rnbd/rnbd-srv.c index 8303de61e8094..be238b625c2c0 100644 --- a/drivers/block/rnbd/rnbd-srv.c +++ b/drivers/block/rnbd/rnbd-srv.c @@ -220,7 +220,9 @@ void rnbd_destroy_sess_dev(struct rnbd_srv_sess_dev *sess_dev, bool keep_id) rnbd_put_sess_dev(sess_dev); wait_for_completion(&dc); /* wait for inflights to drop to zero */ - rnbd_dev_close(sess_dev->rnbd_dev); + blkdev_put(sess_dev->rnbd_dev->bdev, + sess_dev->rnbd_dev->blk_open_flags); + kfree(sess_dev->rnbd_dev); mutex_lock(&sess_dev->dev->lock); list_del(&sess_dev->dev_list); if (sess_dev->open_flags & FMODE_WRITE) @@ -717,11 +719,19 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess, goto reject; } - rnbd_dev = rnbd_dev_open(full_path, open_flags); - if (IS_ERR(rnbd_dev)) { - pr_err("Opening device '%s' on session %s failed, failed to open the block device, err: %ld\n", - full_path, srv_sess->sessname, PTR_ERR(rnbd_dev)); - ret = PTR_ERR(rnbd_dev); + rnbd_dev = kzalloc(sizeof(*rnbd_dev), GFP_KERNEL); + if (!rnbd_dev) { + ret = -ENOMEM; + goto free_path; + } + + rnbd_dev->blk_open_flags = open_flags; + rnbd_dev->bdev = blkdev_get_by_path(full_path, open_flags, THIS_MODULE); + if (IS_ERR(rnbd_dev->bdev)) { + ret = PTR_ERR(rnbd_dev->bdev); + pr_err("Opening device '%s' on session %s failed, failed to open the block device, err: %d\n", + full_path, srv_sess->sessname, ret); + kfree(rnbd_dev); goto free_path; } @@ -793,7 +803,8 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess, } rnbd_put_srv_dev(srv_dev); rnbd_dev_close: - rnbd_dev_close(rnbd_dev); + blkdev_put(rnbd_dev->bdev, rnbd_dev->blk_open_flags); + kfree(rnbd_dev); free_path: kfree(full_path); reject: -- 2.30.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} 2022-08-22 6:17 ` [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} Christoph Hellwig @ 2022-08-23 1:09 ` Chaitanya Kulkarni 0 siblings, 0 replies; 11+ messages in thread From: Chaitanya Kulkarni @ 2022-08-23 1:09 UTC (permalink / raw) To: Christoph Hellwig, Md. Haris Iqbal, Jack Wang, Jens Axboe Cc: linux-block@vger.kernel.org On 8/21/22 23:17, Christoph Hellwig wrote: > These can be trivially open coded in the callers. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- Looks good. Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> -ck ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 4/4] rnbd-srv: remove struct rnbd_dev 2022-08-22 6:17 rnbd cleanups Christoph Hellwig ` (2 preceding siblings ...) 2022-08-22 6:17 ` [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} Christoph Hellwig @ 2022-08-22 6:17 ` Christoph Hellwig 2022-08-23 1:10 ` Chaitanya Kulkarni 2022-08-22 7:20 ` rnbd cleanups Jinpu Wang 4 siblings, 1 reply; 11+ messages in thread From: Christoph Hellwig @ 2022-08-22 6:17 UTC (permalink / raw) To: Md. Haris Iqbal, Jack Wang, Jens Axboe; +Cc: linux-block Given that rnbd_srv_sess_dev already has an open_flags member, there is no need for the rnbd_dev indirection as a simple block_device pointer works just as well. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/block/rnbd/rnbd-srv-dev.h | 20 -------------- drivers/block/rnbd/rnbd-srv.c | 46 ++++++++++++------------------- drivers/block/rnbd/rnbd-srv.h | 2 +- 3 files changed, 18 insertions(+), 50 deletions(-) delete mode 100644 drivers/block/rnbd/rnbd-srv-dev.h diff --git a/drivers/block/rnbd/rnbd-srv-dev.h b/drivers/block/rnbd/rnbd-srv-dev.h deleted file mode 100644 index abaf77d68e5b9..0000000000000 --- a/drivers/block/rnbd/rnbd-srv-dev.h +++ /dev/null @@ -1,20 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ -/* - * RDMA Network Block Driver - * - * Copyright (c) 2014 - 2018 ProfitBricks GmbH. All rights reserved. - * Copyright (c) 2018 - 2019 1&1 IONOS Cloud GmbH. All rights reserved. - * Copyright (c) 2019 - 2020 1&1 IONOS SE. All rights reserved. - */ -#ifndef RNBD_SRV_DEV_H -#define RNBD_SRV_DEV_H - -#include <linux/fs.h> -#include "rnbd-proto.h" - -struct rnbd_dev { - struct block_device *bdev; - fmode_t blk_open_flags; -}; - -#endif /* RNBD_SRV_DEV_H */ diff --git a/drivers/block/rnbd/rnbd-srv.c b/drivers/block/rnbd/rnbd-srv.c index be238b625c2c0..4bcb7d0b29c7b 100644 --- a/drivers/block/rnbd/rnbd-srv.c +++ b/drivers/block/rnbd/rnbd-srv.c @@ -13,7 +13,6 @@ #include <linux/blkdev.h> #include "rnbd-srv.h" -#include "rnbd-srv-dev.h" #include "rnbd-srv-trace.h" MODULE_DESCRIPTION("RDMA Network Block Device Server"); @@ -146,7 +145,7 @@ static int process_rdma(struct rnbd_srv_session *srv_sess, priv->sess_dev = sess_dev; priv->id = id; - bio = bio_alloc(sess_dev->rnbd_dev->bdev, 1, + bio = bio_alloc(sess_dev->bdev, 1, rnbd_to_bio_flags(le32_to_cpu(msg->rw)), GFP_KERNEL); if (bio_add_page(bio, virt_to_page(data), datalen, offset_in_page(data)) != datalen) { @@ -220,9 +219,7 @@ void rnbd_destroy_sess_dev(struct rnbd_srv_sess_dev *sess_dev, bool keep_id) rnbd_put_sess_dev(sess_dev); wait_for_completion(&dc); /* wait for inflights to drop to zero */ - blkdev_put(sess_dev->rnbd_dev->bdev, - sess_dev->rnbd_dev->blk_open_flags); - kfree(sess_dev->rnbd_dev); + blkdev_put(sess_dev->bdev, sess_dev->open_flags); mutex_lock(&sess_dev->dev->lock); list_del(&sess_dev->dev_list); if (sess_dev->open_flags & FMODE_WRITE) @@ -509,14 +506,14 @@ static int rnbd_srv_check_update_open_perm(struct rnbd_srv_dev *srv_dev, } static struct rnbd_srv_dev * -rnbd_srv_get_or_create_srv_dev(struct rnbd_dev *rnbd_dev, +rnbd_srv_get_or_create_srv_dev(struct block_device *bdev, struct rnbd_srv_session *srv_sess, enum rnbd_access_mode access_mode) { int ret; struct rnbd_srv_dev *new_dev, *dev; - new_dev = rnbd_srv_init_srv_dev(rnbd_dev->bdev); + new_dev = rnbd_srv_init_srv_dev(bdev); if (IS_ERR(new_dev)) return new_dev; @@ -536,7 +533,7 @@ rnbd_srv_get_or_create_srv_dev(struct rnbd_dev *rnbd_dev, static void rnbd_srv_fill_msg_open_rsp(struct rnbd_msg_open_rsp *rsp, struct rnbd_srv_sess_dev *sess_dev) { - struct block_device *bdev = sess_dev->rnbd_dev->bdev; + struct block_device *bdev = sess_dev->bdev; rsp->hdr.type = cpu_to_le16(RNBD_MSG_OPEN_RSP); rsp->device_id = cpu_to_le32(sess_dev->device_id); @@ -561,7 +558,7 @@ static void rnbd_srv_fill_msg_open_rsp(struct rnbd_msg_open_rsp *rsp, static struct rnbd_srv_sess_dev * rnbd_srv_create_set_sess_dev(struct rnbd_srv_session *srv_sess, const struct rnbd_msg_open *open_msg, - struct rnbd_dev *rnbd_dev, fmode_t open_flags, + struct block_device *bdev, fmode_t open_flags, struct rnbd_srv_dev *srv_dev) { struct rnbd_srv_sess_dev *sdev = rnbd_sess_dev_alloc(srv_sess); @@ -573,7 +570,7 @@ rnbd_srv_create_set_sess_dev(struct rnbd_srv_session *srv_sess, strscpy(sdev->pathname, open_msg->dev_name, sizeof(sdev->pathname)); - sdev->rnbd_dev = rnbd_dev; + sdev->bdev = bdev; sdev->sess = srv_sess; sdev->dev = srv_dev; sdev->open_flags = open_flags; @@ -680,9 +677,9 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess, struct rnbd_srv_dev *srv_dev; struct rnbd_srv_sess_dev *srv_sess_dev; const struct rnbd_msg_open *open_msg = msg; + struct block_device *bdev; fmode_t open_flags; char *full_path; - struct rnbd_dev *rnbd_dev; struct rnbd_msg_open_rsp *rsp = data; trace_process_msg_open(srv_sess, open_msg); @@ -719,33 +716,25 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess, goto reject; } - rnbd_dev = kzalloc(sizeof(*rnbd_dev), GFP_KERNEL); - if (!rnbd_dev) { - ret = -ENOMEM; - goto free_path; - } - - rnbd_dev->blk_open_flags = open_flags; - rnbd_dev->bdev = blkdev_get_by_path(full_path, open_flags, THIS_MODULE); - if (IS_ERR(rnbd_dev->bdev)) { - ret = PTR_ERR(rnbd_dev->bdev); + bdev = blkdev_get_by_path(full_path, open_flags, THIS_MODULE); + if (IS_ERR(bdev)) { + ret = PTR_ERR(bdev); pr_err("Opening device '%s' on session %s failed, failed to open the block device, err: %d\n", full_path, srv_sess->sessname, ret); - kfree(rnbd_dev); goto free_path; } - srv_dev = rnbd_srv_get_or_create_srv_dev(rnbd_dev, srv_sess, + srv_dev = rnbd_srv_get_or_create_srv_dev(bdev, srv_sess, open_msg->access_mode); if (IS_ERR(srv_dev)) { pr_err("Opening device '%s' on session %s failed, creating srv_dev failed, err: %ld\n", full_path, srv_sess->sessname, PTR_ERR(srv_dev)); ret = PTR_ERR(srv_dev); - goto rnbd_dev_close; + goto blkdev_put; } srv_sess_dev = rnbd_srv_create_set_sess_dev(srv_sess, open_msg, - rnbd_dev, open_flags, + bdev, open_flags, srv_dev); if (IS_ERR(srv_sess_dev)) { pr_err("Opening device '%s' on session %s failed, creating sess_dev failed, err: %ld\n", @@ -760,7 +749,7 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess, */ mutex_lock(&srv_dev->lock); if (!srv_dev->dev_kobj.state_in_sysfs) { - ret = rnbd_srv_create_dev_sysfs(srv_dev, rnbd_dev->bdev); + ret = rnbd_srv_create_dev_sysfs(srv_dev, bdev); if (ret) { mutex_unlock(&srv_dev->lock); rnbd_srv_err(srv_sess_dev, @@ -802,9 +791,8 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess, mutex_unlock(&srv_dev->lock); } rnbd_put_srv_dev(srv_dev); -rnbd_dev_close: - blkdev_put(rnbd_dev->bdev, rnbd_dev->blk_open_flags); - kfree(rnbd_dev); +blkdev_put: + blkdev_put(bdev, open_flags); free_path: kfree(full_path); reject: diff --git a/drivers/block/rnbd/rnbd-srv.h b/drivers/block/rnbd/rnbd-srv.h index 081bceaf4ae9e..f5962fd31d62e 100644 --- a/drivers/block/rnbd/rnbd-srv.h +++ b/drivers/block/rnbd/rnbd-srv.h @@ -46,7 +46,7 @@ struct rnbd_srv_dev { struct rnbd_srv_sess_dev { /* Entry inside rnbd_srv_dev struct */ struct list_head dev_list; - struct rnbd_dev *rnbd_dev; + struct block_device *bdev; struct rnbd_srv_session *sess; struct rnbd_srv_dev *dev; struct kobject kobj; -- 2.30.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 4/4] rnbd-srv: remove struct rnbd_dev 2022-08-22 6:17 ` [PATCH 4/4] rnbd-srv: remove struct rnbd_dev Christoph Hellwig @ 2022-08-23 1:10 ` Chaitanya Kulkarni 0 siblings, 0 replies; 11+ messages in thread From: Chaitanya Kulkarni @ 2022-08-23 1:10 UTC (permalink / raw) To: Christoph Hellwig, Md. Haris Iqbal, Jack Wang, Jens Axboe Cc: linux-block@vger.kernel.org On 8/21/22 23:17, Christoph Hellwig wrote: > Given that rnbd_srv_sess_dev already has an open_flags member, there > is no need for the rnbd_dev indirection as a simple block_device pointer > works just as well. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- Looks good. Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> -ck ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: rnbd cleanups 2022-08-22 6:17 rnbd cleanups Christoph Hellwig ` (3 preceding siblings ...) 2022-08-22 6:17 ` [PATCH 4/4] rnbd-srv: remove struct rnbd_dev Christoph Hellwig @ 2022-08-22 7:20 ` Jinpu Wang 4 siblings, 0 replies; 11+ messages in thread From: Jinpu Wang @ 2022-08-22 7:20 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Md. Haris Iqbal, Jens Axboe, linux-block On Mon, Aug 22, 2022 at 8:17 AM Christoph Hellwig <hch@lst.de> wrote: > > Hi all, > > this series has a few simple rnbd cleanups. > > Slightly related question: why does rnbd send the max_hw_sectors value > to the client given that it can't in any way be used by the client? Hi Christoph, Thanks for the cleanup, it all looks good. Acked-by: Jack Wang <jinpu.wang@ionos.com> Regarding the max_hw_sectors, you are right, client doesn't use it, we should clean it up. Thanks! > > Diffstat: > drivers/block/rnbd/Makefile | 1 > drivers/block/rnbd/rnbd-srv.c | 92 +++++++++++++++----------------------- > drivers/block/rnbd/rnbd-srv.h | 2 > drivers/block/rnbd/rnbd-srv-dev.c | 43 ----------------- > drivers/block/rnbd/rnbd-srv-dev.h | 64 -------------------------- > 5 files changed, 39 insertions(+), 163 deletions(-) ^ permalink raw reply [flat|nested] 11+ messages in thread
* rnbd cleanups v2
@ 2022-09-09 13:15 Christoph Hellwig
2022-09-09 13:15 ` [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} Christoph Hellwig
0 siblings, 1 reply; 11+ messages in thread
From: Christoph Hellwig @ 2022-09-09 13:15 UTC (permalink / raw)
To: Md. Haris Iqbal, Jack Wang, Jens Axboe; +Cc: linux-block
Hi all,
this series has a few simple rnbd cleanups.
Changes since v1:
- rebased over a trivial cleanup in removed code that got merged into
the block tree
Diffstat:
b/drivers/block/rnbd/Makefile | 1
b/drivers/block/rnbd/rnbd-srv.c | 92 +++++++++++++++-----------------------
b/drivers/block/rnbd/rnbd-srv.h | 2
drivers/block/rnbd/rnbd-srv-dev.c | 42 -----------------
drivers/block/rnbd/rnbd-srv-dev.h | 64 --------------------------
5 files changed, 39 insertions(+), 162 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} 2022-09-09 13:15 rnbd cleanups v2 Christoph Hellwig @ 2022-09-09 13:15 ` Christoph Hellwig 0 siblings, 0 replies; 11+ messages in thread From: Christoph Hellwig @ 2022-09-09 13:15 UTC (permalink / raw) To: Md. Haris Iqbal, Jack Wang, Jens Axboe; +Cc: linux-block, Chaitanya Kulkarni These can be trivially open coded in the callers. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Acked-by: Jack Wang <jinpu.wang@ionos.com> --- drivers/block/rnbd/Makefile | 1 - drivers/block/rnbd/rnbd-srv-dev.c | 42 ------------------------------- drivers/block/rnbd/rnbd-srv-dev.h | 12 --------- drivers/block/rnbd/rnbd-srv.c | 25 ++++++++++++------ 4 files changed, 18 insertions(+), 62 deletions(-) delete mode 100644 drivers/block/rnbd/rnbd-srv-dev.c diff --git a/drivers/block/rnbd/Makefile b/drivers/block/rnbd/Makefile index 5fc05e6679503..40b31630822ce 100644 --- a/drivers/block/rnbd/Makefile +++ b/drivers/block/rnbd/Makefile @@ -10,7 +10,6 @@ CFLAGS_rnbd-srv-trace.o = -I$(src) rnbd-server-y := rnbd-common.o \ rnbd-srv.o \ - rnbd-srv-dev.o \ rnbd-srv-sysfs.o \ rnbd-srv-trace.o diff --git a/drivers/block/rnbd/rnbd-srv-dev.c b/drivers/block/rnbd/rnbd-srv-dev.c deleted file mode 100644 index 38131fa5718d3..0000000000000 --- a/drivers/block/rnbd/rnbd-srv-dev.c +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * RDMA Network Block Driver - * - * Copyright (c) 2014 - 2018 ProfitBricks GmbH. All rights reserved. - * Copyright (c) 2018 - 2019 1&1 IONOS Cloud GmbH. All rights reserved. - * Copyright (c) 2019 - 2020 1&1 IONOS SE. All rights reserved. - */ -#undef pr_fmt -#define pr_fmt(fmt) KBUILD_MODNAME " L" __stringify(__LINE__) ": " fmt - -#include "rnbd-srv-dev.h" -#include "rnbd-log.h" - -struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags) -{ - struct rnbd_dev *dev; - int ret; - - dev = kzalloc(sizeof(*dev), GFP_KERNEL); - if (!dev) - return ERR_PTR(-ENOMEM); - - dev->bdev = blkdev_get_by_path(path, flags, THIS_MODULE); - ret = PTR_ERR_OR_ZERO(dev->bdev); - if (ret) - goto err; - - dev->blk_open_flags = flags; - - return dev; - -err: - kfree(dev); - return ERR_PTR(ret); -} - -void rnbd_dev_close(struct rnbd_dev *dev) -{ - blkdev_put(dev->bdev, dev->blk_open_flags); - kfree(dev); -} diff --git a/drivers/block/rnbd/rnbd-srv-dev.h b/drivers/block/rnbd/rnbd-srv-dev.h index 328dc915832cd..abaf77d68e5b9 100644 --- a/drivers/block/rnbd/rnbd-srv-dev.h +++ b/drivers/block/rnbd/rnbd-srv-dev.h @@ -17,16 +17,4 @@ struct rnbd_dev { fmode_t blk_open_flags; }; -/** - * rnbd_dev_open() - Open a device - * @path: path to open - * @flags: open flags - */ -struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags); - -/** - * rnbd_dev_close() - Close a device - */ -void rnbd_dev_close(struct rnbd_dev *dev); - #endif /* RNBD_SRV_DEV_H */ diff --git a/drivers/block/rnbd/rnbd-srv.c b/drivers/block/rnbd/rnbd-srv.c index d487281a37f85..e9c8a722d9c5c 100644 --- a/drivers/block/rnbd/rnbd-srv.c +++ b/drivers/block/rnbd/rnbd-srv.c @@ -220,7 +220,9 @@ void rnbd_destroy_sess_dev(struct rnbd_srv_sess_dev *sess_dev, bool keep_id) rnbd_put_sess_dev(sess_dev); wait_for_completion(&dc); /* wait for inflights to drop to zero */ - rnbd_dev_close(sess_dev->rnbd_dev); + blkdev_put(sess_dev->rnbd_dev->bdev, + sess_dev->rnbd_dev->blk_open_flags); + kfree(sess_dev->rnbd_dev); mutex_lock(&sess_dev->dev->lock); list_del(&sess_dev->dev_list); if (sess_dev->open_flags & FMODE_WRITE) @@ -721,11 +723,19 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess, goto reject; } - rnbd_dev = rnbd_dev_open(full_path, open_flags); - if (IS_ERR(rnbd_dev)) { - pr_err("Opening device '%s' on session %s failed, failed to open the block device, err: %ld\n", - full_path, srv_sess->sessname, PTR_ERR(rnbd_dev)); - ret = PTR_ERR(rnbd_dev); + rnbd_dev = kzalloc(sizeof(*rnbd_dev), GFP_KERNEL); + if (!rnbd_dev) { + ret = -ENOMEM; + goto free_path; + } + + rnbd_dev->blk_open_flags = open_flags; + rnbd_dev->bdev = blkdev_get_by_path(full_path, open_flags, THIS_MODULE); + if (IS_ERR(rnbd_dev->bdev)) { + ret = PTR_ERR(rnbd_dev->bdev); + pr_err("Opening device '%s' on session %s failed, failed to open the block device, err: %d\n", + full_path, srv_sess->sessname, ret); + kfree(rnbd_dev); goto free_path; } @@ -797,7 +807,8 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess, } rnbd_put_srv_dev(srv_dev); rnbd_dev_close: - rnbd_dev_close(rnbd_dev); + blkdev_put(rnbd_dev->bdev, rnbd_dev->blk_open_flags); + kfree(rnbd_dev); free_path: kfree(full_path); reject: -- 2.30.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-09-09 13:15 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-22 6:17 rnbd cleanups Christoph Hellwig
2022-08-22 6:17 ` [PATCH 1/4] rnbd-srv: simplify rnbd_srv_fill_msg_open_rsp Christoph Hellwig
2022-08-23 1:08 ` Chaitanya Kulkarni
2022-08-22 6:17 ` [PATCH 2/4] rnbd-srv: remove rnbd_endio Christoph Hellwig
2022-08-23 1:09 ` Chaitanya Kulkarni
2022-08-22 6:17 ` [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} Christoph Hellwig
2022-08-23 1:09 ` Chaitanya Kulkarni
2022-08-22 6:17 ` [PATCH 4/4] rnbd-srv: remove struct rnbd_dev Christoph Hellwig
2022-08-23 1:10 ` Chaitanya Kulkarni
2022-08-22 7:20 ` rnbd cleanups Jinpu Wang
-- strict thread matches above, loose matches on Subject: below --
2022-09-09 13:15 rnbd cleanups v2 Christoph Hellwig
2022-09-09 13:15 ` [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} Christoph Hellwig
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox