ceph: fix wake_up_session_cb()
authorYan, Zheng <zyan@redhat.com>
Thu, 19 May 2016 11:15:19 +0000 (19:15 +0800)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 25 May 2016 23:15:42 +0000 (01:15 +0200)
We should reset i_requested_max_size before waking the waiters.
(zero i_requested_max_size make waiter re-request the max size)

Signed-off-by: Yan, Zheng <zyan@redhat.com>
fs/ceph/mds_client.c

index 7ad31283d510bf8036c7160e85f262da4a417eae..2103b823bec0786aa60e48fa3957f252d5010017 100644 (file)
@@ -1258,13 +1258,13 @@ static int wake_up_session_cb(struct inode *inode, struct ceph_cap *cap,
 {
        struct ceph_inode_info *ci = ceph_inode(inode);
 
-       wake_up_all(&ci->i_cap_wq);
        if (arg) {
                spin_lock(&ci->i_ceph_lock);
                ci->i_wanted_max_size = 0;
                ci->i_requested_max_size = 0;
                spin_unlock(&ci->i_ceph_lock);
        }
+       wake_up_all(&ci->i_cap_wq);
        return 0;
 }