tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable head: f30ee81787a5abee6c7c72b0fcc30d428319c449 commit: 8ce96a1a798d4e4234f00573df405ad0fd4625d6 [34/89] libfs: add directory operations for stable offsets reproduce: (https://download.01.org/0day-ci/archive/20230704/202307040106.IrPEpc3T-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202307040106.IrPEpc3T-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): >> Documentation/filesystems/locking.rst:119: WARNING: Malformed table. vim +119 Documentation/filesystems/locking.rst 58 59 int (*create) (struct mnt_idmap *, struct inode *,struct dentry *,umode_t, bool); 60 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); 61 int (*link) (struct dentry *,struct inode *,struct dentry *); 62 int (*unlink) (struct inode *,struct dentry *); 63 int (*symlink) (struct mnt_idmap *, struct inode *,struct dentry *,const char *); 64 int (*mkdir) (struct mnt_idmap *, struct inode *,struct dentry *,umode_t); 65 int (*rmdir) (struct inode *,struct dentry *); 66 int (*mknod) (struct mnt_idmap *, struct inode *,struct dentry *,umode_t,dev_t); 67 int (*rename) (struct mnt_idmap *, struct inode *, struct dentry *, 68 struct inode *, struct dentry *, unsigned int); 69 int (*readlink) (struct dentry *, char __user *,int); 70 const char *(*get_link) (struct dentry *, struct inode *, struct delayed_call *); 71 void (*truncate) (struct inode *); 72 int (*permission) (struct mnt_idmap *, struct inode *, int, unsigned int); 73 struct posix_acl * (*get_inode_acl)(struct inode *, int, bool); 74 int (*setattr) (struct mnt_idmap *, struct dentry *, struct iattr *); 75 int (*getattr) (struct mnt_idmap *, const struct path *, struct kstat *, u32, unsigned int); 76 ssize_t (*listxattr) (struct dentry *, char *, size_t); 77 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); 78 void (*update_time)(struct inode *, struct timespec *, int); 79 int (*atomic_open)(struct inode *, struct dentry *, 80 struct file *, unsigned open_flag, 81 umode_t create_mode); 82 int (*tmpfile) (struct mnt_idmap *, struct inode *, 83 struct file *, umode_t); 84 int (*fileattr_set)(struct mnt_idmap *idmap, 85 struct dentry *dentry, struct fileattr *fa); 86 int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa); 87 struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int); 88 struct offset_ctx *(*get_offset_ctx)(struct inode *inode); 89 90 locking rules: 91 all may block 92 93 ============== ============================================= 94 ops i_rwsem(inode) 95 ============== ============================================= 96 lookup: shared 97 create: exclusive 98 link: exclusive (both) 99 mknod: exclusive 100 symlink: exclusive 101 mkdir: exclusive 102 unlink: exclusive (both) 103 rmdir: exclusive (both)(see below) 104 rename: exclusive (all) (see below) 105 readlink: no 106 get_link: no 107 setattr: exclusive 108 permission: no (may not block if called in rcu-walk mode) 109 get_inode_acl: no 110 get_acl: no 111 getattr: no 112 listxattr: no 113 fiemap: no 114 update_time: no 115 atomic_open: shared (exclusive if O_CREAT is set in open flags) 116 tmpfile: no 117 fileattr_get: no or exclusive 118 fileattr_set: exclusive > 119 get_offset_ctx: no 120 ============== ============================================= 121 122 123 Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem 124 exclusive on victim. 125 cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem. 126 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki