- struct lov_io *lio = lov_env_io(env);
-
- CL_IO_SLICE_CLEAN(lov_env_io(env), lis_cl);
-
- /* hold lsm before initializing because io relies on it */
- lio->lis_lsm = lov_lsm_addref(cl2lov(obj));
-
- /*
- * Do not take lock in case of CIT_MISC io, because
- *
- * - if this is an io for a glimpse, then we don't care;
- *
- * - if this not a glimpse (writepage or lock cancellation), then
- * layout change cannot happen because a page or a lock
- * already exist; and
- *
- * - lock ordering (lock mutex nests within layout rw-semaphore)
- * is obeyed in case of lock cancellation.
- */
- return LOV_2DISPATCH_MAYLOCK(cl2lov(obj), llo_io_init,
- io->ci_type != CIT_MISC, env, obj, io);
+ CL_IO_SLICE_CLEAN(lov_env_io(env), lis_cl);
+ return LOV_2DISPATCH_MAYLOCK(cl2lov(obj), llo_io_init,
+ !io->ci_ignore_layout, env, obj, io);