From patchwork Fri Sep 9 13:15:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 12971761 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7653EECAAD3 for ; Fri, 9 Sep 2022 13:15:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229536AbiIINPW (ORCPT ); Fri, 9 Sep 2022 09:15:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229962AbiIINPV (ORCPT ); Fri, 9 Sep 2022 09:15:21 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E7AA656B92 for ; Fri, 9 Sep 2022 06:15:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=f/qSe/ewwVjCWJuLNKF5WYJ01aPuYxmYyddhXht9Lm4=; b=rGQ0nCRp2n8rm7jiVrraHWU8yD kZVKtdsPIbRD+lwKxHIhSmHzqZZ8yrq/dd4BcvRtz+Q6S8CHS5QlWyKTsz/+hv+YQd/CD58keNbnB yzeZL/hDIGhESpamkAFYzqjapCuKcX7y++sngvZ0O0h8EPU/7Ch6xhMxyfPYg3MOLo2NRRY/DhzEQ zsfFPR3JukYDx6QHLGgAdzPAflpx4um6pMEqH+ls78nX1k/ZDcQBFqTS4sIjo1eAhT6NrsjiyUfa+ S3UmSrdK8nXxV+3AqxrgW6h5gP5Oyri6hSaOOv9CKUThpxAz+C8lvO7cEI+lPvxdRGgxFQelerF+g SqrTudIg==; Received: from [2001:4bb8:198:38af:a077:6a38:dc23:be2c] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWdqp-00GGuD-AD; Fri, 09 Sep 2022 13:15:19 +0000 From: Christoph Hellwig To: "Md. Haris Iqbal" , Jack Wang , Jens Axboe Cc: linux-block@vger.kernel.org, Chaitanya Kulkarni Subject: [PATCH 1/4] rnbd-srv: simplify rnbd_srv_fill_msg_open_rsp Date: Fri, 9 Sep 2022 15:15:06 +0200 Message-Id: <20220909131509.3263924-2-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220909131509.3263924-1-hch@lst.de> References: <20220909131509.3263924-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org 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 Reviewed-by: Chaitanya Kulkarni Acked-by: Jack Wang --- 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 8d011652a15c2..735d3f8d923e4 100644 --- a/drivers/block/rnbd/rnbd-srv.c +++ b/drivers/block/rnbd/rnbd-srv.c @@ -544,34 +544,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; } From patchwork Fri Sep 9 13:15:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 12971762 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5FF9ECAAA1 for ; Fri, 9 Sep 2022 13:15:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229910AbiIINPZ (ORCPT ); Fri, 9 Sep 2022 09:15:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230072AbiIINPY (ORCPT ); Fri, 9 Sep 2022 09:15:24 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8916E59259 for ; Fri, 9 Sep 2022 06:15:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=ppgQW83oZ4SbZ6loJJPiD3epta/36/6Yg0HxALLev48=; b=s2EtgNhioXqYy6N3P+G0T5YkGm F08v7uQ16cxM5RhJpZ3nC8De1b9X/UWkJ04pEJpSI+7BVv0Aj6nfA+W04AID8StJr6CGfPV6K+0oV d3wDZsdvs4s7ZdIkQMubOiHdznk3ZOqsTOKEjDK0sGAUVl8fs4whTBJARlcHNK3Y5usjeu8cjpzsJ juRU8TC6QP/avogt8J6ZdzgPCF77OfQuPkV4XwIk2yzfu03dquE7fkAH83mWD9SBJlehDIX9ZCE4O eQhDPfgRwVqn1teRPWqjn8LQyBJjSI4ioW5ZS40XbO6Pxcl8IV7g4+FRY+wfLKxa9DJMQ8HdkcXGQ dH1yHbMQ==; Received: from [2001:4bb8:198:38af:a077:6a38:dc23:be2c] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWdqr-00GGuc-Tc; Fri, 09 Sep 2022 13:15:22 +0000 From: Christoph Hellwig To: "Md. Haris Iqbal" , Jack Wang , Jens Axboe Cc: linux-block@vger.kernel.org, Chaitanya Kulkarni Subject: [PATCH 2/4] rnbd-srv: remove rnbd_endio Date: Fri, 9 Sep 2022 15:15:07 +0200 Message-Id: <20220909131509.3263924-3-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220909131509.3263924-1-hch@lst.de> References: <20220909131509.3263924-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Fold rnbd_endio into the only caller. Signed-off-by: Christoph Hellwig Reviewed-by: Chaitanya Kulkarni Acked-by: Jack Wang --- 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 735d3f8d923e4..d487281a37f85 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); } From patchwork Fri Sep 9 13:15:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 12971763 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BD4A4ECAAD3 for ; Fri, 9 Sep 2022 13:15:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229810AbiIINP2 (ORCPT ); Fri, 9 Sep 2022 09:15:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38904 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230208AbiIINP1 (ORCPT ); Fri, 9 Sep 2022 09:15:27 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 44AE75AA2E for ; Fri, 9 Sep 2022 06:15:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=/n8R35+h/0m9rUOMrwkgDaPIiNqrQ+WMKBFLBcqMKJA=; b=MxkNbo2Y+p2/1I9E2kMR0glDu/ u8wNy7opETzqyrypO84Qi/cA8h7JmNEAjc2QVfG4eUPjwyDSAikb2z5CLOUTS/q3iOncPn/2VeVIS zzU0TvoySweVnqsDiaqQktBAlQz70hr6h8stWm6LJG4ExI9o8hv8vVkug+v+UPi1Ef/KblANKhCVV bhML8M/9UACO/TlAlva5q/BYw6zRbIwZdsXg0baCLcVq5O4+NJ7tnxlyQk4C7Vtk88gF2d+ePefft DxSU0xuByyVOK1yD3swNhMTrA6+jumjQww+eDzIyREXNTtD6r7510+MEbEKiIjL87H7upCmh+tPR2 U1sYzpsg==; Received: from [2001:4bb8:198:38af:a077:6a38:dc23:be2c] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWdqu-00GGv7-KY; Fri, 09 Sep 2022 13:15:25 +0000 From: Christoph Hellwig To: "Md. Haris Iqbal" , Jack Wang , Jens Axboe Cc: linux-block@vger.kernel.org, Chaitanya Kulkarni Subject: [PATCH 3/4] rnbd-srv: remove rnbd_dev_{open,close} Date: Fri, 9 Sep 2022 15:15:08 +0200 Message-Id: <20220909131509.3263924-4-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220909131509.3263924-1-hch@lst.de> References: <20220909131509.3263924-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org These can be trivially open coded in the callers. Signed-off-by: Christoph Hellwig Reviewed-by: Chaitanya Kulkarni Acked-by: Jack Wang --- 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: From patchwork Fri Sep 9 13:15:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 12971764 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 60C43C6FA82 for ; Fri, 9 Sep 2022 13:15:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230368AbiIINPb (ORCPT ); Fri, 9 Sep 2022 09:15:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39128 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230072AbiIINPa (ORCPT ); Fri, 9 Sep 2022 09:15:30 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C45BE63F01 for ; Fri, 9 Sep 2022 06:15:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=RV6iHhfsD5LaOtLYH2X8mgpVCo4D9Up71tdyGMPdurc=; b=42nnYHpc0yzSGgvVQFhltodfVj W17oulHQiTrFmJFyuQtAG4c1IXma67DK9QnVc69SUeaCSreylvG/Jlcd78Ep+XV8dvFh0fCVMkp5E 0RHEicxteZe4iasC6zUQNMN2nnCH7FYV5rRbiO05TesVYSUOK6H7yO7dILHPDabsiA21JzB9NWdCD wIbTxTfnv2G4OFUOVi3+QCLN6P+YhMbL27A0uuUu3rJYSbSfFy/Jz0MZT7KcnW38Prp0g+6rKs2gV 2TQcAjfhx19rEcPttiwu7v6RJ46lr2hN3W1FW28hc3A7I0OOcyeHl4y1h1RTUL927x+8Sc2zjf7pL S04CojVg==; Received: from [2001:4bb8:198:38af:a077:6a38:dc23:be2c] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWdqx-00GGvd-8M; Fri, 09 Sep 2022 13:15:27 +0000 From: Christoph Hellwig To: "Md. Haris Iqbal" , Jack Wang , Jens Axboe Cc: linux-block@vger.kernel.org, Chaitanya Kulkarni Subject: [PATCH 4/4] rnbd-srv: remove struct rnbd_dev Date: Fri, 9 Sep 2022 15:15:09 +0200 Message-Id: <20220909131509.3263924-5-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220909131509.3263924-1-hch@lst.de> References: <20220909131509.3263924-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org 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 Reviewed-by: Chaitanya Kulkarni Acked-by: Jack Wang --- 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 -#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 e9c8a722d9c5c..08b041159cd3c 100644 --- a/drivers/block/rnbd/rnbd-srv.c +++ b/drivers/block/rnbd/rnbd-srv.c @@ -13,7 +13,6 @@ #include #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) @@ -513,14 +510,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; @@ -540,7 +537,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); @@ -565,7 +562,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); @@ -577,7 +574,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; @@ -684,9 +681,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); @@ -723,33 +720,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", @@ -764,7 +753,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, @@ -806,9 +795,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;