The lock may have been released by upper layer so the cl_unuse_try()
in osc_lock_upcall() will release the dlm lock instead of crashing.
Signed-off-by: Jinshan Xiong <jinshan.xiong@whamcloud.com>
Change-Id: Ie1c3f8d2ba8b227e42d08b1631651c5834cbac25
Reviewed-on: http://review.whamcloud.com/3895
Tested-by: Hudson
Reviewed-by: Lai Siyao <laisiyao@whamcloud.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: wangdi <di.wang@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
pg->cp_sync_io = NULL;
cl_sync_io_note(anchor, ioret);
}
-
- /* Don't assert the page writeback bit here because the lustre file
- * may be as a backend of swap space. in this case, the page writeback
- * is set by VM, and obvious we shouldn't clear it at all. Fortunately
- * this type of pages are all TRANSIENT pages. */
- KLASSERT(ergo(pg->cp_type == CPT_CACHEABLE,
- !PageWriteback(cl_page_vmpage(env, pg))));
EXIT;
}
EXPORT_SYMBOL(cl_page_completion);
LASSERT(!ols->ols_hold);
LASSERT(ols->ols_agl);
return 0;
+ case OLS_UPCALL_RECEIVED:
+ osc_lock_unhold(ols);
case OLS_ENQUEUED:
- case OLS_UPCALL_RECEIVED:
- LASSERT(!ols->ols_hold);
- ols->ols_state = OLS_NEW;
- return 0;
+ LASSERT(!ols->ols_hold);
+ osc_lock_detach(env, ols);
+ ols->ols_state = OLS_NEW;
+ return 0;
case OLS_GRANTED:
LASSERT(!ols->ols_glimpse);
LASSERT(ols->ols_hold);