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?