return rc;
la_flag->la_valid = LA_FLAGS;
- la_flag->la_flags = LUSTRE_IMMUTABLE_FL;
+ la_flag->la_flags = la->la_flags | LUSTRE_IMMUTABLE_FL;
mdd_flags_xlate(mdd_sobj, la_flag->la_flags);
rc = mdo_declare_attr_set(env, mdd_sobj, la_flag, handle);
* IMMUTALBE flag and MIGRATE EA, it need to clear IMMUTABLE
* flag and approve the migration */
la_flag->la_valid = LA_FLAGS;
- la_flag->la_flags = LUSTRE_IMMUTABLE_FL;
+ la_flag->la_flags = la->la_flags | LUSTRE_IMMUTABLE_FL;
mdd_flags_xlate(mdd_sobj, la_flag->la_flags);
rc = mdo_attr_set(env, mdd_sobj, la_flag, handle,
mdd_object_capa(env, mdd_sobj));
dst->o_gid = la->la_gid;
newvalid |= OBD_MD_FLGID;
}
- dst->o_valid |= newvalid;
+ if (valid & LA_FLAGS) {
+ dst->o_flags = la->la_flags;
+ newvalid |= OBD_MD_FLFLAGS;
+ }
+ dst->o_valid |= newvalid;
}
EXPORT_SYMBOL(obdo_from_la);
dst->la_gid = obdo->o_gid;
newvalid |= LA_GID;
}
- dst->la_valid = newvalid;
+ if (valid & OBD_MD_FLFLAGS) {
+ dst->la_flags = obdo->o_flags;
+ newvalid |= LA_FLAGS;
+ }
+ dst->la_valid = newvalid;
}
EXPORT_SYMBOL(la_from_obdo);
cp /etc/passwd $migrate_dir/$tfile
cp /etc/passwd $other_dir/$tfile
+ chattr +SAD $migrate_dir
+ chattr +SAD $migrate_dir/$tfile
+
+ local old_dir_flag=$(lsattr -a $migrate_dir | awk '/\/\.$/ {print $1}')
+ local old_file_flag=$(lsattr $migrate_dir/$tfile | awk '{print $1}')
+ local old_dir_mode=$(stat -c%f $migrate_dir)
+ local old_file_mode=$(stat -c%f $migrate_dir/$tfile)
+
mkdir -p $migrate_dir/dir_default_stripe2
$SETSTRIPE -c 2 $migrate_dir/dir_default_stripe2
$SETSTRIPE -c 2 $migrate_dir/${tfile}_stripe2
[ $mdt_index == 0 ] ||
error "$file is not on MDT${MDTIDX}"
+ local new_dir_flag=$(lsattr -a $migrate_dir | awk '/\/\.$/ {print $1}')
+ [ "$old_dir_flag" = "$new_dir_flag" ] ||
+ error " expect $old_dir_flag get $new_dir_flag"
+
+ local new_file_flag=$(lsattr $migrate_dir/$tfile | awk '{print $1}')
+ [ "$old_file_flag" = "$new_file_flag" ] ||
+ error " expect $old_file_flag get $new_file_flag"
+
+ local new_dir_mode=$(stat -c%f $migrate_dir)
+ [ "$old_dir_mode" = "$new_dir_mode" ] ||
+ error "expect mode $old_dir_mode get $new_dir_mode"
+
+ local new_file_mode=$(stat -c%f $migrate_dir/$tfile)
+ [ "$old_file_mode" = "$new_file_mode" ] ||
+ error "expect mode $old_file_mode get $new_file_mode"
+
diff /etc/passwd $migrate_dir/$tfile ||
error "$tfile different after migration"
error "$file is not on MDT${MDTIDX}"
done
+ local new_dir_flag=$(lsattr -a $migrate_dir | awk '/\/\.$/ {print $1}')
+ [ "$old_dir_flag" = "$new_dir_flag" ] ||
+ error " expect $old_dir_flag get $new_dir_flag"
+
+ local new_file_flag=$(lsattr $migrate_dir/$tfile | awk '{print $1}')
+ [ "$old_file_flag" = "$new_file_flag" ] ||
+ error " expect $old_file_flag get $new_file_flag"
+
+ local new_dir_mode=$(stat -c%f $migrate_dir)
+ [ "$old_dir_mode" = "$new_dir_mode" ] ||
+ error "expect mode $old_dir_mode get $new_dir_mode"
+
+ local new_file_mode=$(stat -c%f $migrate_dir/$tfile)
+ [ "$old_file_mode" = "$new_file_mode" ] ||
+ error "expect mode $old_file_mode get $new_file_mode"
+
diff /etc/passwd ${migrate_dir}/$tfile ||
error "$tfile different after migration"