summaryrefslogtreecommitdiffstats
path: root/fs/ceph/mds_client.c
diff options
context:
space:
mode:
authorYan, Zheng2015-05-07 04:59:47 +0200
committerIlya Dryomov2015-06-25 10:49:28 +0200
commit622f3e250f498976ad4cbae6f2be5cb359ded4f5 (patch)
tree57bcc161bb3c3bd0c3a71d7cb5b2ee69f4340869 /fs/ceph/mds_client.c
parentceph: take snap_rwsem when accessing snap realm's cached_context (diff)
downloadkernel-qcow2-linux-622f3e250f498976ad4cbae6f2be5cb359ded4f5.tar.gz
kernel-qcow2-linux-622f3e250f498976ad4cbae6f2be5cb359ded4f5.tar.xz
kernel-qcow2-linux-622f3e250f498976ad4cbae6f2be5cb359ded4f5.zip
ceph: don't trim auth cap when there are cap snaps
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Diffstat (limited to 'fs/ceph/mds_client.c')
-rw-r--r--fs/ceph/mds_client.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index f125e06dacb8..88010f9a254d 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -1371,7 +1371,8 @@ static int trim_caps_cb(struct inode *inode, struct ceph_cap *cap, void *arg)
inode, cap, ceph_cap_string(mine), ceph_cap_string(oissued),
ceph_cap_string(used), ceph_cap_string(wanted));
if (cap == ci->i_auth_cap) {
- if (ci->i_dirty_caps | ci->i_flushing_caps)
+ if (ci->i_dirty_caps || ci->i_flushing_caps ||
+ !list_empty(&ci->i_cap_snaps))
goto out;
if ((used | wanted) & CEPH_CAP_ANY_WR)
goto out;