Whamcloud - gitweb
LU-11838 lustre: discard LTIME_S macro
[fs/lustre-release.git] / lustre / lmv / lmv_obd.c
index 090f3b1..5a7945b 100644 (file)
@@ -800,23 +800,42 @@ static int lmv_hsm_ct_register(struct obd_device *obd, unsigned int cmd,
                               void __user *uarg)
 {
        struct lmv_obd *lmv = &obd->u.lmv;
-       struct file             *filp;
-       __u32                    i, j;
-       int                      err;
-       bool                     any_set = false;
-       struct kkuc_ct_data      kcd = {
-               .kcd_magic   = KKUC_CT_DATA_MAGIC,
-               .kcd_archive = lk->lk_data,
-       };
-       int                      rc = 0;
+       struct file *filp;
+       __u32 i, j;
+       int err;
+       bool any_set = false;
+       struct kkuc_ct_data *kcd;
+       size_t kcd_size;
+       int rc = 0;
        ENTRY;
 
        filp = fget(lk->lk_wfd);
        if (!filp)
                RETURN(-EBADF);
 
+       if (lk->lk_flags & LK_FLG_DATANR)
+               kcd_size = offsetof(struct kkuc_ct_data,
+                                   kcd_archives[lk->lk_data_count]);
+       else
+               kcd_size = sizeof(*kcd);
+
+       OBD_ALLOC(kcd, kcd_size);
+       if (kcd == NULL)
+               GOTO(err_fput, rc = -ENOMEM);
+
+       kcd->kcd_nr_archives = lk->lk_data_count;
+       if (lk->lk_flags & LK_FLG_DATANR) {
+               kcd->kcd_magic = KKUC_CT_DATA_ARRAY_MAGIC;
+               if (lk->lk_data_count > 0)
+                       memcpy(kcd->kcd_archives, lk->lk_data,
+                              sizeof(*kcd->kcd_archives) * lk->lk_data_count);
+       } else {
+               kcd->kcd_magic = KKUC_CT_DATA_BITMAP_MAGIC;
+       }
+
        rc = libcfs_kkuc_group_add(filp, &obd->obd_uuid, lk->lk_uid,
-                                  lk->lk_group, &kcd, sizeof(kcd));
+                                  lk->lk_group, kcd, kcd_size);
+       OBD_FREE(kcd, kcd_size);
        if (rc)
                GOTO(err_fput, rc);
 
@@ -2006,7 +2025,10 @@ static int lmv_migrate(struct obd_export *exp, struct md_op_data *op_data,
        if (IS_ERR(child_tgt))
                RETURN(PTR_ERR(child_tgt));
 
-       rc = lmv_fid_alloc(NULL, exp, &target_fid, op_data);
+       if (!S_ISDIR(op_data->op_mode) && tp_tgt)
+               rc = __lmv_fid_alloc(lmv, &target_fid, tp_tgt->ltd_idx);
+       else
+               rc = lmv_fid_alloc(NULL, exp, &target_fid, op_data);
        if (rc)
                RETURN(rc);
 
@@ -3325,12 +3347,12 @@ static int lmv_merge_attr(struct obd_export *exp,
        for (i = 0; i < lsm->lsm_md_stripe_count; i++) {
                struct inode *inode = lsm->lsm_md_oinfo[i].lmo_root;
 
-               CDEBUG(D_INFO, ""DFID" size %llu, blocks %llu nlink %u,"
-                      " atime %lu ctime %lu, mtime %lu.\n",
+               CDEBUG(D_INFO,
+                      "" DFID " size %llu, blocks %llu nlink %u, atime %lld ctime %lld, mtime %lld.\n",
                       PFID(&lsm->lsm_md_oinfo[i].lmo_fid),
                       i_size_read(inode), (unsigned long long)inode->i_blocks,
-                      inode->i_nlink, LTIME_S(inode->i_atime),
-                      LTIME_S(inode->i_ctime), LTIME_S(inode->i_mtime));
+                      inode->i_nlink, (s64)inode->i_atime.tv_sec,
+                      (s64)inode->i_ctime.tv_sec, (s64)inode->i_mtime.tv_sec);
 
                /* for slave stripe, it needs to subtract nlink for . and .. */
                if (i != 0)
@@ -3341,14 +3363,14 @@ static int lmv_merge_attr(struct obd_export *exp,
                attr->cat_size += i_size_read(inode);
                attr->cat_blocks += inode->i_blocks;
 
-               if (attr->cat_atime < LTIME_S(inode->i_atime))
-                       attr->cat_atime = LTIME_S(inode->i_atime);
+               if (attr->cat_atime < inode->i_atime.tv_sec)
+                       attr->cat_atime = inode->i_atime.tv_sec;
 
-               if (attr->cat_ctime < LTIME_S(inode->i_ctime))
-                       attr->cat_ctime = LTIME_S(inode->i_ctime);
+               if (attr->cat_ctime < inode->i_ctime.tv_sec)
+                       attr->cat_ctime = inode->i_ctime.tv_sec;
 
-               if (attr->cat_mtime < LTIME_S(inode->i_mtime))
-                       attr->cat_mtime = LTIME_S(inode->i_mtime);
+               if (attr->cat_mtime < inode->i_mtime.tv_sec)
+                       attr->cat_mtime = inode->i_mtime.tv_sec;
        }
        return 0;
 }