Whamcloud - gitweb
LU-17043 enc: fix osd lookup cache for long encrypted names 16/52016/2
authorSebastien Buisson <sbuisson@ddn.com>
Mon, 21 Aug 2023 09:44:32 +0000 (11:44 +0200)
committerOleg Drokin <green@whamcloud.com>
Thu, 31 Aug 2023 06:41:05 +0000 (06:41 +0000)
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 <sbuisson@ddn.com>
Change-Id: Ica2329c8a0990395307a14fe9bb9d43db3b364ed
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52016
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/osd-ldiskfs/osd_handler.c
lustre/osd-ldiskfs/osd_internal.h

index fab69e5..f8dee13 100644 (file)
@@ -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));
index 349dc28..cba4d76 100644 (file)
@@ -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