Skip to content

Commit

Permalink
ceph: call handle_cap_grant() for cap import message
Browse files Browse the repository at this point in the history
If client sends cap message that requests new max size during
exporting caps, the exporting MDS will drop the message quietly.
So the client may wait for the reply that updates the max size
forever. call handle_cap_grant() for cap import message can
avoid this issue.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Signed-off-by: Sage Weil <sage@inktank.com>
  • Loading branch information
Yan, Zheng authored and Alex Elder committed Dec 13, 2012
1 parent a85f50b commit 0e5e177
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions fs/ceph/caps.c
Original file line number Diff line number Diff line change
Expand Up @@ -2751,6 +2751,7 @@ static void handle_cap_import(struct ceph_mds_client *mdsc,

/* make sure we re-request max_size, if necessary */
spin_lock(&ci->i_ceph_lock);
ci->i_wanted_max_size = 0; /* reset */
ci->i_requested_max_size = 0;
spin_unlock(&ci->i_ceph_lock);
}
Expand Down Expand Up @@ -2846,8 +2847,6 @@ void ceph_handle_caps(struct ceph_mds_session *session,
case CEPH_CAP_OP_IMPORT:
handle_cap_import(mdsc, inode, h, session,
snaptrace, snaptrace_len);
ceph_check_caps(ceph_inode(inode), 0, session);
goto done_unlocked;
}

/* the rest require a cap */
Expand All @@ -2864,6 +2863,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
switch (op) {
case CEPH_CAP_OP_REVOKE:
case CEPH_CAP_OP_GRANT:
case CEPH_CAP_OP_IMPORT:
handle_cap_grant(inode, h, session, cap, msg->middle);
goto done_unlocked;

Expand Down

0 comments on commit 0e5e177

Please sign in to comment.