From 51a526bfa61bb5391a7ac33108e264f590cd3f0c 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 --- 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 84eeed7..6bcd61f 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -7930,7 +7930,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 3b3a124..55a3a1a 100644 --- a/lustre/osd-ldiskfs/osd_internal.h +++ b/lustre/osd-ldiskfs/osd_internal.h @@ -649,7 +649,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