Skip to content

Commit 53ea7f6

Browse files
committed
Merge tag 'xfs-6.6-merge-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
Pull xfs updates from Chandan Babu: - Chandan Babu will be taking over as the XFS release manager. He has reviewed all the patches that are in this branch, though I'm signing the branch one last time since I'm still technically maintainer. :P - Create a maintainer entry profile for XFS in which we lay out the various roles that I have played for many years. Aside from release manager, the remaining roles are as yet unfilled. - Start merging online repair -- we now have in-memory pageable memory for staging btrees, a bunch of pending fixes, and we've started the process of refactoring the scrub support code to support more of repair. In particular, reaping of old blocks from damaged structures. - Scrub the realtime summary file. - Fix a bug where scrub's quota iteration only ever returned the root dquot. Oooops. - Fix some typos. [ Pull request from Chandan Babu, but signed tag and description from Darrick Wong, thus the first person singular above is Darrick, not Chandan ] * tag 'xfs-6.6-merge-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (37 commits) fs/xfs: Fix typos in comments xfs: fix dqiterate thinko xfs: don't check reflink iflag state when checking cow fork xfs: simplify returns in xchk_bmap xfs: rewrite xchk_inode_is_allocated to work properly xfs: hide xfs_inode_is_allocated in scrub common code xfs: fix agf_fllast when repairing an empty AGFL xfs: allow userspace to rebuild metadata structures xfs: clear pagf_agflreset when repairing the AGFL xfs: allow the user to cancel repairs before we start writing xfs: don't complain about unfixed metadata when repairs were injected xfs: implement online scrubbing of rtsummary info xfs: always rescan allegedly healthy per-ag metadata after repair xfs: move the realtime summary file scrubber to a separate source file xfs: wrap ilock/iunlock operations on sc->ip xfs: get our own reference to inodes that we want to scrub xfs: track usage statistics of online fsck xfs: improve xfarray quicksort pivot xfs: create scaffolding for creating debugfs entries xfs: cache pages used for xfarray quicksort convergence ...
2 parents 3866303 + c1950a1 commit 53ea7f6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+4109
-648
lines changed

Documentation/filesystems/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ Documentation for filesystem implementations.
122122
virtiofs
123123
vfat
124124
xfs-delayed-logging-design
125+
xfs-maintainer-entry-profile
125126
xfs-self-describing-metadata
126127
xfs-online-fsck-design
127128
zonefs
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
XFS Maintainer Entry Profile
2+
============================
3+
4+
Overview
5+
--------
6+
XFS is a well known high-performance filesystem in the Linux kernel.
7+
The aim of this project is to provide and maintain a robust and
8+
performant filesystem.
9+
10+
Patches are generally merged to the for-next branch of the appropriate
11+
git repository.
12+
After a testing period, the for-next branch is merged to the master
13+
branch.
14+
15+
Kernel code are merged to the xfs-linux tree[0].
16+
Userspace code are merged to the xfsprogs tree[1].
17+
Test cases are merged to the xfstests tree[2].
18+
Ondisk format documentation are merged to the xfs-documentation tree[3].
19+
20+
All patchsets involving XFS *must* be cc'd in their entirety to the mailing
21+
list linux-xfs@vger.kernel.org.
22+
23+
Roles
24+
-----
25+
There are eight key roles in the XFS project.
26+
A person can take on multiple roles, and a role can be filled by
27+
multiple people.
28+
Anyone taking on a role is advised to check in with themselves and
29+
others on a regular basis about burnout.
30+
31+
- **Outside Contributor**: Anyone who sends a patch but is not involved
32+
in the XFS project on a regular basis.
33+
These folks are usually people who work on other filesystems or
34+
elsewhere in the kernel community.
35+
36+
- **Developer**: Someone who is familiar with the XFS codebase enough to
37+
write new code, documentation, and tests.
38+
39+
Developers can often be found in the IRC channel mentioned by the ``C:``
40+
entry in the kernel MAINTAINERS file.
41+
42+
- **Senior Developer**: A developer who is very familiar with at least
43+
some part of the XFS codebase and/or other subsystems in the kernel.
44+
These people collectively decide the long term goals of the project
45+
and nudge the community in that direction.
46+
They should help prioritize development and review work for each release
47+
cycle.
48+
49+
Senior developers tend to be more active participants in the IRC channel.
50+
51+
- **Reviewer**: Someone (most likely also a developer) who reads code
52+
submissions to decide:
53+
54+
0. Is the idea behind the contribution sound?
55+
1. Does the idea fit the goals of the project?
56+
2. Is the contribution designed correctly?
57+
3. Is the contribution polished?
58+
4. Can the contribution be tested effectively?
59+
60+
Reviewers should identify themselves with an ``R:`` entry in the kernel
61+
and fstests MAINTAINERS files.
62+
63+
- **Testing Lead**: This person is responsible for setting the test
64+
coverage goals of the project, negotiating with developers to decide
65+
on new tests for new features, and making sure that developers and
66+
release managers execute on the testing.
67+
68+
The testing lead should identify themselves with an ``M:`` entry in
69+
the XFS section of the fstests MAINTAINERS file.
70+
71+
- **Bug Triager**: Someone who examines incoming bug reports in just
72+
enough detail to identify the person to whom the report should be
73+
forwarded.
74+
75+
The bug triagers should identify themselves with a ``B:`` entry in
76+
the kernel MAINTAINERS file.
77+
78+
- **Release Manager**: This person merges reviewed patchsets into an
79+
integration branch, tests the result locally, pushes the branch to a
80+
public git repository, and sends pull requests further upstream.
81+
The release manager is not expected to work on new feature patchsets.
82+
If a developer and a reviewer fail to reach a resolution on some point,
83+
the release manager must have the ability to intervene to try to drive a
84+
resolution.
85+
86+
The release manager should identify themselves with an ``M:`` entry in
87+
the kernel MAINTAINERS file.
88+
89+
- **Community Manager**: This person calls and moderates meetings of as many
90+
XFS participants as they can get when mailing list discussions prove
91+
insufficient for collective decisionmaking.
92+
They may also serve as liaison between managers of the organizations
93+
sponsoring work on any part of XFS.
94+
95+
- **LTS Maintainer**: Someone who backports and tests bug fixes from
96+
uptream to the LTS kernels.
97+
There tend to be six separate LTS trees at any given time.
98+
99+
The maintainer for a given LTS release should identify themselves with an
100+
``M:`` entry in the MAINTAINERS file for that LTS tree.
101+
Unmaintained LTS kernels should be marked with status ``S: Orphan`` in that
102+
same file.
103+
104+
Submission Checklist Addendum
105+
-----------------------------
106+
Please follow these additional rules when submitting to XFS:
107+
108+
- Patches affecting only the filesystem itself should be based against
109+
the latest -rc or the for-next branch.
110+
These patches will be merged back to the for-next branch.
111+
112+
- Authors of patches touching other subsystems need to coordinate with
113+
the maintainers of XFS and the relevant subsystems to decide how to
114+
proceed with a merge.
115+
116+
- Any patchset changing XFS should be cc'd in its entirety to linux-xfs.
117+
Do not send partial patchsets; that makes analysis of the broader
118+
context of the changes unnecessarily difficult.
119+
120+
- Anyone making kernel changes that have corresponding changes to the
121+
userspace utilities should send the userspace changes as separate
122+
patchsets immediately after the kernel patchsets.
123+
124+
- Authors of bug fix patches are expected to use fstests[2] to perform
125+
an A/B test of the patch to determine that there are no regressions.
126+
When possible, a new regression test case should be written for
127+
fstests.
128+
129+
- Authors of new feature patchsets must ensure that fstests will have
130+
appropriate functional and input corner-case test cases for the new
131+
feature.
132+
133+
- When implementing a new feature, it is strongly suggested that the
134+
developers write a design document to answer the following questions:
135+
136+
* **What** problem is this trying to solve?
137+
138+
* **Who** will benefit from this solution, and **where** will they
139+
access it?
140+
141+
* **How** will this new feature work? This should touch on major data
142+
structures and algorithms supporting the solution at a higher level
143+
than code comments.
144+
145+
* **What** userspace interfaces are necessary to build off of the new
146+
features?
147+
148+
* **How** will this work be tested to ensure that it solves the
149+
problems laid out in the design document without causing new
150+
problems?
151+
152+
The design document should be committed in the kernel documentation
153+
directory.
154+
It may be omitted if the feature is already well known to the
155+
community.
156+
157+
- Patchsets for the new tests should be submitted as separate patchsets
158+
immediately after the kernel and userspace code patchsets.
159+
160+
- Changes to the on-disk format of XFS must be described in the ondisk
161+
format document[3] and submitted as a patchset after the fstests
162+
patchsets.
163+
164+
- Patchsets implementing bug fixes and further code cleanups should put
165+
the bug fixes at the beginning of the series to ease backporting.
166+
167+
Key Release Cycle Dates
168+
-----------------------
169+
Bug fixes may be sent at any time, though the release manager may decide to
170+
defer a patch when the next merge window is close.
171+
172+
Code submissions targeting the next merge window should be sent between
173+
-rc1 and -rc6.
174+
This gives the community time to review the changes, to suggest other changes,
175+
and for the author to retest those changes.
176+
177+
Code submissions also requiring changes to fs/iomap and targeting the
178+
next merge window should be sent between -rc1 and -rc4.
179+
This allows the broader kernel community adequate time to test the
180+
infrastructure changes.
181+
182+
Review Cadence
183+
--------------
184+
In general, please wait at least one week before pinging for feedback.
185+
To find reviewers, either consult the MAINTAINERS file, or ask
186+
developers that have Reviewed-by tags for XFS changes to take a look and
187+
offer their opinion.
188+
189+
References
190+
----------
191+
| [0] https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git/
192+
| [1] https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/
193+
| [2] https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git/
194+
| [3] https://git.kernel.org/pub/scm/fs/xfs/xfs-documentation.git/

Documentation/maintainer/maintainer-entry-profile.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,4 @@ to do something different in the near future.
105105
../driver-api/media/maintainer-entry-profile
106106
../driver-api/vfio-pci-device-specific-driver-acceptance
107107
../nvme/feature-and-quirk-policy
108+
../filesystems/xfs-maintainer-entry-profile

MAINTAINERS

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23428,12 +23428,14 @@ F: include/xen/arm/swiotlb-xen.h
2342823428
F: include/xen/swiotlb-xen.h
2342923429

2343023430
XFS FILESYSTEM
23431-
M: Darrick J. Wong <djwong@kernel.org>
23431+
M: Chandan Babu R <chandan.babu@oracle.com>
23432+
R: Darrick J. Wong <djwong@kernel.org>
2343223433
L: linux-xfs@vger.kernel.org
2343323434
S: Supported
2343423435
W: http://xfs.org/
2343523436
C: irc://irc.oftc.net/xfs
2343623437
T: git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git
23438+
P: Documentation/filesystems/xfs-maintainer-entry-profile.rst
2343723439
F: Documentation/ABI/testing/sysfs-fs-xfs
2343823440
F: Documentation/admin-guide/xfs.rst
2343923441
F: Documentation/filesystems/xfs-delayed-logging-design.rst

fs/xfs/Kconfig

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ config XFS_ONLINE_SCRUB
128128
bool "XFS online metadata check support"
129129
default n
130130
depends on XFS_FS
131+
depends on TMPFS && SHMEM
131132
select XFS_DRAIN_INTENTS
132133
help
133134
If you say Y here you will be able to check metadata on a
@@ -142,6 +143,23 @@ config XFS_ONLINE_SCRUB
142143

143144
If unsure, say N.
144145

146+
config XFS_ONLINE_SCRUB_STATS
147+
bool "XFS online metadata check usage data collection"
148+
default y
149+
depends on XFS_ONLINE_SCRUB
150+
select FS_DEBUG
151+
help
152+
If you say Y here, the kernel will gather usage data about
153+
the online metadata check subsystem. This includes the number
154+
of invocations, the outcomes, and the results of repairs, if any.
155+
This may slow down scrub slightly due to the use of high precision
156+
timers and the need to merge per-invocation information into the
157+
filesystem counters.
158+
159+
Usage data are collected in /sys/kernel/debug/xfs/scrub.
160+
161+
If unsure, say N.
162+
145163
config XFS_ONLINE_REPAIR
146164
bool "XFS online metadata repair support"
147165
default n

fs/xfs/Makefile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,24 @@ xfs-y += $(addprefix scrub/, \
164164
rmap.o \
165165
scrub.o \
166166
symlink.o \
167+
xfarray.o \
168+
xfile.o \
169+
)
170+
171+
xfs-$(CONFIG_XFS_ONLINE_SCRUB_STATS) += scrub/stats.o
172+
173+
xfs-$(CONFIG_XFS_RT) += $(addprefix scrub/, \
174+
rtbitmap.o \
175+
rtsummary.o \
167176
)
168177

169-
xfs-$(CONFIG_XFS_RT) += scrub/rtbitmap.o
170178
xfs-$(CONFIG_XFS_QUOTA) += scrub/quota.o
171179

172180
# online repair
173181
ifeq ($(CONFIG_XFS_ONLINE_REPAIR),y)
174182
xfs-y += $(addprefix scrub/, \
175183
agheader_repair.o \
184+
reap.o \
176185
repair.o \
177186
)
178187
endif

fs/xfs/libxfs/xfs_fs.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -743,7 +743,11 @@ struct xfs_scrub_metadata {
743743
*/
744744
#define XFS_SCRUB_OFLAG_NO_REPAIR_NEEDED (1u << 7)
745745

746-
#define XFS_SCRUB_FLAGS_IN (XFS_SCRUB_IFLAG_REPAIR)
746+
/* i: Rebuild the data structure. */
747+
#define XFS_SCRUB_IFLAG_FORCE_REBUILD (1u << 8)
748+
749+
#define XFS_SCRUB_FLAGS_IN (XFS_SCRUB_IFLAG_REPAIR | \
750+
XFS_SCRUB_IFLAG_FORCE_REBUILD)
747751
#define XFS_SCRUB_FLAGS_OUT (XFS_SCRUB_OFLAG_CORRUPT | \
748752
XFS_SCRUB_OFLAG_PREEN | \
749753
XFS_SCRUB_OFLAG_XFAIL | \

0 commit comments

Comments
 (0)