]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
mds: suppress frozen inode when locks of dir operation is cached.
authorYan, Zheng <zyan@redhat.com>
Mon, 30 Sep 2019 06:20:17 +0000 (14:20 +0800)
committerYan, Zheng <zyan@redhat.com>
Thu, 12 Dec 2019 18:04:13 +0000 (02:04 +0800)
commit9dfef48f8584fcf61c6f95e41df537ea5b0693b7
treeb9feeeba42ae1b5993df0e96e15689cac562db2d
parent6d70cee1566d33fc6b7c128c23ba6c680c710d3a
mds: suppress frozen inode when locks of dir operation is cached.

Frozen inode in directory with lock caches may cause ABBA deadlock. The
requeset that owns the frozen inode can't get locks because lock cache
is holding conflicting locks. The request that uses lock cache can't
auth pin the frozen inode.

The solution is not creating lock cache when directory contains freezing
or frozen inode. When mds starts freezing an inode, invalidate all lock
caches on its parent directory.

Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
src/mds/CDir.cc
src/mds/CDir.h
src/mds/CInode.cc
src/mds/CInode.h
src/mds/Locker.cc