Whamcloud - gitweb
LU-11213 lod: default LMV can't be deleted 07/35207/3
authorLai Siyao <lai.siyao@whamcloud.com>
Wed, 12 Jun 2019 10:33:12 +0000 (18:33 +0800)
committerOleg Drokin <green@whamcloud.com>
Thu, 20 Jun 2019 03:51:13 +0000 (03:51 +0000)
When 'space' hash type was introduced, default LMV deletion added
check for hash type, but it only checks whether type is 'none',
while by default it's 'fnv_1a_64', which caused default LMV can't
be deleted.

Change check to !LMV_HASH_TYPE_SPACE and update test 413b.

Fixes: a24f6153292 ("LU-11213 dne: add new dir hash type 'space'")

Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: I88c630dc8d339ddeb9dc03d6f8987d8783062a13
Reviewed-on: https://review.whamcloud.com/35207
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Li Xi <lixi@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/lod/lod_object.c
lustre/tests/sanity.sh

index cfa8d03..50b40b8 100644 (file)
@@ -3680,14 +3680,16 @@ static int lod_xattr_set_default_lmv_on_dir(const struct lu_env *env,
        LASSERT(buf != NULL && buf->lb_buf != NULL);
        lum = buf->lb_buf;
 
-       CDEBUG(D_OTHER, "set default stripe_count # %u stripe_offset %d\n",
+       CDEBUG(D_INFO,
+              "set default stripe_count # %u stripe_offset %d hash %u\n",
              le32_to_cpu(lum->lum_stripe_count),
-             (int)le32_to_cpu(lum->lum_stripe_offset));
+             (int)le32_to_cpu(lum->lum_stripe_offset),
+             le32_to_cpu(lum->lum_hash_type));
 
        if (LMVEA_DELETE_VALUES((le32_to_cpu(lum->lum_stripe_count)),
                                 le32_to_cpu(lum->lum_stripe_offset)) &&
            le32_to_cpu(lum->lum_magic) == LMV_USER_MAGIC &&
-           le32_to_cpu(lum->lum_hash_type) == LMV_HASH_TYPE_UNKNOWN) {
+           le32_to_cpu(lum->lum_hash_type) != LMV_HASH_TYPE_SPACE) {
                rc = lod_xattr_del_internal(env, dt, name, th);
                if (rc == -ENODATA)
                        rc = 0;
index 12cc892..c21a447 100644 (file)
@@ -20094,6 +20094,12 @@ test_413b() {
        done
        [ $((max - min)) -gt $MDSCOUNT ] ||
                error "subdirs shouldn't be evenly distributed"
+
+       which getfattr > /dev/null 2>&1 || skip_env "no getfattr command"
+
+       $LFS setdirstripe -D -d $DIR/$tdir || error "setdirstripe -d failed"
+       getfattr -n trusted.dmv $DIR/$tdir && error "default dir layout exists"
+       true
 }
 run_test 413b "mkdir with balanced space usage"