- _env = cl_env_get(refcheck);
- if (!IS_ERR(env)) {
- struct ccc_io *cio = ccc_env_io(_env);
-
- *env = _env;
- *io = _io = cio->cui_cl.cis_io;
- if (_io != NULL) {
- LASSERT(_io->ci_state == CIS_IO_GOING);
- LASSERT(cio->cui_fd == LUSTRE_FPRIVATE(file));
- _page = cl_page_find(_env, clob, vmpage->index, vmpage,
- CPT_CACHEABLE);
- if (!IS_ERR(_page)) {
- *page = _page;
- lu_ref_add(&_page->cp_reference, "cl_io", _io);
- result = 0;
- } else
- result = PTR_ERR(_page);
- } else
- /*
- * This is for a case where operation can be called
- * either with or without cl_io created by the upper
- * layer (e.g., ->prepare_write() called directly from
- * loop-back driver).
- */
- result = -EALREADY;
- } else
- result = PTR_ERR(_env);
- CDEBUG(D_VFSTRACE, "%lu@"DFID" -> %i %p %p %p\n",
- vmpage->index, PFID(lu_object_fid(&clob->co_lu)), result,
- *env, *io, *page);
- return result;
-}