Whamcloud - gitweb
LU-17043 enc: fix osd lookup cache for long encrypted names 16/52016/1
authorSebastien Buisson <sbuisson@ddn.com>
Mon, 21 Aug 2023 09:44:32 +0000 (11:44 +0200)
committerSebastien Buisson <sbuisson@ddn.com>
Mon, 21 Aug 2023 09:44:32 +0000 (11:44 +0200)
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

lustre/osd-ldiskfs/osd_handler.c
lustre/osd-ldiskfs/osd_internal.h

index 84eeed7..6bcd61f 100644 (file)
@@ -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));
index 3b3a124..55a3a1a 100644 (file)
@@ -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