From e16d5d7d6fb274b22a76fcd5858849215550d4e0 Mon Sep 17 00:00:00 2001 From: Sebastien Buisson Date: Mon, 21 Aug 2023 11:44:32 +0200 Subject: [PATCH] LU-17043 enc: fix osd lookup cache for long encrypted names Fix osd lookup cache to support files with long encrypted names. Those encrypted names can be up to 256 bytes, not NUL terminated. Fixes: 29f8eb2a67 ("LU-16405 osd: lookup cache") Signed-off-by: Sebastien Buisson Change-Id: Ica2329c8a0990395307a14fe9bb9d43db3b364ed Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52016 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- lustre/osd-ldiskfs/osd_handler.c | 2 +- lustre/osd-ldiskfs/osd_internal.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index fab69e5..f8dee13 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -7939,7 +7939,7 @@ void osd_olc_save(const struct lu_env *env, struct osd_object *obj, entry->lce_obj.lco_gen = obj->oo_inode->i_generation; entry->lce_obj.lco_version = iversion; - LASSERT(ln->ln_namelen <= LDISKFS_NAME_LEN); + LASSERT(ln->ln_namelen <= LDISKFS_NAME_LEN + 1); entry->lce_namelen = ln->ln_namelen; memcpy(entry->lce_name, ln->ln_name, ln->ln_namelen); memcpy(&entry->lce_fid, rec, sizeof(entry->lce_fid)); diff --git a/lustre/osd-ldiskfs/osd_internal.h b/lustre/osd-ldiskfs/osd_internal.h index 349dc28..cba4d76 100644 --- a/lustre/osd-ldiskfs/osd_internal.h +++ b/lustre/osd-ldiskfs/osd_internal.h @@ -651,7 +651,7 @@ struct osd_lookup_cache_entry { struct lu_fid lce_fid; short lce_rc; short lce_namelen; - char lce_name[LDISKFS_NAME_LEN]; + char lce_name[LDISKFS_NAME_LEN + 1]; }; #define OSD_LOOKUP_CACHE_MAX 3 -- 1.8.3.1