Re: [PATCH 0/4 v3] fs: Remove i_devices from struct inode

From: Andy Lutomirski
Date: Tue Nov 04 2014 - 15:25:21 EST


On Tue, Nov 4, 2014 at 12:16 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
> On Tue, Nov 04, 2014 at 11:52:22AM -0800, Andy Lutomirski wrote:
>
>> Let me try again, though: what if a chardev inode replaced i_cdev with
>> NULL and dropped its kobj reference in iput_final? This would add a
>> bit over overhead to things that repeatedly open and close the same
>> device node, but I doubt this matters much.
>
> How is it different from what Jan proposed? The whole problem is that
> iput_final() is too late. We could clean the reference on close, all
> right, and have it looked up again on every open, but I'm not at all sure
> that situation with opening/closing cdev is never a hot path, especially with
> udev playing silly buggers, etc.

I thought the issue was inodes on the LRU list holding references open.

Anyway, the only expensive part of recreating the reference seems to
be kobj_lookup, and that doesn't look so bad. If there's a case where
the performance impact would matter at all, maybe that's an argument
for fixing it.

And is udev really opening the same device node more than once? I can
see once for blkid and such, but I don't see where a second open call
would come from.

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/