Whamcloud - gitweb
Branch b_release_1_8_0
authorjohann <johann>
Mon, 9 Feb 2009 14:57:20 +0000 (14:57 +0000)
committerjohann <johann>
Mon, 9 Feb 2009 14:57:20 +0000 (14:57 +0000)
b=18374
i=shadow
i=tappro

Wait for mds_fl_synced to be set during recovery before allowing clients
to reconnect. This is done to make sure that llog is properly set up.

lustre/mds/mds_lov.c

index d48f4cb..49108d8 100644 (file)
@@ -55,6 +55,8 @@
 
 #include "mds_internal.h"
 
+static void mds_allow_cli(struct obd_device *obd, unsigned long flag);
+
 static void mds_lov_dump_objids(const char *label, struct obd_device *obd)
 {
         struct mds_obd *mds = &obd->u.mds;
@@ -918,6 +920,8 @@ int mds_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
         case OBD_IOC_ABORT_RECOVERY:
                 CERROR("aborting recovery for device %s\n", obd->obd_name);
                 target_abort_recovery(obd);
+                /* obd_recovering has been changed */
+                mds_allow_cli(obd, 0);
                 RETURN(0);
 
         default:
@@ -937,8 +941,8 @@ static void mds_allow_cli(struct obd_device *obd, unsigned long flag)
                 obd->u.mds.mds_fl_synced = 1;
         if (flag & CONFIG_TARGET)
                 obd->u.mds.mds_fl_target = 1;
-        if (obd->u.mds.mds_fl_cfglog && obd->u.mds.mds_fl_target
-            /* bz11778: && obd->u.mds.mds_fl_synced */)
+        if (obd->u.mds.mds_fl_cfglog && obd->u.mds.mds_fl_target &&
+            (!obd->obd_recovering || obd->u.mds.mds_fl_synced))
                 /* Open for clients */
                 obd->obd_no_conn = 0;
 }