aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sg.c
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2014-06-25 10:39:55 -0400
committerChristoph Hellwig <hch@lst.de>2014-07-17 16:07:40 -0400
commit95e159d6dd808b2c28de1790e451e9bfb1176002 (patch)
tree1b23cf3d4bb335e4f72e30f10d27e6d34577f765 /drivers/scsi/sg.c
parent96eefad2d9e5a0d988cdfee85193b6154c0ae1d2 (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.c163
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,
200static int sg_common_write(Sg_fd * sfp, Sg_request * srp, 200static 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);
202static int sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer); 202static int sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer);
203static void sg_remove_scat(Sg_scatter_hold * schp); 203static void sg_remove_scat(Sg_fd * sfp, Sg_scatter_hold * schp);
204static void sg_build_reserve(Sg_fd * sfp, int req_size); 204static void sg_build_reserve(Sg_fd * sfp, int req_size);
205static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size); 205static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size);
206static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp); 206static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp);
207static Sg_fd *sg_add_sfp(Sg_device * sdp, int dev); 207static Sg_fd *sg_add_sfp(Sg_device * sdp);
208static void sg_remove_sfp(struct kref *); 208static void sg_remove_sfp(struct kref *);
209static Sg_request *sg_get_rq_mark(Sg_fd * sfp, int pack_id); 209static Sg_request *sg_get_rq_mark(Sg_fd * sfp, int pack_id);
210static Sg_request *sg_add_request(Sg_fd * sfp); 210static 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
221static int sg_allow_access(struct file *filp, unsigned char *cmd) 225static 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
1903static void 1922static void
1904sg_remove_scat(Sg_scatter_hold * schp) 1923sg_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
2002static void 2027static 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
2112static Sg_fd * 2138static Sg_fd *
2113sg_add_sfp(Sg_device * sdp, int dev) 2139sg_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);