diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-12-31 18:57:56 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-12-31 18:57:56 -0500 |
commit | b58602a4bac012b5f4fc12fe6b46ab237b610d5d (patch) | |
tree | 38929e210a723f67fe2b945f37264bf3aae3c2c4 /Documentation | |
parent | db200df0b3530f673d8e9f5bd535e9e10305842a (diff) | |
parent | 1f3403fa640f9f7b135dee79f2d39d01c8ad4a08 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (34 commits)
nfsd race fixes: jfs
nfsd race fixes: reiserfs
nfsd race fixes: ext4
nfsd race fixes: ext3
nfsd race fixes: ext2
nfsd/create race fixes, infrastructure
filesystem notification: create fs/notify to contain all fs notification
fs/block_dev.c: __read_mostly improvement and sb_is_blkdev_sb utilization
kill ->dir_notify()
filp_cachep can be static in fs/file_table.c
fix f_count description in Documentation/filesystems/files.txt
make INIT_FS use the __RW_LOCK_UNLOCKED initialization
take init_fs to saner place
kill vfs_permission
pass a struct path * to may_open
kill walk_init_root
remove incorrect comment in inode_permission
expand some comments (d_path / seq_path)
correct wrong function name of d_put in kernel document and source comment
fix switch_names() breakage in short-to-short case
...
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/filesystems/Locking | 2 | ||||
-rw-r--r-- | Documentation/filesystems/files.txt | 6 | ||||
-rw-r--r-- | Documentation/filesystems/vfs.txt | 5 |
3 files changed, 4 insertions, 9 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 23d2f4460deb..ccec55394380 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -394,7 +394,6 @@ prototypes: | |||
394 | unsigned long (*get_unmapped_area)(struct file *, unsigned long, | 394 | unsigned long (*get_unmapped_area)(struct file *, unsigned long, |
395 | unsigned long, unsigned long, unsigned long); | 395 | unsigned long, unsigned long, unsigned long); |
396 | int (*check_flags)(int); | 396 | int (*check_flags)(int); |
397 | int (*dir_notify)(struct file *, unsigned long); | ||
398 | }; | 397 | }; |
399 | 398 | ||
400 | locking rules: | 399 | locking rules: |
@@ -424,7 +423,6 @@ sendfile: no | |||
424 | sendpage: no | 423 | sendpage: no |
425 | get_unmapped_area: no | 424 | get_unmapped_area: no |
426 | check_flags: no | 425 | check_flags: no |
427 | dir_notify: no | ||
428 | 426 | ||
429 | ->llseek() locking has moved from llseek to the individual llseek | 427 | ->llseek() locking has moved from llseek to the individual llseek |
430 | implementations. If your fs is not using generic_file_llseek, you | 428 | implementations. If your fs is not using generic_file_llseek, you |
diff --git a/Documentation/filesystems/files.txt b/Documentation/filesystems/files.txt index bb0142f61084..ac2facc50d2a 100644 --- a/Documentation/filesystems/files.txt +++ b/Documentation/filesystems/files.txt | |||
@@ -76,13 +76,13 @@ the fdtable structure - | |||
76 | 5. Handling of the file structures is special. Since the look-up | 76 | 5. Handling of the file structures is special. Since the look-up |
77 | of the fd (fget()/fget_light()) are lock-free, it is possible | 77 | of the fd (fget()/fget_light()) are lock-free, it is possible |
78 | that look-up may race with the last put() operation on the | 78 | that look-up may race with the last put() operation on the |
79 | file structure. This is avoided using atomic_inc_not_zero() | 79 | file structure. This is avoided using atomic_long_inc_not_zero() |
80 | on ->f_count : | 80 | on ->f_count : |
81 | 81 | ||
82 | rcu_read_lock(); | 82 | rcu_read_lock(); |
83 | file = fcheck_files(files, fd); | 83 | file = fcheck_files(files, fd); |
84 | if (file) { | 84 | if (file) { |
85 | if (atomic_inc_not_zero(&file->f_count)) | 85 | if (atomic_long_inc_not_zero(&file->f_count)) |
86 | *fput_needed = 1; | 86 | *fput_needed = 1; |
87 | else | 87 | else |
88 | /* Didn't get the reference, someone's freed */ | 88 | /* Didn't get the reference, someone's freed */ |
@@ -92,7 +92,7 @@ the fdtable structure - | |||
92 | .... | 92 | .... |
93 | return file; | 93 | return file; |
94 | 94 | ||
95 | atomic_inc_not_zero() detects if refcounts is already zero or | 95 | atomic_long_inc_not_zero() detects if refcounts is already zero or |
96 | goes to zero during increment. If it does, we fail | 96 | goes to zero during increment. If it does, we fail |
97 | fget()/fget_light(). | 97 | fget()/fget_light(). |
98 | 98 | ||
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 5579bda58a6d..ef19afa186a9 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -733,7 +733,6 @@ struct file_operations { | |||
733 | ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); | 733 | ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); |
734 | unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); | 734 | unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); |
735 | int (*check_flags)(int); | 735 | int (*check_flags)(int); |
736 | int (*dir_notify)(struct file *filp, unsigned long arg); | ||
737 | int (*flock) (struct file *, int, struct file_lock *); | 736 | int (*flock) (struct file *, int, struct file_lock *); |
738 | ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int); | 737 | ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int); |
739 | ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); | 738 | ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); |
@@ -800,8 +799,6 @@ otherwise noted. | |||
800 | 799 | ||
801 | check_flags: called by the fcntl(2) system call for F_SETFL command | 800 | check_flags: called by the fcntl(2) system call for F_SETFL command |
802 | 801 | ||
803 | dir_notify: called by the fcntl(2) system call for F_NOTIFY command | ||
804 | |||
805 | flock: called by the flock(2) system call | 802 | flock: called by the flock(2) system call |
806 | 803 | ||
807 | splice_write: called by the VFS to splice data from a pipe to a file. This | 804 | splice_write: called by the VFS to splice data from a pipe to a file. This |
@@ -931,7 +928,7 @@ manipulate dentries: | |||
931 | d_lookup: look up a dentry given its parent and path name component | 928 | d_lookup: look up a dentry given its parent and path name component |
932 | It looks up the child of that given name from the dcache | 929 | It looks up the child of that given name from the dcache |
933 | hash table. If it is found, the reference count is incremented | 930 | hash table. If it is found, the reference count is incremented |
934 | and the dentry is returned. The caller must use d_put() | 931 | and the dentry is returned. The caller must use dput() |
935 | to free the dentry when it finishes using it. | 932 | to free the dentry when it finishes using it. |
936 | 933 | ||
937 | For further information on dentry locking, please refer to the document | 934 | For further information on dentry locking, please refer to the document |