]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - fs/ceph/file.c
ceph: remove request from unsafe list if it is canceled/timed out
[mirror_ubuntu-artful-kernel.git] / fs / ceph / file.c
index 7d0e4a82d898a83f2695eead6ffc767689ffe140..db5d863097448d5cb8bf0a589bc9364b22d48358 100644 (file)
@@ -568,7 +568,14 @@ more:
                        spin_unlock(&ci->i_unsafe_lock);
                        ceph_get_cap_refs(ci, CEPH_CAP_FILE_WR);
                }
+               
                ret = ceph_osdc_wait_request(&fsc->client->osdc, req);
+               if (ret < 0 && req->r_safe_callback) {
+                       spin_lock(&ci->i_unsafe_lock);
+                       list_del_init(&req->r_unsafe_item);
+                       spin_unlock(&ci->i_unsafe_lock);
+                       ceph_put_cap_refs(ci, CEPH_CAP_FILE_WR);
+               }
        }
 
        if (file->f_flags & O_DIRECT)