Whamcloud - gitweb
b=22273 Don't remove lcd in case of client_add failure
[fs/lustre-release.git] / lustre / mdt / mdt_recovery.c
index 9c1a885..8f18207 100644 (file)
@@ -566,6 +566,10 @@ int mdt_client_new(const struct lu_env *env, struct mdt_device *mdt)
 
         /* Write new client data. */
         off = med->med_lr_off;
+
+        if (OBD_FAIL_CHECK(OBD_FAIL_TGT_CLIENT_ADD))
+                RETURN(-ENOSPC);
+
         mdt_trans_credit_init(env, mdt, MDT_TXN_LAST_RCVD_WRITE_OP);
 
         th = mdt_trans_start(env, mdt);
@@ -703,25 +707,15 @@ int mdt_client_del(const struct lu_env *env, struct mdt_device *mdt)
                 GOTO(free, rc = PTR_ERR(th));
 
         cfs_mutex_down(&med->med_lcd_lock);
-        memset(lcd, 0, sizeof *lcd);
+        memset(lcd->lcd_uuid, 0, sizeof lcd->lcd_uuid);
         rc = mdt_last_rcvd_write(env, mdt, lcd, &off, th);
-        med->med_lcd = NULL;
         cfs_mutex_up(&med->med_lcd_lock);
         mdt_trans_stop(env, mdt, th);
 
-        cfs_spin_lock(&mdt->mdt_client_bitmap_lock);
-        cfs_clear_bit(med->med_lr_idx, mdt->mdt_client_bitmap);
-        cfs_spin_unlock(&mdt->mdt_client_bitmap_lock);
-
         CDEBUG(rc == 0 ? D_INFO : D_ERROR, "Zeroing out client idx %u in "
                "%s, rc %d\n",  med->med_lr_idx, LAST_RCVD, rc);
-        OBD_FREE_PTR(lcd);
         RETURN(0);
 free:
-        cfs_mutex_down(&med->med_lcd_lock);
-        med->med_lcd = NULL;
-        cfs_mutex_up(&med->med_lcd_lock);
-        OBD_FREE_PTR(lcd);
         return 0;
 }