All of lore.kernel.org
 help / color / mirror / Atom feed
From: Logan Gunthorpe <logang@deltatee.com>
To: linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org,
	linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org
Cc: Christoph Hellwig <hch@lst.de>, Sagi Grimberg <sagi@grimberg.me>,
	Keith Busch <kbusch@kernel.org>, Jens Axboe <axboe@fb.com>,
	Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>,
	Max Gurtovoy <maxg@mellanox.com>,
	Stephen Bates <sbates@raithlin.com>,
	Logan Gunthorpe <logang@deltatee.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>
Subject: [PATCH v6 01/16] chardev: factor out cdev_lookup() helper
Date: Thu, 25 Jul 2019 11:23:20 -0600	[thread overview]
Message-ID: <20190725172335.6825-2-logang@deltatee.com> (raw)
In-Reply-To: <20190725172335.6825-1-logang@deltatee.com>

Create a new helper out of the code in chrdev_open() which looks up
a struct cdev from a struct inode.

This will be necessary to create a cdev_get_by_path() which is
similar to blkdev_get_by_path() and is required to allow NVMe-OF
passthru to lookup an NVMe controller cdev from a path.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
---
 fs/char_dev.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/fs/char_dev.c b/fs/char_dev.c
index 00dfe17871ac..5cc53bd5f654 100644
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
@@ -367,12 +367,8 @@ void cdev_put(struct cdev *p)
 	}
 }
 
-/*
- * Called every time a character special file is opened
- */
-static int chrdev_open(struct inode *inode, struct file *filp)
+static struct cdev *cdev_lookup(struct inode *inode)
 {
-	const struct file_operations *fops;
 	struct cdev *p;
 	struct cdev *new = NULL;
 	int ret = 0;
@@ -385,7 +381,7 @@ static int chrdev_open(struct inode *inode, struct file *filp)
 		spin_unlock(&cdev_lock);
 		kobj = kobj_lookup(cdev_map, inode->i_rdev, &idx);
 		if (!kobj)
-			return -ENXIO;
+			return ERR_PTR(-ENXIO);
 		new = container_of(kobj, struct cdev, kobj);
 		spin_lock(&cdev_lock);
 		/* Check i_cdev again in case somebody beat us to it while
@@ -402,7 +398,23 @@ static int chrdev_open(struct inode *inode, struct file *filp)
 	spin_unlock(&cdev_lock);
 	cdev_put(new);
 	if (ret)
-		return ret;
+		return ERR_PTR(ret);
+
+	return p;
+}
+
+/*
+ * Called every time a character special file is opened
+ */
+static int chrdev_open(struct inode *inode, struct file *filp)
+{
+	const struct file_operations *fops;
+	struct cdev *p;
+	int ret = 0;
+
+	p = cdev_lookup(inode);
+	if (IS_ERR(p))
+		return PTR_ERR(p);
 
 	ret = -ENXIO;
 	fops = fops_get(p->ops);
-- 
2.20.1


WARNING: multiple messages have this Message-ID (diff)
From: logang@deltatee.com (Logan Gunthorpe)
Subject: [PATCH v6 01/16] chardev: factor out cdev_lookup() helper
Date: Thu, 25 Jul 2019 11:23:20 -0600	[thread overview]
Message-ID: <20190725172335.6825-2-logang@deltatee.com> (raw)
In-Reply-To: <20190725172335.6825-1-logang@deltatee.com>

Create a new helper out of the code in chrdev_open() which looks up
a struct cdev from a struct inode.

This will be necessary to create a cdev_get_by_path() which is
similar to blkdev_get_by_path() and is required to allow NVMe-OF
passthru to lookup an NVMe controller cdev from a path.

Signed-off-by: Logan Gunthorpe <logang at deltatee.com>
Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
Cc: Alexander Viro <viro at zeniv.linux.org.uk>
---
 fs/char_dev.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/fs/char_dev.c b/fs/char_dev.c
index 00dfe17871ac..5cc53bd5f654 100644
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
@@ -367,12 +367,8 @@ void cdev_put(struct cdev *p)
 	}
 }
 
-/*
- * Called every time a character special file is opened
- */
-static int chrdev_open(struct inode *inode, struct file *filp)
+static struct cdev *cdev_lookup(struct inode *inode)
 {
-	const struct file_operations *fops;
 	struct cdev *p;
 	struct cdev *new = NULL;
 	int ret = 0;
@@ -385,7 +381,7 @@ static int chrdev_open(struct inode *inode, struct file *filp)
 		spin_unlock(&cdev_lock);
 		kobj = kobj_lookup(cdev_map, inode->i_rdev, &idx);
 		if (!kobj)
-			return -ENXIO;
+			return ERR_PTR(-ENXIO);
 		new = container_of(kobj, struct cdev, kobj);
 		spin_lock(&cdev_lock);
 		/* Check i_cdev again in case somebody beat us to it while
@@ -402,7 +398,23 @@ static int chrdev_open(struct inode *inode, struct file *filp)
 	spin_unlock(&cdev_lock);
 	cdev_put(new);
 	if (ret)
-		return ret;
+		return ERR_PTR(ret);
+
+	return p;
+}
+
+/*
+ * Called every time a character special file is opened
+ */
+static int chrdev_open(struct inode *inode, struct file *filp)
+{
+	const struct file_operations *fops;
+	struct cdev *p;
+	int ret = 0;
+
+	p = cdev_lookup(inode);
+	if (IS_ERR(p))
+		return PTR_ERR(p);
 
 	ret = -ENXIO;
 	fops = fops_get(p->ops);
-- 
2.20.1

  reply	other threads:[~2019-07-25 17:23 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-25 17:23 [PATCH v6 00/16] nvmet: add target passthru commands support Logan Gunthorpe
2019-07-25 17:23 ` Logan Gunthorpe
2019-07-25 17:23 ` Logan Gunthorpe [this message]
2019-07-25 17:23   ` [PATCH v6 01/16] chardev: factor out cdev_lookup() helper Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 02/16] chardev: introduce cdev_get_by_path() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:40   ` Greg Kroah-Hartman
2019-07-25 17:40     ` Greg Kroah-Hartman
2019-07-25 17:53     ` Logan Gunthorpe
2019-07-25 17:53       ` Logan Gunthorpe
2019-07-25 17:58       ` Matthew Wilcox
2019-07-25 17:58         ` Matthew Wilcox
2019-07-25 18:08         ` Logan Gunthorpe
2019-07-25 18:08           ` Logan Gunthorpe
2019-07-25 18:08       ` Greg Kroah-Hartman
2019-07-25 18:08         ` Greg Kroah-Hartman
2019-07-25 18:14         ` Logan Gunthorpe
2019-07-25 18:14           ` Logan Gunthorpe
2019-07-25 18:27           ` Greg Kroah-Hartman
2019-07-25 18:27             ` Greg Kroah-Hartman
2019-07-25 18:36             ` Logan Gunthorpe
2019-07-25 18:36               ` Logan Gunthorpe
2019-07-25 19:02               ` Sagi Grimberg
2019-07-25 19:02                 ` Sagi Grimberg
2019-07-25 19:34                 ` Greg Kroah-Hartman
2019-07-25 19:34                   ` Greg Kroah-Hartman
2019-07-25 19:37                   ` Sagi Grimberg
2019-07-25 19:37                     ` Sagi Grimberg
2019-07-25 19:43                     ` Greg Kroah-Hartman
2019-07-25 19:43                       ` Greg Kroah-Hartman
2019-07-25 19:45                       ` Sagi Grimberg
2019-07-25 19:45                         ` Sagi Grimberg
2019-07-25 19:43                     ` Sagi Grimberg
2019-07-25 19:43                       ` Sagi Grimberg
2019-07-25 19:41                   ` Logan Gunthorpe
2019-07-25 19:41                     ` Logan Gunthorpe
2019-07-25 19:00             ` Matthew Wilcox
2019-07-25 19:00               ` Matthew Wilcox
2019-07-25 19:05               ` Sagi Grimberg
2019-07-25 19:05                 ` Sagi Grimberg
2019-07-25 19:11                 ` Matthew Wilcox
2019-07-25 19:11                   ` Matthew Wilcox
2019-07-25 19:24                   ` Logan Gunthorpe
2019-07-25 19:24                     ` Logan Gunthorpe
2019-07-25 19:26                     ` Matthew Wilcox
2019-07-25 19:26                       ` Matthew Wilcox
2019-07-25 19:31                       ` Logan Gunthorpe
2019-07-25 19:31                         ` Logan Gunthorpe
2019-07-25 23:55                     ` Al Viro
2019-07-25 23:55                       ` Al Viro
2019-07-26  4:29                       ` Sagi Grimberg
2019-07-26  4:29                         ` Sagi Grimberg
2019-07-26  7:13                         ` Greg Kroah-Hartman
2019-07-26  7:13                           ` Greg Kroah-Hartman
2019-07-26 15:46                         ` Logan Gunthorpe
2019-07-26 15:46                           ` Logan Gunthorpe
2019-07-25 19:31                   ` Sagi Grimberg
2019-07-25 19:31                     ` Sagi Grimberg
2019-07-25 18:10       ` Greg Kroah-Hartman
2019-07-25 18:10         ` Greg Kroah-Hartman
2019-07-25 18:16         ` Logan Gunthorpe
2019-07-25 18:16           ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 03/16] chardev: export cdev_put() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 04/16] nvme-core: introduce nvme_get_by_path() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:50   ` Matthew Wilcox
2019-07-25 17:50     ` Matthew Wilcox
2019-07-25 17:54     ` Logan Gunthorpe
2019-07-25 17:54       ` Logan Gunthorpe
2019-07-25 19:58       ` Keith Busch
2019-07-25 19:58         ` Keith Busch
2019-07-25 20:12         ` Sagi Grimberg
2019-07-25 20:12           ` Sagi Grimberg
2019-07-25 20:28         ` Logan Gunthorpe
2019-07-25 20:28           ` Logan Gunthorpe
2019-07-25 20:31           ` Keith Busch
2019-07-25 20:31             ` Keith Busch
2019-07-25 20:37             ` Logan Gunthorpe
2019-07-25 20:37               ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 05/16] nvme-core: export existing ctrl and ns interfaces Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 06/16] nvmet: add return value to nvmet_add_async_event() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 07/16] nvmet: make nvmet_copy_ns_identifier() non-static Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 08/16] nvmet-passthru: update KConfig with config passthru option Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 09/16] nvmet-passthru: add passthru code to process commands Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 10/16] nvmet-passthru: add enable/disable helpers Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 11/16] nvmet-core: allow one host per passthru-ctrl Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 12/16] nvmet-core: don't check the data len for pt-ctrl Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 13/16] nvmet-configfs: introduce passthru configfs interface Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 14/16] block: don't check blk_rq_is_passthrough() in blk_do_io_stat() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 15/16] block: call blk_account_io_start() in blk_execute_rq_nowait() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 16/16] nvmet-passthru: support block accounting Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-26  6:23 ` [PATCH v6 00/16] nvmet: add target passthru commands support Hannes Reinecke
2019-07-26  6:23   ` Hannes Reinecke
2019-07-26 17:07   ` Logan Gunthorpe
2019-07-26 17:07     ` Logan Gunthorpe
2019-07-26 22:21     ` Sagi Grimberg
2019-07-26 22:21       ` Sagi Grimberg
2019-07-26 22:37       ` Logan Gunthorpe
2019-07-26 22:37         ` Logan Gunthorpe
2019-07-26 23:13         ` Sagi Grimberg
2019-07-26 23:13           ` Sagi Grimberg
2019-07-27  0:09           ` Logan Gunthorpe
2019-07-27  0:09             ` Logan Gunthorpe
2019-07-27  0:50             ` Stephen  Bates
2019-07-27  0:50               ` Stephen  Bates
2019-07-29 16:15               ` Sagi Grimberg
2019-07-29 16:15                 ` Sagi Grimberg
2019-07-29 16:17                 ` Logan Gunthorpe
2019-07-29 16:17                   ` Logan Gunthorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190725172335.6825-2-logang@deltatee.com \
    --to=logang@deltatee.com \
    --cc=Chaitanya.Kulkarni@wdc.com \
    --cc=axboe@fb.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@lst.de \
    --cc=kbusch@kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=maxg@mellanox.com \
    --cc=sagi@grimberg.me \
    --cc=sbates@raithlin.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.