static int slp_io_init(const struct lu_env *env, struct cl_object *obj, struct cl_io *io) { struct ccc_io *vio = ccc_env_io(env); int result = 0; CLOBINVRNT(env, obj, ccc_object_invariant(obj)); cl_io_slice_add(io, &vio->cui_cl, obj, &ccc_io_ops); if (io->ci_type == CIT_READ || io->ci_type == CIT_WRITE) { size_t count; count = io->u.ci_rw.crw_count; /* "If nbyte is 0, read() will return 0 and have no other * results." -- Single Unix Spec */ if (count == 0) result = 1; else { vio->cui_tot_count = count; vio->cui_tot_nrsegs = 0; } } return result; }
int osc_io_init(const struct lu_env *env, struct cl_object *obj, struct cl_io *io) { struct osc_io *oio = osc_env_io(env); CL_IO_SLICE_CLEAN(oio, oi_cl); cl_io_slice_add(io, &oio->oi_cl, obj, &osc_io_ops); return 0; }