public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Brian F. G. Bidulock" <bidulock@openss7.org>
To: Theodore Tso <tytso@mit.edu>, linux-kernel@vger.kernel.org
Subject: Re: [RFC]  Slimming down struct inode
Date: Thu, 15 Jun 2006 02:27:15 -0600	[thread overview]
Message-ID: <20060615022715.A5168@openss7.org> (raw)
In-Reply-To: <20060615044302.GA7318@thunk.org>; from tytso@mit.edu on Thu, Jun 15, 2006 at 12:43:02AM -0400

Theodore,

On Thu, 15 Jun 2006, Theodore Tso wrote:
> 
> I'm not particularly sympathetic to out of tree implementations,

I believe you asked for comments; not proposed to offer sympathy.

> especially one which is as (NOT!) likely to be merged as STREAMS
> support.  Out of tree patches can always patch struct inode to add all
> the bloat they want.

Bloat that nobody complained about for 10 years or so...  Sounds pretty
antagonistic to me.  Streams are pretty basic character devices.

> Also, it souinds like you're not usually using
> i_pipe as a true pointer to a struct pipe_inode_info, but rather as
> kludged location to stash your v_str pointer.

It points to a STREAMS-based FIFO which, of course, uses a Stream head
structure instead of a pipe_inode_info structure.  Is is used in the
same fashion as Linux FIFOs use the pointer: to attach information to
an inode in a foreign filesystem.  generic_ip and such does not help
here because they are already used by the foreign filesystem.

The cdev structure used to have a private pointer (cd_private) that
could be used to the same effect, but it disappeared some time ago when
char_device was reworked into cdev.  block_device still has a bd_private
pointer.  Merging i_pipe will remove the ability for a character
device driver to association a private pointer with the inode at open
to obtain FIFO-like behaviour (where the device is associated with the
specific inode rather than the device number), reducing the flexibility
of the Linux VFS.

i_pipe is not necessary for Unnamed FIFOs or pipes in Linux (those
inodes are allocated from the pipefs and could very well use the
generic_ip pointer.  i_pipe is only necessary for named FIFOs because
these are attached to inodes belonging to filesystems foreign to the
pipefs.  It is a slim special case of file on file mounting.  Regardless
of STREAMS I think that it deserves to be separate from i_cdev and
i_bdev.

All other basic character device mechanisms either allocate their own
inodes or hang their private data off of the open file pointer.  As
do STREAMS, which, aside from STREAMS-based FIFOs are basic character
devices.


> Why not just have your
> STREAMS implementation patch include/linux/fs.h to add a v_str pointer?

Because it does not patch the kernel but simply loads as a set of
GPL'ed kernel modules.

      reply	other threads:[~2006-06-15  8:27 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-09 23:50 [RFC] Slimming down struct inode Theodore Ts'o
2006-06-10  0:24 ` Bernd Eckenfels
2006-06-10  1:27 ` Al Viro
2006-06-10  1:56   ` Theodore Tso
2006-06-10  6:24     ` Stefan Richter
2006-06-10 10:48 ` Jan Engelhardt
2006-06-10 15:04   ` Jeff Garzik
2006-06-13  4:35     ` Nathan Scott
2006-06-13  4:32   ` Nathan Scott
2006-06-13 14:00     ` Avi Kivity
2006-06-13 17:44       ` Theodore Tso
2006-06-13 18:08         ` Avi Kivity
2006-06-13 20:10           ` Jan Engelhardt
2006-06-13 20:25             ` Avi Kivity
2006-06-13 22:41       ` Nathan Scott
2006-06-14 10:29         ` Nikita Danilov
2006-06-14 21:50           ` Nathan Scott
2006-06-15  5:49             ` Theodore Tso
2006-06-15  7:01               ` Nathan Scott
2006-06-15  8:46                 ` Brian F. G. Bidulock
2006-06-15 10:20                   ` Nathan Scott
2006-06-14 23:27           ` Jan Engelhardt
2006-06-15 10:09             ` Nikita Danilov
2006-06-10 11:03 ` Tomasz Torcz
2006-06-10 15:06   ` Jeff Garzik
2006-06-15  0:16 ` Brian F. G. Bidulock
2006-06-15  4:43   ` Theodore Tso
2006-06-15  8:27     ` Brian F. G. Bidulock [this message]

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=20060615022715.A5168@openss7.org \
    --to=bidulock@openss7.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tytso@mit.edu \
    /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