fuse: simplify request_wait()
wait_event_interruptible_exclusive_locked() will do everything request_wait() does, so replace it. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Reviewed-by: Ashish Samant <ashish.samant@oracle.com>
This commit is contained in:
parent
fd22d62ed0
commit
5250921bb0
1 changed files with 5 additions and 25 deletions
|
@ -1072,27 +1072,6 @@ static int request_pending(struct fuse_iqueue *fiq)
|
|||
forget_pending(fiq);
|
||||
}
|
||||
|
||||
/* Wait until a request is available on the pending list */
|
||||
static void request_wait(struct fuse_iqueue *fiq)
|
||||
__releases(fiq->waitq.lock)
|
||||
__acquires(fiq->waitq.lock)
|
||||
{
|
||||
DECLARE_WAITQUEUE(wait, current);
|
||||
|
||||
add_wait_queue_exclusive(&fiq->waitq, &wait);
|
||||
while (fiq->connected && !request_pending(fiq)) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
if (signal_pending(current))
|
||||
break;
|
||||
|
||||
spin_unlock(&fiq->waitq.lock);
|
||||
schedule();
|
||||
spin_lock(&fiq->waitq.lock);
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(&fiq->waitq, &wait);
|
||||
}
|
||||
|
||||
/*
|
||||
* Transfer an interrupt request to userspace
|
||||
*
|
||||
|
@ -1272,13 +1251,14 @@ static ssize_t fuse_dev_do_read(struct fuse_conn *fc, struct file *file,
|
|||
!request_pending(fiq))
|
||||
goto err_unlock;
|
||||
|
||||
request_wait(fiq);
|
||||
err = wait_event_interruptible_exclusive_locked(fiq->waitq,
|
||||
!fiq->connected || request_pending(fiq));
|
||||
if (err)
|
||||
goto err_unlock;
|
||||
|
||||
err = -ENODEV;
|
||||
if (!fiq->connected)
|
||||
goto err_unlock;
|
||||
err = -ERESTARTSYS;
|
||||
if (!request_pending(fiq))
|
||||
goto err_unlock;
|
||||
|
||||
if (!list_empty(&fiq->interrupts)) {
|
||||
req = list_entry(fiq->interrupts.next, struct fuse_req,
|
||||
|
|
Loading…
Reference in a new issue