diff options
author | Yan, Zheng <zyan@redhat.com> | 2017-12-19 11:00:54 +0100 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2018-01-29 18:36:09 +0100 |
commit | 7d9c9193b5d0b1b806f453a3baa9bfe7e6fac52d (patch) | |
tree | c25913f90e6e3af08160c72b9018afe0726effa2 /fs/ceph/snap.c | |
parent | ceph: fix un-balanced fsc->writeback_count update (diff) | |
download | linux-7d9c9193b5d0b1b806f453a3baa9bfe7e6fac52d.tar.xz linux-7d9c9193b5d0b1b806f453a3baa9bfe7e6fac52d.zip |
ceph: fix incorrect snaprealm when adding caps
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph/snap.c')
-rw-r--r-- | fs/ceph/snap.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c index 8a2ca41e4b97..07cf95e6413d 100644 --- a/fs/ceph/snap.c +++ b/fs/ceph/snap.c @@ -922,13 +922,17 @@ void ceph_handle_snap(struct ceph_mds_client *mdsc, /* * Move the inode to the new realm */ - spin_lock(&realm->inodes_with_caps_lock); + oldrealm = ci->i_snap_realm; + spin_lock(&oldrealm->inodes_with_caps_lock); list_del_init(&ci->i_snap_realm_item); + spin_unlock(&oldrealm->inodes_with_caps_lock); + + spin_lock(&realm->inodes_with_caps_lock); list_add(&ci->i_snap_realm_item, &realm->inodes_with_caps); - oldrealm = ci->i_snap_realm; ci->i_snap_realm = realm; spin_unlock(&realm->inodes_with_caps_lock); + spin_unlock(&ci->i_ceph_lock); ceph_get_snap_realm(mdsc, realm); |