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-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html