Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 978097c9 authored by Sage Weil's avatar Sage Weil
Browse files

ceph: implemented caps should always be superset of issued caps



Added assertion, and cleared one case where the implemented caps were
not following the issued caps.

Signed-off-by: default avatarYehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: default avatarSage Weil <sage@newdream.net>
parent 220bf991
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2334,6 +2334,7 @@ static int handle_cap_grant(struct inode *inode, struct ceph_mds_caps *grant,
			   revoked_rdcache)
			reply = 2;     /* send revoke ack in check_caps */
		cap->issued = newcaps;
		cap->implemented |= newcaps;
	} else if (cap->issued == newcaps) {
		dout("caps unchanged: %s -> %s\n",
		     ceph_cap_string(cap->issued), ceph_cap_string(newcaps));
@@ -2346,6 +2347,7 @@ static int handle_cap_grant(struct inode *inode, struct ceph_mds_caps *grant,
					      * pending revocation */
		wake = 1;
	}
	BUG_ON(cap->issued & ~cap->implemented);

	spin_unlock(&inode->i_lock);
	if (writeback)