forked from Minki/linux
ceph: call handle_cap_grant() for cap import message
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>
This commit is contained in:
parent
a85f50b6ef
commit
0e5e1774a9
@ -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);
|
||||
}
|
||||
@ -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 */
|
||||
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user