diff options
author | Hannes Reinecke <hare@suse.de> | 2014-06-25 10:39:55 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-07-17 16:07:40 -0400 |
commit | 95e159d6dd808b2c28de1790e451e9bfb1176002 (patch) | |
tree | 1b23cf3d4bb335e4f72e30f10d27e6d34577f765 /drivers/scsi/sg.c | |
parent | 96eefad2d9e5a0d988cdfee85193b6154c0ae1d2 (diff) |
scsi: Implement sg_printk()
Update the sg driver to use dev_printk() variants instead of
plain printk(); this will prefix logging messages with the
appropriate device.
Signed-off-by: Hannes Reinecke <hare@suse.de>
Acked-by: Doug Gilbert <dgilbert@interlog.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/scsi/sg.c')
-rw-r--r-- | drivers/scsi/sg.c | 163 |
1 files changed, 95 insertions, 68 deletions
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index 1de183d72598..7a291f5c7227 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c | |||
@@ -200,11 +200,11 @@ static ssize_t sg_new_write(Sg_fd *sfp, struct file *file, | |||
200 | static int sg_common_write(Sg_fd * sfp, Sg_request * srp, | 200 | static int sg_common_write(Sg_fd * sfp, Sg_request * srp, |
201 | unsigned char *cmnd, int timeout, int blocking); | 201 | unsigned char *cmnd, int timeout, int blocking); |
202 | static int sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer); | 202 | static int sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer); |
203 | static void sg_remove_scat(Sg_scatter_hold * schp); | 203 | static void sg_remove_scat(Sg_fd * sfp, Sg_scatter_hold * schp); |
204 | static void sg_build_reserve(Sg_fd * sfp, int req_size); | 204 | static void sg_build_reserve(Sg_fd * sfp, int req_size); |
205 | static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size); | 205 | static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size); |
206 | static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp); | 206 | static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp); |
207 | static Sg_fd *sg_add_sfp(Sg_device * sdp, int dev); | 207 | static Sg_fd *sg_add_sfp(Sg_device * sdp); |
208 | static void sg_remove_sfp(struct kref *); | 208 | static void sg_remove_sfp(struct kref *); |
209 | static Sg_request *sg_get_rq_mark(Sg_fd * sfp, int pack_id); | 209 | static Sg_request *sg_get_rq_mark(Sg_fd * sfp, int pack_id); |
210 | static Sg_request *sg_add_request(Sg_fd * sfp); | 210 | static Sg_request *sg_add_request(Sg_fd * sfp); |
@@ -218,6 +218,10 @@ static void sg_device_destroy(struct kref *kref); | |||
218 | #define SZ_SG_IOVEC sizeof(sg_iovec_t) | 218 | #define SZ_SG_IOVEC sizeof(sg_iovec_t) |
219 | #define SZ_SG_REQ_INFO sizeof(sg_req_info_t) | 219 | #define SZ_SG_REQ_INFO sizeof(sg_req_info_t) |
220 | 220 | ||
221 | #define sg_printk(prefix, sdp, fmt, a...) \ | ||
222 | sdev_printk(prefix, (sdp)->device, "[%s] " fmt, \ | ||
223 | (sdp)->disk->disk_name, ##a) | ||
224 | |||
221 | static int sg_allow_access(struct file *filp, unsigned char *cmd) | 225 | static int sg_allow_access(struct file *filp, unsigned char *cmd) |
222 | { | 226 | { |
223 | struct sg_fd *sfp = filp->private_data; | 227 | struct sg_fd *sfp = filp->private_data; |
@@ -276,13 +280,15 @@ sg_open(struct inode *inode, struct file *filp) | |||
276 | int retval; | 280 | int retval; |
277 | 281 | ||
278 | nonseekable_open(inode, filp); | 282 | nonseekable_open(inode, filp); |
279 | SCSI_LOG_TIMEOUT(3, printk("sg_open: dev=%d, flags=0x%x\n", dev, flags)); | ||
280 | if ((flags & O_EXCL) && (O_RDONLY == (flags & O_ACCMODE))) | 283 | if ((flags & O_EXCL) && (O_RDONLY == (flags & O_ACCMODE))) |
281 | return -EPERM; /* Can't lock it with read only access */ | 284 | return -EPERM; /* Can't lock it with read only access */ |
282 | sdp = sg_get_dev(dev); | 285 | sdp = sg_get_dev(dev); |
283 | if (IS_ERR(sdp)) | 286 | if (IS_ERR(sdp)) |
284 | return PTR_ERR(sdp); | 287 | return PTR_ERR(sdp); |
285 | 288 | ||
289 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, | ||
290 | "sg_open: flags=0x%x\n", flags)); | ||
291 | |||
286 | /* This driver's module count bumped by fops_get in <linux/fs.h> */ | 292 | /* This driver's module count bumped by fops_get in <linux/fs.h> */ |
287 | /* Prevent the device driver from vanishing while we sleep */ | 293 | /* Prevent the device driver from vanishing while we sleep */ |
288 | retval = scsi_device_get(sdp->device); | 294 | retval = scsi_device_get(sdp->device); |
@@ -331,7 +337,7 @@ sg_open(struct inode *inode, struct file *filp) | |||
331 | q = sdp->device->request_queue; | 337 | q = sdp->device->request_queue; |
332 | sdp->sg_tablesize = queue_max_segments(q); | 338 | sdp->sg_tablesize = queue_max_segments(q); |
333 | } | 339 | } |
334 | sfp = sg_add_sfp(sdp, dev); | 340 | sfp = sg_add_sfp(sdp); |
335 | if (IS_ERR(sfp)) { | 341 | if (IS_ERR(sfp)) { |
336 | retval = PTR_ERR(sfp); | 342 | retval = PTR_ERR(sfp); |
337 | goto out_undo; | 343 | goto out_undo; |
@@ -370,7 +376,7 @@ sg_release(struct inode *inode, struct file *filp) | |||
370 | 376 | ||
371 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) | 377 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) |
372 | return -ENXIO; | 378 | return -ENXIO; |
373 | SCSI_LOG_TIMEOUT(3, printk("sg_release: %s\n", sdp->disk->disk_name)); | 379 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, "sg_release\n")); |
374 | 380 | ||
375 | mutex_lock(&sdp->open_rel_lock); | 381 | mutex_lock(&sdp->open_rel_lock); |
376 | scsi_autopm_put_device(sdp->device); | 382 | scsi_autopm_put_device(sdp->device); |
@@ -402,8 +408,8 @@ sg_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos) | |||
402 | 408 | ||
403 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) | 409 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) |
404 | return -ENXIO; | 410 | return -ENXIO; |
405 | SCSI_LOG_TIMEOUT(3, printk("sg_read: %s, count=%d\n", | 411 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, |
406 | sdp->disk->disk_name, (int) count)); | 412 | "sg_read: count=%d\n", (int) count)); |
407 | 413 | ||
408 | if (!access_ok(VERIFY_WRITE, buf, count)) | 414 | if (!access_ok(VERIFY_WRITE, buf, count)) |
409 | return -EFAULT; | 415 | return -EFAULT; |
@@ -588,8 +594,8 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
588 | 594 | ||
589 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) | 595 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) |
590 | return -ENXIO; | 596 | return -ENXIO; |
591 | SCSI_LOG_TIMEOUT(3, printk("sg_write: %s, count=%d\n", | 597 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, |
592 | sdp->disk->disk_name, (int) count)); | 598 | "sg_write: count=%d\n", (int) count)); |
593 | if (atomic_read(&sdp->detaching)) | 599 | if (atomic_read(&sdp->detaching)) |
594 | return -ENODEV; | 600 | return -ENODEV; |
595 | if (!((filp->f_flags & O_NONBLOCK) || | 601 | if (!((filp->f_flags & O_NONBLOCK) || |
@@ -610,7 +616,8 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
610 | return -EIO; /* The minimum scsi command length is 6 bytes. */ | 616 | return -EIO; /* The minimum scsi command length is 6 bytes. */ |
611 | 617 | ||
612 | if (!(srp = sg_add_request(sfp))) { | 618 | if (!(srp = sg_add_request(sfp))) { |
613 | SCSI_LOG_TIMEOUT(1, printk("sg_write: queue full\n")); | 619 | SCSI_LOG_TIMEOUT(1, sg_printk(KERN_INFO, sdp, |
620 | "sg_write: queue full\n")); | ||
614 | return -EDOM; | 621 | return -EDOM; |
615 | } | 622 | } |
616 | buf += SZ_SG_HEADER; | 623 | buf += SZ_SG_HEADER; |
@@ -623,7 +630,7 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
623 | if ((opcode >= 0xc0) && old_hdr.twelve_byte) | 630 | if ((opcode >= 0xc0) && old_hdr.twelve_byte) |
624 | cmd_size = 12; | 631 | cmd_size = 12; |
625 | } | 632 | } |
626 | SCSI_LOG_TIMEOUT(4, printk( | 633 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sdp, |
627 | "sg_write: scsi opcode=0x%02x, cmd_size=%d\n", (int) opcode, cmd_size)); | 634 | "sg_write: scsi opcode=0x%02x, cmd_size=%d\n", (int) opcode, cmd_size)); |
628 | /* Determine buffer size. */ | 635 | /* Determine buffer size. */ |
629 | input_size = count - cmd_size; | 636 | input_size = count - cmd_size; |
@@ -698,7 +705,8 @@ sg_new_write(Sg_fd *sfp, struct file *file, const char __user *buf, | |||
698 | 705 | ||
699 | sfp->cmd_q = 1; /* when sg_io_hdr seen, set command queuing on */ | 706 | sfp->cmd_q = 1; /* when sg_io_hdr seen, set command queuing on */ |
700 | if (!(srp = sg_add_request(sfp))) { | 707 | if (!(srp = sg_add_request(sfp))) { |
701 | SCSI_LOG_TIMEOUT(1, printk("sg_new_write: queue full\n")); | 708 | SCSI_LOG_TIMEOUT(1, sg_printk(KERN_INFO, sfp->parentdp, |
709 | "sg_new_write: queue full\n")); | ||
702 | return -EDOM; | 710 | return -EDOM; |
703 | } | 711 | } |
704 | srp->sg_io_owned = sg_io_owned; | 712 | srp->sg_io_owned = sg_io_owned; |
@@ -767,12 +775,14 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp, | |||
767 | hp->host_status = 0; | 775 | hp->host_status = 0; |
768 | hp->driver_status = 0; | 776 | hp->driver_status = 0; |
769 | hp->resid = 0; | 777 | hp->resid = 0; |
770 | SCSI_LOG_TIMEOUT(4, printk("sg_common_write: scsi opcode=0x%02x, cmd_size=%d\n", | 778 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp, |
771 | (int) cmnd[0], (int) hp->cmd_len)); | 779 | "sg_common_write: scsi opcode=0x%02x, cmd_size=%d\n", |
780 | (int) cmnd[0], (int) hp->cmd_len)); | ||
772 | 781 | ||
773 | k = sg_start_req(srp, cmnd); | 782 | k = sg_start_req(srp, cmnd); |
774 | if (k) { | 783 | if (k) { |
775 | SCSI_LOG_TIMEOUT(1, printk("sg_common_write: start_req err=%d\n", k)); | 784 | SCSI_LOG_TIMEOUT(1, sg_printk(KERN_INFO, sfp->parentdp, |
785 | "sg_common_write: start_req err=%d\n", k)); | ||
776 | sg_finish_rem_req(srp); | 786 | sg_finish_rem_req(srp); |
777 | return k; /* probably out of space --> ENOMEM */ | 787 | return k; /* probably out of space --> ENOMEM */ |
778 | } | 788 | } |
@@ -846,8 +856,8 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg) | |||
846 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) | 856 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) |
847 | return -ENXIO; | 857 | return -ENXIO; |
848 | 858 | ||
849 | SCSI_LOG_TIMEOUT(3, printk("sg_ioctl: %s, cmd=0x%x\n", | 859 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, |
850 | sdp->disk->disk_name, (int) cmd_in)); | 860 | "sg_ioctl: cmd=0x%x\n", (int) cmd_in)); |
851 | read_only = (O_RDWR != (filp->f_flags & O_ACCMODE)); | 861 | read_only = (O_RDWR != (filp->f_flags & O_ACCMODE)); |
852 | 862 | ||
853 | switch (cmd_in) { | 863 | switch (cmd_in) { |
@@ -899,7 +909,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg) | |||
899 | sfp->low_dma = 1; | 909 | sfp->low_dma = 1; |
900 | if ((0 == sfp->low_dma) && (0 == sg_res_in_use(sfp))) { | 910 | if ((0 == sfp->low_dma) && (0 == sg_res_in_use(sfp))) { |
901 | val = (int) sfp->reserve.bufflen; | 911 | val = (int) sfp->reserve.bufflen; |
902 | sg_remove_scat(&sfp->reserve); | 912 | sg_remove_scat(sfp, &sfp->reserve); |
903 | sg_build_reserve(sfp, val); | 913 | sg_build_reserve(sfp, val); |
904 | } | 914 | } |
905 | } else { | 915 | } else { |
@@ -975,7 +985,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg) | |||
975 | if (val != sfp->reserve.bufflen) { | 985 | if (val != sfp->reserve.bufflen) { |
976 | if (sg_res_in_use(sfp) || sfp->mmap_called) | 986 | if (sg_res_in_use(sfp) || sfp->mmap_called) |
977 | return -EBUSY; | 987 | return -EBUSY; |
978 | sg_remove_scat(&sfp->reserve); | 988 | sg_remove_scat(sfp, &sfp->reserve); |
979 | sg_build_reserve(sfp, val); | 989 | sg_build_reserve(sfp, val); |
980 | } | 990 | } |
981 | return 0; | 991 | return 0; |
@@ -1198,8 +1208,8 @@ sg_poll(struct file *filp, poll_table * wait) | |||
1198 | res |= POLLOUT | POLLWRNORM; | 1208 | res |= POLLOUT | POLLWRNORM; |
1199 | } else if (count < SG_MAX_QUEUE) | 1209 | } else if (count < SG_MAX_QUEUE) |
1200 | res |= POLLOUT | POLLWRNORM; | 1210 | res |= POLLOUT | POLLWRNORM; |
1201 | SCSI_LOG_TIMEOUT(3, printk("sg_poll: %s, res=0x%x\n", | 1211 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, |
1202 | sdp->disk->disk_name, (int) res)); | 1212 | "sg_poll: res=0x%x\n", (int) res)); |
1203 | return res; | 1213 | return res; |
1204 | } | 1214 | } |
1205 | 1215 | ||
@@ -1211,8 +1221,8 @@ sg_fasync(int fd, struct file *filp, int mode) | |||
1211 | 1221 | ||
1212 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) | 1222 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) |
1213 | return -ENXIO; | 1223 | return -ENXIO; |
1214 | SCSI_LOG_TIMEOUT(3, printk("sg_fasync: %s, mode=%d\n", | 1224 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, |
1215 | sdp->disk->disk_name, mode)); | 1225 | "sg_fasync: mode=%d\n", mode)); |
1216 | 1226 | ||
1217 | return fasync_helper(fd, filp, mode, &sfp->async_qp); | 1227 | return fasync_helper(fd, filp, mode, &sfp->async_qp); |
1218 | } | 1228 | } |
@@ -1231,8 +1241,9 @@ sg_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | |||
1231 | offset = vmf->pgoff << PAGE_SHIFT; | 1241 | offset = vmf->pgoff << PAGE_SHIFT; |
1232 | if (offset >= rsv_schp->bufflen) | 1242 | if (offset >= rsv_schp->bufflen) |
1233 | return VM_FAULT_SIGBUS; | 1243 | return VM_FAULT_SIGBUS; |
1234 | SCSI_LOG_TIMEOUT(3, printk("sg_vma_fault: offset=%lu, scatg=%d\n", | 1244 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sfp->parentdp, |
1235 | offset, rsv_schp->k_use_sg)); | 1245 | "sg_vma_fault: offset=%lu, scatg=%d\n", |
1246 | offset, rsv_schp->k_use_sg)); | ||
1236 | sa = vma->vm_start; | 1247 | sa = vma->vm_start; |
1237 | length = 1 << (PAGE_SHIFT + rsv_schp->page_order); | 1248 | length = 1 << (PAGE_SHIFT + rsv_schp->page_order); |
1238 | for (k = 0; k < rsv_schp->k_use_sg && sa < vma->vm_end; k++) { | 1249 | for (k = 0; k < rsv_schp->k_use_sg && sa < vma->vm_end; k++) { |
@@ -1267,8 +1278,9 @@ sg_mmap(struct file *filp, struct vm_area_struct *vma) | |||
1267 | if ((!filp) || (!vma) || (!(sfp = (Sg_fd *) filp->private_data))) | 1278 | if ((!filp) || (!vma) || (!(sfp = (Sg_fd *) filp->private_data))) |
1268 | return -ENXIO; | 1279 | return -ENXIO; |
1269 | req_sz = vma->vm_end - vma->vm_start; | 1280 | req_sz = vma->vm_end - vma->vm_start; |
1270 | SCSI_LOG_TIMEOUT(3, printk("sg_mmap starting, vm_start=%p, len=%d\n", | 1281 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sfp->parentdp, |
1271 | (void *) vma->vm_start, (int) req_sz)); | 1282 | "sg_mmap starting, vm_start=%p, len=%d\n", |
1283 | (void *) vma->vm_start, (int) req_sz)); | ||
1272 | if (vma->vm_pgoff) | 1284 | if (vma->vm_pgoff) |
1273 | return -EINVAL; /* want no offset */ | 1285 | return -EINVAL; /* want no offset */ |
1274 | rsv_schp = &sfp->reserve; | 1286 | rsv_schp = &sfp->reserve; |
@@ -1330,8 +1342,9 @@ sg_rq_end_io(struct request *rq, int uptodate) | |||
1330 | result = rq->errors; | 1342 | result = rq->errors; |
1331 | resid = rq->resid_len; | 1343 | resid = rq->resid_len; |
1332 | 1344 | ||
1333 | SCSI_LOG_TIMEOUT(4, printk("sg_cmd_done: %s, pack_id=%d, res=0x%x\n", | 1345 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sdp, |
1334 | sdp->disk->disk_name, srp->header.pack_id, result)); | 1346 | "sg_cmd_done: pack_id=%d, res=0x%x\n", |
1347 | srp->header.pack_id, result)); | ||
1335 | srp->header.resid = resid; | 1348 | srp->header.resid = resid; |
1336 | ms = jiffies_to_msecs(jiffies); | 1349 | ms = jiffies_to_msecs(jiffies); |
1337 | srp->header.duration = (ms > srp->header.duration) ? | 1350 | srp->header.duration = (ms > srp->header.duration) ? |
@@ -1441,7 +1454,8 @@ sg_alloc(struct gendisk *disk, struct scsi_device *scsidp) | |||
1441 | } | 1454 | } |
1442 | k = error; | 1455 | k = error; |
1443 | 1456 | ||
1444 | SCSI_LOG_TIMEOUT(3, printk("sg_alloc: dev=%d \n", k)); | 1457 | SCSI_LOG_TIMEOUT(3, sdev_printk(KERN_INFO, scsidp, |
1458 | "sg_alloc: dev=%d \n", k)); | ||
1445 | sprintf(disk->disk_name, "sg%d", k); | 1459 | sprintf(disk->disk_name, "sg%d", k); |
1446 | disk->first_minor = k; | 1460 | disk->first_minor = k; |
1447 | sdp->disk = disk; | 1461 | sdp->disk = disk; |
@@ -1561,8 +1575,7 @@ sg_device_destroy(struct kref *kref) | |||
1561 | write_unlock_irqrestore(&sg_index_lock, flags); | 1575 | write_unlock_irqrestore(&sg_index_lock, flags); |
1562 | 1576 | ||
1563 | SCSI_LOG_TIMEOUT(3, | 1577 | SCSI_LOG_TIMEOUT(3, |
1564 | printk("sg_device_destroy: %s\n", | 1578 | sg_printk(KERN_INFO, sdp, "sg_device_destroy\n")); |
1565 | sdp->disk->disk_name)); | ||
1566 | 1579 | ||
1567 | put_disk(sdp->disk); | 1580 | put_disk(sdp->disk); |
1568 | kfree(sdp); | 1581 | kfree(sdp); |
@@ -1584,8 +1597,8 @@ sg_remove_device(struct device *cl_dev, struct class_interface *cl_intf) | |||
1584 | if (val > 1) | 1597 | if (val > 1) |
1585 | return; /* only want to do following once per device */ | 1598 | return; /* only want to do following once per device */ |
1586 | 1599 | ||
1587 | SCSI_LOG_TIMEOUT(3, printk("%s: %s\n", __func__, | 1600 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, |
1588 | sdp->disk->disk_name)); | 1601 | "%s\n", __func__)); |
1589 | 1602 | ||
1590 | read_lock_irqsave(&sdp->sfd_lock, iflags); | 1603 | read_lock_irqsave(&sdp->sfd_lock, iflags); |
1591 | list_for_each_entry(sfp, &sdp->sfds, sfd_siblings) { | 1604 | list_for_each_entry(sfp, &sdp->sfds, sfd_siblings) { |
@@ -1687,8 +1700,9 @@ sg_start_req(Sg_request *srp, unsigned char *cmd) | |||
1687 | int rw = hp->dxfer_direction == SG_DXFER_TO_DEV ? WRITE : READ; | 1700 | int rw = hp->dxfer_direction == SG_DXFER_TO_DEV ? WRITE : READ; |
1688 | unsigned char *long_cmdp = NULL; | 1701 | unsigned char *long_cmdp = NULL; |
1689 | 1702 | ||
1690 | SCSI_LOG_TIMEOUT(4, printk(KERN_INFO "sg_start_req: dxfer_len=%d\n", | 1703 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp, |
1691 | dxfer_len)); | 1704 | "sg_start_req: dxfer_len=%d\n", |
1705 | dxfer_len)); | ||
1692 | 1706 | ||
1693 | if (hp->cmd_len > BLK_MAX_CDB) { | 1707 | if (hp->cmd_len > BLK_MAX_CDB) { |
1694 | long_cmdp = kzalloc(hp->cmd_len, GFP_KERNEL); | 1708 | long_cmdp = kzalloc(hp->cmd_len, GFP_KERNEL); |
@@ -1786,7 +1800,9 @@ sg_finish_rem_req(Sg_request *srp) | |||
1786 | Sg_fd *sfp = srp->parentfp; | 1800 | Sg_fd *sfp = srp->parentfp; |
1787 | Sg_scatter_hold *req_schp = &srp->data; | 1801 | Sg_scatter_hold *req_schp = &srp->data; |
1788 | 1802 | ||
1789 | SCSI_LOG_TIMEOUT(4, printk("sg_finish_rem_req: res_used=%d\n", (int) srp->res_used)); | 1803 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp, |
1804 | "sg_finish_rem_req: res_used=%d\n", | ||
1805 | (int) srp->res_used)); | ||
1790 | if (srp->rq) { | 1806 | if (srp->rq) { |
1791 | if (srp->bio) | 1807 | if (srp->bio) |
1792 | ret = blk_rq_unmap_user(srp->bio); | 1808 | ret = blk_rq_unmap_user(srp->bio); |
@@ -1799,7 +1815,7 @@ sg_finish_rem_req(Sg_request *srp) | |||
1799 | if (srp->res_used) | 1815 | if (srp->res_used) |
1800 | sg_unlink_reserve(sfp, srp); | 1816 | sg_unlink_reserve(sfp, srp); |
1801 | else | 1817 | else |
1802 | sg_remove_scat(req_schp); | 1818 | sg_remove_scat(sfp, req_schp); |
1803 | 1819 | ||
1804 | sg_remove_request(sfp, srp); | 1820 | sg_remove_request(sfp, srp); |
1805 | 1821 | ||
@@ -1833,8 +1849,9 @@ sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size) | |||
1833 | ++blk_size; /* don't know why */ | 1849 | ++blk_size; /* don't know why */ |
1834 | /* round request up to next highest SG_SECTOR_SZ byte boundary */ | 1850 | /* round request up to next highest SG_SECTOR_SZ byte boundary */ |
1835 | blk_size = ALIGN(blk_size, SG_SECTOR_SZ); | 1851 | blk_size = ALIGN(blk_size, SG_SECTOR_SZ); |
1836 | SCSI_LOG_TIMEOUT(4, printk("sg_build_indirect: buff_size=%d, blk_size=%d\n", | 1852 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp, |
1837 | buff_size, blk_size)); | 1853 | "sg_build_indirect: buff_size=%d, blk_size=%d\n", |
1854 | buff_size, blk_size)); | ||
1838 | 1855 | ||
1839 | /* N.B. ret_sz carried into this block ... */ | 1856 | /* N.B. ret_sz carried into this block ... */ |
1840 | mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize); | 1857 | mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize); |
@@ -1877,14 +1894,16 @@ retry: | |||
1877 | } | 1894 | } |
1878 | } | 1895 | } |
1879 | 1896 | ||
1880 | SCSI_LOG_TIMEOUT(5, printk("sg_build_indirect: k=%d, num=%d, " | 1897 | SCSI_LOG_TIMEOUT(5, sg_printk(KERN_INFO, sfp->parentdp, |
1881 | "ret_sz=%d\n", k, num, ret_sz)); | 1898 | "sg_build_indirect: k=%d, num=%d, ret_sz=%d\n", |
1899 | k, num, ret_sz)); | ||
1882 | } /* end of for loop */ | 1900 | } /* end of for loop */ |
1883 | 1901 | ||
1884 | schp->page_order = order; | 1902 | schp->page_order = order; |
1885 | schp->k_use_sg = k; | 1903 | schp->k_use_sg = k; |
1886 | SCSI_LOG_TIMEOUT(5, printk("sg_build_indirect: k_use_sg=%d, " | 1904 | SCSI_LOG_TIMEOUT(5, sg_printk(KERN_INFO, sfp->parentdp, |
1887 | "rem_sz=%d\n", k, rem_sz)); | 1905 | "sg_build_indirect: k_use_sg=%d, rem_sz=%d\n", |
1906 | k, rem_sz)); | ||
1888 | 1907 | ||
1889 | schp->bufflen = blk_size; | 1908 | schp->bufflen = blk_size; |
1890 | if (rem_sz > 0) /* must have failed */ | 1909 | if (rem_sz > 0) /* must have failed */ |
@@ -1901,17 +1920,19 @@ out: | |||
1901 | } | 1920 | } |
1902 | 1921 | ||
1903 | static void | 1922 | static void |
1904 | sg_remove_scat(Sg_scatter_hold * schp) | 1923 | sg_remove_scat(Sg_fd * sfp, Sg_scatter_hold * schp) |
1905 | { | 1924 | { |
1906 | SCSI_LOG_TIMEOUT(4, printk("sg_remove_scat: k_use_sg=%d\n", schp->k_use_sg)); | 1925 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp, |
1926 | "sg_remove_scat: k_use_sg=%d\n", schp->k_use_sg)); | ||
1907 | if (schp->pages && schp->sglist_len > 0) { | 1927 | if (schp->pages && schp->sglist_len > 0) { |
1908 | if (!schp->dio_in_use) { | 1928 | if (!schp->dio_in_use) { |
1909 | int k; | 1929 | int k; |
1910 | 1930 | ||
1911 | for (k = 0; k < schp->k_use_sg && schp->pages[k]; k++) { | 1931 | for (k = 0; k < schp->k_use_sg && schp->pages[k]; k++) { |
1912 | SCSI_LOG_TIMEOUT(5, printk( | 1932 | SCSI_LOG_TIMEOUT(5, |
1913 | "sg_remove_scat: k=%d, pg=0x%p\n", | 1933 | sg_printk(KERN_INFO, sfp->parentdp, |
1914 | k, schp->pages[k])); | 1934 | "sg_remove_scat: k=%d, pg=0x%p\n", |
1935 | k, schp->pages[k])); | ||
1915 | __free_pages(schp->pages[k], schp->page_order); | 1936 | __free_pages(schp->pages[k], schp->page_order); |
1916 | } | 1937 | } |
1917 | 1938 | ||
@@ -1927,8 +1948,9 @@ sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer) | |||
1927 | Sg_scatter_hold *schp = &srp->data; | 1948 | Sg_scatter_hold *schp = &srp->data; |
1928 | int k, num; | 1949 | int k, num; |
1929 | 1950 | ||
1930 | SCSI_LOG_TIMEOUT(4, printk("sg_read_oxfer: num_read_xfer=%d\n", | 1951 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp, |
1931 | num_read_xfer)); | 1952 | "sg_read_oxfer: num_read_xfer=%d\n", |
1953 | num_read_xfer)); | ||
1932 | if ((!outp) || (num_read_xfer <= 0)) | 1954 | if ((!outp) || (num_read_xfer <= 0)) |
1933 | return 0; | 1955 | return 0; |
1934 | 1956 | ||
@@ -1958,14 +1980,15 @@ sg_build_reserve(Sg_fd * sfp, int req_size) | |||
1958 | { | 1980 | { |
1959 | Sg_scatter_hold *schp = &sfp->reserve; | 1981 | Sg_scatter_hold *schp = &sfp->reserve; |
1960 | 1982 | ||
1961 | SCSI_LOG_TIMEOUT(4, printk("sg_build_reserve: req_size=%d\n", req_size)); | 1983 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp, |
1984 | "sg_build_reserve: req_size=%d\n", req_size)); | ||
1962 | do { | 1985 | do { |
1963 | if (req_size < PAGE_SIZE) | 1986 | if (req_size < PAGE_SIZE) |
1964 | req_size = PAGE_SIZE; | 1987 | req_size = PAGE_SIZE; |
1965 | if (0 == sg_build_indirect(schp, sfp, req_size)) | 1988 | if (0 == sg_build_indirect(schp, sfp, req_size)) |
1966 | return; | 1989 | return; |
1967 | else | 1990 | else |
1968 | sg_remove_scat(schp); | 1991 | sg_remove_scat(sfp, schp); |
1969 | req_size >>= 1; /* divide by 2 */ | 1992 | req_size >>= 1; /* divide by 2 */ |
1970 | } while (req_size > (PAGE_SIZE / 2)); | 1993 | } while (req_size > (PAGE_SIZE / 2)); |
1971 | } | 1994 | } |
@@ -1978,7 +2001,8 @@ sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size) | |||
1978 | int k, num, rem; | 2001 | int k, num, rem; |
1979 | 2002 | ||
1980 | srp->res_used = 1; | 2003 | srp->res_used = 1; |
1981 | SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size)); | 2004 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp, |
2005 | "sg_link_reserve: size=%d\n", size)); | ||
1982 | rem = size; | 2006 | rem = size; |
1983 | 2007 | ||
1984 | num = 1 << (PAGE_SHIFT + rsv_schp->page_order); | 2008 | num = 1 << (PAGE_SHIFT + rsv_schp->page_order); |
@@ -1996,7 +2020,8 @@ sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size) | |||
1996 | } | 2020 | } |
1997 | 2021 | ||
1998 | if (k >= rsv_schp->k_use_sg) | 2022 | if (k >= rsv_schp->k_use_sg) |
1999 | SCSI_LOG_TIMEOUT(1, printk("sg_link_reserve: BAD size\n")); | 2023 | SCSI_LOG_TIMEOUT(1, sg_printk(KERN_INFO, sfp->parentdp, |
2024 | "sg_link_reserve: BAD size\n")); | ||
2000 | } | 2025 | } |
2001 | 2026 | ||
2002 | static void | 2027 | static void |
@@ -2004,8 +2029,9 @@ sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp) | |||
2004 | { | 2029 | { |
2005 | Sg_scatter_hold *req_schp = &srp->data; | 2030 | Sg_scatter_hold *req_schp = &srp->data; |
2006 | 2031 | ||
2007 | SCSI_LOG_TIMEOUT(4, printk("sg_unlink_reserve: req->k_use_sg=%d\n", | 2032 | SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp, |
2008 | (int) req_schp->k_use_sg)); | 2033 | "sg_unlink_reserve: req->k_use_sg=%d\n", |
2034 | (int) req_schp->k_use_sg)); | ||
2009 | req_schp->k_use_sg = 0; | 2035 | req_schp->k_use_sg = 0; |
2010 | req_schp->bufflen = 0; | 2036 | req_schp->bufflen = 0; |
2011 | req_schp->pages = NULL; | 2037 | req_schp->pages = NULL; |
@@ -2110,7 +2136,7 @@ sg_remove_request(Sg_fd * sfp, Sg_request * srp) | |||
2110 | } | 2136 | } |
2111 | 2137 | ||
2112 | static Sg_fd * | 2138 | static Sg_fd * |
2113 | sg_add_sfp(Sg_device * sdp, int dev) | 2139 | sg_add_sfp(Sg_device * sdp) |
2114 | { | 2140 | { |
2115 | Sg_fd *sfp; | 2141 | Sg_fd *sfp; |
2116 | unsigned long iflags; | 2142 | unsigned long iflags; |
@@ -2139,15 +2165,18 @@ sg_add_sfp(Sg_device * sdp, int dev) | |||
2139 | } | 2165 | } |
2140 | list_add_tail(&sfp->sfd_siblings, &sdp->sfds); | 2166 | list_add_tail(&sfp->sfd_siblings, &sdp->sfds); |
2141 | write_unlock_irqrestore(&sdp->sfd_lock, iflags); | 2167 | write_unlock_irqrestore(&sdp->sfd_lock, iflags); |
2142 | SCSI_LOG_TIMEOUT(3, printk("sg_add_sfp: sfp=0x%p\n", sfp)); | 2168 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, |
2169 | "sg_add_sfp: sfp=0x%p\n", sfp)); | ||
2143 | if (unlikely(sg_big_buff != def_reserved_size)) | 2170 | if (unlikely(sg_big_buff != def_reserved_size)) |
2144 | sg_big_buff = def_reserved_size; | 2171 | sg_big_buff = def_reserved_size; |
2145 | 2172 | ||
2146 | bufflen = min_t(int, sg_big_buff, | 2173 | bufflen = min_t(int, sg_big_buff, |
2147 | max_sectors_bytes(sdp->device->request_queue)); | 2174 | max_sectors_bytes(sdp->device->request_queue)); |
2148 | sg_build_reserve(sfp, bufflen); | 2175 | sg_build_reserve(sfp, bufflen); |
2149 | SCSI_LOG_TIMEOUT(3, printk("sg_add_sfp: bufflen=%d, k_use_sg=%d\n", | 2176 | SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, |
2150 | sfp->reserve.bufflen, sfp->reserve.k_use_sg)); | 2177 | "sg_add_sfp: bufflen=%d, k_use_sg=%d\n", |
2178 | sfp->reserve.bufflen, | ||
2179 | sfp->reserve.k_use_sg)); | ||
2151 | 2180 | ||
2152 | kref_get(&sdp->d_ref); | 2181 | kref_get(&sdp->d_ref); |
2153 | __module_get(THIS_MODULE); | 2182 | __module_get(THIS_MODULE); |
@@ -2165,17 +2194,15 @@ sg_remove_sfp_usercontext(struct work_struct *work) | |||
2165 | sg_finish_rem_req(sfp->headrp); | 2194 | sg_finish_rem_req(sfp->headrp); |
2166 | 2195 | ||
2167 | if (sfp->reserve.bufflen > 0) { | 2196 | if (sfp->reserve.bufflen > 0) { |
2168 | SCSI_LOG_TIMEOUT(6, | 2197 | SCSI_LOG_TIMEOUT(6, sg_printk(KERN_INFO, sdp, |
2169 | printk("sg_remove_sfp: bufflen=%d, k_use_sg=%d\n", | 2198 | "sg_remove_sfp: bufflen=%d, k_use_sg=%d\n", |
2170 | (int) sfp->reserve.bufflen, | 2199 | (int) sfp->reserve.bufflen, |
2171 | (int) sfp->reserve.k_use_sg)); | 2200 | (int) sfp->reserve.k_use_sg)); |
2172 | sg_remove_scat(&sfp->reserve); | 2201 | sg_remove_scat(sfp, &sfp->reserve); |
2173 | } | 2202 | } |
2174 | 2203 | ||
2175 | SCSI_LOG_TIMEOUT(6, | 2204 | SCSI_LOG_TIMEOUT(6, sg_printk(KERN_INFO, sdp, |
2176 | printk("sg_remove_sfp: %s, sfp=0x%p\n", | 2205 | "sg_remove_sfp: sfp=0x%p\n", sfp)); |
2177 | sdp->disk->disk_name, | ||
2178 | sfp)); | ||
2179 | kfree(sfp); | 2206 | kfree(sfp); |
2180 | 2207 | ||
2181 | scsi_device_put(sdp->device); | 2208 | scsi_device_put(sdp->device); |