* [PATCHBOMB 6.13 v5.5] xfs-docs: metadata directories and realtime groups
@ 2024-11-06 19:16 Darrick J. Wong
2024-11-06 19:17 ` [PATCHSET v31.5 1/3] xfs-documentation: last few updates for online fsck Darrick J. Wong
` (2 more replies)
0 siblings, 3 replies; 21+ messages in thread
From: Darrick J. Wong @ 2024-11-06 19:16 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: linux-xfs
Hi everyone,
Now that I've sent off the metadir PR, here are the relevant changes to
the ondisk format documentation for the last few bits of online fsck and
the metadata directory tree / realtime allocation groups feature.
vNobody likes asciidoc, so if you want an easy to read version, try
either:
http://djwong.org/docs/xfs_filesystem_structure.pdf
http://djwong.org/docs/xfs_filesystem_structure.html
Please have a look at the git tree links for code changes:
https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-documentation.git/log/?h=realtime-groups_2024-11-06
--D
^ permalink raw reply [flat|nested] 21+ messages in thread* [PATCHSET v31.5 1/3] xfs-documentation: last few updates for online fsck 2024-11-06 19:16 [PATCHBOMB 6.13 v5.5] xfs-docs: metadata directories and realtime groups Darrick J. Wong @ 2024-11-06 19:17 ` Darrick J. Wong 2024-11-06 19:18 ` [PATCH 1/2] design: update metadata reconstruction chapter Darrick J. Wong 2024-11-06 19:18 ` [PATCH 2/2] design: document filesystem properties Darrick J. Wong 2024-11-06 19:17 ` [PATCHSET v5.5 2/3] xfs-documentation: document metadata directories Darrick J. Wong 2024-11-06 19:17 ` [PATCHSET v5.5 3/3] xfs-documentation: shard the realtime section Darrick J. Wong 2 siblings, 2 replies; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:17 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch Hi all, Now that we've landed online fsck, let's update the chapter on metadata reconstruction is supposed to work, and document the new filesystem property that we use to control it. If you're going to start using this code, I strongly recommend pulling from my git trees, which are linked below. Comments and questions are, as always, welcome. xfsdocs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-documentation.git/log/?h=online-fsck --- Commits in this patchset: * design: update metadata reconstruction chapter * design: document filesystem properties --- .../fs_properties.asciidoc | 28 ++++++++++++++++++++ .../reconstruction.asciidoc | 17 ++++++------ .../xfs_filesystem_structure.asciidoc | 2 + 3 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 design/XFS_Filesystem_Structure/fs_properties.asciidoc ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/2] design: update metadata reconstruction chapter 2024-11-06 19:17 ` [PATCHSET v31.5 1/3] xfs-documentation: last few updates for online fsck Darrick J. Wong @ 2024-11-06 19:18 ` Darrick J. Wong 2024-11-07 7:28 ` Christoph Hellwig 2024-11-06 19:18 ` [PATCH 2/2] design: document filesystem properties Darrick J. Wong 1 sibling, 1 reply; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:18 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch From: Darrick J. Wong <djwong@kernel.org> We've landed online repair and full backrefs in the filesystem, so update the links to the new sections and transform future tense to present tense. Signed-off-by: Darrick J. Wong <djwong@kernel.org> --- .../reconstruction.asciidoc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/design/XFS_Filesystem_Structure/reconstruction.asciidoc b/design/XFS_Filesystem_Structure/reconstruction.asciidoc index f172e0f8161656..f4c10217910b6c 100644 --- a/design/XFS_Filesystem_Structure/reconstruction.asciidoc +++ b/design/XFS_Filesystem_Structure/reconstruction.asciidoc @@ -1,10 +1,6 @@ [[Reconstruction]] = Metadata Reconstruction -[NOTE] -This is a theoretical discussion of how reconstruction could work; none of this -is implemented as of 2015. - A simple UNIX filesystem can be thought of in terms of a directed acyclic graph. To a first approximation, there exists a root directory node, which points to other nodes. Those other nodes can themselves be directories or they can be @@ -45,9 +41,14 @@ The xref:Reverse_Mapping_Btree[reverse-mapping B+tree] fills in part of the puzzle. Since it contains copies of every entry in each inode’s data and attribute forks, we can fix a corrupted block map with these records. Furthermore, if the inode B+trees become corrupt, it is possible to visit all -inode chunks using the reverse-mapping data. Should XFS ever gain the ability -to store parent directory information in each inode, it also becomes possible +inode chunks using the reverse-mapping data. xref:Parent_Pointers[Directory +parent pointers] fill in the rest of the puzzle by mirroring the directory tree +structure with parent directory information in each inode. It is now possible to resurrect damaged directory trees, which should reduce the complaints about inodes ending up in +/lost+found+. Everything else in the per-AG primary -metadata can already be reconstructed via +xfs_repair+. Hopefully, -reconstruction will not turn out to be a fool's errand. +metadata can already be reconstructed via +xfs_repair+. + +See the +https://docs.kernel.org/filesystems/xfs/xfs-online-fsck-design.html[design +document] for online repair for a more thorough discussion of how this metadata +are put to use. ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 1/2] design: update metadata reconstruction chapter 2024-11-06 19:18 ` [PATCH 1/2] design: update metadata reconstruction chapter Darrick J. Wong @ 2024-11-07 7:28 ` Christoph Hellwig 0 siblings, 0 replies; 21+ messages in thread From: Christoph Hellwig @ 2024-11-07 7:28 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, hch Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 2/2] design: document filesystem properties 2024-11-06 19:17 ` [PATCHSET v31.5 1/3] xfs-documentation: last few updates for online fsck Darrick J. Wong 2024-11-06 19:18 ` [PATCH 1/2] design: update metadata reconstruction chapter Darrick J. Wong @ 2024-11-06 19:18 ` Darrick J. Wong 2024-11-07 7:28 ` Christoph Hellwig 1 sibling, 1 reply; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:18 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch From: Darrick J. Wong <djwong@kernel.org> Now that xfsprogs utilities can set properties to coordinate the behavior of other xfsprogs utilities, record them in the ondisk format documentation. Signed-off-by: Darrick J. Wong <djwong@kernel.org> --- .../fs_properties.asciidoc | 28 ++++++++++++++++++++ .../xfs_filesystem_structure.asciidoc | 2 + 2 files changed, 30 insertions(+) create mode 100644 design/XFS_Filesystem_Structure/fs_properties.asciidoc diff --git a/design/XFS_Filesystem_Structure/fs_properties.asciidoc b/design/XFS_Filesystem_Structure/fs_properties.asciidoc new file mode 100644 index 00000000000000..b639aec9ab6366 --- /dev/null +++ b/design/XFS_Filesystem_Structure/fs_properties.asciidoc @@ -0,0 +1,28 @@ +[[Filesystem_Properties]] += Filesystem Properties + +System administrators can set filesystem-wide properties to coordinate the +behavior of userspace XFS administration tools. These properties are recorded +as extended attributes of the +ATTR_ROOT+ namesace that are set on the root +directory. + +[options="header"] +|===== +| Property | Description +| +xfs:autofsck+ | Online fsck background scanning behavior +|===== + +*xfs:autofsck*:: +This property controls the behavior of background online fsck. +Unrecognized values are treated as if the property was not set. +Check the +xfs_scrub+ manual page for more information. + +.autofsck property values +[options="header"] +|===== +| Value | Description +| +none+ | Do not perform background scans. +| +check+ | Only check metadata. +| +optimize+ | Check and optimize metadata. +| +repair+ | Check, repair, or optimize metadata. +|===== diff --git a/design/XFS_Filesystem_Structure/xfs_filesystem_structure.asciidoc b/design/XFS_Filesystem_Structure/xfs_filesystem_structure.asciidoc index a95a5806172a0c..689e2a874c13e9 100644 --- a/design/XFS_Filesystem_Structure/xfs_filesystem_structure.asciidoc +++ b/design/XFS_Filesystem_Structure/xfs_filesystem_structure.asciidoc @@ -84,6 +84,8 @@ include::journaling_log.asciidoc[] include::internal_inodes.asciidoc[] +include::fs_properties.asciidoc[] + :leveloffset: 0 Dynamically Allocated Structures ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] design: document filesystem properties 2024-11-06 19:18 ` [PATCH 2/2] design: document filesystem properties Darrick J. Wong @ 2024-11-07 7:28 ` Christoph Hellwig 0 siblings, 0 replies; 21+ messages in thread From: Christoph Hellwig @ 2024-11-07 7:28 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, hch Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCHSET v5.5 2/3] xfs-documentation: document metadata directories 2024-11-06 19:16 [PATCHBOMB 6.13 v5.5] xfs-docs: metadata directories and realtime groups Darrick J. Wong 2024-11-06 19:17 ` [PATCHSET v31.5 1/3] xfs-documentation: last few updates for online fsck Darrick J. Wong @ 2024-11-06 19:17 ` Darrick J. Wong 2024-11-06 19:18 ` [PATCH 1/1] design: document the changes required to handle " Darrick J. Wong 2024-11-06 19:17 ` [PATCHSET v5.5 3/3] xfs-documentation: shard the realtime section Darrick J. Wong 2 siblings, 1 reply; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:17 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch Hi all, This patch documents the metadata directory tree feature. If you're going to start using this code, I strongly recommend pulling from my git trees, which are linked below. Comments and questions are, as always, welcome. kernel git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=metadir xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=metadir fstests git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=metadir xfsdocs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-documentation.git/log/?h=metadir --- Commits in this patchset: * design: document the changes required to handle metadata directories --- .../allocation_groups.asciidoc | 14 +- .../internal_inodes.asciidoc | 113 ++++++++++++++++++++ .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 22 ++++ 3 files changed, 142 insertions(+), 7 deletions(-) ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/1] design: document the changes required to handle metadata directories 2024-11-06 19:17 ` [PATCHSET v5.5 2/3] xfs-documentation: document metadata directories Darrick J. Wong @ 2024-11-06 19:18 ` Darrick J. Wong 2024-11-07 7:29 ` Christoph Hellwig 0 siblings, 1 reply; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:18 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch From: Darrick J. Wong <djwong@kernel.org> Document the ondisk format changes for metadata directories. Signed-off-by: Darrick J. Wong <djwong@kernel.org> --- .../allocation_groups.asciidoc | 14 +- .../internal_inodes.asciidoc | 113 ++++++++++++++++++++ .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 22 ++++ 3 files changed, 142 insertions(+), 7 deletions(-) diff --git a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc index d7fd63ea20a646..ec59519dc2ffc1 100644 --- a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc +++ b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc @@ -105,7 +105,7 @@ struct xfs_sb xfs_ino_t sb_pquotino; xfs_lsn_t sb_lsn; uuid_t sb_meta_uuid; - xfs_ino_t sb_rrmapino; + xfs_ino_t sb_metadirino; }; ---- *sb_magicnum*:: @@ -472,6 +472,10 @@ information. Directory parent pointers. See the section about xref:Parent_Pointers[parent pointers] for more information. +| +XFS_SB_FEAT_INCOMPAT_METADIR+ | +Metadata directory tree. See the section about the xref:Metadata_Directories[ +metadata directory tree] for more information. + |===== *sb_features_log_incompat*:: @@ -505,11 +509,9 @@ If the +XFS_SB_FEAT_INCOMPAT_META_UUID+ feature is set, then the UUID field in all metadata blocks must match this UUID. If not, the block header UUID field must match +sb_uuid+. -*sb_rrmapino*:: -If the +XFS_SB_FEAT_RO_COMPAT_RMAPBT+ feature is set and a real-time -device is present (+sb_rblocks+ > 0), this field points to an inode -that contains the root to the -xref:Real_time_Reverse_Mapping_Btree[Real-Time Reverse Mapping B+tree]. +*sb_metadirino*:: +If the +XFS_SB_FEAT_RO_INCOMPAT_METADIR+ feature is set, this field points to +the inode of the root directory of the metadata directory tree. This field is zero otherwise. === xfs_db Superblock Example diff --git a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc index 84e4cb969ce392..eaa0a50aa848f3 100644 --- a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc +++ b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc @@ -5,6 +5,119 @@ XFS allocates several inodes when a filesystem is created. These are internal and not accessible from the standard directory structure. These inodes are only accessible from the superblock. +[[Metadata_Directories]] +== Metadata Directory Tree + +If the +XFS_SB_FEAT_INCOMPAT_METADIR+ feature is enabled, the +sb_metadirino+ +field in the superblock points to the root of a directory tree containing +metadata files. This directory tree is completely internal to the filesystem +and must not be exposed to user programs. + +When this feature is enabled, metadata files should be found by walking the +metadata directory tree. The superblock fields that formerly pointed to (some) +of those inodes have been deallocated and may be reused by future features. + +.Metadata Directory Paths +[options="header"] +|===== +| Metadata File | Location +|===== + +Metadata files are flagged by the +XFS_DIFLAG2_METADATA+ flag in the ++di_flags2+ field. Metadata files must have the following properties: + +* Must be either a directory or a regular file. +* chmod 0000 +* User and group IDs set to zero. +* The +XFS_DIFLAG_IMMUTABLE+, +XFS_DIFLAG_SYNC+, +XFS_DIFLAG_NOATIME+, +XFS_DIFLAG_NODUMP+, and +XFS_DIFLAG_NODEFRAG+ flags must all be set in +di_flags+. +* For a directory, the +XFS_DIFLAG_NOSYMLINKS+ flag must also be set. +* The +XFS_DIFLAG2_METADATA+ flag must be set in +di_flags2+. +* The +XFS_DIFLAG2_DAX+ flag must not be set. + +=== Metadata Directory Example + +This example shows a metadta directory from a freshly formatted root +filesystem: + +---- +xfs_db> sb 0 +xfs_db> p +magicnum = 0x58465342 +blocksize = 4096 +dblocks = 5192704 +rblocks = 0 +rextents = 0 +uuid = cbf2ceef-658e-46b0-8f96-785661c37976 +logstart = 4194311 +rootino = 128 +rbmino = 130 +rsumino = 131 +... +meta_uuid = 00000000-0000-0000-0000-000000000000 +metadirino = 129 +... +---- + +Notice how the listing includes the root of the metadata directory tree +(+metadirino+). + +---- +xfs_db> path -m / +xfs_db> ls +8 129 directory 0x0000002e 1 . (good) +10 129 directory 0x0000172e 2 .. (good) +12 33685632 directory 0x2d18ab4c 8 rtgroups (good) +---- + +Here we use the +path+ and +ls+ commands to display the root directory of +the metadata directory. We can navigate the directory the old way, too: + +---- +xfs_db> p +core.magic = 0x494e +core.mode = 040000 +core.version = 3 +core.format = 1 (local) +core.onlink = 0 +core.uid = 0 +core.gid = 0 +... +v3.flags2 = 0x8000000000000018 +v3.cowextsize = 0 +v3.crtime.sec = Wed Aug 7 10:22:36 2024 +v3.crtime.nsec = 273744000 +v3.inumber = 129 +v3.uuid = 7e55b909-8728-4d69-a1fa-891427314eea +v3.reflink = 0 +v3.cowextsz = 0 +v3.dax = 0 +v3.bigtime = 1 +v3.nrext64 = 1 +v3.metadata = 1 +u3.sfdir3.hdr.count = 1 +u3.sfdir3.hdr.i8count = 0 +u3.sfdir3.hdr.parent.i4 = 129 +u3.sfdir3.list[0].namelen = 8 +u3.sfdir3.list[0].offset = 0x60 +u3.sfdir3.list[0].name = "rtgroups" +u3.sfdir3.list[0].inumber.i4 = 33685632 +u3.sfdir3.list[0].filetype = 2 +---- + +The root of the metadata directory is a short format directory, and looks just +like any other directory. The only difference is that the metadata flag is +set, and the directory can only be viewed in the XFS debugger. + +---- +xfs_db> path -m /rtgroups/0.rmap +btdump +u3.rtrmapbt.recs[1] = [startblock,blockcount,owner,offset,extentflag,attrfork,bmbtblock] +1:[0,1,-3,0,0,0,0] +---- + +Observe that we can use the xfs_db +path+ command to navigate the metadata +directory tree to the user quota file and display its contents. + [[Quota_Inodes]] == Quota Inodes diff --git a/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc b/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc index 34c064871cb255..02ec0d12bb57e5 100644 --- a/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc +++ b/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc @@ -78,7 +78,10 @@ struct xfs_dinode_core { __uint16_t di_mode; __int8_t di_version; __int8_t di_format; - __uint16_t di_onlink; + union { + __uint16_t di_onlink; + __uint16_t di_metatype; + }; __uint32_t di_uid; __uint32_t di_gid; __uint32_t di_nlink; @@ -188,6 +191,17 @@ In v1 inodes, this specifies the number of links to the inode from directories. When the number exceeds 65535, the inode is converted to v2 and the link count is stored in +di_nlink+. +*di_metatype*:: +If the +XFS_SB_FEAT_INCOMPAT_METADIR+ feature is enabled, the +di_onlink+ field +is redefined to declare the intended contents of files in the metadata +directory tree. + +[source, c] +---- +enum xfs_metafile_type { +}; +---- + *di_uid*:: Specifies the owner's UID of the inode. @@ -383,6 +397,12 @@ will be copied to all newly created files and directories. Files with this flag set may have up to (2^48^ - 1) extents mapped to the data fork and up to (2^32^ - 1) extents mapped to the attribute fork. This flag requires the +XFS_SB_FEAT_INCOMPAT_NREXT64+ feature to be enabled. +| +XFS_DIFLAG2_METADATA+ | +This file contains filesystem metadata. This feature requires the ++XFS_SB_FEAT_INCOMPAT_METADIR+ feature to be enabled. See the section about +xref:Metadata_Directories[metadata directories] for more information on +metadata inode properties. Only directories and regular files can have this +flag set. |===== *di_cowextsize*:: ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 1/1] design: document the changes required to handle metadata directories 2024-11-06 19:18 ` [PATCH 1/1] design: document the changes required to handle " Darrick J. Wong @ 2024-11-07 7:29 ` Christoph Hellwig 2024-11-07 15:56 ` Darrick J. Wong 0 siblings, 1 reply; 21+ messages in thread From: Christoph Hellwig @ 2024-11-07 7:29 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, hch On Wed, Nov 06, 2024 at 11:18:38AM -0800, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > Document the ondisk format changes for metadata directories. > > Signed-off-by: Darrick J. Wong <djwong@kernel.org> > --- > .../allocation_groups.asciidoc | 14 +- > .../internal_inodes.asciidoc | 113 ++++++++++++++++++++ > .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 22 ++++ > 3 files changed, 142 insertions(+), 7 deletions(-) > > > diff --git a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > index d7fd63ea20a646..ec59519dc2ffc1 100644 > --- a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > +++ b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > @@ -105,7 +105,7 @@ struct xfs_sb > xfs_ino_t sb_pquotino; > xfs_lsn_t sb_lsn; > uuid_t sb_meta_uuid; > - xfs_ino_t sb_rrmapino; > + xfs_ino_t sb_metadirino; > }; Not new here, but I find it a bit odd that the super block is documented in allocation_groups.asciidoc. The change itself looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 1/1] design: document the changes required to handle metadata directories 2024-11-07 7:29 ` Christoph Hellwig @ 2024-11-07 15:56 ` Darrick J. Wong 0 siblings, 0 replies; 21+ messages in thread From: Darrick J. Wong @ 2024-11-07 15:56 UTC (permalink / raw) To: Christoph Hellwig; +Cc: linux-xfs On Thu, Nov 07, 2024 at 08:29:53AM +0100, Christoph Hellwig wrote: > On Wed, Nov 06, 2024 at 11:18:38AM -0800, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > Document the ondisk format changes for metadata directories. > > > > Signed-off-by: Darrick J. Wong <djwong@kernel.org> > > --- > > .../allocation_groups.asciidoc | 14 +- > > .../internal_inodes.asciidoc | 113 ++++++++++++++++++++ > > .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 22 ++++ > > 3 files changed, 142 insertions(+), 7 deletions(-) > > > > > > diff --git a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > > index d7fd63ea20a646..ec59519dc2ffc1 100644 > > --- a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > > +++ b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > > @@ -105,7 +105,7 @@ struct xfs_sb > > xfs_ino_t sb_pquotino; > > xfs_lsn_t sb_lsn; > > uuid_t sb_meta_uuid; > > - xfs_ino_t sb_rrmapino; > > + xfs_ino_t sb_metadirino; > > }; > > Not new here, but I find it a bit odd that the super block is documented > in allocation_groups.asciidoc. Me too. superblock.asciidoc? > The change itself looks good: > > Reviewed-by: Christoph Hellwig <hch@lst.de> Thanks! --D ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCHSET v5.5 3/3] xfs-documentation: shard the realtime section 2024-11-06 19:16 [PATCHBOMB 6.13 v5.5] xfs-docs: metadata directories and realtime groups Darrick J. Wong 2024-11-06 19:17 ` [PATCHSET v31.5 1/3] xfs-documentation: last few updates for online fsck Darrick J. Wong 2024-11-06 19:17 ` [PATCHSET v5.5 2/3] xfs-documentation: document metadata directories Darrick J. Wong @ 2024-11-06 19:17 ` Darrick J. Wong 2024-11-06 19:18 ` [PATCH 1/4] design: move discussion of realtime volumes to a separate section Darrick J. Wong ` (3 more replies) 2 siblings, 4 replies; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:17 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch Hi all, Document changes to the ondisk format for realtime groups. If you're going to start using this code, I strongly recommend pulling from my git trees, which are linked below. Comments and questions are, as always, welcome. kernel git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=realtime-groups xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=realtime-groups fstests git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=realtime-groups xfsdocs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-documentation.git/log/?h=realtime-groups --- Commits in this patchset: * design: move discussion of realtime volumes to a separate section * design: document realtime groups * design: document metadata directory tree quota changes * design: update metadump v2 format to reflect rt dumps --- .../allocation_groups.asciidoc | 54 ++- .../XFS_Filesystem_Structure/common_types.asciidoc | 4 .../internal_inodes.asciidoc | 41 -- design/XFS_Filesystem_Structure/magic.asciidoc | 3 design/XFS_Filesystem_Structure/metadump.asciidoc | 12 + .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 5 design/XFS_Filesystem_Structure/realtime.asciidoc | 394 ++++++++++++++++++++ .../xfs_filesystem_structure.asciidoc | 2 8 files changed, 459 insertions(+), 56 deletions(-) create mode 100644 design/XFS_Filesystem_Structure/realtime.asciidoc ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/4] design: move discussion of realtime volumes to a separate section 2024-11-06 19:17 ` [PATCHSET v5.5 3/3] xfs-documentation: shard the realtime section Darrick J. Wong @ 2024-11-06 19:18 ` Darrick J. Wong 2024-11-07 7:30 ` Christoph Hellwig 2024-11-06 19:19 ` [PATCH 2/4] design: document realtime groups Darrick J. Wong ` (2 subsequent siblings) 3 siblings, 1 reply; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:18 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch From: Darrick J. Wong <djwong@kernel.org> In preparation for documenting the realtime modernization project, move the discussions of the realtime-realted ondisk metadata to a separate file. Since realtime reverse mapping btrees haven't been added to the filesystem yet, stop including them in the final output. Signed-off-by: Darrick J. Wong <djwong@kernel.org> --- .../allocation_groups.asciidoc | 20 -------- .../internal_inodes.asciidoc | 36 +------------- design/XFS_Filesystem_Structure/realtime.asciidoc | 50 ++++++++++++++++++++ .../xfs_filesystem_structure.asciidoc | 2 + 4 files changed, 54 insertions(+), 54 deletions(-) create mode 100644 design/XFS_Filesystem_Structure/realtime.asciidoc diff --git a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc index ec59519dc2ffc1..5d560073d146ff 100644 --- a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc +++ b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc @@ -1322,23 +1322,3 @@ core.magic = 0x494e The chunk record also indicates that this chunk has 32 inodes, and that the missing inodes are also ``free''. - -[[Real-time_Devices]] -== Real-time Devices - -The performance of the standard XFS allocator varies depending on the internal -state of the various metadata indices enabled on the filesystem. For -applications which need to minimize the jitter of allocation latency, XFS -supports the notion of a ``real-time device''. This is a special device -separate from the regular filesystem where extent allocations are tracked with -a bitmap and free space is indexed with a two-dimensional array. If an inode -is flagged with +XFS_DIFLAG_REALTIME+, its data will live on the real time -device. The metadata for real time devices is discussed in the section about -xref:Real-time_Inodes[real time inodes]. - -By placing the real time device (and the journal) on separate high-performance -storage devices, it is possible to reduce most of the unpredictability in I/O -response times that come from metadata operations. - -None of the XFS per-AG B+trees are involved with real time files. It is not -possible for real time files to share data blocks. diff --git a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc index eaa0a50aa848f3..68c86d30ff8206 100644 --- a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc +++ b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc @@ -287,41 +287,9 @@ Log sequence number of the last DQ block write. *dd_crc*:: Checksum of the DQ block. - [[Real-time_Inodes]] == Real-time Inodes There are two inodes allocated to managing the real-time device's space, the -Bitmap Inode and the Summary Inode. - -[[Real-Time_Bitmap_Inode]] -=== Real-Time Bitmap Inode - -The real time bitmap inode, +sb_rbmino+, tracks the used/free space in the -real-time device using an old-style bitmap. One bit is allocated per real-time -extent. The size of an extent is specified by the superblock's +sb_rextsize+ -value. - -The number of blocks used by the bitmap inode is equal to the number of -real-time extents (+sb_rextents+) divided by the block size (+sb_blocksize+) -and bits per byte. This value is stored in +sb_rbmblocks+. The nblocks and -extent array for the inode should match this. Each real time block gets its -own bit in the bitmap. - -[[Real-Time_Summary_Inode]] -=== Real-Time Summary Inode - -The real time summary inode, +sb_rsumino+, tracks the used and free space -accounting information for the real-time device. This file indexes the -approximate location of each free extent on the real-time device first by -log2(extent size) and then by the real-time bitmap block number. The size of -the summary inode file is equal to +sb_rbmblocks+ × log2(realtime device size) -× sizeof(+xfs_suminfo_t+). The entry for a given log2(extent size) and -rtbitmap block number is 0 if there is no free extents of that size at that -rtbitmap location, and positive if there are any. - -This data structure is not particularly space efficient, however it is a very -fast way to provide the same data as the two free space B+trees for regular -files since the space is preallocated and metadata maintenance is minimal. - -include::rtrmapbt.asciidoc[] +xref:Real-Time_Bitmap_Inode[Bitmap Inode] and the +xref:Real-Time_Summary_Inode[Summary Inode]. diff --git a/design/XFS_Filesystem_Structure/realtime.asciidoc b/design/XFS_Filesystem_Structure/realtime.asciidoc new file mode 100644 index 00000000000000..11426e8fdb632d --- /dev/null +++ b/design/XFS_Filesystem_Structure/realtime.asciidoc @@ -0,0 +1,50 @@ +[[Real-time_Devices]] += Real-time Devices + +The performance of the standard XFS allocator varies depending on the internal +state of the various metadata indices enabled on the filesystem. For +applications which need to minimize the jitter of allocation latency, XFS +supports the notion of a ``real-time device''. This is a special device +separate from the regular filesystem where extent allocations are tracked with +a bitmap and free space is indexed with a two-dimensional array. If an inode +is flagged with +XFS_DIFLAG_REALTIME+, its data will live on the real time +device. + +By placing the real time device (and the journal) on separate high-performance +storage devices, it is possible to reduce most of the unpredictability in I/O +response times that come from metadata operations. + +None of the XFS per-AG B+trees are involved with real time files. It is not +possible for real time files to share data blocks. + +[[Real-Time_Bitmap_Inode]] +== Free Space Bitmap Inode + +The real time bitmap inode, +sb_rbmino+, tracks the used/free space in the +real-time device using an old-style bitmap. One bit is allocated per real-time +extent. The size of an extent is specified by the superblock's +sb_rextsize+ +value. + +The number of blocks used by the bitmap inode is equal to the number of +real-time extents (+sb_rextents+) divided by the block size (+sb_blocksize+) +and bits per byte. This value is stored in +sb_rbmblocks+. The nblocks and +extent array for the inode should match this. Each real time block gets its +own bit in the bitmap. + +[[Real-Time_Summary_Inode]] +== Free Space Summary Inode + +The real time summary inode, +sb_rsumino+, tracks the used and free space +accounting information for the real-time device. This file indexes the +approximate location of each free extent on the real-time device first by +log2(extent size) and then by the real-time bitmap block number. The size of +the summary inode file is equal to +sb_rbmblocks+ × log2(realtime device size) +× sizeof(+xfs_suminfo_t+). The entry for a given log2(extent size) and +rtbitmap block number is 0 if there is no free extents of that size at that +rtbitmap location, and positive if there are any. + +This data structure is not particularly space efficient, however it is a very +fast way to provide the same data as the two free space B+trees for regular +files since the space is preallocated and metadata maintenance is minimal. + +include::rtrmapbt.asciidoc[] diff --git a/design/XFS_Filesystem_Structure/xfs_filesystem_structure.asciidoc b/design/XFS_Filesystem_Structure/xfs_filesystem_structure.asciidoc index 689e2a874c13e9..a643d18add6094 100644 --- a/design/XFS_Filesystem_Structure/xfs_filesystem_structure.asciidoc +++ b/design/XFS_Filesystem_Structure/xfs_filesystem_structure.asciidoc @@ -84,6 +84,8 @@ include::journaling_log.asciidoc[] include::internal_inodes.asciidoc[] +include::realtime.asciidoc[] + include::fs_properties.asciidoc[] :leveloffset: 0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 1/4] design: move discussion of realtime volumes to a separate section 2024-11-06 19:18 ` [PATCH 1/4] design: move discussion of realtime volumes to a separate section Darrick J. Wong @ 2024-11-07 7:30 ` Christoph Hellwig 0 siblings, 0 replies; 21+ messages in thread From: Christoph Hellwig @ 2024-11-07 7:30 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, hch On Wed, Nov 06, 2024 at 11:18:54AM -0800, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > In preparation for documenting the realtime modernization project, move > the discussions of the realtime-realted ondisk metadata to a separate > file. Since realtime reverse mapping btrees haven't been added to the > filesystem yet, stop including them in the final output. Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 2/4] design: document realtime groups 2024-11-06 19:17 ` [PATCHSET v5.5 3/3] xfs-documentation: shard the realtime section Darrick J. Wong 2024-11-06 19:18 ` [PATCH 1/4] design: move discussion of realtime volumes to a separate section Darrick J. Wong @ 2024-11-06 19:19 ` Darrick J. Wong 2024-11-07 7:33 ` Christoph Hellwig 2024-11-06 19:19 ` [PATCH 3/4] design: document metadata directory tree quota changes Darrick J. Wong 2024-11-06 19:19 ` [PATCH 4/4] design: update metadump v2 format to reflect rt dumps Darrick J. Wong 3 siblings, 1 reply; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:19 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch From: Darrick J. Wong <djwong@kernel.org> Document the ondisk changes for realtime allocation groups. Signed-off-by: Darrick J. Wong <djwong@kernel.org> --- .../allocation_groups.asciidoc | 31 ++ .../XFS_Filesystem_Structure/common_types.asciidoc | 4 .../internal_inodes.asciidoc | 2 design/XFS_Filesystem_Structure/magic.asciidoc | 3 .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 2 design/XFS_Filesystem_Structure/realtime.asciidoc | 344 ++++++++++++++++++++ 6 files changed, 385 insertions(+), 1 deletion(-) diff --git a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc index 5d560073d146ff..9f92be49a7a095 100644 --- a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc +++ b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc @@ -106,6 +106,10 @@ struct xfs_sb xfs_lsn_t sb_lsn; uuid_t sb_meta_uuid; xfs_ino_t sb_metadirino; + xfs_rgnumber_t sb_rgcount; + xfs_rgblock_t sb_rgextents; + uint8_t sb_rgblklog; + uint8_t sb_pad[7]; }; ---- *sb_magicnum*:: @@ -413,6 +417,12 @@ to have a slightly higher level of redundancy over the shape of the inode btrees, and decreases the amount of time to compute the metadata B+tree preallocations at mount time. +| +XFS_SB_FEAT_RO_COMPAT_RTSB+ | +Realtime superblock. The first rt extent in rt group zero contains a superblock +header that can be used to identify the realtime device. See the section about +the xref:Realtime_Group_Superblocks[realtime group superblocks] for more +information. + |===== *sb_features_incompat*:: @@ -476,6 +486,10 @@ pointers] for more information. Metadata directory tree. See the section about the xref:Metadata_Directories[ metadata directory tree] for more information. +| +XFS_SB_FEAT_INCOMPAT_RTGROUPS+ | +Realtime allocation groups. See the section about the xref:Realtime_Groups[ +realtime groups] for more information. + |===== *sb_features_log_incompat*:: @@ -514,6 +528,23 @@ If the +XFS_SB_FEAT_RO_INCOMPAT_METADIR+ feature is set, this field points to the inode of the root directory of the metadata directory tree. This field is zero otherwise. +*sb_rgcount*:: +Count of realtime groups in the filesystem, if the ++XFS_SB_FEAT_INCOMPAT_RTGROUPS+ feature is enabled. + +*sb_rgextents*:: +Maximum number of realtime extents that can be contained within a realtime +group, if the +XFS_SB_FEAT_INCOMPAT_RTGROUPS+ feature is enabled. + +*sb_rgblklog*:: +If the +XFS_SB_FEAT_INCOMPAT_RTGROUPS+ feature is enabled, this is the log~2~ +value of +sb_rgextents+ * +sb_rextsize+ (rounded up). This value is used to +generate absolute block numbers defined in extent maps from the segmented ++xfs_rtblock_t+ values. + +*sb_pad[7]*:: +Zeroes, if the +XFS_SB_FEAT_INCOMPAT_RTGROUPS+ feature is enabled. + === xfs_db Superblock Example A filesystem is made on a single disk with the following command: diff --git a/design/XFS_Filesystem_Structure/common_types.asciidoc b/design/XFS_Filesystem_Structure/common_types.asciidoc index 51909be384e273..34cdfdaeccf848 100644 --- a/design/XFS_Filesystem_Structure/common_types.asciidoc +++ b/design/XFS_Filesystem_Structure/common_types.asciidoc @@ -43,7 +43,9 @@ Unsigned 64 bit raw filesystem block number. *xfs_rtblock_t*:: Unsigned 64 bit extent number in the xref:Real-time_Devices[real-time] -sub-volume. +sub-volume. If the +XFS_SB_FEAT_INCOMPAT_METADIR+ feature is enabled, these +values combine an xref:Realtime_Groups[rtgroup number] and block offset into +the realtime group. *xfs_fileoff_t*:: Unsigned 64 bit block offset into a file. diff --git a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc index 68c86d30ff8206..5f4d62201cbd67 100644 --- a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc +++ b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc @@ -21,6 +21,8 @@ of those inodes have been deallocated and may be reused by future features. [options="header"] |===== | Metadata File | Location +| xref:Real-Time_Bitmap_Inode[Realtime Bitmap] | /rtgroups/*.bitmap +| xref:Real-Time_Summary_Inode[Realtime Summary] | /rtgroups/*.summary |===== Metadata files are flagged by the +XFS_DIFLAG2_METADATA+ flag in the diff --git a/design/XFS_Filesystem_Structure/magic.asciidoc b/design/XFS_Filesystem_Structure/magic.asciidoc index 60952aeb876ff5..5da29b9ef9f3a8 100644 --- a/design/XFS_Filesystem_Structure/magic.asciidoc +++ b/design/XFS_Filesystem_Structure/magic.asciidoc @@ -45,9 +45,12 @@ relevant chapters. Magic numbers tend to have consistent locations: | +XFS_ATTR3_LEAF_MAGIC+ | 0x3bee | | xref:Leaf_Attributes[Leaf Attribute], v5 only | +XFS_ATTR3_RMT_MAGIC+ | 0x5841524d | XARM | xref:Remote_Values[Remote Attribute Value], v5 only | +XFS_RMAP_CRC_MAGIC+ | 0x524d4233 | RMB3 | xref:Reverse_Mapping_Btree[Reverse Mapping B+tree], v5 only +| +XFS_RTBITMAP_MAGIC+ | 0x424D505A | BMPZ | xref:Real-Time_Bitmap_Inode[Real-Time Bitmap], metadir only +| +XFS_RTSUMMARY_MAGIC+ | 0x53554D59 | SUMY | xref:Real-Time_Summary_Inode[Real-Time Summary], metadir only | +XFS_RTRMAP_CRC_MAGIC+ | 0x4d415052 | MAPR | xref:Real_time_Reverse_Mapping_Btree[Real-Time Reverse Mapping B+tree], v5 only | +XFS_REFC_CRC_MAGIC+ | 0x52334643 | R3FC | xref:Reference_Count_Btree[Reference Count B+tree], v5 only | +XFS_MD_MAGIC+ | 0x5846534d | XFSM | xref:Metadata_Dumps[Metadata Dumps] +| +XFS_RTSB_MAGIC+ | 0x46726F67 | Frog | xref:Realtime_Groups[Realtime Groups] |===== The magic numbers for log items are at offset zero in each log item, but items diff --git a/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc b/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc index 02ec0d12bb57e5..e28929907147b7 100644 --- a/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc +++ b/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc @@ -199,6 +199,8 @@ directory tree. [source, c] ---- enum xfs_metafile_type { + XFS_METAFILE_RTBITMAP, + XFS_METAFILE_RTSUMMARY, }; ---- diff --git a/design/XFS_Filesystem_Structure/realtime.asciidoc b/design/XFS_Filesystem_Structure/realtime.asciidoc index 11426e8fdb632d..3a72eb5175ad89 100644 --- a/design/XFS_Filesystem_Structure/realtime.asciidoc +++ b/design/XFS_Filesystem_Structure/realtime.asciidoc @@ -31,6 +31,146 @@ and bits per byte. This value is stored in +sb_rbmblocks+. The nblocks and extent array for the inode should match this. Each real time block gets its own bit in the bitmap. +If the +XFS_SB_FEAT_INCOMPAT_METADIR+ feature is enabled, each block of the +realtime bitmap file has a header of the following format: + +[source, c] +---- +struct xfs_rtbuf_blkinfo { + __be32 rt_magic; + __be32 rt_crc; + __be64 rt_owner; + __be64 rt_blkno; + __be64 rt_lsn; + uuid_t rt_uuid; +}; +---- + +*rt_magic*:: +Specifies the magic number for the rtbitmap block: ``BMPZ'' (0x424D505A). + +*rt_crc*:: +Checksum of the block. + +*rt_owner*:: +Specifies the inode number for the file that owns this block. + +*rt_blkno*:: +Disk address of this block. + +*rt_lsn*:: +Log sequence number of the last write to this block. + +*rt_uuid*:: +The UUID of this block, which must match either +sb_uuid+ or +sb_meta_uuid+ +depending on which features are set. + +After the block header, the bitmap data are encoded as be32 word values. + +=== xfs_db rtbitmap Example + +This example shows a real-time bitmap file from a freshly populated filesystem: + +---- +xfs_db> path -m /rtgroups/3.bitmap +xfs_db> p +core.magic = 0x494e +core.mode = 0100000 +core.version = 3 +core.format = 2 (extents) +core.metatype = 5 (rtbitmap) +core.uid = 0 +core.gid = 0 +core.nlinkv2 = 1 +core.projid_lo = 3 +core.projid_hi = 0 +core.nextents = 1 +core.atime.sec = Tue Oct 15 16:04:02 2024 +core.atime.nsec = 769675000 +core.mtime.sec = Tue Oct 15 16:04:02 2024 +core.mtime.nsec = 769675000 +core.ctime.sec = Tue Oct 15 16:04:02 2024 +core.ctime.nsec = 769681000 +core.size = 135168 +core.nblocks = 33 +core.extsize = 0 +core.naextents = 0 +core.forkoff = 24 +core.aformat = 1 (local) +core.dmevmask = 0 +core.dmstate = 0 +core.newrtbm = 0 +core.prealloc = 0 +core.realtime = 0 +core.immutable = 1 +core.append = 0 +core.sync = 1 +core.noatime = 1 +core.nodump = 1 +core.rtinherit = 0 +core.projinherit = 0 +core.nosymlinks = 0 +core.extsz = 0 +core.extszinherit = 0 +core.nodefrag = 1 +core.filestream = 0 +core.gen = 2653591217 +next_unlinked = null +v3.crc = 0x34a17119 (correct) +v3.change_count = 3 +v3.lsn = 0 +v3.flags2 = 0x38 +v3.cowextsize = 0 +v3.crtime.sec = Tue Oct 15 16:04:02 2024 +v3.crtime.nsec = 769675000 +v3.inumber = 33685633 +v3.uuid = a6575f59-1514-445e-883e-211b2c5a0f05 +v3.reflink = 0 +v3.cowextsz = 0 +v3.dax = 0 +v3.bigtime = 1 +v3.nrext64 = 1 +v3.metadata = 1 +u3.bmx[0] = [startoff,startblock,blockcount,extentflag] +0:[0,4210712,33,0] +a.sfattr.hdr.totsize = 27 +a.sfattr.hdr.count = 1 +a.sfattr.list[0].namelen = 8 +a.sfattr.list[0].valuelen = 12 +a.sfattr.list[0].root = 0 +a.sfattr.list[0].secure = 0 +a.sfattr.list[0].parent = 1 +a.sfattr.list[0].name = "0.bitmap" +a.sfattr.list[0].parent_dir.inumber = 33685632 +a.sfattr.list[0].parent_dir.gen = 142228546 +xfs_db> dblock 0 +xfs_db> p +magicnum = 0x424d505a +crc = 0xc8b10abf (correct) +owner = 33685633 +bno = 20902080 +lsn = 0x100007696 +uuid = a6575f59-1514-445e-883e-211b2c5a0f05 +rtwords[0-1011] = 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 8:0 9:0 10:0 11:0 12:0 13:0 +14:0 15:0 16:0 17:0 18:0 19:0 20:0 21:0xfffff800 22:0xffffffff 23:0xffffffff +24:0xffffffff 25:0xffffffff 26:0xffffffff 27:0xffffffff 28:0xffffffff +29:0xffffffff 30:0xffffffff 31:0xffffffff 32:0xffffffff +... +979:0xffffffff 980:0xffffffff 981:0xffffffff 982:0xffffffff 983:0xffffffff +984:0xffffffff 985:0xffffffff 986:0xffffffff 987:0xffffffff 988:0xffffffff +989:0xffffffff 990:0xffffffff 991:0xffffffff 992:0xffffffff 993:0xffffffff +994:0xffffffff 995:0xffffffff 996:0xffffffff 997:0xffffffff 998:0xffffffff +999:0xffffffff 1000:0xffffffff 1001:0xffffffff 1002:0xffffffff 1003:0xffffffff +1004:0xffffffff 1005:0xffffffff 1006:0xffffffff 1007:0xffffffff 1008:0xffffffff +1009:0xffffffff 1010:0xffffffff 1011:0xffffffff +---- + +From this example, we can clearly see that this is a bitmap file in the +metadata directory tree, and that it is the bitmap file for rtgroup 3. When we +access the first block in the bitmap file, we can clearly see the new block +header and that the first 179 extents are allocated. The bitmap words were +excerpted for brevity. + [[Real-Time_Summary_Inode]] == Free Space Summary Inode @@ -47,4 +187,208 @@ This data structure is not particularly space efficient, however it is a very fast way to provide the same data as the two free space B+trees for regular files since the space is preallocated and metadata maintenance is minimal. +If the +XFS_SB_FEAT_INCOMPAT_METADIR+ feature is enabled, each block of the +realtime summary file has the same header as rtbitmap file blocks. However, +the magic number will be ``SUMY'' (0x53554D59). After the block header, the +summary counts are encoded as be32 integers. + +=== xfs_db rtsummary Example + +This example shows a real-time summary file from a freshly populated filesystem: + +---- +xfs_db> path -m /rtgroups/3.summary +xfs_db> p +core.magic = 0x494e +core.mode = 0100000 +core.version = 3 +core.format = 2 (extents) +core.metatype = 6 (rtsummary) +core.uid = 0 +core.gid = 0 +core.nlinkv2 = 1 +core.projid_lo = 3 +core.projid_hi = 0 +core.nextents = 1 +core.atime.sec = Tue Oct 15 16:04:02 2024 +core.atime.nsec = 769694000 +core.mtime.sec = Tue Oct 15 16:04:02 2024 +core.mtime.nsec = 769694000 +core.ctime.sec = Tue Oct 15 16:04:02 2024 +core.ctime.nsec = 769699000 +core.size = 4096 +core.nblocks = 1 +core.extsize = 0 +core.naextents = 0 +core.forkoff = 24 +core.aformat = 1 (local) +core.dmevmask = 0 +core.dmstate = 0 +core.newrtbm = 0 +core.prealloc = 0 +core.realtime = 0 +core.immutable = 1 +core.append = 0 +core.sync = 1 +core.noatime = 1 +core.nodump = 1 +core.rtinherit = 0 +core.projinherit = 0 +core.nosymlinks = 0 +core.extsz = 0 +core.extszinherit = 0 +core.nodefrag = 1 +core.filestream = 0 +core.gen = 519466891 +next_unlinked = null +v3.crc = 0x54fc58d0 (correct) +v3.change_count = 3 +v3.lsn = 0 +v3.flags2 = 0x38 +v3.cowextsize = 0 +v3.crtime.sec = Tue Oct 15 16:04:02 2024 +v3.crtime.nsec = 769694000 +v3.inumber = 33685634 +v3.uuid = a6575f59-1514-445e-883e-211b2c5a0f05 +v3.reflink = 0 +v3.cowextsz = 0 +v3.dax = 0 +v3.bigtime = 1 +v3.nrext64 = 1 +v3.metadata = 1 +u3.bmx[0] = [startoff,startblock,blockcount,extentflag] +0:[0,4210703,1,0] +a.sfattr.hdr.totsize = 28 +a.sfattr.hdr.count = 1 +a.sfattr.list[0].namelen = 9 +a.sfattr.list[0].valuelen = 12 +a.sfattr.list[0].root = 0 +a.sfattr.list[0].secure = 0 +a.sfattr.list[0].parent = 1 +a.sfattr.list[0].name = "0.summary" +a.sfattr.list[0].parent_dir.inumber = 33685632 +a.sfattr.list[0].parent_dir.gen = 142228546 +xfs_db> dblock 0 +xfs_db> p +magicnum = 0x53554d59 +crc = 0x473340a8 (correct) +owner = 33685634 +bno = 20902008 +lsn = 0x100007696 +uuid = a6575f59-1514-445e-883e-211b2c5a0f05 +suminfo[0-1011] = 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 8:0 9:0 10:0 11:0 12:0 13:0 +14:0 15:0 16:0 17:0 18:0 19:0 20:0 21:0 22:0 23:0 24:0 25:0 26:0 27:0 28:0 29:0 +30:0 31:0 32:0 +... +618:0 619:0 620:0 621:0 622:0 623:0 624:0 625:0 626:0 627:1 628:0 629:0 630:0 +... +979:0 980:0 981:0 982:0 983:0 984:0 985:0 986:0 987:0 988:0 989:0 990:0 991:0 +992:0 993:0 994:0 995:0 996:0 997:0 998:0 999:0 1000:0 1001:0 1002:0 1003:0 +1004:0 1005:0 1006:0 1007:0 1008:0 1009:0 1010:0 1011:0 +---- + +From this example, we can clearly see that this is a summary file in the +metadata directory tree, and that it is the summary file for rtgroup 3. When +we access the first block in the summary file, we can clearly see the new block +header and the nonzero counter for the one large free extent in this group. +The summary counts were excerpted for brevity. + +[[Realtime_Groups]] +== Realtime Groups + +To reduce metadata contention for space allocation and remapping activities +being applied to realtime files, the realtime volume can be split into +allocation groups, just like the data volume. The free space information is +still contained in a single file that applies to the entire volume. + +Each realtime allocation group can contain up to (2^31^ - 1) filesystem blocks, +regardless of the underlying realtime extent size. + +Each realtime group has the following characteristics: + + * Group 0 has a super block describing overall filesystem info + * Free space bitmap + * Summary of free space + +The free space metadata are the same as described in the previous sections, +except that their scope covers only a single rtgroup. The other structures are +expanded upon in the following sections. + +[[Realtime_Group_Superblocks]] +=== Superblocks + +The first block of each realtime group contains a superblock. These fields +must match their counterparts in the filesystem superblock on the data device. + +[source, c] +---- +struct xfs_rtsb { + __be32 rsb_magicnum; + __le32 rsb_crc; + + __be32 rsb_pad; + unsigned char rsb_fname[XFSLABEL_MAX]; + + uuid_t rsb_uuid; + uuid_t rsb_meta_uuid; + + /* must be padded to 64 bit alignment */ +}; +---- + +*rsb_magicnum*:: +Identifies the filesystem. Its value is +XFS_RTSB_MAGIC+ ``Frog'' (0x46726F67). + +*rsb_crc*:: +Superblock checksum. + +*rsb_pad*:: +Must be zero. + +*rsb_fname[12]*:: +Name for the filesystem. This matches +sb_fname+ in the primary superblock. + +*rsb_uuid*:: +UUID (Universally Unique ID) for the filesystem. This matches +sb_uuid+ in the +primary superblock. + +*rsb_meta_uuid*:: +Metadata UUID for the filesystem. This matches +sb_meta_uuid+ in the primary +superblock. + +==== xfs_db rtgroup Superblock Example + +A filesystem is made on a multidisk filesystem with the following command: + +---- +# mkfs.xfs -r rtgroups=1,rgcount=4,rtdev=/dev/sdb /dev/sda -f +meta-data=/dev/sda isize=512 agcount=4, agsize=1298176 blks + = sectsz=512 attr=2, projid32bit=1 + = crc=1 finobt=1, sparse=1, rmapbt=1 + = reflink=1 bigtime=1 inobtcount=1 nrext64=1 + = metadir=1 +data = bsize=4096 blocks=5192704, imaxpct=25 + = sunit=0 swidth=0 blks +naming =version 2 bsize=4096 ascii-ci=0, ftype=1 +log =internal log bsize=4096 blocks=16384, version=2 + = sectsz=512 sunit=0 blks, lazy-count=1 +realtime =/dev/sdb extsz=4096 blocks=5192704, rtextents=5192704 + = rgcount=5 rgsize=1048576 extents +---- + +And in xfs_db, inspecting the realtime group superblock and then the regular +superblock: + +---- +# xfs_db -R /dev/sdb /dev/sda +xfs_db> rtsb +xfs_db> print +magicnum = 0x46726f67 +crc = 0x759a62d4 (correct) +pad = 0 +fname = "\000\000\000\000\000\000\000\000\000\000\000\000" +uuid = 7e55b909-8728-4d69-a1fa-891427314eea +meta_uuid = 7e55b909-8728-4d69-a1fa-891427314eea +---- + include::rtrmapbt.asciidoc[] ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 2/4] design: document realtime groups 2024-11-06 19:19 ` [PATCH 2/4] design: document realtime groups Darrick J. Wong @ 2024-11-07 7:33 ` Christoph Hellwig 2024-11-07 15:58 ` Darrick J. Wong 0 siblings, 1 reply; 21+ messages in thread From: Christoph Hellwig @ 2024-11-07 7:33 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, hch > --- a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > +++ b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > @@ -106,6 +106,10 @@ struct xfs_sb > xfs_lsn_t sb_lsn; > uuid_t sb_meta_uuid; > xfs_ino_t sb_metadirino; > + xfs_rgnumber_t sb_rgcount; > + xfs_rgblock_t sb_rgextents; > + uint8_t sb_rgblklog; > + uint8_t sb_pad[7]; And following on with my ranting about existing bits theme from the previous review: why are we documenting the in-memory xfs_sb here and not the on-disk xfs_dsb? > +| +XFS_SB_FEAT_RO_COMPAT_RTSB+ | > +Realtime superblock. The first rt extent in rt group zero contains a superblock > +header that can be used to identify the realtime device. See the section about > +the xref:Realtime_Group_Superblocks[realtime group superblocks] for more > +information. This is actually gone now. > +*sb_rgcount*:: > +Count of realtime groups in the filesystem, if the > ++XFS_SB_FEAT_INCOMPAT_RTGROUPS+ feature is enabled. ... will be zero if XFS_SB_FEAT_INCOMPAT_RTGROUPS is set, but no realtime subvolume exists ? ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 2/4] design: document realtime groups 2024-11-07 7:33 ` Christoph Hellwig @ 2024-11-07 15:58 ` Darrick J. Wong 0 siblings, 0 replies; 21+ messages in thread From: Darrick J. Wong @ 2024-11-07 15:58 UTC (permalink / raw) To: Christoph Hellwig; +Cc: linux-xfs On Thu, Nov 07, 2024 at 08:33:18AM +0100, Christoph Hellwig wrote: > > --- a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > > +++ b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc > > @@ -106,6 +106,10 @@ struct xfs_sb > > xfs_lsn_t sb_lsn; > > uuid_t sb_meta_uuid; > > xfs_ino_t sb_metadirino; > > + xfs_rgnumber_t sb_rgcount; > > + xfs_rgblock_t sb_rgextents; > > + uint8_t sb_rgblklog; > > + uint8_t sb_pad[7]; > > And following on with my ranting about existing bits theme from the > previous review: why are we documenting the in-memory xfs_sb here > and not the on-disk xfs_dsb? <nod> will clean that one up too. > > +| +XFS_SB_FEAT_RO_COMPAT_RTSB+ | > > +Realtime superblock. The first rt extent in rt group zero contains a superblock > > +header that can be used to identify the realtime device. See the section about > > +the xref:Realtime_Group_Superblocks[realtime group superblocks] for more > > +information. > > This is actually gone now. Oops, will remove that one. > > +*sb_rgcount*:: > > +Count of realtime groups in the filesystem, if the > > ++XFS_SB_FEAT_INCOMPAT_RTGROUPS+ feature is enabled. > > ... will be zero if XFS_SB_FEAT_INCOMPAT_RTGROUPS is set, but no > realtime subvolume exists > > ? Yeah, that's a good thing to note. I'll also s/RTGROUPS/METADIR/ since the rtgroups feature bit is also gone yet I seem to have missed this one. :( --D ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 3/4] design: document metadata directory tree quota changes 2024-11-06 19:17 ` [PATCHSET v5.5 3/3] xfs-documentation: shard the realtime section Darrick J. Wong 2024-11-06 19:18 ` [PATCH 1/4] design: move discussion of realtime volumes to a separate section Darrick J. Wong 2024-11-06 19:19 ` [PATCH 2/4] design: document realtime groups Darrick J. Wong @ 2024-11-06 19:19 ` Darrick J. Wong 2024-11-07 7:33 ` Christoph Hellwig 2024-11-06 19:19 ` [PATCH 4/4] design: update metadump v2 format to reflect rt dumps Darrick J. Wong 3 siblings, 1 reply; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:19 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch From: Darrick J. Wong <djwong@kernel.org> Document the changes to the ondisk quota metadata that came in with metadata directory trees. Signed-off-by: Darrick J. Wong <djwong@kernel.org> --- .../allocation_groups.asciidoc | 3 +++ .../internal_inodes.asciidoc | 3 +++ .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 3 +++ 3 files changed, 9 insertions(+) diff --git a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc index 9f92be49a7a095..86daf9cdd30a0c 100644 --- a/design/XFS_Filesystem_Structure/allocation_groups.asciidoc +++ b/design/XFS_Filesystem_Structure/allocation_groups.asciidoc @@ -293,6 +293,9 @@ Quota flags. It can be a combination of the following flags: | +XFS_PQUOTA_CHKD+ | Project quotas have been checked. |===== +If the +XFS_SB_FEAT_INCOMPAT_METADIR+ feature is enabled, the +sb_qflags+ field +will persist across mounts if no quota mount options are provided. + *sb_flags*:: Miscellaneous flags. diff --git a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc index 5f4d62201cbd67..40eb57233ce7c0 100644 --- a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc +++ b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc @@ -21,6 +21,9 @@ of those inodes have been deallocated and may be reused by future features. [options="header"] |===== | Metadata File | Location +| xref:Quota_Inodes[User Quota] | /quota/user +| xref:Quota_Inodes[Group Quota] | /quota/group +| xref:Quota_Inodes[Project Quota] | /quota/project | xref:Real-Time_Bitmap_Inode[Realtime Bitmap] | /rtgroups/*.bitmap | xref:Real-Time_Summary_Inode[Realtime Summary] | /rtgroups/*.summary |===== diff --git a/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc b/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc index e28929907147b7..6e52e5fd3d6c1e 100644 --- a/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc +++ b/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc @@ -199,6 +199,9 @@ directory tree. [source, c] ---- enum xfs_metafile_type { + XFS_METAFILE_USRQUOTA, + XFS_METAFILE_GRPQUOTA, + XFS_METAFILE_PRJQUOTA, XFS_METAFILE_RTBITMAP, XFS_METAFILE_RTSUMMARY, }; ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 3/4] design: document metadata directory tree quota changes 2024-11-06 19:19 ` [PATCH 3/4] design: document metadata directory tree quota changes Darrick J. Wong @ 2024-11-07 7:33 ` Christoph Hellwig 0 siblings, 0 replies; 21+ messages in thread From: Christoph Hellwig @ 2024-11-07 7:33 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, hch Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 4/4] design: update metadump v2 format to reflect rt dumps 2024-11-06 19:17 ` [PATCHSET v5.5 3/3] xfs-documentation: shard the realtime section Darrick J. Wong ` (2 preceding siblings ...) 2024-11-06 19:19 ` [PATCH 3/4] design: document metadata directory tree quota changes Darrick J. Wong @ 2024-11-06 19:19 ` Darrick J. Wong 2024-11-07 7:33 ` Christoph Hellwig 3 siblings, 1 reply; 21+ messages in thread From: Darrick J. Wong @ 2024-11-06 19:19 UTC (permalink / raw) To: djwong; +Cc: linux-xfs, hch From: Darrick J. Wong <djwong@kernel.org> Update the metadump v2 format documentation to add realtime device dumps. Signed-off-by: Darrick J. Wong <djwong@kernel.org> --- design/XFS_Filesystem_Structure/metadump.asciidoc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/design/XFS_Filesystem_Structure/metadump.asciidoc b/design/XFS_Filesystem_Structure/metadump.asciidoc index a32d6423ea6e75..226622c0d2f20e 100644 --- a/design/XFS_Filesystem_Structure/metadump.asciidoc +++ b/design/XFS_Filesystem_Structure/metadump.asciidoc @@ -119,7 +119,16 @@ Dump contains external log contents. |===== *xmh_incompat_flags*:: -Must be zero. +A combination of the following flags: + +.Metadump v2 incompat flags +[options="header"] +|===== +| Flag | Description +| +XFS_MD2_INCOMPAT_RTDEVICE+ | +Dump contains realtime device contents. + +|===== *xmh_reserved*:: Must be zero. @@ -143,6 +152,7 @@ Bits 55-56 determine the device from which the metadata dump data was extracted. | Value | Description | 0 | Data device | 1 | External log +| 2 | Realtime device |===== The lower 54 bits determine the device address from which the dump data was ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 4/4] design: update metadump v2 format to reflect rt dumps 2024-11-06 19:19 ` [PATCH 4/4] design: update metadump v2 format to reflect rt dumps Darrick J. Wong @ 2024-11-07 7:33 ` Christoph Hellwig 0 siblings, 0 replies; 21+ messages in thread From: Christoph Hellwig @ 2024-11-07 7:33 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, hch Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCHSET v5.6 2/2] xfs-documentation: shard the realtime section @ 2024-11-07 23:25 Darrick J. Wong 2024-11-07 23:26 ` [PATCH 3/4] design: document metadata directory tree quota changes Darrick J. Wong 0 siblings, 1 reply; 21+ messages in thread From: Darrick J. Wong @ 2024-11-07 23:25 UTC (permalink / raw) To: djwong; +Cc: hch, linux-xfs Hi all, Document changes to the ondisk format for realtime groups. If you're going to start using this code, I strongly recommend pulling from my git trees, which are linked below. Comments and questions are, as always, welcome. kernel git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=realtime-groups xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=realtime-groups fstests git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=realtime-groups xfsdocs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-documentation.git/log/?h=realtime-groups --- Commits in this patchset: * design: move discussion of realtime volumes to a separate section * design: document realtime groups * design: document metadata directory tree quota changes * design: update metadump v2 format to reflect rt dumps --- .../allocation_groups.asciidoc | 20 - .../XFS_Filesystem_Structure/common_types.asciidoc | 4 .../internal_inodes.asciidoc | 41 -- design/XFS_Filesystem_Structure/magic.asciidoc | 3 design/XFS_Filesystem_Structure/metadump.asciidoc | 12 + .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 5 design/XFS_Filesystem_Structure/realtime.asciidoc | 394 ++++++++++++++++++++ .../XFS_Filesystem_Structure/superblock.asciidoc | 25 + .../xfs_filesystem_structure.asciidoc | 2 9 files changed, 450 insertions(+), 56 deletions(-) create mode 100644 design/XFS_Filesystem_Structure/realtime.asciidoc ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 3/4] design: document metadata directory tree quota changes 2024-11-07 23:25 [PATCHSET v5.6 2/2] xfs-documentation: shard the realtime section Darrick J. Wong @ 2024-11-07 23:26 ` Darrick J. Wong 0 siblings, 0 replies; 21+ messages in thread From: Darrick J. Wong @ 2024-11-07 23:26 UTC (permalink / raw) To: djwong; +Cc: hch, linux-xfs From: Darrick J. Wong <djwong@kernel.org> Document the changes to the ondisk quota metadata that came in with metadata directory trees. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> --- .../internal_inodes.asciidoc | 3 +++ .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 3 +++ .../XFS_Filesystem_Structure/superblock.asciidoc | 3 +++ 3 files changed, 9 insertions(+) diff --git a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc index 5f4d62201cbd67..40eb57233ce7c0 100644 --- a/design/XFS_Filesystem_Structure/internal_inodes.asciidoc +++ b/design/XFS_Filesystem_Structure/internal_inodes.asciidoc @@ -21,6 +21,9 @@ of those inodes have been deallocated and may be reused by future features. [options="header"] |===== | Metadata File | Location +| xref:Quota_Inodes[User Quota] | /quota/user +| xref:Quota_Inodes[Group Quota] | /quota/group +| xref:Quota_Inodes[Project Quota] | /quota/project | xref:Real-Time_Bitmap_Inode[Realtime Bitmap] | /rtgroups/*.bitmap | xref:Real-Time_Summary_Inode[Realtime Summary] | /rtgroups/*.summary |===== diff --git a/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc b/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc index e28929907147b7..6e52e5fd3d6c1e 100644 --- a/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc +++ b/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc @@ -199,6 +199,9 @@ directory tree. [source, c] ---- enum xfs_metafile_type { + XFS_METAFILE_USRQUOTA, + XFS_METAFILE_GRPQUOTA, + XFS_METAFILE_PRJQUOTA, XFS_METAFILE_RTBITMAP, XFS_METAFILE_RTSUMMARY, }; diff --git a/design/XFS_Filesystem_Structure/superblock.asciidoc b/design/XFS_Filesystem_Structure/superblock.asciidoc index bffb1659d0ba38..f0455304635737 100644 --- a/design/XFS_Filesystem_Structure/superblock.asciidoc +++ b/design/XFS_Filesystem_Structure/superblock.asciidoc @@ -259,6 +259,9 @@ Quota flags. It can be a combination of the following flags: | +XFS_PQUOTA_CHKD+ | Project quotas have been checked. |===== +If the +XFS_SB_FEAT_INCOMPAT_METADIR+ feature is enabled, the +sb_qflags+ field +will persist across mounts if no quota mount options are provided. + *sb_flags*:: Miscellaneous flags. ^ permalink raw reply related [flat|nested] 21+ messages in thread
end of thread, other threads:[~2024-11-07 23:26 UTC | newest] Thread overview: 21+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-11-06 19:16 [PATCHBOMB 6.13 v5.5] xfs-docs: metadata directories and realtime groups Darrick J. Wong 2024-11-06 19:17 ` [PATCHSET v31.5 1/3] xfs-documentation: last few updates for online fsck Darrick J. Wong 2024-11-06 19:18 ` [PATCH 1/2] design: update metadata reconstruction chapter Darrick J. Wong 2024-11-07 7:28 ` Christoph Hellwig 2024-11-06 19:18 ` [PATCH 2/2] design: document filesystem properties Darrick J. Wong 2024-11-07 7:28 ` Christoph Hellwig 2024-11-06 19:17 ` [PATCHSET v5.5 2/3] xfs-documentation: document metadata directories Darrick J. Wong 2024-11-06 19:18 ` [PATCH 1/1] design: document the changes required to handle " Darrick J. Wong 2024-11-07 7:29 ` Christoph Hellwig 2024-11-07 15:56 ` Darrick J. Wong 2024-11-06 19:17 ` [PATCHSET v5.5 3/3] xfs-documentation: shard the realtime section Darrick J. Wong 2024-11-06 19:18 ` [PATCH 1/4] design: move discussion of realtime volumes to a separate section Darrick J. Wong 2024-11-07 7:30 ` Christoph Hellwig 2024-11-06 19:19 ` [PATCH 2/4] design: document realtime groups Darrick J. Wong 2024-11-07 7:33 ` Christoph Hellwig 2024-11-07 15:58 ` Darrick J. Wong 2024-11-06 19:19 ` [PATCH 3/4] design: document metadata directory tree quota changes Darrick J. Wong 2024-11-07 7:33 ` Christoph Hellwig 2024-11-06 19:19 ` [PATCH 4/4] design: update metadump v2 format to reflect rt dumps Darrick J. Wong 2024-11-07 7:33 ` Christoph Hellwig -- strict thread matches above, loose matches on Subject: below -- 2024-11-07 23:25 [PATCHSET v5.6 2/2] xfs-documentation: shard the realtime section Darrick J. Wong 2024-11-07 23:26 ` [PATCH 3/4] design: document metadata directory tree quota changes Darrick J. Wong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox