Whamcloud - gitweb
LU-15779 ofd: don't hold read lock over bulk
authorAlex Zhuravlev <bzzz@whamcloud.com>
Tue, 28 Jun 2022 22:02:47 +0000 (15:02 -0700)
committerAndreas Dilger <adilger@whamcloud.com>
Fri, 15 Jul 2022 04:26:57 +0000 (04:26 +0000)
commit1b0f3c63c7e33fe6074d39e747037a1dd350b42e
tree899f8e748bcdff1fe9afb5fef74e23688f9242e2
parent695d6a81e74ffb985c8e0b90f3c6c2071d0f1de7
LU-15779 ofd: don't hold read lock over bulk

as this can block all operations on OST:

1) ofd_preprw_read() takes a shared object lock and initiates BULK
2) OUT needs an exclusive object lock on the same object
3) ofd_commitrw_write() starts transaction and now has to wait
   for OUT to get and release that exclusive object lock (step 2)
4) number of threads can get stuck waiting for ofd_commit_write()
   to stop it's transaction

this patch drops a shared object lock before BULK transfer.
at the moment it's not clear how such read would race with
object removal on ZFS - this should be investigated.

Lustre-change: https://review.whamcloud.com/47126
Lustre-commit: 98ba50819024b908453b62fd095647442929a61f

Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I131493abd90283e9ca897f904e00c25d26e3d8d3
Reviewed-on: https://review.whamcloud.com/47824
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/ofd/ofd_io.c