|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14, v6.14-rc7, v6.14-rc6, v6.14-rc5, v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1, v6.13, v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4, v6.13-rc3, v6.13-rc2, v6.13-rc1 |
|
| #
5443041b |
| 30-Nov-2024 |
Hans Holmberg <[email protected]> |
xfs: export zone stats in /proc/*/mountstats
Add the per-zone life time hint and the used block distribution for fully written zones, grouping reclaimable zones in fixed-percentage buckets spanning
xfs: export zone stats in /proc/*/mountstats
Add the per-zone life time hint and the used block distribution for fully written zones, grouping reclaimable zones in fixed-percentage buckets spanning 0..9%, 10..19% and full zones as 100% used as well as a few statistics about the zone allocator and open and reclaimable zones in /proc/*/mountstats.
This gives good insight into data fragmentation and data placement success rate.
Signed-off-by: Hans Holmberg <[email protected]> Co-developed-by: Christoph Hellwig <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: "Darrick J. Wong" <[email protected]>
show more ...
|
| #
080d01c4 |
| 15-Feb-2025 |
Christoph Hellwig <[email protected]> |
xfs: implement zoned garbage collection
RT groups on a zoned file system need to be completely empty before their space can be reused. This means that partially empty groups need to be emptied enti
xfs: implement zoned garbage collection
RT groups on a zoned file system need to be completely empty before their space can be reused. This means that partially empty groups need to be emptied entirely to free up space if no entirely free groups are available.
Add a garbage collection thread that moves all data out of the least used zone when not enough free zones are available, and which resets all zones that have been emptied. To find empty zone a simple set of 10 buckets based on the amount of space used in the zone is used. To empty zones, the rmap is walked to find the owners and the data is read and then written to the new place.
To automatically defragment files the rmap records are sorted by inode and logical offset. This means defragmentation of parallel writes into a single zone happens automatically when performing garbage collection. Because holding the iolock over the entire GC cycle would inject very noticeable latency for other accesses to the inodes, the iolock is not taken while performing I/O. Instead the I/O completion handler checks that the mapping hasn't changed over the one recorded at the start of the GC cycle and doesn't update the mapping if it change.
Co-developed-by: Hans Holmberg <[email protected]> Signed-off-by: Hans Holmberg <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: "Darrick J. Wong" <[email protected]>
show more ...
|
| #
0bb21930 |
| 13-Feb-2025 |
Christoph Hellwig <[email protected]> |
xfs: add support for zoned space reservations
For zoned file systems garbage collection (GC) has to take the iolock and mmaplock after moving data to a new place to synchronize with readers. This m
xfs: add support for zoned space reservations
For zoned file systems garbage collection (GC) has to take the iolock and mmaplock after moving data to a new place to synchronize with readers. This means waiting for garbage collection with the iolock can deadlock.
To avoid this, the worst case required blocks have to be reserved before taking the iolock, which is done using a new RTAVAILABLE counter that tracks blocks that are free to write into and don't require garbage collection. The new helpers try to take these available blocks, and if there aren't enough available it wakes and waits for GC. This is done using a list of on-stack reservations to ensure fairness.
Co-developed-by: Hans Holmberg <[email protected]> Signed-off-by: Hans Holmberg <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: "Darrick J. Wong" <[email protected]>
show more ...
|
| #
4e4d5207 |
| 13-Feb-2025 |
Christoph Hellwig <[email protected]> |
xfs: add the zoned space allocator
For zoned RT devices space is always allocated at the write pointer, that is right after the last written block and only recorded on I/O completion.
Because the a
xfs: add the zoned space allocator
For zoned RT devices space is always allocated at the write pointer, that is right after the last written block and only recorded on I/O completion.
Because the actual allocation algorithm is very simple and just involves picking a good zone - preferably the one used for the last write to the inode. As the number of zones that can written at the same time is usually limited by the hardware, selecting a zone is done as late as possible from the iomap dio and buffered writeback bio submissions helpers just before submitting the bio.
Given that the writers already took a reservation before acquiring the iolock, space will always be readily available if an open zone slot is available. A new structure is used to track these open zones, and pointed to by the xfs_rtgroup. Because zoned file systems don't have a rsum cache the space for that pointer can be reused.
Allocations are only recorded at I/O completion time. The scheme used for that is very similar to the reflink COW end I/O path.
Co-developed-by: Hans Holmberg <[email protected]> Signed-off-by: Hans Holmberg <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: "Darrick J. Wong" <[email protected]>
show more ...
|
|
Revision tags: v6.12 |
|
| #
720c2d58 |
| 17-Nov-2024 |
Christoph Hellwig <[email protected]> |
xfs: parse and validate hardware zone information
Add support to validate and parse reported hardware zone state.
Co-developed-by: Hans Holmberg <[email protected]> Signed-off-by: Hans Holmberg
xfs: parse and validate hardware zone information
Add support to validate and parse reported hardware zone state.
Co-developed-by: Hans Holmberg <[email protected]> Signed-off-by: Hans Holmberg <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: "Darrick J. Wong" <[email protected]>
show more ...
|
| #
83ccffc4 |
| 21-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: online repair of the realtime refcount btree
Port the data device's refcount btree repair code to the realtime refcount btree.
Signed-off-by: "Darrick J. Wong" <[email protected]> Reviewed-by:
xfs: online repair of the realtime refcount btree
Port the data device's refcount btree repair code to the realtime refcount btree.
Signed-off-by: "Darrick J. Wong" <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
c2792967 |
| 21-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: scrub the realtime refcount btree
Add code to scrub realtime refcount btrees. Similar to the refcount btree checking code for the data device, we walk the rmap btree for each refcount record t
xfs: scrub the realtime refcount btree
Add code to scrub realtime refcount btrees. Similar to the refcount btree checking code for the data device, we walk the rmap btree for each refcount record to confirm that the reference counts are correct.
Signed-off-by: "Darrick J. Wong" <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
9abe03a0 |
| 21-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: introduce realtime refcount btree ondisk definitions
Add the ondisk structure definitions for realtime refcount btrees. The realtime refcount btree will be rooted from a hidden inode so it need
xfs: introduce realtime refcount btree ondisk definitions
Add the ondisk structure definitions for realtime refcount btrees. The realtime refcount btree will be rooted from a hidden inode so it needs to have a separate btree block magic and pointer format.
Next, add everything needed to read, write and manipulate refcount btree blocks. This prepares the way for connecting the btree operations implementation, though the changes to actually root the rtrefcount btree in an inode come later.
Signed-off-by: "Darrick J. Wong" <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
6a849bd8 |
| 21-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: online repair of the realtime rmap btree
Repair the realtime rmap btree while mounted. Similar to the regular rmap btree repair code, we walk the data fork mappings of every realtime file in t
xfs: online repair of the realtime rmap btree
Repair the realtime rmap btree while mounted. Similar to the regular rmap btree repair code, we walk the data fork mappings of every realtime file in the filesystem to collect reverse-mapping records in an xfarray. Then we sort the xfarray, and use the btree bulk loader to create a new rtrmap btree ondisk. Finally, we swap the btree roots, and reap the old blocks in the usual way.
Signed-off-by: "Darrick J. Wong" <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
9a6cc4f6 |
| 21-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: scrub the realtime rmapbt
Check the realtime reverse mapping btree against the rtbitmap, and modify the rtbitmap scrub to check against the rtrmapbt.
Signed-off-by: "Darrick J. Wong" <djwong@k
xfs: scrub the realtime rmapbt
Check the realtime reverse mapping btree against the rtbitmap, and modify the rtbitmap scrub to check against the rtrmapbt.
Signed-off-by: "Darrick J. Wong" <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
fc6856c6 |
| 21-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: introduce realtime rmap btree ondisk definitions
Add the ondisk structure definitions for realtime rmap btrees. The realtime rmap btree will be rooted from a hidden inode so it needs to have a
xfs: introduce realtime rmap btree ondisk definitions
Add the ondisk structure definitions for realtime rmap btrees. The realtime rmap btree will be rooted from a hidden inode so it needs to have a separate btree block magic and pointer format.
Next, add everything needed to read, write and manipulate rmap btree blocks. This prepares the way for connecting the btree operations implementation, though embedding the rtrmap btree root in the inode comes later in the series.
Signed-off-by: "Darrick J. Wong" <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
|
Revision tags: v6.12-rc7 |
|
| #
3f1bdf50 |
| 04-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: scrub the realtime group superblock
Enable scrubbing of realtime group superblocks.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
|
| #
87fe4c34 |
| 04-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: create incore realtime group structures
Create an incore object that will contain information about a realtime allocation group. This will eventually enable us to shard the realtime section in
xfs: create incore realtime group structures
Create an incore object that will contain information about a realtime allocation group. This will eventually enable us to shard the realtime section in a similar manner to how we shard the data section, but for now just a single object for the entire RT subvolume is created.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
b3c03efa |
| 04-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: check metadata directory file path connectivity
Create a new scrubber type that checks that well known metadata directory paths are connected to the metadata inode that the incore structures th
xfs: check metadata directory file path connectivity
Create a new scrubber type that checks that well known metadata directory paths are connected to the metadata inode that the incore structures think is in use. For example, check that "/quota/user" in the metadata directory tree actually points to mp->m_quotainfo->qi_uquotaip->i_ino.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
5d9b54a4 |
| 04-Nov-2024 |
Darrick J. Wong <[email protected]> |
xfs: read and write metadata inode directory tree
Plumb in the bits we need to load metadata inodes from a named entry in a metadir directory, create (or hardlink) inodes into a metadir directory, c
xfs: read and write metadata inode directory tree
Plumb in the bits we need to load metadata inodes from a named entry in a metadir directory, create (or hardlink) inodes into a metadir directory, create metadir directories, and flag inodes as being metadata files.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
e9c4d8bf |
| 04-Nov-2024 |
Christoph Hellwig <[email protected]> |
xfs: factor out a generic xfs_group structure
Split the lookup and refcount handling of struct xfs_perag into an embedded xfs_group structure that can be reused for the upcoming realtime groups.
It
xfs: factor out a generic xfs_group structure
Split the lookup and refcount handling of struct xfs_perag into an embedded xfs_group structure that can be reused for the upcoming realtime groups.
It will be extended with more features later.
Note that he xg_type field will only need a single bit even with realtime group support. For now it fills a hole, but it might be worth to fold it into another field if we can use this space better.
Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Darrick J. Wong <[email protected]> Signed-off-by: Darrick J. Wong <[email protected]>
show more ...
|
|
Revision tags: v6.12-rc6, v6.12-rc5, v6.12-rc4, v6.12-rc3, v6.12-rc2, v6.12-rc1, v6.11, v6.11-rc7, v6.11-rc6, v6.11-rc5, v6.11-rc4, v6.11-rc3, v6.11-rc2, v6.11-rc1, v6.10, v6.10-rc7 |
|
| #
b7c477be |
| 02-Jul-2024 |
Darrick J. Wong <[email protected]> |
xfs: hoist inode flag conversion functions to libxfs
Hoist the inode flag conversion functions into libxfs so that we can keep them in sync. Do this by creating a new xfs_inode_util.c file in libxf
xfs: hoist inode flag conversion functions to libxfs
Hoist the inode flag conversion functions into libxfs so that we can keep them in sync. Do this by creating a new xfs_inode_util.c file in libxfs.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
|
Revision tags: v6.10-rc6, v6.10-rc5, v6.10-rc4, v6.10-rc3, v6.10-rc2, v6.10-rc1, v6.9, v6.9-rc7, v6.9-rc6 |
|
| #
b1992c37 |
| 27-Apr-2024 |
Masahiro Yamada <[email protected]> |
kbuild: use $(src) instead of $(srctree)/$(src) for source directory
Kbuild conventionally uses $(obj)/ for generated files, and $(src)/ for checked-in source files. It is merely a convention withou
kbuild: use $(src) instead of $(srctree)/$(src) for source directory
Kbuild conventionally uses $(obj)/ for generated files, and $(src)/ for checked-in source files. It is merely a convention without any functional difference. In fact, $(obj) and $(src) are exactly the same, as defined in scripts/Makefile.build:
src := $(obj)
When the kernel is built in a separate output directory, $(src) does not accurately reflect the source directory location. While Kbuild resolves this discrepancy by specifying VPATH=$(srctree) to search for source files, it does not cover all cases. For example, when adding a header search path for local headers, -I$(srctree)/$(src) is typically passed to the compiler.
This introduces inconsistency between upstream and downstream Makefiles because $(src) is used instead of $(srctree)/$(src) for the latter.
To address this inconsistency, this commit changes the semantics of $(src) so that it always points to the directory in the source tree.
Going forward, the variables used in Makefiles will have the following meanings:
$(obj) - directory in the object tree $(src) - directory in the source tree (changed by this commit) $(objtree) - the top of the kernel object tree $(srctree) - the top of the kernel source tree
Consequently, $(srctree)/$(src) in upstream Makefiles need to be replaced with $(src).
Signed-off-by: Masahiro Yamada <[email protected]> Reviewed-by: Nicolas Schier <[email protected]>
show more ...
|
| #
3f31406a |
| 22-Apr-2024 |
Darrick J. Wong <[email protected]> |
xfs: fix corruptions in the directory tree
Repair corruptions in the directory tree itself. Cycles are broken by removing an incoming parent->child link. Multiply-owned directories are fixed by pr
xfs: fix corruptions in the directory tree
Repair corruptions in the directory tree itself. Cycles are broken by removing an incoming parent->child link. Multiply-owned directories are fixed by pruning the extra parent -> child links Disconnected subtrees are reconnected to the lost and found.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
928b721a |
| 22-Apr-2024 |
Darrick J. Wong <[email protected]> |
xfs: teach online scrub to find directory tree structure problems
Create a new scrubber that detects corruptions within the directory tree structure itself. It can detect directories with multiple
xfs: teach online scrub to find directory tree structure problems
Create a new scrubber that detects corruptions within the directory tree structure itself. It can detect directories with multiple parents; loops within the directory tree; and directory loops not accessible from the root.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
8ad34530 |
| 22-Apr-2024 |
Darrick J. Wong <[email protected]> |
xfs: deferred scrub of parent pointers
If the trylock-based dirent check fails, retain those parent pointers and check them at the end. This may involve dropping the locks on the file being scanned
xfs: deferred scrub of parent pointers
If the trylock-based dirent check fails, retain those parent pointers and check them at the end. This may involve dropping the locks on the file being scanned, so yay.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
af69d852 |
| 22-Apr-2024 |
Darrick J. Wong <[email protected]> |
xfs: move handle ioctl code to xfs_handle.c
Move the handle managemnet code (and the attrmulti code that uses it) to xfs_handle.c.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Ch
xfs: move handle ioctl code to xfs_handle.c
Move the handle managemnet code (and the attrmulti code that uses it) to xfs_handle.c.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
b7c62d90 |
| 22-Apr-2024 |
Allison Henderson <[email protected]> |
xfs: parent pointer attribute creation
Add parent pointer attribute during xfs_create, and subroutines to initialize attributes. Note that the xfs_attr_intent object contains a pointer to the calle
xfs: parent pointer attribute creation
Add parent pointer attribute during xfs_create, and subroutines to initialize attributes. Note that the xfs_attr_intent object contains a pointer to the caller's xfs_da_args object, so the latter must persist until transaction commit.
Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Allison Henderson <[email protected]> Reviewed-by: Darrick J. Wong <[email protected]> [djwong: shorten names, adjust to new format, set init_xattrs for parent pointers] Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
| #
a08d6729 |
| 22-Apr-2024 |
Allison Henderson <[email protected]> |
xfs: add parent pointer validator functions
The attr name of a parent pointer is a string, and the attr value of a parent pointer is (more or less) a file handle. So we need to modify attr_namechec
xfs: add parent pointer validator functions
The attr name of a parent pointer is a string, and the attr value of a parent pointer is (more or less) a file handle. So we need to modify attr_namecheck to verify the parent pointer name, and add a xfs_parent_valuecheck function to sanitize the handle. At the same time, we need to validate attr values during log recovery if the xattr is really a parent pointer.
Signed-off-by: Allison Henderson <[email protected]> Reviewed-by: Darrick J. Wong <[email protected]> [djwong: move functions to xfs_parent.c, adjust for new disk format] Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|
|
Revision tags: v6.9-rc5 |
|
| #
2651923d |
| 15-Apr-2024 |
Darrick J. Wong <[email protected]> |
xfs: online repair of symbolic links
If a symbolic link target looks bad, try to sift through the rubble to find as much of the target buffer that we can, and stage a new target (short or remote for
xfs: online repair of symbolic links
If a symbolic link target looks bad, try to sift through the rubble to find as much of the target buffer that we can, and stage a new target (short or remote format as needed) in a temporary file and use the atomic extent swapping mechanism to commit the results. In the worst case, we replace the target with an overly long filename that cannot possibly resolve.
Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
show more ...
|