All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Tejun Heo <tj@kernel.org>, Josef Bacik <josef@toxicpanda.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Coly Li <colyli@suse.de>, Mike Snitzer <snitzer@redhat.com>,
	dm-devel@redhat.com, Richard Weinberger <richard@nod.at>,
	Jan Kara <jack@suse.com>,
	linux-block@vger.kernel.org, xen-devel@lists.xenproject.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-fsdevel@vger.kernel.org, linux-mm@kvack.org
Subject: [PATCH 07/20] init: refactor name_to_dev_t
Date: Wed, 18 Nov 2020 09:47:47 +0100	[thread overview]
Message-ID: <20201118084800.2339180-8-hch@lst.de> (raw)
In-Reply-To: <20201118084800.2339180-1-hch@lst.de>

Split each case into a self-contained helper.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 include/linux/genhd.h |   7 +-
 init/do_mounts.c      | 183 +++++++++++++++++++++---------------------
 2 files changed, 91 insertions(+), 99 deletions(-)

diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 22f5b9fd96f8bf..ca5e356084c353 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -388,18 +388,13 @@ static inline void bd_unlink_disk_holder(struct block_device *bdev,
 }
 #endif /* CONFIG_SYSFS */
 
+dev_t blk_lookup_devt(const char *name, int partno);
 #ifdef CONFIG_BLOCK
 void printk_all_partitions(void);
-dev_t blk_lookup_devt(const char *name, int partno);
 #else /* CONFIG_BLOCK */
 static inline void printk_all_partitions(void)
 {
 }
-static inline dev_t blk_lookup_devt(const char *name, int partno)
-{
-	dev_t devt = MKDEV(0, 0);
-	return devt;
-}
 #endif /* CONFIG_BLOCK */
 
 #endif /* _LINUX_GENHD_H */
diff --git a/init/do_mounts.c b/init/do_mounts.c
index b5f9604d0c98a2..aef2f24461c7f1 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -90,7 +90,6 @@ static int match_dev_by_uuid(struct device *dev, const void *data)
 	return 0;
 }
 
-
 /**
  * devt_from_partuuid - looks up the dev_t of a partition by its UUID
  * @uuid_str:	char array containing ascii UUID
@@ -186,7 +185,83 @@ static int match_dev_by_label(struct device *dev, const void *data)
 
 	return 0;
 }
-#endif
+
+static dev_t devt_from_partlabel(const char *label)
+{
+	struct device *dev;
+	dev_t devt = 0;
+
+	dev = class_find_device(&block_class, NULL, label, &match_dev_by_label);
+	if (dev) {
+		devt = dev->devt;
+		put_device(dev);
+	}
+
+	return devt;
+}
+
+static dev_t devt_from_devname(const char *name)
+{
+	dev_t devt = 0;
+	int part;
+	char s[32];
+	char *p;
+
+	if (strlen(name) > 31)
+		return 0;
+	strcpy(s, name);
+	for (p = s; *p; p++) {
+		if (*p == '/')
+			*p = '!';
+	}
+
+	devt = blk_lookup_devt(s, 0);
+	if (devt)
+		return devt;
+
+	/*
+	 * Try non-existent, but valid partition, which may only exist after
+	 * opening the device, like partitioned md devices.
+	 */
+	while (p > s && isdigit(p[-1]))
+		p--;
+	if (p == s || !*p || *p == '0')
+		return 0;
+
+	/* try disk name without <part number> */
+	part = simple_strtoul(p, NULL, 10);
+	*p = '\0';
+	devt = blk_lookup_devt(s, part);
+	if (devt)
+		return devt;
+
+	/* try disk name without p<part number> */
+	if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p')
+		return 0;
+	p[-1] = '\0';
+	return blk_lookup_devt(s, part);
+}
+#endif /* CONFIG_BLOCK */
+
+static dev_t devt_from_devnum(const char *name)
+{
+	unsigned maj, min, offset;
+	dev_t devt = 0;
+	char *p, dummy;
+
+	if (sscanf(name, "%u:%u%c", &maj, &min, &dummy) == 2 ||
+	    sscanf(name, "%u:%u:%u:%c", &maj, &min, &offset, &dummy) == 3) {
+		devt = MKDEV(maj, min);
+		if (maj != MAJOR(devt) || min != MINOR(devt))
+			return 0;
+	} else {
+		devt = new_decode_dev(simple_strtoul(name, &p, 16));
+		if (*p)
+			return 0;
+	}
+
+	return devt;
+}
 
 /*
  *	Convert a name into device number.  We accept the following variants:
@@ -218,101 +293,23 @@ static int match_dev_by_label(struct device *dev, const void *data)
  *	name contains slashes, the device name has them replaced with
  *	bangs.
  */
-
 dev_t name_to_dev_t(const char *name)
 {
-	char s[32];
-	char *p;
-	dev_t res = 0;
-	int part;
-
+	if (strcmp(name, "/dev/nfs") == 0)
+		return Root_NFS;
+	if (strcmp(name, "/dev/cifs") == 0)
+		return Root_CIFS;
+	if (strcmp(name, "/dev/ram") == 0)
+		return Root_RAM0;
 #ifdef CONFIG_BLOCK
-	if (strncmp(name, "PARTUUID=", 9) == 0) {
-		name += 9;
-		res = devt_from_partuuid(name);
-		if (!res)
-			goto fail;
-		goto done;
-	} else if (strncmp(name, "PARTLABEL=", 10) == 0) {
-		struct device *dev;
-
-		dev = class_find_device(&block_class, NULL, name + 10,
-					&match_dev_by_label);
-		if (!dev)
-			goto fail;
-
-		res = dev->devt;
-		put_device(dev);
-		goto done;
-	}
+	if (strncmp(name, "PARTUUID=", 9) == 0)
+		return devt_from_partuuid(name + 9);
+	if (strncmp(name, "PARTLABEL=", 10) == 0)
+		return devt_from_partlabel(name + 10);
+	if (strncmp(name, "/dev/", 5) == 0)
+		return devt_from_devname(name + 5);
 #endif
-
-	if (strncmp(name, "/dev/", 5) != 0) {
-		unsigned maj, min, offset;
-		char dummy;
-
-		if ((sscanf(name, "%u:%u%c", &maj, &min, &dummy) == 2) ||
-		    (sscanf(name, "%u:%u:%u:%c", &maj, &min, &offset, &dummy) == 3)) {
-			res = MKDEV(maj, min);
-			if (maj != MAJOR(res) || min != MINOR(res))
-				goto fail;
-		} else {
-			res = new_decode_dev(simple_strtoul(name, &p, 16));
-			if (*p)
-				goto fail;
-		}
-		goto done;
-	}
-
-	name += 5;
-	res = Root_NFS;
-	if (strcmp(name, "nfs") == 0)
-		goto done;
-	res = Root_CIFS;
-	if (strcmp(name, "cifs") == 0)
-		goto done;
-	res = Root_RAM0;
-	if (strcmp(name, "ram") == 0)
-		goto done;
-
-	if (strlen(name) > 31)
-		goto fail;
-	strcpy(s, name);
-	for (p = s; *p; p++)
-		if (*p == '/')
-			*p = '!';
-	res = blk_lookup_devt(s, 0);
-	if (res)
-		goto done;
-
-	/*
-	 * try non-existent, but valid partition, which may only exist
-	 * after revalidating the disk, like partitioned md devices
-	 */
-	while (p > s && isdigit(p[-1]))
-		p--;
-	if (p == s || !*p || *p == '0')
-		goto fail;
-
-	/* try disk name without <part number> */
-	part = simple_strtoul(p, NULL, 10);
-	*p = '\0';
-	res = blk_lookup_devt(s, part);
-	if (res)
-		goto done;
-
-	/* try disk name without p<part number> */
-	if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p')
-		goto fail;
-	p[-1] = '\0';
-	res = blk_lookup_devt(s, part);
-	if (res)
-		goto done;
-
-fail:
-	return 0;
-done:
-	return res;
+	return devt_from_devnum(name);
 }
 EXPORT_SYMBOL_GPL(name_to_dev_t);
 
-- 
2.29.2


WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-bcache@vger.kernel.org, Mike Snitzer <snitzer@redhat.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Richard Weinberger <richard@nod.at>,
	Josef Bacik <josef@toxicpanda.com>, Coly Li <colyli@suse.de>,
	linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	dm-devel@redhat.com, linux-mtd@lists.infradead.org,
	Jan Kara <jack@suse.com>, Tejun Heo <tj@kernel.org>,
	xen-devel@lists.xenproject.org, linux-mm@kvack.org
Subject: [PATCH 07/20] init: refactor name_to_dev_t
Date: Wed, 18 Nov 2020 09:47:47 +0100	[thread overview]
Message-ID: <20201118084800.2339180-8-hch@lst.de> (raw)
In-Reply-To: <20201118084800.2339180-1-hch@lst.de>

Split each case into a self-contained helper.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 include/linux/genhd.h |   7 +-
 init/do_mounts.c      | 183 +++++++++++++++++++++---------------------
 2 files changed, 91 insertions(+), 99 deletions(-)

diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 22f5b9fd96f8bf..ca5e356084c353 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -388,18 +388,13 @@ static inline void bd_unlink_disk_holder(struct block_device *bdev,
 }
 #endif /* CONFIG_SYSFS */
 
+dev_t blk_lookup_devt(const char *name, int partno);
 #ifdef CONFIG_BLOCK
 void printk_all_partitions(void);
-dev_t blk_lookup_devt(const char *name, int partno);
 #else /* CONFIG_BLOCK */
 static inline void printk_all_partitions(void)
 {
 }
-static inline dev_t blk_lookup_devt(const char *name, int partno)
-{
-	dev_t devt = MKDEV(0, 0);
-	return devt;
-}
 #endif /* CONFIG_BLOCK */
 
 #endif /* _LINUX_GENHD_H */
diff --git a/init/do_mounts.c b/init/do_mounts.c
index b5f9604d0c98a2..aef2f24461c7f1 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -90,7 +90,6 @@ static int match_dev_by_uuid(struct device *dev, const void *data)
 	return 0;
 }
 
-
 /**
  * devt_from_partuuid - looks up the dev_t of a partition by its UUID
  * @uuid_str:	char array containing ascii UUID
@@ -186,7 +185,83 @@ static int match_dev_by_label(struct device *dev, const void *data)
 
 	return 0;
 }
-#endif
+
+static dev_t devt_from_partlabel(const char *label)
+{
+	struct device *dev;
+	dev_t devt = 0;
+
+	dev = class_find_device(&block_class, NULL, label, &match_dev_by_label);
+	if (dev) {
+		devt = dev->devt;
+		put_device(dev);
+	}
+
+	return devt;
+}
+
+static dev_t devt_from_devname(const char *name)
+{
+	dev_t devt = 0;
+	int part;
+	char s[32];
+	char *p;
+
+	if (strlen(name) > 31)
+		return 0;
+	strcpy(s, name);
+	for (p = s; *p; p++) {
+		if (*p == '/')
+			*p = '!';
+	}
+
+	devt = blk_lookup_devt(s, 0);
+	if (devt)
+		return devt;
+
+	/*
+	 * Try non-existent, but valid partition, which may only exist after
+	 * opening the device, like partitioned md devices.
+	 */
+	while (p > s && isdigit(p[-1]))
+		p--;
+	if (p == s || !*p || *p == '0')
+		return 0;
+
+	/* try disk name without <part number> */
+	part = simple_strtoul(p, NULL, 10);
+	*p = '\0';
+	devt = blk_lookup_devt(s, part);
+	if (devt)
+		return devt;
+
+	/* try disk name without p<part number> */
+	if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p')
+		return 0;
+	p[-1] = '\0';
+	return blk_lookup_devt(s, part);
+}
+#endif /* CONFIG_BLOCK */
+
+static dev_t devt_from_devnum(const char *name)
+{
+	unsigned maj, min, offset;
+	dev_t devt = 0;
+	char *p, dummy;
+
+	if (sscanf(name, "%u:%u%c", &maj, &min, &dummy) == 2 ||
+	    sscanf(name, "%u:%u:%u:%c", &maj, &min, &offset, &dummy) == 3) {
+		devt = MKDEV(maj, min);
+		if (maj != MAJOR(devt) || min != MINOR(devt))
+			return 0;
+	} else {
+		devt = new_decode_dev(simple_strtoul(name, &p, 16));
+		if (*p)
+			return 0;
+	}
+
+	return devt;
+}
 
 /*
  *	Convert a name into device number.  We accept the following variants:
@@ -218,101 +293,23 @@ static int match_dev_by_label(struct device *dev, const void *data)
  *	name contains slashes, the device name has them replaced with
  *	bangs.
  */
-
 dev_t name_to_dev_t(const char *name)
 {
-	char s[32];
-	char *p;
-	dev_t res = 0;
-	int part;
-
+	if (strcmp(name, "/dev/nfs") == 0)
+		return Root_NFS;
+	if (strcmp(name, "/dev/cifs") == 0)
+		return Root_CIFS;
+	if (strcmp(name, "/dev/ram") == 0)
+		return Root_RAM0;
 #ifdef CONFIG_BLOCK
-	if (strncmp(name, "PARTUUID=", 9) == 0) {
-		name += 9;
-		res = devt_from_partuuid(name);
-		if (!res)
-			goto fail;
-		goto done;
-	} else if (strncmp(name, "PARTLABEL=", 10) == 0) {
-		struct device *dev;
-
-		dev = class_find_device(&block_class, NULL, name + 10,
-					&match_dev_by_label);
-		if (!dev)
-			goto fail;
-
-		res = dev->devt;
-		put_device(dev);
-		goto done;
-	}
+	if (strncmp(name, "PARTUUID=", 9) == 0)
+		return devt_from_partuuid(name + 9);
+	if (strncmp(name, "PARTLABEL=", 10) == 0)
+		return devt_from_partlabel(name + 10);
+	if (strncmp(name, "/dev/", 5) == 0)
+		return devt_from_devname(name + 5);
 #endif
-
-	if (strncmp(name, "/dev/", 5) != 0) {
-		unsigned maj, min, offset;
-		char dummy;
-
-		if ((sscanf(name, "%u:%u%c", &maj, &min, &dummy) == 2) ||
-		    (sscanf(name, "%u:%u:%u:%c", &maj, &min, &offset, &dummy) == 3)) {
-			res = MKDEV(maj, min);
-			if (maj != MAJOR(res) || min != MINOR(res))
-				goto fail;
-		} else {
-			res = new_decode_dev(simple_strtoul(name, &p, 16));
-			if (*p)
-				goto fail;
-		}
-		goto done;
-	}
-
-	name += 5;
-	res = Root_NFS;
-	if (strcmp(name, "nfs") == 0)
-		goto done;
-	res = Root_CIFS;
-	if (strcmp(name, "cifs") == 0)
-		goto done;
-	res = Root_RAM0;
-	if (strcmp(name, "ram") == 0)
-		goto done;
-
-	if (strlen(name) > 31)
-		goto fail;
-	strcpy(s, name);
-	for (p = s; *p; p++)
-		if (*p == '/')
-			*p = '!';
-	res = blk_lookup_devt(s, 0);
-	if (res)
-		goto done;
-
-	/*
-	 * try non-existent, but valid partition, which may only exist
-	 * after revalidating the disk, like partitioned md devices
-	 */
-	while (p > s && isdigit(p[-1]))
-		p--;
-	if (p == s || !*p || *p == '0')
-		goto fail;
-
-	/* try disk name without <part number> */
-	part = simple_strtoul(p, NULL, 10);
-	*p = '\0';
-	res = blk_lookup_devt(s, part);
-	if (res)
-		goto done;
-
-	/* try disk name without p<part number> */
-	if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p')
-		goto fail;
-	p[-1] = '\0';
-	res = blk_lookup_devt(s, part);
-	if (res)
-		goto done;
-
-fail:
-	return 0;
-done:
-	return res;
+	return devt_from_devnum(name);
 }
 EXPORT_SYMBOL_GPL(name_to_dev_t);
 
-- 
2.29.2


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-bcache@vger.kernel.org, Mike Snitzer <snitzer@redhat.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Richard Weinberger <richard@nod.at>,
	Josef Bacik <josef@toxicpanda.com>, Coly Li <colyli@suse.de>,
	linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	dm-devel@redhat.com, linux-mtd@lists.infradead.org,
	Jan Kara <jack@suse.com>, Tejun Heo <tj@kernel.org>,
	xen-devel@lists.xenproject.org, linux-mm@kvack.org
Subject: [dm-devel] [PATCH 07/20] init: refactor name_to_dev_t
Date: Wed, 18 Nov 2020 09:47:47 +0100	[thread overview]
Message-ID: <20201118084800.2339180-8-hch@lst.de> (raw)
In-Reply-To: <20201118084800.2339180-1-hch@lst.de>

Split each case into a self-contained helper.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 include/linux/genhd.h |   7 +-
 init/do_mounts.c      | 183 +++++++++++++++++++++---------------------
 2 files changed, 91 insertions(+), 99 deletions(-)

diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 22f5b9fd96f8bf..ca5e356084c353 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -388,18 +388,13 @@ static inline void bd_unlink_disk_holder(struct block_device *bdev,
 }
 #endif /* CONFIG_SYSFS */
 
+dev_t blk_lookup_devt(const char *name, int partno);
 #ifdef CONFIG_BLOCK
 void printk_all_partitions(void);
-dev_t blk_lookup_devt(const char *name, int partno);
 #else /* CONFIG_BLOCK */
 static inline void printk_all_partitions(void)
 {
 }
-static inline dev_t blk_lookup_devt(const char *name, int partno)
-{
-	dev_t devt = MKDEV(0, 0);
-	return devt;
-}
 #endif /* CONFIG_BLOCK */
 
 #endif /* _LINUX_GENHD_H */
diff --git a/init/do_mounts.c b/init/do_mounts.c
index b5f9604d0c98a2..aef2f24461c7f1 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -90,7 +90,6 @@ static int match_dev_by_uuid(struct device *dev, const void *data)
 	return 0;
 }
 
-
 /**
  * devt_from_partuuid - looks up the dev_t of a partition by its UUID
  * @uuid_str:	char array containing ascii UUID
@@ -186,7 +185,83 @@ static int match_dev_by_label(struct device *dev, const void *data)
 
 	return 0;
 }
-#endif
+
+static dev_t devt_from_partlabel(const char *label)
+{
+	struct device *dev;
+	dev_t devt = 0;
+
+	dev = class_find_device(&block_class, NULL, label, &match_dev_by_label);
+	if (dev) {
+		devt = dev->devt;
+		put_device(dev);
+	}
+
+	return devt;
+}
+
+static dev_t devt_from_devname(const char *name)
+{
+	dev_t devt = 0;
+	int part;
+	char s[32];
+	char *p;
+
+	if (strlen(name) > 31)
+		return 0;
+	strcpy(s, name);
+	for (p = s; *p; p++) {
+		if (*p == '/')
+			*p = '!';
+	}
+
+	devt = blk_lookup_devt(s, 0);
+	if (devt)
+		return devt;
+
+	/*
+	 * Try non-existent, but valid partition, which may only exist after
+	 * opening the device, like partitioned md devices.
+	 */
+	while (p > s && isdigit(p[-1]))
+		p--;
+	if (p == s || !*p || *p == '0')
+		return 0;
+
+	/* try disk name without <part number> */
+	part = simple_strtoul(p, NULL, 10);
+	*p = '\0';
+	devt = blk_lookup_devt(s, part);
+	if (devt)
+		return devt;
+
+	/* try disk name without p<part number> */
+	if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p')
+		return 0;
+	p[-1] = '\0';
+	return blk_lookup_devt(s, part);
+}
+#endif /* CONFIG_BLOCK */
+
+static dev_t devt_from_devnum(const char *name)
+{
+	unsigned maj, min, offset;
+	dev_t devt = 0;
+	char *p, dummy;
+
+	if (sscanf(name, "%u:%u%c", &maj, &min, &dummy) == 2 ||
+	    sscanf(name, "%u:%u:%u:%c", &maj, &min, &offset, &dummy) == 3) {
+		devt = MKDEV(maj, min);
+		if (maj != MAJOR(devt) || min != MINOR(devt))
+			return 0;
+	} else {
+		devt = new_decode_dev(simple_strtoul(name, &p, 16));
+		if (*p)
+			return 0;
+	}
+
+	return devt;
+}
 
 /*
  *	Convert a name into device number.  We accept the following variants:
@@ -218,101 +293,23 @@ static int match_dev_by_label(struct device *dev, const void *data)
  *	name contains slashes, the device name has them replaced with
  *	bangs.
  */
-
 dev_t name_to_dev_t(const char *name)
 {
-	char s[32];
-	char *p;
-	dev_t res = 0;
-	int part;
-
+	if (strcmp(name, "/dev/nfs") == 0)
+		return Root_NFS;
+	if (strcmp(name, "/dev/cifs") == 0)
+		return Root_CIFS;
+	if (strcmp(name, "/dev/ram") == 0)
+		return Root_RAM0;
 #ifdef CONFIG_BLOCK
-	if (strncmp(name, "PARTUUID=", 9) == 0) {
-		name += 9;
-		res = devt_from_partuuid(name);
-		if (!res)
-			goto fail;
-		goto done;
-	} else if (strncmp(name, "PARTLABEL=", 10) == 0) {
-		struct device *dev;
-
-		dev = class_find_device(&block_class, NULL, name + 10,
-					&match_dev_by_label);
-		if (!dev)
-			goto fail;
-
-		res = dev->devt;
-		put_device(dev);
-		goto done;
-	}
+	if (strncmp(name, "PARTUUID=", 9) == 0)
+		return devt_from_partuuid(name + 9);
+	if (strncmp(name, "PARTLABEL=", 10) == 0)
+		return devt_from_partlabel(name + 10);
+	if (strncmp(name, "/dev/", 5) == 0)
+		return devt_from_devname(name + 5);
 #endif
-
-	if (strncmp(name, "/dev/", 5) != 0) {
-		unsigned maj, min, offset;
-		char dummy;
-
-		if ((sscanf(name, "%u:%u%c", &maj, &min, &dummy) == 2) ||
-		    (sscanf(name, "%u:%u:%u:%c", &maj, &min, &offset, &dummy) == 3)) {
-			res = MKDEV(maj, min);
-			if (maj != MAJOR(res) || min != MINOR(res))
-				goto fail;
-		} else {
-			res = new_decode_dev(simple_strtoul(name, &p, 16));
-			if (*p)
-				goto fail;
-		}
-		goto done;
-	}
-
-	name += 5;
-	res = Root_NFS;
-	if (strcmp(name, "nfs") == 0)
-		goto done;
-	res = Root_CIFS;
-	if (strcmp(name, "cifs") == 0)
-		goto done;
-	res = Root_RAM0;
-	if (strcmp(name, "ram") == 0)
-		goto done;
-
-	if (strlen(name) > 31)
-		goto fail;
-	strcpy(s, name);
-	for (p = s; *p; p++)
-		if (*p == '/')
-			*p = '!';
-	res = blk_lookup_devt(s, 0);
-	if (res)
-		goto done;
-
-	/*
-	 * try non-existent, but valid partition, which may only exist
-	 * after revalidating the disk, like partitioned md devices
-	 */
-	while (p > s && isdigit(p[-1]))
-		p--;
-	if (p == s || !*p || *p == '0')
-		goto fail;
-
-	/* try disk name without <part number> */
-	part = simple_strtoul(p, NULL, 10);
-	*p = '\0';
-	res = blk_lookup_devt(s, part);
-	if (res)
-		goto done;
-
-	/* try disk name without p<part number> */
-	if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p')
-		goto fail;
-	p[-1] = '\0';
-	res = blk_lookup_devt(s, part);
-	if (res)
-		goto done;
-
-fail:
-	return 0;
-done:
-	return res;
+	return devt_from_devnum(name);
 }
 EXPORT_SYMBOL_GPL(name_to_dev_t);
 
-- 
2.29.2

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel


  parent reply	other threads:[~2020-11-18  8:48 UTC|newest]

Thread overview: 237+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-18  8:47 merge struct block_device and struct hd_struct Christoph Hellwig
2020-11-18  8:47 ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47 ` Christoph Hellwig
2020-11-18  8:47 ` [PATCH 01/20] blk-cgroup: fix a hd_struct leak in blkcg_fill_root_iostats Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:09   ` Jan Kara
2020-11-18 14:09     ` [dm-devel] " Jan Kara
2020-11-18 14:09     ` Jan Kara
2020-11-19  8:37   ` Johannes Thumshirn
2020-11-19  8:37     ` [dm-devel] " Johannes Thumshirn
2020-11-19  8:37     ` Johannes Thumshirn
2020-11-24 12:26   ` Tejun Heo
2020-11-24 12:26     ` [dm-devel] " Tejun Heo
2020-11-24 12:26     ` Tejun Heo
2020-11-18  8:47 ` [PATCH 02/20] block: remove a duplicate __disk_get_part prototype Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:10   ` Jan Kara
2020-11-18 14:10     ` [dm-devel] " Jan Kara
2020-11-18 14:10     ` Jan Kara
2020-11-19  8:37   ` Johannes Thumshirn
2020-11-19  8:37     ` [dm-devel] " Johannes Thumshirn
2020-11-19  8:37     ` Johannes Thumshirn
2020-11-18  8:47 ` [PATCH 03/20] block: add a bdev_kobj helper Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:18   ` Jan Kara
2020-11-18 14:18     ` [dm-devel] " Jan Kara
2020-11-18 14:18     ` Jan Kara
2020-11-19  8:37   ` Johannes Thumshirn
2020-11-19  8:37     ` [dm-devel] " Johannes Thumshirn
2020-11-19  8:37     ` Johannes Thumshirn
2020-11-18  8:47 ` [PATCH 04/20] block: use disk_part_iter_exit in disk_part_iter_next Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:19   ` Jan Kara
2020-11-18 14:19     ` [dm-devel] " Jan Kara
2020-11-18 14:19     ` Jan Kara
2020-11-19  8:37   ` Johannes Thumshirn
2020-11-19  8:37     ` [dm-devel] " Johannes Thumshirn
2020-11-19  8:37     ` Johannes Thumshirn
2020-11-18  8:47 ` [PATCH 05/20] block: use put_device in put_disk Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:20   ` Jan Kara
2020-11-18 14:20     ` [dm-devel] " Jan Kara
2020-11-18 14:20     ` Jan Kara
2020-11-19  8:38   ` Johannes Thumshirn
2020-11-19  8:38     ` [dm-devel] " Johannes Thumshirn
2020-11-19  8:38     ` Johannes Thumshirn
2020-11-18  8:47 ` [PATCH 06/20] block: change the hash used for looking up block devices Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:22   ` Jan Kara
2020-11-18 14:22     ` [dm-devel] " Jan Kara
2020-11-18 14:22     ` Jan Kara
2020-11-18  8:47 ` Christoph Hellwig [this message]
2020-11-18  8:47   ` [dm-devel] [PATCH 07/20] init: refactor name_to_dev_t Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:37   ` Jan Kara
2020-11-18 14:37     ` [dm-devel] " Jan Kara
2020-11-18 14:37     ` Jan Kara
2020-11-19  7:52     ` Christoph Hellwig
2020-11-19  7:52       ` [dm-devel] " Christoph Hellwig
2020-11-19  7:52       ` Christoph Hellwig
2020-11-19  8:25       ` Jan Kara
2020-11-19  8:25         ` [dm-devel] " Jan Kara
2020-11-19  8:25         ` Jan Kara
2020-11-20  8:49         ` Christoph Hellwig
2020-11-20  8:49           ` [dm-devel] " Christoph Hellwig
2020-11-20  8:49           ` Christoph Hellwig
2020-11-19  8:38   ` Johannes Thumshirn
2020-11-19  8:38     ` [dm-devel] " Johannes Thumshirn
2020-11-19  8:38     ` Johannes Thumshirn
2020-11-18  8:47 ` [PATCH 08/20] init: refactor devt_from_partuuid Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:41   ` Jan Kara
2020-11-18 14:41     ` [dm-devel] " Jan Kara
2020-11-18 14:41     ` Jan Kara
2020-11-18  8:47 ` [PATCH 09/20] init: cleanup match_dev_by_uuid and match_dev_by_label Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:42   ` Jan Kara
2020-11-18 14:42     ` [dm-devel] " Jan Kara
2020-11-18 14:42     ` Jan Kara
2020-11-19  8:38   ` Johannes Thumshirn
2020-11-19  8:38     ` [dm-devel] " Johannes Thumshirn
2020-11-19  8:38     ` Johannes Thumshirn
2020-11-18  8:47 ` [PATCH 10/20] block: refactor __blkdev_put Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18 14:46   ` Jan Kara
2020-11-18 14:46     ` [dm-devel] " Jan Kara
2020-11-18 14:46     ` Jan Kara
2020-11-18  8:47 ` [PATCH 11/20] block: reference struct block_device from struct hd_struct Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-19  9:41   ` Jan Kara
2020-11-19  9:41     ` [dm-devel] " Jan Kara
2020-11-19  9:41     ` Jan Kara
2020-11-20  8:56     ` Christoph Hellwig
2020-11-20  8:56       ` [dm-devel] " Christoph Hellwig
2020-11-20  8:56       ` Christoph Hellwig
2020-11-24 16:59   ` Tejun Heo
2020-11-24 16:59     ` [dm-devel] " Tejun Heo
2020-11-24 16:59     ` Tejun Heo
2020-11-25 11:40     ` Jan Kara
2020-11-25 11:40       ` [dm-devel] " Jan Kara
2020-11-25 11:40       ` Jan Kara
2020-11-25 12:09       ` Tejun Heo
2020-11-25 12:09         ` [dm-devel] " Tejun Heo
2020-11-25 12:09         ` Tejun Heo
2020-11-18  8:47 ` [PATCH 12/20] block: simplify the block device claiming interface Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-19 10:07   ` Jan Kara
2020-11-19 10:07     ` [dm-devel] " Jan Kara
2020-11-19 10:07     ` Jan Kara
2020-11-18  8:47 ` [PATCH 13/20] block: remove ->bd_contains Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-19 10:32   ` Jan Kara
2020-11-19 10:32     ` [dm-devel] " Jan Kara
2020-11-19 10:32     ` Jan Kara
2020-11-20  9:01     ` Christoph Hellwig
2020-11-20  9:01       ` [dm-devel] " Christoph Hellwig
2020-11-20  9:01       ` Christoph Hellwig
2020-11-18  8:47 ` [PATCH 14/20] block: remove the nr_sects field in struct hd_struct Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-19 12:05   ` Jan Kara
2020-11-19 12:05     ` [dm-devel] " Jan Kara
2020-11-19 12:05     ` Jan Kara
2020-11-20  9:08     ` Christoph Hellwig
2020-11-20  9:08       ` [dm-devel] " Christoph Hellwig
2020-11-20  9:08       ` Christoph Hellwig
2020-11-20 11:21       ` Jan Kara
2020-11-20 11:21         ` [dm-devel] " Jan Kara
2020-11-20 11:21         ` Jan Kara
2020-11-20 15:32         ` Christoph Hellwig
2020-11-20 15:32           ` [dm-devel] " Christoph Hellwig
2020-11-20 15:32           ` Christoph Hellwig
2020-11-20 15:59           ` Matthew Wilcox
2020-11-20 15:59             ` [dm-devel] " Matthew Wilcox
2020-11-20 15:59             ` Matthew Wilcox
2020-11-20 16:01             ` Christoph Hellwig
2020-11-20 16:01               ` [dm-devel] " Christoph Hellwig
2020-11-20 16:01               ` Christoph Hellwig
2020-11-20 20:05             ` Jan Kara
2020-11-20 20:05               ` [dm-devel] " Jan Kara
2020-11-20 20:05               ` Jan Kara
2020-11-21 16:24               ` Christoph Hellwig
2020-11-21 16:24                 ` [dm-devel] " Christoph Hellwig
2020-11-21 16:24                 ` Christoph Hellwig
2020-11-18  8:47 ` [PATCH 15/20] block: merge struct block_device and " Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-19 14:39   ` Jan Kara
2020-11-19 14:39     ` [dm-devel] " Jan Kara
2020-11-19 14:39     ` Jan Kara
2020-11-20  9:15     ` Christoph Hellwig
2020-11-20  9:15       ` [dm-devel] " Christoph Hellwig
2020-11-20  9:15       ` Christoph Hellwig
2020-11-20 10:53       ` Jan Kara
2020-11-20 10:53         ` [dm-devel] " Jan Kara
2020-11-20 10:53         ` Jan Kara
2020-11-18  8:47 ` [PATCH 16/20] block: stop using bdget_disk for partition 0 Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-19 14:43   ` Jan Kara
2020-11-19 14:43     ` [dm-devel] " Jan Kara
2020-11-19 14:43     ` Jan Kara
2020-11-18  8:47 ` [PATCH 17/20] filemap: consistently use ->f_mapping over ->i_mapping Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-19 14:53   ` Jan Kara
2020-11-19 14:53     ` [dm-devel] " Jan Kara
2020-11-19 14:53     ` Jan Kara
2020-11-19 15:13   ` Matthew Wilcox
2020-11-19 15:13     ` [dm-devel] " Matthew Wilcox
2020-11-19 15:13     ` Matthew Wilcox
2020-11-20  9:17     ` Christoph Hellwig
2020-11-20  9:17       ` [dm-devel] " Christoph Hellwig
2020-11-20  9:17       ` Christoph Hellwig
2020-11-18  8:47 ` [PATCH 18/20] fs: remove get_super_thawed and get_super_exclusive_thawed Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-19 14:59   ` Jan Kara
2020-11-19 14:59     ` [dm-devel] " Jan Kara
2020-11-19 14:59     ` Jan Kara
2020-11-18  8:47 ` [PATCH 19/20] bcache: remove a superflous lookup_bdev all Christoph Hellwig
2020-11-18  8:47   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:47   ` Christoph Hellwig
2020-11-18  8:54   ` Coly Li
2020-11-18  8:54     ` [dm-devel] " Coly Li
2020-11-18  8:54     ` Coly Li
2020-11-18  9:10     ` Greg KH
2020-11-18  9:10       ` [dm-devel] " Greg KH
2020-11-18  9:10       ` Greg KH
2020-11-18  9:55       ` Coly Li
2020-11-18  9:55         ` [dm-devel] " Coly Li
2020-11-18  9:55         ` Coly Li
2020-11-18 16:24     ` Christoph Hellwig
2020-11-18 16:24       ` [dm-devel] " Christoph Hellwig
2020-11-18 16:24       ` Christoph Hellwig
2020-11-18  8:48 ` [PATCH 20/20] block: remove i_bdev Christoph Hellwig
2020-11-18  8:48   ` [dm-devel] " Christoph Hellwig
2020-11-18  8:48   ` Christoph Hellwig
2020-11-18  8:56 ` merge struct block_device and struct hd_struct Jan Beulich
2020-11-18  8:56   ` [dm-devel] " Jan Beulich
2020-11-18  8:56   ` Jan Beulich
2020-11-18  8:58   ` Christoph Hellwig
2020-11-18  8:58     ` [dm-devel] " Christoph Hellwig
2020-11-18  8:58     ` Christoph Hellwig
2020-11-18  9:04     ` Jan Beulich
2020-11-18  9:04       ` [dm-devel] " Jan Beulich
2020-11-18  9:04       ` Jan Beulich
2020-11-18  9:08       ` Christoph Hellwig
2020-11-18  9:08         ` [dm-devel] " Christoph Hellwig
2020-11-18  9:08         ` Christoph Hellwig
2020-11-18  9:09       ` Greg KH
2020-11-18  9:09         ` [dm-devel] " Greg KH
2020-11-18  9:09         ` Greg KH
2020-11-18  9:23         ` Jan Beulich
2020-11-18  9:23           ` [dm-devel] " Jan Beulich
2020-11-18  9:23           ` Jan Beulich
2020-11-18  9:32           ` Greg KH
2020-11-18  9:32             ` [dm-devel] " Greg KH
2020-11-18  9:32             ` Greg KH
2020-11-18 12:50           ` Matthew Wilcox
2020-11-18 12:50             ` [dm-devel] " Matthew Wilcox
2020-11-18 12:50             ` Matthew Wilcox
2020-11-18  9:13 ` Greg KH
2020-11-18  9:13   ` [dm-devel] " Greg KH
2020-11-18  9:13   ` Greg KH

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=20201118084800.2339180-8-hch@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=colyli@suse.de \
    --cc=dm-devel@redhat.com \
    --cc=jack@suse.com \
    --cc=josef@toxicpanda.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-bcache@vger.kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=richard@nod.at \
    --cc=snitzer@redhat.com \
    --cc=tj@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /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.