xref: /OK3568_Linux_fs/kernel/Documentation/filesystems/incfs.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun=================================================
4*4882a593Smuzhiyunincfs: A stacked incremental filesystem for Linux
5*4882a593Smuzhiyun=================================================
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun/sys/fs interface
8*4882a593Smuzhiyun=================
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunPlease update Documentation/ABI/testing/sysfs-fs-incfs if you update this
11*4882a593Smuzhiyunsection.
12*4882a593Smuzhiyun
13*4882a593Smuzhiyunincfs creates the following files in /sys/fs.
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunFeatures
16*4882a593Smuzhiyun--------
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun/sys/fs/incremental-fs/features/corefs
19*4882a593Smuzhiyun  Reads 'supported'. Always present.
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun/sys/fs/incremental-fs/features/v2
22*4882a593Smuzhiyun  Reads 'supported'. Present if all v2 features of incfs are supported. These
23*4882a593Smuzhiyun  are:
24*4882a593Smuzhiyun    fs-verity support
25*4882a593Smuzhiyun    inotify support
26*4882a593Smuzhiyun    ioclts:
27*4882a593Smuzhiyun      INCFS_IOC_SET_READ_TIMEOUTS
28*4882a593Smuzhiyun      INCFS_IOC_GET_READ_TIMEOUTS
29*4882a593Smuzhiyun      INCFS_IOC_GET_BLOCK_COUNT
30*4882a593Smuzhiyun      INCFS_IOC_CREATE_MAPPED_FILE
31*4882a593Smuzhiyun    .incomplete folder
32*4882a593Smuzhiyun    .blocks_written pseudo file
33*4882a593Smuzhiyun    report_uid mount option
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun/sys/fs/incremental-fs/features/zstd
36*4882a593Smuzhiyun  Reads 'supported'. Present if zstd compression is supported for data blocks.
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunOptional per mount
39*4882a593Smuzhiyun------------------
40*4882a593Smuzhiyun
41*4882a593SmuzhiyunFor each incfs mount, the mount option sysfs_name=[name] creates a /sys/fs
42*4882a593Smuzhiyunnode called:
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun/sys/fs/incremental-fs/instances/[name]
45*4882a593Smuzhiyun
46*4882a593SmuzhiyunThis will contain the following files:
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun/sys/fs/incremental-fs/instances/[name]/reads_delayed_min
49*4882a593Smuzhiyun  Returns a count of the number of reads that were delayed as a result of the
50*4882a593Smuzhiyun  per UID read timeouts min time setting.
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun/sys/fs/incremental-fs/instances/[name]/reads_delayed_min_us
53*4882a593Smuzhiyun  Returns total delay time for all files since first mount as a result of the
54*4882a593Smuzhiyun  per UID read timeouts min time setting.
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun/sys/fs/incremental-fs/instances/[name]/reads_delayed_pending
57*4882a593Smuzhiyun  Returns a count of the number of reads that were delayed as a result of
58*4882a593Smuzhiyun  waiting for a pending read.
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun/sys/fs/incremental-fs/instances/[name]/reads_delayed_pending_us
61*4882a593Smuzhiyun  Returns total delay time for all files since first mount as a result of
62*4882a593Smuzhiyun  waiting for a pending read.
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun/sys/fs/incremental-fs/instances/[name]/reads_failed_hash_verification
65*4882a593Smuzhiyun  Returns number of reads that failed because of hash verification failures.
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun/sys/fs/incremental-fs/instances/[name]/reads_failed_other
68*4882a593Smuzhiyun  Returns number of reads that failed for reasons other than timing out or
69*4882a593Smuzhiyun  hash failures.
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun/sys/fs/incremental-fs/instances/[name]/reads_failed_timed_out
72*4882a593Smuzhiyun  Returns number of reads that timed out.
73*4882a593Smuzhiyun
74*4882a593SmuzhiyunFor reads_delayed_*** settings, note that a file can count for both
75*4882a593Smuzhiyunreads_delayed_min and reads_delayed_pending if incfs first waits for a pending
76*4882a593Smuzhiyunread then has to wait further for the min time. In that case, the time spent
77*4882a593Smuzhiyunwaiting is split between reads_delayed_pending_us, which is increased by the
78*4882a593Smuzhiyuntime spent waiting for the pending read, and reads_delayed_min_us, which is
79*4882a593Smuzhiyunincreased by the remainder of the time spent waiting.
80*4882a593Smuzhiyun
81*4882a593SmuzhiyunReads that timed out are not added to the reads_delayed_pending or the
82*4882a593Smuzhiyunreads_delayed_pending_us counters.
83