From: Trent Lloyd <lathiat@bur.st>
To: "Adam J. Richter" <adam@yggdrasil.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Future devfs plans (sorry for previous incomplete message)
Date: Mon, 26 Jul 2004 14:24:36 +0800 [thread overview]
Message-ID: <20040726062435.GA22559@thump.bur.st> (raw)
In-Reply-To: <200407261737.i6QHbff04878@freya.yggdrasil.com>
Wouldn't a possible solution to do this to develop an extension to tmpfs to
catch files accessed that don't exist etc and use that in conjuction
with udev?
> [Sorry for the previous incomplete message on lkml. It was
> the first time I've seen xterm segfault in a long time.]
>
> Please do not delete devfs, as it provides important
> functionality unavailable elsewhere, and I have some plans to improve
> its implementation further.
>
> Part 1: Advantages of devfs
>
> devfs allows for creation of devices when user level programs
> need them rather than based on "hot plug" or modprobe-related events,
> neither of which do not exist for many devices and do not necessarily
> indicate need for the driver. This allow distributions to include a
> support for many more devices, without wasting a lot of unswappable
> memory, which adds up when there are a lot of potential devices and,
> in some cases, can make Linux perform better on platforms with limited
> RAM. I can think of four classes of such devices:
>
> 1. hardware that does not generate "hot plug" events, such as
> a conventional floppy disk drive. This way, distributions
> can have support for all of these devices turned on without
> bloating the kernel.
>
> 2. software devices, such as /dev/loop. Again, this way
> distributions can include support for any such devices that
> may be developed without a substantial cost in unswappable RAM.
>
> 3. hardware that is incidentally plugged in, but which might not
> be used in the current session from boot to shutdown. With the
> increasing popularity of USB and firewire, a user might have a
> "webcam", a still digital camera, a digital video converter, a
> flash reader, a printer, a scanner and an external disk that
> happen attached to the computer's USB network, with the user
> having no intention of using any of them during the current
> session from boot to shutdown. This way, the cost of leaving
> some things plugged in for convenience is reduced.
>
> 4. user level disk partitioning, which I've used for years, shrinking
> the kernel a bit, and possibly enabling one to avoid spinning
> up disks that are not going to be used.
>
> In addition, devfs's use of names rather than number for
> device identification in the kernel has the potential in the future to
> help avoid issues of device ID number collisions, the "Linux assigned
> names and numbers authority", and so on. System administrators that
> do not like using devfs names directly can use the mechanisms provided
> by devfs user level software to map to device names that they do like.
>
> In any software, there is always a limit point to the
> "mechanism versus policy" slogan where the complexity costs of
> providing more generality are believe to outweigh the benefits for the
> near future, especially if further generality could be added later if
> the need were to arrise. For example, most ethernet devices are named
> "eth%d", although we could conceivably add a translation layer for
> that in the future. I believe that at some point in the distant
> future, as part of a rearrangement of the distinctions between block
> devices, char devices and device mappers, the method for connecting
> the string passed to devfs_register() and the file name that
> ultimately appears in /dev might change, but removing devfs in the
> meantime would do more to impede such an effort and also would be
> throwing the baby out with the bath water due to other advantages of
> devfs discussed above.
>
>
> Part 2: Future plans for devfs
>
> Some time ago, I posted patches to replace the stock devfs
> implementation with a much smaller one based on a specialized fork of
> ramfs, replacing the devfs daemon with a facility for having the
> kernel exec a helper program on devfs events. The kernel code was
> about a fourth the size of stock devfs, and the user level code was
> also reduced by a similar factor. I use slightly updated version of
> that system on several systems every day, under 2.6.7. I can post
> updated patches for this, but I also plan to implement some change
> soon.
>
> I plan to split out the functionality for invoking a user
> level helper program on attempts to find or create a file, which
> should provide the following advantages:
>
> 1. non-devfs configurations will be able to have demand loading
> of device drivers that devfs systems currently enjoy.
>
> 2. The kernel memory footprint costs of CONFIG_DEVFS will be
> even smaller, although the size of CONFIG_DEVFS +
> CONFIG_lookup_helper will probably be slightly more than
> that of my current mini-devfs.
>
> 3. It may provide a daemonless alternative to autofs for some
> simple but common uses.
>
> 4. It will probably at least take us a step toward kicking dnotify
> out to a demand loaded module (hey, it's unswappable memory that
> every system currently uses, every byte counts).
>
> 5. It will probably provide a more general mechanism for
> implementing dnotify-like systems that people periodically post
> to the linux-kernel mailing list.
>
> I have not yet written this vaporware, partly because I'm still
> pondering the question of whether the facility for exec'ing a user
> level program should be done as a few new lines in ramfs, a fork of
> ramfs, or an extentsion and restructuring of dnotify. It should not
> be many lines of code. It's just that I want to get it right.
>
> Doing this as a ramfs variant would seem to contain the
> changes and assure the non-users of this facility that there would be
> no cost to them. So why not do it as a ramfs variant? Alas, doing
> the user level helper facility as a ramfs variant would require adding
> a parameter to inode_operations.lookup() because we need to filter out
> the lookup event that occurs when an inode is being created.
> Otherwise, in certain cases, loading a module that registers multiple
> devices can cause a deadlock when the module's initial registration of
> the device causes the devfs helper to block on trying to load the same
> module again. Also, I wonder if there might be some use for layering
> this facility on top of other file systems, such as /proc or /sys or
> arbitrary storage file systems, but I haven't yet been able to come up
> with any example. So, I think that making some general interface that
> both dnotify and this facility could be clients of will probably be
> the best approach, but there are definitely pros and cons to this
> choice, and keeping that code small is something that I want to be
> careful about.
>
> I can post a new mini-devfs patch if there is interest,
> although it may be the weekend before I have time to do even that.
>
> In the meantime, please do not delete devfs. Thanks in
> advance.
>
> __ ______________
> Adam J. Richter \ /
> adam@yggdrasil.com | g g d r a s i l
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
Trent Lloyd <lathiat@bur.st>
Bur.st Networking Inc.
next prev parent reply other threads:[~2004-07-26 6:24 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-26 17:37 Future devfs plans (sorry for previous incomplete message) Adam J. Richter
2004-07-26 3:34 ` Tim Connors
2004-07-26 6:24 ` Trent Lloyd [this message]
2004-07-26 6:32 ` Norberto Bensa
2004-07-26 7:11 ` Alexander E. Patrakov
2004-07-26 9:09 ` Måns Rullgård
2004-07-28 0:12 ` Trent Lloyd
2004-07-28 1:43 ` Måns Rullgård
2004-07-26 9:38 ` Ville Herva
2004-07-27 1:03 ` Matt Mackall
2004-07-28 3:16 ` Ian Kent
-- strict thread matches above, loose matches on Subject: below --
2004-07-28 4:16 Adam J. Richter
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=20040726062435.GA22559@thump.bur.st \
--to=lathiat@bur.st \
--cc=adam@yggdrasil.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