Loading Documentation/filesystems/Locking +0 −2 Original line number Diff line number Diff line Loading @@ -69,7 +69,6 @@ prototypes: struct file *, unsigned open_flag, umode_t create_mode, int *opened); int (*tmpfile) (struct inode *, struct dentry *, umode_t); int (*dentry_open)(struct dentry *, struct file *, const struct cred *); locking rules: all may block Loading Loading @@ -98,7 +97,6 @@ fiemap: no update_time: no atomic_open: yes tmpfile: no dentry_open: no Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on victim. Loading Documentation/filesystems/vfs.txt +8 −16 Original line number Diff line number Diff line Loading @@ -364,7 +364,6 @@ struct inode_operations { int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned open_flag, umode_t create_mode, int *opened); int (*tmpfile) (struct inode *, struct dentry *, umode_t); int (*dentry_open)(struct dentry *, struct file *, const struct cred *); }; Again, all methods are called without any locks being held, unless Loading Loading @@ -696,13 +695,6 @@ struct address_space_operations { but instead uses bmap to find out where the blocks in the file are and uses those addresses directly. dentry_open: *WARNING: probably going away soon, do not use!* This is an alternative to f_op->open(), the difference is that this method may open a file not necessarily originating from the same filesystem as the one i_op->open() was called on. It may be useful for stacking filesystems which want to allow native I/O directly on underlying files. invalidatepage: If a page has PagePrivate set, then invalidatepage will be called when part or all of the page is to be removed from the address space. This generally corresponds to either a Loading Loading @@ -1024,6 +1016,14 @@ struct dentry_operations { at the end of the buffer, and returns a pointer to the first char. dynamic_dname() helper function is provided to take care of this. Example : static char *pipefs_dname(struct dentry *dent, char *buffer, int buflen) { return dynamic_dname(dentry, buffer, buflen, "pipe:[%lu]", dentry->d_inode->i_ino); } d_automount: called when an automount dentry is to be traversed (optional). This should create a new VFS mount record and return the record to the caller. The caller is supplied with a path parameter giving the Loading Loading @@ -1080,14 +1080,6 @@ struct dentry_operations { This method is never called with both non-NULL inode and non-zero flags. Example : static char *pipefs_dname(struct dentry *dent, char *buffer, int buflen) { return dynamic_dname(dentry, buffer, buflen, "pipe:[%lu]", dentry->d_inode->i_ino); } Each dentry has a pointer to its parent dentry, as well as a hash list of child dentries. Child dentries are basically like files in a directory. Loading Loading
Documentation/filesystems/Locking +0 −2 Original line number Diff line number Diff line Loading @@ -69,7 +69,6 @@ prototypes: struct file *, unsigned open_flag, umode_t create_mode, int *opened); int (*tmpfile) (struct inode *, struct dentry *, umode_t); int (*dentry_open)(struct dentry *, struct file *, const struct cred *); locking rules: all may block Loading Loading @@ -98,7 +97,6 @@ fiemap: no update_time: no atomic_open: yes tmpfile: no dentry_open: no Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on victim. Loading
Documentation/filesystems/vfs.txt +8 −16 Original line number Diff line number Diff line Loading @@ -364,7 +364,6 @@ struct inode_operations { int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned open_flag, umode_t create_mode, int *opened); int (*tmpfile) (struct inode *, struct dentry *, umode_t); int (*dentry_open)(struct dentry *, struct file *, const struct cred *); }; Again, all methods are called without any locks being held, unless Loading Loading @@ -696,13 +695,6 @@ struct address_space_operations { but instead uses bmap to find out where the blocks in the file are and uses those addresses directly. dentry_open: *WARNING: probably going away soon, do not use!* This is an alternative to f_op->open(), the difference is that this method may open a file not necessarily originating from the same filesystem as the one i_op->open() was called on. It may be useful for stacking filesystems which want to allow native I/O directly on underlying files. invalidatepage: If a page has PagePrivate set, then invalidatepage will be called when part or all of the page is to be removed from the address space. This generally corresponds to either a Loading Loading @@ -1024,6 +1016,14 @@ struct dentry_operations { at the end of the buffer, and returns a pointer to the first char. dynamic_dname() helper function is provided to take care of this. Example : static char *pipefs_dname(struct dentry *dent, char *buffer, int buflen) { return dynamic_dname(dentry, buffer, buflen, "pipe:[%lu]", dentry->d_inode->i_ino); } d_automount: called when an automount dentry is to be traversed (optional). This should create a new VFS mount record and return the record to the caller. The caller is supplied with a path parameter giving the Loading Loading @@ -1080,14 +1080,6 @@ struct dentry_operations { This method is never called with both non-NULL inode and non-zero flags. Example : static char *pipefs_dname(struct dentry *dent, char *buffer, int buflen) { return dynamic_dname(dentry, buffer, buflen, "pipe:[%lu]", dentry->d_inode->i_ino); } Each dentry has a pointer to its parent dentry, as well as a hash list of child dentries. Child dentries are basically like files in a directory. Loading