From 8b62a8ca9c2e824d94fbf8bc266b4028e9b5fa63 Mon Sep 17 00:00:00 2001 From: Patrick Farrell Date: Thu, 19 Jan 2023 13:48:07 -0500 Subject: [PATCH] LU-12273 obd: Reserve metadata overstriping flags Reserve flag bits for metadata overstriping. Test-Parameters: trivial Signed-off-by: Patrick Farrell Change-Id: I894b9420a4b08cceaccca6b3184ecb3bd22a680c Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/49707 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Qian Yingjin Reviewed-by: Oleg Drokin Reviewed-by: Andreas Dilger --- lustre/include/uapi/linux/lustre/lustre_user.h | 2 ++ lustre/ptlrpc/wiretest.c | 1 + lustre/utils/liblustreapi.c | 7 ++++++- lustre/utils/wirecheck.c | 1 + lustre/utils/wiretest.c | 1 + 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lustre/include/uapi/linux/lustre/lustre_user.h b/lustre/include/uapi/linux/lustre/lustre_user.h index 6df699c..dc1af4e 100644 --- a/lustre/include/uapi/linux/lustre/lustre_user.h +++ b/lustre/include/uapi/linux/lustre/lustre_user.h @@ -1080,6 +1080,8 @@ static inline bool lmv_is_known_hash_type(__u32 type) (type & LMV_HASH_TYPE_MASK) < LMV_HASH_TYPE_MAX; } +/* This flag indicates that overstriping (>1 stripe per MDT) is desired */ +#define LMV_HASH_FLAG_OVERSTRIPED 0x01000000 /* fixed layout, such directories won't split automatically */ /* NB, update LMV_HASH_FLAG_KNOWN when adding new flag */ #define LMV_HASH_FLAG_FIXED 0x02000000 diff --git a/lustre/ptlrpc/wiretest.c b/lustre/ptlrpc/wiretest.c index a06857d..1b5a59d 100644 --- a/lustre/ptlrpc/wiretest.c +++ b/lustre/ptlrpc/wiretest.c @@ -1968,6 +1968,7 @@ void lustre_assert_wire_constants(void) BUILD_BUG_ON(LMV_MAGIC_V1 != 0x0CD20CD0); BUILD_BUG_ON(LMV_MAGIC_STRIPE != 0x0CD40CD0); BUILD_BUG_ON(LMV_HASH_TYPE_MASK != 0x0000ffff); + BUILD_BUG_ON(LMV_HASH_FLAG_OVERSTRIPED != 0x01000000); BUILD_BUG_ON(LMV_HASH_FLAG_FIXED != 0x02000000); BUILD_BUG_ON(LMV_HASH_FLAG_MERGE != 0x04000000); BUILD_BUG_ON(LMV_HASH_FLAG_SPLIT != 0x08000000); diff --git a/lustre/utils/liblustreapi.c b/lustre/utils/liblustreapi.c index 43003de..58597de 100644 --- a/lustre/utils/liblustreapi.c +++ b/lustre/utils/liblustreapi.c @@ -3070,6 +3070,8 @@ void lmv_dump_user_lmm(struct lmv_user_md *lum, char *pool_name, else llapi_printf(LLAPI_MSG_NORMAL, "%#x", type); + if (flags & LMV_HASH_FLAG_OVERSTRIPED) + llapi_printf(LLAPI_MSG_NORMAL, ",overstriped"); if (flags & LMV_HASH_FLAG_MIGRATION) llapi_printf(LLAPI_MSG_NORMAL, ",migrating"); if (flags & LMV_HASH_FLAG_BAD_TYPE) @@ -3078,7 +3080,10 @@ void lmv_dump_user_lmm(struct lmv_user_md *lum, char *pool_name, llapi_printf(LLAPI_MSG_NORMAL, ",lost_lmv"); if (flags & LMV_HASH_FLAG_FIXED) llapi_printf(LLAPI_MSG_NORMAL, ",fixed"); - if (flags & ~LMV_HASH_FLAG_KNOWN) + /* NB: OVERSTRIPED is not in KNOWN until implementation patch + * is landed, but we do recognize it + */ + if (flags & ~(LMV_HASH_FLAG_KNOWN|LMV_HASH_FLAG_OVERSTRIPED)) llapi_printf(LLAPI_MSG_NORMAL, ",unknown_%04x", flags & ~LMV_HASH_FLAG_KNOWN); diff --git a/lustre/utils/wirecheck.c b/lustre/utils/wirecheck.c index 210e431..59beef9 100644 --- a/lustre/utils/wirecheck.c +++ b/lustre/utils/wirecheck.c @@ -955,6 +955,7 @@ check_lmv_mds_md_v1(void) CHECK_CDEFINE(LMV_MAGIC_V1); CHECK_CDEFINE(LMV_MAGIC_STRIPE); CHECK_CDEFINE(LMV_HASH_TYPE_MASK); + CHECK_CDEFINE(LMV_HASH_FLAG_OVERSTRIPED); CHECK_CDEFINE(LMV_HASH_FLAG_FIXED); CHECK_CDEFINE(LMV_HASH_FLAG_MERGE); CHECK_CDEFINE(LMV_HASH_FLAG_SPLIT); diff --git a/lustre/utils/wiretest.c b/lustre/utils/wiretest.c index b72d09b..d110255 100644 --- a/lustre/utils/wiretest.c +++ b/lustre/utils/wiretest.c @@ -2031,6 +2031,7 @@ void lustre_assert_wire_constants(void) BUILD_BUG_ON(LMV_MAGIC_V1 != 0x0CD20CD0); BUILD_BUG_ON(LMV_MAGIC_STRIPE != 0x0CD40CD0); BUILD_BUG_ON(LMV_HASH_TYPE_MASK != 0x0000ffff); + BUILD_BUG_ON(LMV_HASH_FLAG_OVERSTRIPED != 0x01000000); BUILD_BUG_ON(LMV_HASH_FLAG_FIXED != 0x02000000); BUILD_BUG_ON(LMV_HASH_FLAG_MERGE != 0x04000000); BUILD_BUG_ON(LMV_HASH_FLAG_SPLIT != 0x08000000); -- 1.8.3.1