Whamcloud - gitweb
LU-4840 lfs: Use file lease to implement migration
[fs/lustre-release.git] / lustre / mdt / mdt_lib.c
index bef58a9..a5cc692 100644 (file)
 
 #define DEBUG_SUBSYSTEM S_MDS
 
+#include <linux/user_namespace.h>
+#ifdef HAVE_UIDGID_HEADER
+# include <linux/uidgid.h>
+#endif
 #include "mdt_internal.h"
 #include <lnet/nidstr.h>
 #include <lustre_nodemap.h>
@@ -919,20 +923,6 @@ static int mdt_setattr_unpack_rec(struct mdt_thread_info *info)
 
         rr->rr_fid1 = &rec->sa_fid;
        la->la_valid = mdt_attr_valid_xlate(rec->sa_valid, rr, ma);
-       /*  If MDS_ATTR_xTIME is set without MDS_ATTR_xTIME_SET and
-        *  the client does not have OBD_CONNECT_FULL20, convert it
-        *  to LA_xTIME. LU-3036 */
-       if (!(exp_connect_flags(info->mti_exp) & OBD_CONNECT_FULL20)) {
-               if (!(rec->sa_valid & MDS_ATTR_ATIME_SET) &&
-                    (rec->sa_valid & MDS_ATTR_ATIME))
-                       la->la_valid |= LA_ATIME;
-               if (!(rec->sa_valid & MDS_ATTR_MTIME_SET) &&
-                    (rec->sa_valid & MDS_ATTR_MTIME))
-                       la->la_valid |= LA_MTIME;
-               if (!(rec->sa_valid & MDS_ATTR_CTIME_SET) &&
-                    (rec->sa_valid & MDS_ATTR_CTIME))
-                       la->la_valid |= LA_CTIME;
-       }
        la->la_mode  = rec->sa_mode;
        la->la_flags = rec->sa_attr_flags;
        la->la_uid   = nodemap_map_id(nodemap, NODEMAP_UID,
@@ -956,6 +946,11 @@ static int mdt_setattr_unpack_rec(struct mdt_thread_info *info)
        else
                ma->ma_attr_flags &= ~MDS_HSM_RELEASE;
 
+       if (rec->sa_bias & MDS_CLOSE_LAYOUT_SWAP)
+               ma->ma_attr_flags |= MDS_CLOSE_LAYOUT_SWAP;
+       else
+               ma->ma_attr_flags &= ~MDS_CLOSE_LAYOUT_SWAP;
+
        RETURN(0);
 }
 
@@ -973,7 +968,7 @@ static int mdt_close_handle_unpack(struct mdt_thread_info *info)
        if (ioepoch == NULL)
                RETURN(-EPROTO);
 
-       info->mti_close_handle = ioepoch->handle;
+       info->mti_close_handle = ioepoch->mio_handle;
 
        RETURN(0);
 }
@@ -1028,16 +1023,16 @@ static int mdt_setattr_unpack(struct mdt_thread_info *info)
        RETURN(rc);
 }
 
-static int mdt_hsm_release_unpack(struct mdt_thread_info *info)
+static int mdt_intent_close_unpack(struct mdt_thread_info *info)
 {
        struct md_attr          *ma = &info->mti_attr;
-       struct req_capsule      *pill = info->mti_pill;
+       struct req_capsule      *pill = info->mti_pill;
        ENTRY;
 
-       if (!(ma->ma_attr_flags & MDS_HSM_RELEASE))
+       if (!(ma->ma_attr_flags & (MDS_HSM_RELEASE | MDS_CLOSE_LAYOUT_SWAP)))
                RETURN(0);
 
-       req_capsule_extend(pill, &RQF_MDS_RELEASE_CLOSE);
+       req_capsule_extend(pill, &RQF_MDS_INTENT_CLOSE);
 
        if (!(req_capsule_has_field(pill, &RMF_CLOSE_DATA, RCL_CLIENT) &&
            req_capsule_field_present(pill, &RMF_CLOSE_DATA, RCL_CLIENT)))
@@ -1059,7 +1054,7 @@ int mdt_close_unpack(struct mdt_thread_info *info)
        if (rc)
                RETURN(rc);
 
-       rc = mdt_hsm_release_unpack(info);
+       rc = mdt_intent_close_unpack(info);
        if (rc)
                RETURN(rc);