diff --git a/lustre/lmv/lmv_obd.c b/lustre/lmv/lmv_obd.c
index c3119b46dcc2565eb248d5535d4a14e9404f35a9..6f2e061e0d2861e84ecea9195f649fe5098c1034 100644
--- a/lustre/lmv/lmv_obd.c
+++ b/lustre/lmv/lmv_obd.c
@@ -1972,6 +1972,7 @@ int lmv_set_info(struct obd_export *exp, obd_count keylen,
         struct lmv_tgt_desc    *tgt;
         struct obd_device      *obd;
         struct lmv_obd         *lmv;
+        int rc = 0;
         ENTRY;
 
         obd = class_exp2obd(exp);
@@ -1993,7 +1994,7 @@ int lmv_set_info(struct obd_export *exp, obd_count keylen,
             (keylen == strlen("sec_flags") && strcmp(key, "sec_flags") == 0) ||
             (keylen == strlen("nllu") && strcmp(key, "nllu") == 0)) {
                 struct obd_export *exp;
-                int rc = 0, err, i;
+                int err, i;
 
                 spin_lock(&lmv->lmv_lock);
                 for (i = 0, tgt = lmv->tgts; i < lmv->desc.ld_tgt_count;
@@ -2029,7 +2030,7 @@ int lmv_set_info(struct obd_export *exp, obd_count keylen,
         if (keylen == 5 && strcmp(key, "audit") == 0) {
                 struct audit_attr_msg * msg = val;
                 int mds = id_group(&msg->id);
-                int i, rc = 0;
+                int i;
                 LASSERT(mds < lmv->desc.ld_tgt_count);
                 
                 if (IS_AUDIT_OP(msg->attr, AUDIT_FS)) {
@@ -2075,7 +2076,7 @@ int lmv_set_info(struct obd_export *exp, obd_count keylen,
              strcmp(key, "flush_cred") == 0)) || 
              ((keylen == strlen("crypto_type") &&
              strcmp(key, "crypto_type") == 0))) {
-                int rc = 0, i;
+                int i;
 
                 for (i = 0, tgt = lmv->tgts; i < lmv->desc.ld_tgt_count;
                      i++, tgt++) {
@@ -2089,6 +2090,18 @@ int lmv_set_info(struct obd_export *exp, obd_count keylen,
 
                 RETURN(0);
         }
+        
+        if (keylen == strlen("ids") && memcmp(key, "ids", keylen) == 0) {
+                struct lustre_id *id = (struct lustre_id *)val;
+                
+                rc = lmv_check_connect(obd);
+                if (rc)
+                        RETURN(rc);
+
+                rc = obd_set_info(lmv->tgts[id_group(id)].ltd_exp, 
+                                  keylen, key, vallen, val); 
+                RETURN(rc);
+        }
 
         RETURN(-EINVAL);
 }
diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c
index 756d6719db618f620986d4088c8723abe95eaea1..985f5a16a9ab5a3937b9d2991c1455042d9b0b22 100644
--- a/lustre/mds/handler.c
+++ b/lustre/mds/handler.c
@@ -2728,7 +2728,7 @@ static int mds_set_info(struct obd_export *exp, __u32 keylen,
                 de = mds_id2dentry(obd, ids, NULL);
                 if (IS_ERR(de)) {
                         rc = PTR_ERR(de);
-                        CERROR("lookup by an id error %d\n", rc);
+                        CERROR("lookup by an id error rc=%d\n ", rc);
                         RETURN(rc);
                 }
                 inode = de->d_inode;
@@ -2839,10 +2839,10 @@ static int mdt_set_info(struct ptlrpc_request *req)
                         RETURN(rc);
                 id = lustre_swab_reqbuf(req, 1, sizeof(struct lustre_id), 
                                         lustre_swab_lustre_id);
-                ids[1] = *id;
+                ids[0] = *id;
                 id = lustre_swab_reqbuf(req, 2, sizeof(struct lustre_id),
                                         lustre_swab_lustre_id);
-                ids[2] = *id;
+                ids[1] = *id;
 
                 rc = obd_set_info(exp, keylen, key, vallen, ids);
                 req->rq_repmsg->status = rc;
diff --git a/lustre/mds/mds_reint.c b/lustre/mds/mds_reint.c
index 6e6068d3b88cad343b3da11f4c2a7b337adab24c..f84077b4bdaa5f8cd08314610ba77868ea03876e 100644
--- a/lustre/mds/mds_reint.c
+++ b/lustre/mds/mds_reint.c
@@ -3319,8 +3319,7 @@ static int mds_reint_rename_create_name(struct mds_update_record *rec,
                 GOTO(cleanup, rc);
 
         ids[0] = *(rec->ur_id1);
-        rc = obd_set_info(mds->mds_md_obd->u.lmv.tgts[id_group(rec->ur_id1)].ltd_exp, 
-                          strlen("ids"), "ids", 
+        rc = obd_set_info(mds->mds_md_exp, strlen("ids"), "ids", 
                           sizeof(struct lustre_id) * 2, ids);
  
         EXIT;
@@ -3610,8 +3609,6 @@ static int mds_reint_rename(struct mds_update_record *rec, int offset,
 
         if (de_old->d_flags & DCACHE_CROSS_REF) {
                 struct lustre_id old_id;
-                struct obd_export *tgt_exp = 
-                        mds->mds_md_obd->u.lmv.tgts[de_old->d_mdsnum].ltd_exp;
 
                 
                 mds_pack_dentry2id(obd, &old_id, de_old, 1);
@@ -3627,7 +3624,7 @@ static int mds_reint_rename(struct mds_update_record *rec, int offset,
                         GOTO(cleanup, rc);
                 
                 ids[0] = old_id;
-                rc = obd_set_info(tgt_exp, strlen("ids"), "ids", 
+                rc = obd_set_info(mds->mds_md_exp, strlen("ids"), "ids", 
                                   sizeof(struct lustre_id) * 2, ids);
 
                 GOTO(cleanup, rc);