Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 136261
b: refs/heads/master
c: c96952e
h: refs/heads/master
i:
  136259: b3039d9
v: v3
  • Loading branch information
FUJITA Tomonori authored and James Bottomley committed Mar 12, 2009
1 parent 241bf56 commit 56ed92a
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a3b7aeaba29e3dd995ece05ba50db9e0650c16b6
refs/heads/master: c96952ed7031e7c576ecf90cf95b8ec099d5295a
15 changes: 12 additions & 3 deletions trunk/drivers/scsi/sg.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ typedef struct sg_request { /* SG_MAX_QUEUE requests outstanding per file */
volatile char done; /* 0->before bh, 1->before read, 2->read */
struct request *rq;
struct bio *bio;
struct execute_work ew;
} Sg_request;

typedef struct sg_fd { /* holds the state of a file descriptor */
Expand Down Expand Up @@ -1234,6 +1235,15 @@ sg_mmap(struct file *filp, struct vm_area_struct *vma)
return 0;
}

static void sg_rq_end_io_usercontext(struct work_struct *work)
{
struct sg_request *srp = container_of(work, struct sg_request, ew.work);
struct sg_fd *sfp = srp->parentfp;

sg_finish_rem_req(srp);
kref_put(&sfp->f_ref, sg_remove_sfp);
}

/*
* This function is a "bottom half" handler that is called by the mid
* level when a command is completed (or has failed).
Expand Down Expand Up @@ -1312,10 +1322,9 @@ static void sg_rq_end_io(struct request *rq, int uptodate)
*/
wake_up_interruptible(&sfp->read_wait);
kill_fasync(&sfp->async_qp, SIGPOLL, POLL_IN);
kref_put(&sfp->f_ref, sg_remove_sfp);
} else
sg_finish_rem_req(srp); /* call with srp->done == 0 */

kref_put(&sfp->f_ref, sg_remove_sfp);
execute_in_process_context(sg_rq_end_io_usercontext, &srp->ew);
}

static struct file_operations sg_fops = {
Expand Down

0 comments on commit 56ed92a

Please sign in to comment.