Whamcloud - gitweb
LU-15811 llite: Unify range unlock 55/48455/2
authorPatrick Farrell <pfarrell@whamcloud.com>
Wed, 7 Sep 2022 17:32:32 +0000 (10:32 -0700)
committerOleg Drokin <green@whamcloud.com>
Sat, 17 Sep 2022 07:28:42 +0000 (07:28 +0000)
Correct parallel_dio condition and unify range unlock code
block.

Lustre-change: https://review.whamcloud.com/48000
Lustre-commit: 36c34af60767bd5da5e9a66df0297e1dc7fa1fb1

Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com>
Change-Id: Ib66e8def571054df5117c279e238894bc3b58bce
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Yingjin Qian <qian@ddn.com>
Reviewed-on: https://review.whamcloud.com/48455
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/llite/file.c

index c8ec4e5..2df083a 100644 (file)
@@ -1730,19 +1730,12 @@ restart:
                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;
        }
 
-       if (is_parallel_dio) {
+       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,
@@ -1759,11 +1752,13 @@ restart:
                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);
                        range_locked = false;
-               }
        }
 
        /*