All of lore.kernel.org
 help / color / mirror / Atom feed
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.

  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 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.