Whamcloud - gitweb
LU-2801 mdt: checking remote object in mdt_swap_layouts
authorwangdi <di.wang@whamcloud.com>
Sat, 30 Nov 2013 09:44:28 +0000 (01:44 -0800)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 21 Feb 2013 04:26:25 +0000 (23:26 -0500)
It should use mdt_remote_object to check remote object in
mdt_swap_layouts, instead of mdt_object_exists < 0.

Send swap layout req to the right MDT.

Signed-off-by: wang di <di.wang@intel.com>
Change-Id: Ia24635e16cb67e5683abc9797ec6c9e61f648c62
Reviewed-on: http://review.whamcloud.com/5332
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
lustre/lmv/lmv_obd.c
lustre/mdt/mdt_handler.c

index 52055c6..4a5e147 100644 (file)
@@ -865,7 +865,8 @@ static int lmv_iocontrol(unsigned int cmd, struct obd_export *exp,
        }
        case LL_IOC_HSM_STATE_GET:
        case LL_IOC_HSM_STATE_SET:
-       case LL_IOC_HSM_ACTION: {
+       case LL_IOC_HSM_ACTION:
+       case LL_IOC_LOV_SWAP_LAYOUTS: {
                struct md_op_data       *op_data = karg;
                struct lmv_tgt_desc     *tgt;
 
index e11d46b..fbdc694 100644 (file)
@@ -1046,7 +1046,7 @@ int mdt_swap_layouts(struct mdt_thread_info *info)
        if (IS_ERR(o))
                GOTO(out, rc = PTR_ERR(o));
 
-       if (mdt_object_exists(o) < 0) /* remote object */
+       if (mdt_object_remote(o) || !mdt_object_exists(o)) /* remote object */
                GOTO(put, rc = -ENOENT);
 
        rc = lu_fid_cmp(&info->mti_body->fid1, &info->mti_body->fid2);