-static void vvp_page_completion_common(const struct lu_env *env,
- struct ccc_page *cp, int ioret)
-{
- struct cl_page *clp = cp->cpg_cl.cpl_page;
- cfs_page_t *vmpage = cp->cpg_page;
- struct inode *inode = ccc_object_inode(clp->cp_obj);
- struct cl_sync_io *anchor = cp->cpg_sync_io;
-
- LINVRNT(cl_page_is_vmlocked(env, clp));
-
- if (anchor != NULL) {
- cp->cpg_sync_io = NULL;
- cl_sync_io_note(anchor, ioret);
- } else if (clp->cp_type == CPT_CACHEABLE) {
- /*
- * Only mark the page error only when it's a cacheable page
- * and NOT a sync io.
- *
- * For sync IO and direct IO(CPT_TRANSIENT), the error is able
- * to be seen by application, so we don't need to mark a page
- * as error at all.
- */
- vvp_vmpage_error(inode, vmpage, ioret);
- unlock_page(vmpage);
- }
-}
-