Whamcloud - gitweb
LU-12469 mdd: handle migrate case with SELinux 31/37031/2
authorSebastien Buisson <sbuisson@ddn.com>
Wed, 6 Nov 2019 12:51:55 +0000 (21:51 +0900)
committerOleg Drokin <green@whamcloud.com>
Fri, 3 Jan 2020 23:44:04 +0000 (23:44 +0000)
In case a metadata object is created for migration purpose,
its security context should not be initialized. The
security.selinux xattr will be copied after creation, just like
any other xattr, so that the migrated object has the right security
context.

Lustre-change: https://review.whamcloud.com/36684
Lustre-commit: 8a60fa2e2fcd28c2772d90e76d36430d30b01905

Test-Parameters: clientselinux mdtcount=4 envdefinitions=ONLY=230 testlist=sanity,sanity,sanity,sanity
Test-Parameters: clientselinux mdtcount=4 testlist=sanity,recovery-small,sanity-sec
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I0bc274426c003f8081da2f4d1e8e6c12a70b9930
Reviewed-on: https://review.whamcloud.com/37031
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/mdd/mdd_dir.c

index bb40c3a..b1915da 100644 (file)
@@ -2324,7 +2324,7 @@ static int mdd_create_object(const struct lu_env *env, struct mdd_object *pobj,
                             struct md_op_spec *spec, struct lu_buf *acl_buf,
                             struct lu_buf *def_acl_buf,
                             struct dt_allocation_hint *hint,
-                            struct thandle *handle)
+                            struct thandle *handle, bool initsecctx)
 {
        const struct lu_buf *buf;
        int rc;
@@ -2405,7 +2405,7 @@ static int mdd_create_object(const struct lu_env *env, struct mdd_object *pobj,
                        GOTO(err_initlized, rc = -EFAULT);
        }
 
-       if (spec->sp_cr_file_secctx_name != NULL) {
+       if (initsecctx && spec->sp_cr_file_secctx_name != NULL) {
                buf = mdd_buf_get_const(env, spec->sp_cr_file_secctx,
                                        spec->sp_cr_file_secctx_size);
                rc = mdo_xattr_set(env, son, buf, spec->sp_cr_file_secctx_name,
@@ -2605,7 +2605,7 @@ int mdd_create(const struct lu_env *env, struct md_object *pobj,
                GOTO(out_stop, rc);
 
        rc = mdd_create_object(env, mdd_pobj, son, attr, spec, &acl_buf,
-                              &def_acl_buf, hint, handle);
+                              &def_acl_buf, hint, handle, true);
        if (rc != 0)
                GOTO(out_stop, rc);
 
@@ -4097,7 +4097,7 @@ static int mdd_migrate_create(const struct lu_env *env,
        attr->la_valid &= ~LA_NLINK;
 
        rc = mdd_create_object(env, tpobj, tobj, attr, spec, NULL, NULL, hint,
-                               handle);
+                              handle, false);
        if (rc)
                RETURN(rc);