diff options
| author | Sage Weil <sage@newdream.net> | 2010-11-07 12:39:00 -0500 |
|---|---|---|
| committer | Sage Weil <sage@newdream.net> | 2010-11-07 12:39:23 -0500 |
| commit | feb4cc9bb433bf1491ac5ffbba133f3258dacf06 (patch) | |
| tree | 6339043d3fd867683459d9dc33f146b2f7e37d75 | |
| parent | 912a9b0319a8eb9e0834b19a25e01013ab2d6a9f (diff) | |
ceph: re-request max_size if cap auth changes
If the auth cap migrates to another MDS, clear requested_max_size so that
we resend any pending max_size increase requests. This fixes potential
hangs on writes that extend a file and race with an cap migration between
MDSs.
Signed-off-by: Sage Weil <sage@newdream.net>
| -rw-r--r-- | fs/ceph/caps.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 6e0942f33dd8..04b207b0c842 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c | |||
| @@ -2689,6 +2689,11 @@ static void handle_cap_import(struct ceph_mds_client *mdsc, | |||
| 2689 | NULL /* no caps context */); | 2689 | NULL /* no caps context */); |
| 2690 | try_flush_caps(inode, session, NULL); | 2690 | try_flush_caps(inode, session, NULL); |
| 2691 | up_read(&mdsc->snap_rwsem); | 2691 | up_read(&mdsc->snap_rwsem); |
| 2692 | |||
| 2693 | /* make sure we re-request max_size, if necessary */ | ||
| 2694 | spin_lock(&inode->i_lock); | ||
| 2695 | ci->i_requested_max_size = 0; | ||
| 2696 | spin_unlock(&inode->i_lock); | ||
| 2692 | } | 2697 | } |
| 2693 | 2698 | ||
| 2694 | /* | 2699 | /* |
