{
struct inode *inode = file_inode(file);
struct ll_inode_info *lli = ll_i2info(inode);
- struct vvp_io_args *args;
- struct kiocb kiocb;
struct lu_env *env;
struct cl_io *io;
__u16 refcheck;
/* XXX: ignore PCC for a while */
if (lli->lli_pcc_inode || lli->lli_pcc_generation)
RETURN(0);
- init_sync_kiocb(&kiocb, file);
- kiocb.ki_pos = off;
-#ifdef HAVE_KIOCB_KI_LEFT
- kiocb.ki_left = 4096;
-#elif defined(HAVE_KI_NBYTES)
- kiocb.ki_nbytes = 4096;
-#endif
-
- env = cl_env_get(&refcheck);
- if (IS_ERR(env))
- RETURN(PTR_ERR(env));
- io = vvp_env_thread_io(env);
-
- args = ll_env_args(env);
- args->u.normal.via_iter = NULL;
- args->u.normal.via_iocb = &kiocb;
- ll_io_init(io, file, CIT_FAULT, args);
-
- io->ci_dio_aio = NULL;
- io->ci_dio_lock = 0;
- io->ci_ndelay_tried = 0;
- io->ci_parallel_dio = false;
+ rc = cl_io_get(inode, &env, &io, &refcheck);
+ if (rc <= 0)
+ RETURN(rc);
- rc = cl_io_rw_init(env, io, CIT_FAULT, off, 4096);
+ rc = cl_io_init(env, io, CIT_MISC, lli->lli_clob);
if (rc == 0) {
if (io->ci_compressed_io)
rc = -EOPNOTSUPP;
} else if (rc == 1 || rc == -ENODATA) {
rc = 0;
} else {
- CERROR("%s: "DFID" cl_io_rw_init() failed: rc = %d\n",
+ CERROR("%s: "DFID" cl_io_init() failed: rc = %d\n",
ll_i2sbi(inode)->ll_fsname, PFID(&lli->lli_fid), rc);
}
int cl_io_rw_init(const struct lu_env *env, struct cl_io *io,
enum cl_io_type iot, loff_t pos, size_t count)
{
- LINVRNT(iot == CIT_READ || iot == CIT_WRITE);
- LINVRNT(io->ci_obj != NULL);
+ LASSERT(iot == CIT_READ || iot == CIT_WRITE);
+ LASSERT(io->ci_obj != NULL);
ENTRY;
LU_OBJECT_HEADER(D_VFSTRACE, env, &io->ci_obj->co_lu,