Whamcloud - gitweb
LU-1286 obdclass: oops in lprocfs_remove_nolock
authorwangdi <di.wang@whamcloud.com>
Thu, 5 Apr 2012 06:21:31 +0000 (23:21 -0700)
committerOleg Drokin <green@whamcloud.com>
Thu, 14 Jun 2012 20:37:37 +0000 (16:37 -0400)
Move lov /proc entry cleanup from lov_precleanup to
lov_cleanup, so the lov proc entry will be removed after
the pool has been removed, otherwise it will
cause oops during pool proc entry deletion.

Signed-off-by: Di Wang <di.wang@whamcloud.com>
Change-Id: I1d1b03d02348caaa1e421aa1de1535c8cf0ba3f4
Reviewed-on: http://review.whamcloud.com/2450
Tested-by: Hudson
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/lov/lov_obd.c

index 1c15eb2..f826c33 100644 (file)
@@ -878,7 +878,6 @@ static int lov_precleanup(struct obd_device *obd, enum obd_cleanup_stage stage)
                 break;
         }
         case OBD_CLEANUP_EXPORTS:
                 break;
         }
         case OBD_CLEANUP_EXPORTS:
-                lprocfs_obd_cleanup(obd);
                 rc = obd_llog_finish(obd, 0);
                 if (rc != 0)
                         CERROR("failed to cleanup llogging subsystems\n");
                 rc = obd_llog_finish(obd, 0);
                 if (rc != 0)
                         CERROR("failed to cleanup llogging subsystems\n");
@@ -904,6 +903,7 @@ static int lov_cleanup(struct obd_device *obd)
         lov_ost_pool_free(&(lov->lov_qos.lq_rr.lqr_pool));
         lov_ost_pool_free(&lov->lov_packed);
 
         lov_ost_pool_free(&(lov->lov_qos.lq_rr.lqr_pool));
         lov_ost_pool_free(&lov->lov_packed);
 
+       lprocfs_obd_cleanup(obd);
         if (lov->lov_tgts) {
                 int i;
                 obd_getref(obd);
         if (lov->lov_tgts) {
                 int i;
                 obd_getref(obd);