]> git.baikalelectronics.ru Git - kernel.git/commit
sysfs: use iget_locked() instead of new_inode()
authorTejun Heo <htejun@gmail.com>
Wed, 13 Jun 2007 18:45:17 +0000 (03:45 +0900)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 11 Jul 2007 23:09:07 +0000 (16:09 -0700)
commitb5f1674f2570eaa7ff8d2f66f4fb988c898f6034
treeee28a44611ac2192b265f5f85a74f7da98d2fdef
parentfb971de7bde3827cd0250d18538fa73d360a5d87
sysfs: use iget_locked() instead of new_inode()

After dentry is reclaimed, sysfs always used to allocate new dentry
and inode if the file is accessed again.  This causes problem with
operations which only pin the inode.  For example, if inotify watch is
added to a sysfs file and the dentry for the file is reclaimed, the
next update event creates new dentry and new inode making the inotify
watch miss all the events from there on.

This patch fixes it by using iget_locked() instead of new_inode().
sysfs_new_inode() is renamed to sysfs_get_inode() and inode is
initialized iff the inode is newly allocated.  sysfs_instantiate() is
responsible for unlocking new inodes.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/sysfs/dir.c
fs/sysfs/inode.c
fs/sysfs/sysfs.h