Correct parallel_dio condition and unify range unlock code
block.
Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com>
Change-Id: Ib66e8def571054df5117c279e238894bc3b58bce
Reviewed-on: https://review.whamcloud.com/48000
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Yingjin Qian <qian@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
ll_cl_add(inode, env, io, LCC_RW);
rc = cl_io_loop(env, io);
ll_cl_remove(inode, env);
ll_cl_add(inode, env, io, LCC_RW);
rc = cl_io_loop(env, io);
ll_cl_remove(inode, env);
-
- if (range_locked && !is_parallel_dio) {
- CDEBUG(D_VFSTRACE, "Range unlock "RL_FMT"\n",
- RL_PARA(&range));
- range_unlock(&lli->lli_write_tree, &range);
- range_locked = false;
- }
} else {
/* cl_io_rw_init() handled IO */
rc = io->ci_result;
}
} else {
/* cl_io_rw_init() handled IO */
rc = io->ci_result;
}
+ if (io->ci_dio_aio && !is_aio) {
struct cl_sync_io *anchor = &io->ci_dio_aio->cda_sync;
/* for dio, EIOCBQUEUED is an implementation detail,
struct cl_sync_io *anchor = &io->ci_dio_aio->cda_sync;
/* for dio, EIOCBQUEUED is an implementation detail,
rc2 = cl_sync_io_wait_recycle(env, anchor, 0, 0);
if (rc2 < 0)
rc = rc2;
rc2 = cl_sync_io_wait_recycle(env, anchor, 0, 0);
if (rc2 < 0)
rc = rc2;
- if (range_locked) {
- range_unlock(&lli->lli_write_tree, &range);
+ if (range_locked) {
+ CDEBUG(D_VFSTRACE, "Range unlock "RL_FMT"\n",
+ RL_PARA(&range));
+ range_unlock(&lli->lli_write_tree, &range);