struct cl_page *pg = slice->cpl_page;
int result = 0;
- lock_page(vmpage);
if (clear_page_dirty_for_io(vmpage)) {
LASSERT(pg->cp_state == CPS_CACHED);
/* This actually clears the dirty bit in the radix
pg->cp_state);
LBUG();
}
- unlock_page(vmpage);
RETURN(result);
}
enum cl_req_type crt)
{
const struct cl_page_slice *slice;
+ struct page *vmpage = cl_page->cp_vmpage;
int result = 0;
int i;
- ENTRY;
+ ENTRY;
PINVRNT(env, cl_page, crt < CRT_NR);
if (crt >= CRT_NR)
RETURN(-EINVAL);
+ lock_page(vmpage);
cl_page_slice_for_each(cl_page, slice, i) {
if (slice->cpl_ops->io[crt].cpo_make_ready != NULL)
result = (*slice->cpl_ops->io[crt].cpo_make_ready)(env, slice);
PASSERT(env, cl_page, cl_page->cp_state == CPS_CACHED);
cl_page_io_start(env, cl_page, crt);
}
+ unlock_page(vmpage);
CL_PAGE_HEADER(D_TRACE, env, cl_page, "%d %d\n", crt, result);
RETURN(result);