Loading fs/ceph/dir.c +4 −10 Original line number Diff line number Diff line Loading @@ -1257,17 +1257,11 @@ static int ceph_dir_fsync(struct file *file, loff_t start, loff_t end, dout("dir_fsync %p wait on tid %llu (until %llu)\n", inode, req->r_tid, last_tid); if (req->r_timeout) { unsigned long time_left = wait_for_completion_timeout( &req->r_safe_completion, ret = !wait_for_completion_timeout(&req->r_safe_completion, ceph_timeout_jiffies(req->r_timeout)); if (time_left > 0) ret = 0; else if (ret) ret = -EIO; /* timed out */ } else { wait_for_completion(&req->r_safe_completion); } ceph_mdsc_put_request(req); spin_lock(&ci->i_unsafe_lock); Loading fs/ceph/mds_client.c +10 −8 Original line number Diff line number Diff line Loading @@ -2266,16 +2266,18 @@ int ceph_mdsc_do_request(struct ceph_mds_client *mdsc, /* wait */ mutex_unlock(&mdsc->mutex); dout("do_request waiting\n"); if (req->r_timeout) { err = (long)wait_for_completion_killable_timeout( &req->r_completion, ceph_timeout_jiffies(req->r_timeout)); if (err == 0) err = -EIO; } else if (req->r_wait_for_completion) { if (!req->r_timeout && req->r_wait_for_completion) { err = req->r_wait_for_completion(mdsc, req); } else { err = wait_for_completion_killable(&req->r_completion); long timeleft = wait_for_completion_killable_timeout( &req->r_completion, ceph_timeout_jiffies(req->r_timeout)); if (timeleft > 0) err = 0; else if (!timeleft) err = -EIO; /* timed out */ else err = timeleft; /* killed */ } dout("do_request waited, got %d\n", err); mutex_lock(&mdsc->mutex); Loading Loading
fs/ceph/dir.c +4 −10 Original line number Diff line number Diff line Loading @@ -1257,17 +1257,11 @@ static int ceph_dir_fsync(struct file *file, loff_t start, loff_t end, dout("dir_fsync %p wait on tid %llu (until %llu)\n", inode, req->r_tid, last_tid); if (req->r_timeout) { unsigned long time_left = wait_for_completion_timeout( &req->r_safe_completion, ret = !wait_for_completion_timeout(&req->r_safe_completion, ceph_timeout_jiffies(req->r_timeout)); if (time_left > 0) ret = 0; else if (ret) ret = -EIO; /* timed out */ } else { wait_for_completion(&req->r_safe_completion); } ceph_mdsc_put_request(req); spin_lock(&ci->i_unsafe_lock); Loading
fs/ceph/mds_client.c +10 −8 Original line number Diff line number Diff line Loading @@ -2266,16 +2266,18 @@ int ceph_mdsc_do_request(struct ceph_mds_client *mdsc, /* wait */ mutex_unlock(&mdsc->mutex); dout("do_request waiting\n"); if (req->r_timeout) { err = (long)wait_for_completion_killable_timeout( &req->r_completion, ceph_timeout_jiffies(req->r_timeout)); if (err == 0) err = -EIO; } else if (req->r_wait_for_completion) { if (!req->r_timeout && req->r_wait_for_completion) { err = req->r_wait_for_completion(mdsc, req); } else { err = wait_for_completion_killable(&req->r_completion); long timeleft = wait_for_completion_killable_timeout( &req->r_completion, ceph_timeout_jiffies(req->r_timeout)); if (timeleft > 0) err = 0; else if (!timeleft) err = -EIO; /* timed out */ else err = timeleft; /* killed */ } dout("do_request waited, got %d\n", err); mutex_lock(&mdsc->mutex); Loading