X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=Documentation%2Ffilesystems%2Ffiles.txt;h=bb0142f6108458f6ccd27b90e965a6bdf820e501;hb=e352953ce00bb870124e9054dbbbda2262f9269c;hp=8c206f4e02508b1a01b61561afa8039a475d8830;hpb=abf914208a1e120446ea4f9bc26406bd3a4579e1;p=linux-2.6-omap-h63xx.git diff --git a/Documentation/filesystems/files.txt b/Documentation/filesystems/files.txt index 8c206f4e025..bb0142f6108 100644 --- a/Documentation/filesystems/files.txt +++ b/Documentation/filesystems/files.txt @@ -55,7 +55,7 @@ the fdtable structure - 2. Reading of the fdtable as described above must be protected by rcu_read_lock()/rcu_read_unlock(). -3. For any update to the the fd table, files->file_lock must +3. For any update to the fd table, files->file_lock must be held. 4. To look up the file structure given an fd, a reader @@ -76,13 +76,13 @@ the fdtable structure - 5. Handling of the file structures is special. Since the look-up of the fd (fget()/fget_light()) are lock-free, it is possible that look-up may race with the last put() operation on the - file structure. This is avoided using the rcuref APIs + file structure. This is avoided using atomic_inc_not_zero() on ->f_count : rcu_read_lock(); file = fcheck_files(files, fd); if (file) { - if (rcuref_inc_lf(&file->f_count)) + if (atomic_inc_not_zero(&file->f_count)) *fput_needed = 1; else /* Didn't get the reference, someone's freed */ @@ -92,7 +92,7 @@ the fdtable structure - .... return file; - rcuref_inc_lf() detects if refcounts is already zero or + atomic_inc_not_zero() detects if refcounts is already zero or goes to zero during increment. If it does, we fail fget()/fget_light().