]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - Documentation/filesystems/Locking
Merge remote-tracking branch 'regulator/fix/twl' into tmp
[karo-tx-linux.git] / Documentation / filesystems / Locking
index 0f103e39b4f6a025cb486cbdfb21126c78992738..0706d32a61e6fc0fafbbe9a975d095d5e37e95f7 100644 (file)
@@ -10,6 +10,7 @@ be able to use diff(1).
 --------------------------- dentry_operations --------------------------
 prototypes:
        int (*d_revalidate)(struct dentry *, unsigned int);
+       int (*d_weak_revalidate)(struct dentry *, unsigned int);
        int (*d_hash)(const struct dentry *, const struct inode *,
                        struct qstr *);
        int (*d_compare)(const struct dentry *, const struct inode *,
@@ -25,6 +26,7 @@ prototypes:
 locking rules:
                rename_lock     ->d_lock        may block       rcu-walk
 d_revalidate:  no              no              yes (ref-walk)  maybe
+d_weak_revalidate:no           no              yes             no
 d_hash         no              no              no              maybe
 d_compare:     yes             no              no              maybe
 d_delete:      no              yes             no              no
@@ -80,7 +82,6 @@ rename:               yes (all)       (see below)
 readlink:      no
 follow_link:   no
 put_link:      no
-truncate:      yes             (see below)
 setattr:       yes
 permission:    no (may not block if called in rcu-walk mode)
 get_acl:       no
@@ -96,11 +97,6 @@ atomic_open: yes
        Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
 victim.
        cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
-       ->truncate() is never called directly - it's a callback, not a
-method. It's called by vmtruncate() - deprecated library function used by
-->setattr(). Locking information above applies to that call (i.e. is
-inherited from ->setattr() - vmtruncate() is used when ATTR_SIZE had been
-passed).
 
 See Documentation/filesystems/directory-locking for more detailed discussion
 of the locking scheme for directory operations.
@@ -114,7 +110,6 @@ prototypes:
        int (*drop_inode) (struct inode *);
        void (*evict_inode) (struct inode *);
        void (*put_super) (struct super_block *);
-       void (*write_super) (struct super_block *);
        int (*sync_fs)(struct super_block *sb, int wait);
        int (*freeze_fs) (struct super_block *);
        int (*unfreeze_fs) (struct super_block *);
@@ -136,7 +131,6 @@ write_inode:
 drop_inode:                            !!!inode->i_lock!!!
 evict_inode:
 put_super:             write
-write_super:           read
 sync_fs:               read
 freeze_fs:             write
 unfreeze_fs:           write