xfs: pretty print metadata file types in error messages

Create a helper function to turn a metadata file type code into a
printable string, and use this to complain about lockdep problems with
rtgroup inodes.  We'll use this more in the next patch.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Darrick J. Wong 2024-11-20 16:20:26 -08:00
parent 5e0679d1c6
commit 219ee99d36
3 changed files with 22 additions and 1 deletions

View File

@ -22,6 +22,24 @@
#include "xfs_error.h"
#include "xfs_alloc.h"
static const struct {
enum xfs_metafile_type mtype;
const char *name;
} xfs_metafile_type_strs[] = { XFS_METAFILE_TYPE_STR };
const char *
xfs_metafile_type_str(enum xfs_metafile_type metatype)
{
unsigned int i;
for (i = 0; i < ARRAY_SIZE(xfs_metafile_type_strs); i++) {
if (xfs_metafile_type_strs[i].mtype == metatype)
return xfs_metafile_type_strs[i].name;
}
return NULL;
}
/* Set up an inode to be recognized as a metadata directory inode. */
void
xfs_metafile_set_iflag(

View File

@ -6,6 +6,8 @@
#ifndef __XFS_METAFILE_H__
#define __XFS_METAFILE_H__
const char *xfs_metafile_type_str(enum xfs_metafile_type metatype);
/* All metadata files must have these flags set. */
#define XFS_METAFILE_DIFLAGS (XFS_DIFLAG_IMMUTABLE | \
XFS_DIFLAG_SYNC | \

View File

@ -282,7 +282,8 @@ xfs_rtginode_ilock_print_fn(
const struct xfs_inode *ip =
container_of(m, struct xfs_inode, i_lock.dep_map);
printk(KERN_CONT " rgno=%u", ip->i_projid);
printk(KERN_CONT " rgno=%u metatype=%s", ip->i_projid,
xfs_metafile_type_str(ip->i_metatype));
}
/*