Whamcloud - gitweb
LU-15811 llite: Unify range unlock
authorPatrick Farrell <pfarrell@whamcloud.com>
Wed, 20 Jul 2022 16:46:21 +0000 (12:46 -0400)
committerAndreas Dilger <adilger@whamcloud.com>
Fri, 26 Aug 2022 17:06:23 +0000 (17:06 +0000)
Correct parallel_dio condition and unify range unlock code
block.

Lustre-change: https://review.whamcloud.com/48000/
Lustre-commit: 84064c8e8112aed2e49d2dcd6b4f1c6a21770261 (tbd)

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

index b8f4f56..c6d6d31 100644 (file)
@@ -1745,19 +1745,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,
@@ -1774,11 +1767,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;
-               }
        }
 
        /*