Whamcloud - gitweb
LU-8356 osp: wakeup osp_precreate_reserve on umount 03/21103/3
authorAlexander Boyko <alexander.boyko@seagate.com>
Thu, 30 Jun 2016 14:52:46 +0000 (17:52 +0300)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 27 Jul 2016 03:01:39 +0000 (03:01 +0000)
No reasons to wait reservation in osp_precreate_reserve when
import is invalid. This may cause additional delays during umount.

Signed-off-by: Sergey Cheremencev <sergey.cheremencev@seagate.com>
Signed-off-by: Alexander Boyko <alexander.boyko@seagate.com>
Seagate-bug-id: MRP-3603
Change-Id: If2c3449753633fb4cb81e0d0b22f6ecf0882be16
Reviewed-on: http://review.whamcloud.com/21103
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andriy Skulsyh
Reviewed-by: Yang Sheng <yang.sheng@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osp/osp_dev.c

index 087d1c9..2a8362a 100644 (file)
@@ -1578,6 +1578,7 @@ static int osp_import_event(struct obd_device *obd, struct obd_import *imp,
                            enum obd_import_event event)
 {
        struct osp_device *d = lu2osp_dev(obd->obd_lu_dev);
                            enum obd_import_event event)
 {
        struct osp_device *d = lu2osp_dev(obd->obd_lu_dev);
+       int rc;
 
        switch (event) {
        case IMP_EVENT_DISCON:
 
        switch (event) {
        case IMP_EVENT_DISCON:
@@ -1599,9 +1600,11 @@ static int osp_import_event(struct obd_device *obd, struct obd_import *imp,
                d->opd_obd->obd_inactive = 1;
                if (d->opd_connect_mdt)
                        break;
                d->opd_obd->obd_inactive = 1;
                if (d->opd_connect_mdt)
                        break;
-
                if (d->opd_pre != NULL) {
                if (d->opd_pre != NULL) {
-                       osp_pre_update_status(d, -ENODEV);
+                       /* Import is invalid, we can`t get stripes so
+                        * wakeup waiters */
+                       rc = imp->imp_deactive ? -ESHUTDOWN : -ENODEV;
+                       osp_pre_update_status(d, rc);
                        wake_up(&d->opd_pre_waitq);
                }
 
                        wake_up(&d->opd_pre_waitq);
                }