LASSERT(our->our_th != NULL);
osp_trans_callback(env, our->our_th, -EIO);
/* our will be destroyed in osp_thandle_put() */
- osp_thandle_put(our->our_th);
+ osp_thandle_put(env, our->our_th);
}
spin_unlock(&ou->ou_lock);
struct lu_device *ld)
{
struct osp_device *osp = lu2osp_dev(ld);
- struct obd_import *imp;
int rc;
ENTRY;
if (osp->opd_async_requests != NULL) {
- osp_update_request_destroy(osp->opd_async_requests);
+ osp_update_request_destroy(env, osp->opd_async_requests);
osp->opd_async_requests = NULL;
}
if (osp->opd_storage_exp)
obd_disconnect(osp->opd_storage_exp);
- imp = osp->opd_obd->u.cli.cl_import;
-
if (osp->opd_symlink)
lprocfs_remove(&osp->opd_symlink);
enum obd_import_event event)
{
struct osp_device *d = lu2osp_dev(obd->obd_lu_dev);
+ int rc;
switch (event) {
case IMP_EVENT_DISCON:
d->opd_obd->obd_inactive = 1;
if (d->opd_connect_mdt)
break;
-
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);
}