| From: Hannes Reinecke <hare@suse.de> |
| Date: Fri, 15 Sep 2017 14:05:15 +0200 |
| Subject: scsi: sg: factor out sg_fill_request_table() |
| |
| commit 4759df905a474d245752c9dc94288e779b8734dd upstream. |
| |
| Factor out sg_fill_request_table() for better readability. |
| |
| [mkp: typos, applied by hand] |
| |
| Signed-off-by: Hannes Reinecke <hare@suse.com> |
| Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/scsi/sg.c | 61 +++++++++++++++++++++++++++-------------------- |
| 1 file changed, 35 insertions(+), 26 deletions(-) |
| |
| --- a/drivers/scsi/sg.c |
| +++ b/drivers/scsi/sg.c |
| @@ -870,6 +870,40 @@ static int max_sectors_bytes(struct requ |
| return max_sectors << 9; |
| } |
| |
| +static void |
| +sg_fill_request_table(Sg_fd *sfp, sg_req_info_t *rinfo) |
| +{ |
| + Sg_request *srp; |
| + int val; |
| + unsigned int ms; |
| + |
| + val = 0; |
| + list_for_each_entry(srp, &sfp->rq_list, entry) { |
| + if (val > SG_MAX_QUEUE) |
| + break; |
| + memset(&rinfo[val], 0, SZ_SG_REQ_INFO); |
| + rinfo[val].req_state = srp->done + 1; |
| + rinfo[val].problem = |
| + srp->header.masked_status & |
| + srp->header.host_status & |
| + srp->header.driver_status; |
| + if (srp->done) |
| + rinfo[val].duration = |
| + srp->header.duration; |
| + else { |
| + ms = jiffies_to_msecs(jiffies); |
| + rinfo[val].duration = |
| + (ms > srp->header.duration) ? |
| + (ms - srp->header.duration) : 0; |
| + } |
| + rinfo[val].orphan = srp->orphan; |
| + rinfo[val].sg_io_owned = srp->sg_io_owned; |
| + rinfo[val].pack_id = srp->header.pack_id; |
| + rinfo[val].usr_ptr = srp->header.usr_ptr; |
| + val++; |
| + } |
| +} |
| + |
| static long |
| sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg) |
| { |
| @@ -1063,38 +1097,13 @@ sg_ioctl(struct file *filp, unsigned int |
| return -EFAULT; |
| else { |
| sg_req_info_t *rinfo; |
| - unsigned int ms; |
| |
| rinfo = kmalloc(SZ_SG_REQ_INFO * SG_MAX_QUEUE, |
| GFP_KERNEL); |
| if (!rinfo) |
| return -ENOMEM; |
| read_lock_irqsave(&sfp->rq_list_lock, iflags); |
| - val = 0; |
| - list_for_each_entry(srp, &sfp->rq_list, entry) { |
| - if (val >= SG_MAX_QUEUE) |
| - break; |
| - memset(&rinfo[val], 0, SZ_SG_REQ_INFO); |
| - rinfo[val].req_state = srp->done + 1; |
| - rinfo[val].problem = |
| - srp->header.masked_status & |
| - srp->header.host_status & |
| - srp->header.driver_status; |
| - if (srp->done) |
| - rinfo[val].duration = |
| - srp->header.duration; |
| - else { |
| - ms = jiffies_to_msecs(jiffies); |
| - rinfo[val].duration = |
| - (ms > srp->header.duration) ? |
| - (ms - srp->header.duration) : 0; |
| - } |
| - rinfo[val].orphan = srp->orphan; |
| - rinfo[val].sg_io_owned = srp->sg_io_owned; |
| - rinfo[val].pack_id = srp->header.pack_id; |
| - rinfo[val].usr_ptr = srp->header.usr_ptr; |
| - val++; |
| - } |
| + sg_fill_request_table(sfp, rinfo); |
| read_unlock_irqrestore(&sfp->rq_list_lock, iflags); |
| result = __copy_to_user(p, rinfo, |
| SZ_SG_REQ_INFO * SG_MAX_QUEUE); |