docs: filesystems: convert nilfs2.txt to ReST

- Add a SPDX header;
- Add a document title;
- Adjust document title;
- Mark literal blocks as such;
- use :field: markup;
- Add table markups;
- Add it to filesystems/index.rst.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/f7989ca501585f5990fffd2d365cfca4fe9fdd6f.1581955849.git.mchehab+huawei@kernel.org
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
Mauro Carvalho Chehab 2020-02-17 17:12:12 +01:00 committed by Jonathan Corbet
parent 76f216855b
commit 2640c19dca
2 changed files with 27 additions and 16 deletions

View File

@ -70,9 +70,10 @@ Documentation for filesystem implementations.
hfs hfs
hfsplus hfsplus
hpfs hpfs
fuse
inotify inotify
isofs isofs
fuse nilfs2
overlayfs overlayfs
virtiofs virtiofs
vfat vfat

View File

@ -1,5 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
======
NILFS2 NILFS2
------ ======
NILFS2 is a log-structured file system (LFS) supporting continuous NILFS2 is a log-structured file system (LFS) supporting continuous
snapshotting. In addition to versioning capability of the entire file snapshotting. In addition to versioning capability of the entire file
@ -25,9 +28,9 @@ available from the following download page. At least "mkfs.nilfs2",
cleaner or garbage collector) are required. Details on the tools are cleaner or garbage collector) are required. Details on the tools are
described in the man pages included in the package. described in the man pages included in the package.
Project web page: https://nilfs.sourceforge.io/ :Project web page: https://nilfs.sourceforge.io/
Download page: https://nilfs.sourceforge.io/en/download.html :Download page: https://nilfs.sourceforge.io/en/download.html
List info: http://vger.kernel.org/vger-lists.html#linux-nilfs :List info: http://vger.kernel.org/vger-lists.html#linux-nilfs
Caveats Caveats
======= =======
@ -47,6 +50,7 @@ Mount options
NILFS2 supports the following mount options: NILFS2 supports the following mount options:
(*) == default (*) == default
======================= =======================================================
barrier(*) This enables/disables the use of write barriers. This barrier(*) This enables/disables the use of write barriers. This
nobarrier requires an IO stack which can support barriers, and nobarrier requires an IO stack which can support barriers, and
if nilfs gets an error on a barrier write, it will if nilfs gets an error on a barrier write, it will
@ -79,6 +83,7 @@ discard This enables/disables the use of discard/TRIM commands.
nodiscard(*) The discard/TRIM commands are sent to the underlying nodiscard(*) The discard/TRIM commands are sent to the underlying
block device when blocks are freed. This is useful block device when blocks are freed. This is useful
for SSD devices and sparse/thinly-provisioned LUNs. for SSD devices and sparse/thinly-provisioned LUNs.
======================= =======================================================
Ioctls Ioctls
====== ======
@ -87,9 +92,11 @@ There is some NILFS2 specific functionality which can be accessed by application
through the system call interfaces. The list of all NILFS2 specific ioctls are through the system call interfaces. The list of all NILFS2 specific ioctls are
shown in the table below. shown in the table below.
Table of NILFS2 specific ioctls Table of NILFS2 specific ioctls:
..............................................................................
============================== ===============================================
Ioctl Description Ioctl Description
============================== ===============================================
NILFS_IOCTL_CHANGE_CPMODE Change mode of given checkpoint between NILFS_IOCTL_CHANGE_CPMODE Change mode of given checkpoint between
checkpoint and snapshot state. This ioctl is checkpoint and snapshot state. This ioctl is
used in chcp and mkcp utilities. used in chcp and mkcp utilities.
@ -142,11 +149,12 @@ Table of NILFS2 specific ioctls
NILFS_IOCTL_SET_ALLOC_RANGE Define lower limit of segments in bytes and NILFS_IOCTL_SET_ALLOC_RANGE Define lower limit of segments in bytes and
upper limit of segments in bytes. This ioctl upper limit of segments in bytes. This ioctl
is used by nilfs_resize utility. is used by nilfs_resize utility.
============================== ===============================================
NILFS2 usage NILFS2 usage
============ ============
To use nilfs2 as a local file system, simply: To use nilfs2 as a local file system, simply::
# mkfs -t nilfs2 /dev/block_device # mkfs -t nilfs2 /dev/block_device
# mount -t nilfs2 /dev/block_device /dir # mount -t nilfs2 /dev/block_device /dir
@ -157,18 +165,20 @@ This will also invoke the cleaner through the mount helper program
Checkpoints and snapshots are managed by the following commands. Checkpoints and snapshots are managed by the following commands.
Their manpages are included in the nilfs-utils package above. Their manpages are included in the nilfs-utils package above.
==== ===========================================================
lscp list checkpoints or snapshots. lscp list checkpoints or snapshots.
mkcp make a checkpoint or a snapshot. mkcp make a checkpoint or a snapshot.
chcp change an existing checkpoint to a snapshot or vice versa. chcp change an existing checkpoint to a snapshot or vice versa.
rmcp invalidate specified checkpoint(s). rmcp invalidate specified checkpoint(s).
==== ===========================================================
To mount a snapshot, To mount a snapshot::
# mount -t nilfs2 -r -o cp=<cno> /dev/block_device /snap_dir # mount -t nilfs2 -r -o cp=<cno> /dev/block_device /snap_dir
where <cno> is the checkpoint number of the snapshot. where <cno> is the checkpoint number of the snapshot.
To unmount the NILFS2 mount point or snapshot, simply: To unmount the NILFS2 mount point or snapshot, simply::
# umount /dir # umount /dir
@ -181,7 +191,7 @@ Disk format
A nilfs2 volume is equally divided into a number of segments except A nilfs2 volume is equally divided into a number of segments except
for the super block (SB) and segment #0. A segment is the container for the super block (SB) and segment #0. A segment is the container
of logs. Each log is composed of summary information blocks, payload of logs. Each log is composed of summary information blocks, payload
blocks, and an optional super root block (SR): blocks, and an optional super root block (SR)::
______________________________________________________ ______________________________________________________
| |SB| | Segment | Segment | Segment | ... | Segment | | | |SB| | Segment | Segment | Segment | ... | Segment | |
@ -200,7 +210,7 @@ blocks, and an optional super root block (SR):
|_blocks__|_________________|__| |_blocks__|_________________|__|
The payload blocks are organized per file, and each file consists of The payload blocks are organized per file, and each file consists of
data blocks and B-tree node blocks: data blocks and B-tree node blocks::
|<--- File-A --->|<--- File-B --->| |<--- File-A --->|<--- File-B --->|
_______________________________________________________________ _______________________________________________________________
@ -213,7 +223,7 @@ files without data blocks or B-tree node blocks.
The organization of the blocks is recorded in the summary information The organization of the blocks is recorded in the summary information
blocks, which contains a header structure (nilfs_segment_summary), per blocks, which contains a header structure (nilfs_segment_summary), per
file structures (nilfs_finfo), and per block structures (nilfs_binfo): file structures (nilfs_finfo), and per block structures (nilfs_binfo)::
_________________________________________________________________________ _________________________________________________________________________
| Summary | finfo | binfo | ... | binfo | finfo | binfo | ... | binfo |... | Summary | finfo | binfo | ... | binfo | finfo | binfo | ... | binfo |...
@ -223,7 +233,7 @@ file structures (nilfs_finfo), and per block structures (nilfs_binfo):
The logs include regular files, directory files, symbolic link files The logs include regular files, directory files, symbolic link files
and several meta data files. The mata data files are the files used and several meta data files. The mata data files are the files used
to maintain file system meta data. The current version of NILFS2 uses to maintain file system meta data. The current version of NILFS2 uses
the following meta data files: the following meta data files::
1) Inode file (ifile) -- Stores on-disk inodes 1) Inode file (ifile) -- Stores on-disk inodes
2) Checkpoint file (cpfile) -- Stores checkpoints 2) Checkpoint file (cpfile) -- Stores checkpoints
@ -232,7 +242,7 @@ the following meta data files:
(DAT) block numbers. This file serves to (DAT) block numbers. This file serves to
make on-disk blocks relocatable. make on-disk blocks relocatable.
The following figure shows a typical organization of the logs: The following figure shows a typical organization of the logs::
_________________________________________________________________________ _________________________________________________________________________
| Summary | regular file | file | ... | ifile | cpfile | sufile | DAT |SR| | Summary | regular file | file | ... | ifile | cpfile | sufile | DAT |SR|
@ -250,7 +260,7 @@ three special inodes, inodes for the DAT, cpfile, and sufile. Inodes
of regular files, directories, symlinks and other special files, are of regular files, directories, symlinks and other special files, are
included in the ifile. The inode of ifile itself is included in the included in the ifile. The inode of ifile itself is included in the
corresponding checkpoint entry in the cpfile. Thus, the hierarchy corresponding checkpoint entry in the cpfile. Thus, the hierarchy
among NILFS2 files can be depicted as follows: among NILFS2 files can be depicted as follows::
Super block (SB) Super block (SB)
| |