public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Kay Sievers <kay@vrfy.org>
To: Greg Kroah-Hartmann <greg@kroah.com>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] driver-core: devtmpfs - substitute (unreliable) device names with UUIDs
Date: Sun, 01 Apr 2012 15:12:16 +0200	[thread overview]
Message-ID: <1333285936.19043.5.camel@mop> (raw)

From: Kay Sievers <kay@vrfy.org>
Subject: driver-core: devtmpfs - substitute (unreliable) device names with UUIDs

For historic reasons, Linux uses very short abbreviated names for device nodes.
Recent userspace development added various abstractions to access /dev, so that
this is no longer necessary and we are able to switch almost all of them to
proper UUIDs, which are better machine-readable, more extensible and future
proof.

There is no need in the future to coordinate device names, or namespace them,
the pool if IDs is just large enough to prevent any conflicts.

In this patch, for now, the 'memory' device nodes are excluded from that list,
and /dev/null will still be created to support legacy systems, or to be able
to boot directly with init=/bin/sh in a non-ported legacy shell binary.

This is the first part of a series of upcoming changes. We are working on and
propose a similar scheme for the subsystem names in /sys, cgroups, network
interfaces names. The other patches will be submitted when they have seen
more testing, but all looks promising so far.

This is probably not appropriate for -stable, but we are currently working on
making this feature configurable, so that it can be safely backported to older
kernels.

This is an example output from a 3.4+ kernel:

  $ sh-4.2# ls -l /dev 
  total 0
    4,  17 Apr  1 14:47 0507f057-707a-4390-bcbc-28f7b8cea649
    4,  64 Apr  1 14:47 075d204b-1eaf-4fa9-9e31-f08a3dd6783d
   10, 228 Apr  1 14:47 07c45fc1-d32c-4bde-99f2-ebf746ab0d70
    4,  45 Apr  1 14:47 0ddd2345-c18f-4ea4-a85d-eff1be877d9a
    4,  66 Apr  1 14:47 135ba1fb-019e-409b-922a-38ede939384f
    4,  38 Apr  1 14:47 176eee40-89ce-45b8-bf36-0caee0aded21
    7,   0 Apr  1 14:47 18074259-9dad-4700-9ad0-48bee2cdd677
    4,   8 Apr  1 14:47 1989db1b-317e-44a2-bf31-f874c9091b12
    4,  49 Apr  1 14:47 1be81e3a-02ee-437b-9163-3b448b8909a0
  254,   0 Apr  1 14:47 1c68dffe-a80a-44f4-a956-2d4a2d1bd897
    7, 128 Apr  1 14:47 1d78abd2-3f49-43b0-8497-715ed06dfc0a
    4,  23 Apr  1 14:47 1ebce641-d889-4088-b14e-c5edbc52ecfc
    4,  50 Apr  1 14:47 21df754f-a826-4162-b687-8c4a35f68b91
    4,  34 Apr  1 14:47 22378a55-7c3f-4ea2-a8a7-c01e1c5ab756
    4,  39 Apr  1 14:47 2254905d-b071-427c-8566-cfd4b1a31524
    5,   0 Apr  1 14:47 22dae2a8-862a-4a4e-ab46-25a7c0177f9e
    4,  59 Apr  1 14:47 2491d450-fad2-40bc-9563-4d65c3c68ce0
    4,  67 Apr  1 14:47 2a975f05-f3b4-48e4-af2b-b2b0712de780
    4,  55 Apr  1 14:47 2ae0c894-0a67-4610-a05d-ff2aae1d0d64
  253,   0 Apr  1 14:47 2d0058bb-38b9-438d-8aaa-b7d9e02991f8
    4,  61 Apr  1 14:47 2d4c584e-8f19-48b4-9f50-67a46839b950
    5,   1 Apr  1 14:47 2e6ab566-7919-4d5a-b0e6-664a5d066b30
   10,  62 Apr  1 14:47 2e85a7c8-bd1d-4263-b79d-947423368beb
    4,  58 Apr  1 14:47 3000ffd8-3d35-4350-bfbc-225ac991f653
    4,   0 Apr  1 14:47 33959aa5-3834-4944-82eb-1560a5226d94
    4,   7 Apr  1 14:47 33b969a4-5cc5-40ea-9494-5316a65f8cd6
   10, 227 Apr  1 14:47 34aff009-3a8b-4a01-827e-f5a9975c2058
    4,  20 Apr  1 14:47 3f2491aa-bcb1-4948-a20f-15f6a07bf70c
    4,   5 Apr  1 14:47 42c194bb-82b9-4823-966e-1328d75ab3e6
    4,  44 Apr  1 14:47 43f0ade0-4588-4944-9ec5-089c9ae359e0
    4,  29 Apr  1 14:47 44d0411d-8ff1-4fe2-bf6e-44679e08c03c
    4,  37 Apr  1 14:47 46cbdd3b-bd2e-446f-94a2-837811e4a7f8
    4,   6 Apr  1 14:47 473a613d-1ae5-47e2-8c55-6f76bb83be53
    4,  46 Apr  1 14:47 4802c9ef-0162-40e6-996f-59ded6badd2a
    4,  21 Apr  1 14:47 4a402517-0bef-4814-8671-4ea5c13279d1
    4,  47 Apr  1 14:47 4cc6b5b0-2baa-43df-a2f1-0d38ddb17ed1
    4,   3 Apr  1 14:47 4e87cf2a-448d-4dad-a4c9-00a14d5a6c8b
    4,   1 Apr  1 14:47 5409fb4c-62b9-4467-9be2-0063bb7ed7fe
    4,  16 Apr  1 14:47 554e8e04-0e27-4420-bcf6-5d8acc897706
    4,  30 Apr  1 14:47 55a1fef8-e286-401e-9b00-62ae190985a8
    4,  13 Apr  1 14:47 577b1fd0-9606-4b46-8e15-a84a5758b6be
    4,  56 Apr  1 14:47 5867cffc-636a-4625-beb7-1077f7e1c4a4
    4,  57 Apr  1 14:47 5c8de8e8-824b-49c7-ba28-2fba017285b7
    4,  28 Apr  1 14:47 5e4b3c75-62e7-417e-8f54-fc2ce49a418f
    4,  54 Apr  1 14:47 624f2852-0bde-497a-88a6-c4a6d8fd739c
    4,  41 Apr  1 14:47 645a47a6-902d-4870-95df-26170348285b
    4,  48 Apr  1 14:47 66666ae9-bfaf-478f-9773-3fbb275dfd8b
    4,  60 Apr  1 14:47 67b7f875-c80a-4b40-b619-0af37041d1ab
    4,  32 Apr  1 14:47 69278743-4cfa-48d3-ae82-7534c61a60b7
    4,  24 Apr  1 14:47 6a82c453-a38d-490f-82ce-4d021ae123cd
    4,  15 Apr  1 14:47 6ac64fb5-c52c-451e-8146-8a796b7351bd
    4,  33 Apr  1 14:47 71614a99-cc50-4fd5-8a8a-ece7009de1ab
    4,  19 Apr  1 14:47 7682c236-2b58-4beb-b1e1-5a00f3a1cc46
    4,  10 Apr  1 14:47 76b2adf3-ddd6-46e6-9024-831cad4786a7
    4,  51 Apr  1 14:47 774e198a-96a8-434b-957a-d20cd3590f01
   10,   1 Apr  1 14:47 7b503243-9b10-4d83-bb07-a057a7d4abac
    7, 129 Apr  1 14:47 7d0bee34-abbd-4f1c-80a9-3eed29ad11e9
    4,  42 Apr  1 14:47 7d627d64-520d-4cd9-ac3d-42d22a876aed
    4,   2 Apr  1 14:47 834d656e-488a-4c0a-894c-aba4bff74b9c
    4,  18 Apr  1 14:47 85d5061c-dd48-4804-a6cb-a22d26d91a5e
    4,   4 Apr  1 14:47 882f3674-2b74-42f7-b64b-80b4e01b3dd0
    4,  64 Apr  1 14:47 8e693fd0-a50e-465d-9c0b-a74e41943dbb
    4,  35 Apr  1 14:47 8ec6b3e6-8d72-4ad9-aba9-8a91ef3f2c3b
    4,  31 Apr  1 14:47 9a29e09a-7cae-4d68-8ba0-99d103a12900
    4,  63 Apr  1 14:47 9ccf9199-ae2c-4843-a764-36ed02e88dba
    5,   2 Apr  1 14:47 a07ff4c4-ac59-4496-ad43-d6f95414fc7b
   13,  63 Apr  1 14:47 a93508ca-af17-495a-b0d0-09870e1897b7
   10,  61 Apr  1 14:47 ace2077a-e328-42b5-b403-63d97978832f
    4,  40 Apr  1 14:47 afadf815-4671-4602-8b90-86b5be540d2b
    4,  62 Apr  1 14:47 b24c5416-25f2-4349-88c6-7ebb610910b1
    8,   3 Apr  1 14:47 b2e91dad-3137-4294-b6d1-8a9b3e868883
    7,   1 Apr  1 14:47 b7087629-68a1-4c8f-8548-395c50a3e810
    4,  11 Apr  1 14:47 b7c70fed-aea9-47b9-b480-fd5905c960f0
    4,  52 Apr  1 14:47 b96d8283-538d-4d1e-afa1-10341a3ab4b5
    4,   9 Apr  1 14:47 bc32ed02-00d5-4ccf-b8b5-e4eb382a5b68
   10, 235 Apr  1 14:47 bc4e4e01-1754-41dc-9482-345076660cbd
    8,   4 Apr  1 14:47 be68b2f4-568e-466c-a287-a7d89670b5ea
   10, 234 Apr  1 14:47 c3105ce0-1fa9-47ec-a0e6-bf8cf72d380b
    4,  12 Apr  1 14:47 c5279776-5d30-417f-8e58-fd142960638a
    4,  65 Apr  1 14:47 c7f1cf12-2da8-49c9-886b-ad99d9c5cd41
    8,   2 Apr  1 14:47 c9b0b801-2117-42cf-9720-4d10678c6227
    8,   0 Apr  1 14:47 ce9c6e97-be60-4637-9c00-23abb2d40dfa
    8,   1 Apr  1 14:47 d0098815-5fee-4818-85c0-06002273319e
    4,  26 Apr  1 14:47 d3edd26e-6a39-49b7-8653-ad7a322c5ffc
  253,   1 Apr  1 14:47 d56b4e1e-9331-4a20-8b56-2be2ee0508f6
    4,  22 Apr  1 14:47 df4023ec-ce6a-408c-a96a-3dec9883e625
    4,  27 Apr  1 14:47 e0d51a34-4a4a-4da7-b580-38cf5432744f
    4,  53 Apr  1 14:47 e26ad6e6-d8e2-48be-8d2c-2f0b16abff08
   13,  32 Apr  1 14:47 ec8358f2-3e38-4e06-bd2c-68bde8ec7d1b
    4,  36 Apr  1 14:47 ef941460-6397-4126-bd23-d55ee8b520aa
    4,  14 Apr  1 14:47 f1341ce0-9475-4113-aff3-5cbf926a41ef
    4,  25 Apr  1 14:47 f4663273-d255-4151-bde9-feb7593a427e
    4,  43 Apr  1 14:47 f52e3619-5765-4942-9d70-3553195cec99
   10,  63 Apr  1 14:47 fe0dde7a-4047-41c1-ae55-548d20dad81a
    1,   7 Apr  1 14:47 full
    1,   2 Apr  1 14:47 kmem
    1,  11 Apr  1 14:47 kmsg
    1,   1 Apr  1 14:47 mem
    1,   3 Apr  1 14:47 null
    1,   4 Apr  1 14:47 port
    1,   8 Apr  1 14:47 random
    1,   9 Apr  1 14:47 urandom
    1,   5 Apr  1 14:47 zero

Signed-off-by: Kay Sievers <kay@vrfy.org>
---
 core.c |   42 ++++++++++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 16 insertions(+), 26 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index e28ce98..8433f16 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -25,6 +25,7 @@
 #include <linux/mutex.h>
 #include <linux/async.h>
 #include <linux/pm_runtime.h>
+#include <linux/netdevice.h>
 
 #include "base.h"
 #include "power/power.h"
@@ -1259,32 +1260,19 @@ static struct device *next_device(struct klist_iter *i)
 const char *device_get_devnode(struct device *dev,
                               umode_t *mode, const char **tmp)
 {
-       char *s;
+       unsigned char bytes[16];
 
-       *tmp = NULL;
-
-       /* the device type may provide a specific name */
-       if (dev->type && dev->type->devnode)
-               *tmp = dev->type->devnode(dev, mode);
-       if (*tmp)
-               return *tmp;
-
-       /* the class may provide a specific name */
-       if (dev->class && dev->class->devnode)
-               *tmp = dev->class->devnode(dev, mode);
-       if (*tmp)
-               return *tmp;
-
-       /* return name without allocation, tmp == NULL */
-       if (strchr(dev_name(dev), '!') == NULL)
-               return dev_name(dev);
-
-       /* replace '!' in the name with '/' */
-       *tmp = kstrdup(dev_name(dev), GFP_KERNEL);
+       *tmp = kmalloc(36, GFP_KERNEL);
        if (!*tmp)
                return NULL;
-       while ((s = strchr(*tmp, '!')))
-               s[0] = '/';
+
+       if (dev->class && !strcmp("mem", dev->class->name)) {
+               *tmp = kstrdup(dev_name(dev), GFP_KERNEL);
+       } else {
+               generate_random_uuid(bytes);
+               sprintf(*tmp, "%pU", bytes);
+       }
+
        return *tmp;
 }



             reply	other threads:[~2012-04-01 13:12 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-01 13:12 Kay Sievers [this message]
2012-04-01 16:06 ` [PATCH] driver-core: devtmpfs - substitute (unreliable) device names with UUIDs Greg Kroah-Hartmann

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=1333285936.19043.5.camel@mop \
    --to=kay@vrfy.org \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox