Re: [PATCH] fsnotify: fix unlink performance regression

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

 



Hi Amir,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v5.1-rc7 next-20190503]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Amir-Goldstein/fsnotify-fix-unlink-performance-regression/20190505-233115
config: riscv-tinyconfig (attached as .config)
compiler: riscv64-linux-gcc (GCC) 8.1.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=8.1.0 make.cross ARCH=riscv 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

   In file included from fs///attr.c:15:
   include/linux/fsnotify.h: In function 'fsnotify_nameremove':
>> include/linux/fsnotify.h:179:23: error: 'struct inode' has no member named 'i_fsnotify_mask'
     if (!(d_inode(parent)->i_fsnotify_mask & FS_DELETE) &&
                          ^~
>> include/linux/fsnotify.h:180:20: error: 'struct super_block' has no member named 's_fsnotify_mask'
         !(dentry->d_sb->s_fsnotify_mask & FS_DELETE))
                       ^~

vim +179 include/linux/fsnotify.h

   153	
   154	/*
   155	 * fsnotify_nameremove - a filename was removed from a directory
   156	 *
   157	 * This is mostly called under parent vfs inode lock so name and
   158	 * dentry->d_parent should be stable. However there are some corner cases where
   159	 * inode lock is not held. So to be on the safe side and be reselient to future
   160	 * callers and out of tree users of d_delete(), we do not assume that d_parent
   161	 * and d_name are stable and we use dget_parent() and
   162	 * take_dentry_name_snapshot() to grab stable references.
   163	 */
   164	static inline void fsnotify_nameremove(struct dentry *dentry, int isdir)
   165	{
   166		struct dentry *parent;
   167		struct name_snapshot name;
   168		__u32 mask = FS_DELETE;
   169	
   170		/* d_delete() of pseudo inode? (e.g. __ns_get_path() playing tricks) */
   171		if (IS_ROOT(dentry))
   172			return;
   173	
   174		if (isdir)
   175			mask |= FS_ISDIR;
   176	
   177		parent = dget_parent(dentry);
   178		/* Avoid unneeded take_dentry_name_snapshot() */
 > 179		if (!(d_inode(parent)->i_fsnotify_mask & FS_DELETE) &&
 > 180		    !(dentry->d_sb->s_fsnotify_mask & FS_DELETE))
   181			goto out_dput;
   182	
   183		take_dentry_name_snapshot(&name, dentry);
   184	
   185		fsnotify(d_inode(parent), mask, d_inode(dentry), FSNOTIFY_EVENT_INODE,
   186			 name.name, 0);
   187	
   188		release_dentry_name_snapshot(&name);
   189	
   190	out_dput:
   191		dput(parent);
   192	}
   193	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux