Commit e6d42cb1 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Jonathan Corbet

docs: filesystems: convert files.txt to ReST

- Add a SPDX header;
- Adjust document title;
- Some whitespace fixes and new line breaks;
- Mark literal blocks as such;
- Add it to filesystems/index.rst.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/e31b0f6a7ee466a233dc7f9c73f53f07ebb07f0b.1588021877.git.mchehab+huawei@kernel.orgSigned-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent e6f7df74
.. SPDX-License-Identifier: GPL-2.0
===================================
File management in the Linux kernel File management in the Linux kernel
----------------------------------- ===================================
This document describes how locking for files (struct file) This document describes how locking for files (struct file)
and file descriptor table (struct files) works. and file descriptor table (struct files) works.
...@@ -34,7 +37,7 @@ appear atomic. Here are the locking rules for ...@@ -34,7 +37,7 @@ appear atomic. Here are the locking rules for
the fdtable structure - the fdtable structure -
1. All references to the fdtable must be done through 1. All references to the fdtable must be done through
the files_fdtable() macro : the files_fdtable() macro::
struct fdtable *fdt; struct fdtable *fdt;
...@@ -61,7 +64,8 @@ the fdtable structure - ...@@ -61,7 +64,8 @@ the fdtable structure -
4. To look up the file structure given an fd, a reader 4. To look up the file structure given an fd, a reader
must use either fcheck() or fcheck_files() APIs. These must use either fcheck() or fcheck_files() APIs. These
take care of barrier requirements due to lock-free lookup. take care of barrier requirements due to lock-free lookup.
An example :
An example::
struct file *file; struct file *file;
...@@ -77,7 +81,7 @@ the fdtable structure - ...@@ -77,7 +81,7 @@ the fdtable structure -
of the fd (fget()/fget_light()) are lock-free, it is possible of the fd (fget()/fget_light()) are lock-free, it is possible
that look-up may race with the last put() operation on the that look-up may race with the last put() operation on the
file structure. This is avoided using atomic_long_inc_not_zero() file structure. This is avoided using atomic_long_inc_not_zero()
on ->f_count : on ->f_count::
rcu_read_lock(); rcu_read_lock();
file = fcheck_files(files, fd); file = fcheck_files(files, fd);
...@@ -106,7 +110,8 @@ the fdtable structure - ...@@ -106,7 +110,8 @@ the fdtable structure -
holding files->file_lock. If ->file_lock is dropped, then holding files->file_lock. If ->file_lock is dropped, then
another thread expand the files thereby creating a new another thread expand the files thereby creating a new
fdtable and making the earlier fdtable pointer stale. fdtable and making the earlier fdtable pointer stale.
For example :
For example::
spin_lock(&files->file_lock); spin_lock(&files->file_lock);
fd = locate_fd(files, file, start); fd = locate_fd(files, file, start);
......
...@@ -27,6 +27,7 @@ algorithms work. ...@@ -27,6 +27,7 @@ algorithms work.
devpts devpts
dnotify dnotify
fiemap fiemap
files
automount-support automount-support
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment