Re: [RFC] [PATCH 6/8] inode-diet: Move i_cindex from struct inode to struct file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Theodore Tso wrote:
On Mon, Jun 19, 2006 at 08:37:56PM +0100, Al Viro wrote:
NAK.  Please, take it to the union into cdev part.

Explanation: the whole point of that sucker is to avoid i_rdev use
in drivers, switching to i_cdev + i_cindex.  _Especially_ in open().
There is a bunch of other drivers that would get cleaner from that,
including a lot of tty code.

The problem is that we already have more stuff in the cdev union
(list_head's are *big*, especially on Opterons), so moving it there
doesn't actually save us anything.

Moving it into struct file however should be good enough clean up the
character devices drivers that you are concerned about, however.  They
are passed the struct file pointer in the file_operations->open call.
So we can clean up the tty code, et. al, by using file->f_cindex just
as easily.
Furthermore, the inode->i_cindex isn't guaranteed to be valid until
the high-level vfs open code is called anyway, so you might as well
tell people to reference it from filp->f_cindex in the device driver's
open() routine.

Does that make sense?

The patch is obviously proper for usage by any file_operations->open() users like the single current one (or two actually, dv1394_open() and video1394_open()). I don't know if there are any contrary usages planned in other subsystems.
--
Stefan Richter
-=====-=-==- -==- =--==
http://arcgraph.de/sr/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux