• Home
  • Raw
  • Download

Lines Matching full:sdp

191 static Sg_fd *sg_add_sfp(Sg_device * sdp);
204 #define sg_printk(prefix, sdp, fmt, a...) \ argument
205 sdev_prefix_printk(prefix, (sdp)->device, \
206 (sdp)->disk->disk_name, fmt, ##a)
246 open_wait(Sg_device *sdp, int flags) in open_wait() argument
251 while (sdp->open_cnt > 0) { in open_wait()
252 mutex_unlock(&sdp->open_rel_lock); in open_wait()
253 retval = wait_event_interruptible(sdp->open_wait, in open_wait()
254 (atomic_read(&sdp->detaching) || in open_wait()
255 !sdp->open_cnt)); in open_wait()
256 mutex_lock(&sdp->open_rel_lock); in open_wait()
260 if (atomic_read(&sdp->detaching)) in open_wait()
264 while (sdp->exclude) { in open_wait()
265 mutex_unlock(&sdp->open_rel_lock); in open_wait()
266 retval = wait_event_interruptible(sdp->open_wait, in open_wait()
267 (atomic_read(&sdp->detaching) || in open_wait()
268 !sdp->exclude)); in open_wait()
269 mutex_lock(&sdp->open_rel_lock); in open_wait()
273 if (atomic_read(&sdp->detaching)) in open_wait()
288 Sg_device *sdp; in sg_open() local
295 sdp = sg_get_dev(dev); in sg_open()
296 if (IS_ERR(sdp)) in sg_open()
297 return PTR_ERR(sdp); in sg_open()
299 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, in sg_open()
304 retval = scsi_device_get(sdp->device); in sg_open()
308 retval = scsi_autopm_get_device(sdp->device); in sg_open()
316 scsi_block_when_processing_errors(sdp->device))) { in sg_open()
322 mutex_lock(&sdp->open_rel_lock); in sg_open()
325 if (sdp->open_cnt > 0) { in sg_open()
330 if (sdp->exclude) { in sg_open()
336 retval = open_wait(sdp, flags); in sg_open()
343 sdp->exclude = true; in sg_open()
345 if (sdp->open_cnt < 1) { /* no existing opens */ in sg_open()
346 sdp->sgdebug = 0; in sg_open()
347 q = sdp->device->request_queue; in sg_open()
348 sdp->sg_tablesize = queue_max_segments(q); in sg_open()
350 sfp = sg_add_sfp(sdp); in sg_open()
357 sdp->open_cnt++; in sg_open()
358 mutex_unlock(&sdp->open_rel_lock); in sg_open()
362 kref_put(&sdp->d_ref, sg_device_destroy); in sg_open()
367 sdp->exclude = false; /* undo if error */ in sg_open()
368 wake_up_interruptible(&sdp->open_wait); in sg_open()
371 mutex_unlock(&sdp->open_rel_lock); in sg_open()
373 scsi_autopm_put_device(sdp->device); in sg_open()
375 scsi_device_put(sdp->device); in sg_open()
384 Sg_device *sdp; in sg_release() local
387 if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) in sg_release()
389 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, "sg_release\n")); in sg_release()
391 mutex_lock(&sdp->open_rel_lock); in sg_release()
392 scsi_autopm_put_device(sdp->device); in sg_release()
394 sdp->open_cnt--; in sg_release()
398 if (sdp->exclude) { in sg_release()
399 sdp->exclude = false; in sg_release()
400 wake_up_interruptible_all(&sdp->open_wait); in sg_release()
401 } else if (0 == sdp->open_cnt) { in sg_release()
402 wake_up_interruptible(&sdp->open_wait); in sg_release()
404 mutex_unlock(&sdp->open_rel_lock); in sg_release()
443 Sg_device *sdp; in sg_read() local
460 if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) in sg_read()
462 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, in sg_read()
476 (!busy && atomic_read(&sdp->detaching)))); in sg_read()
601 Sg_device *sdp; in sg_write() local
613 if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) in sg_write()
615 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, in sg_write()
617 if (atomic_read(&sdp->detaching)) in sg_write()
620 scsi_block_when_processing_errors(sdp->device))) in sg_write()
639 SCSI_LOG_TIMEOUT(1, sg_printk(KERN_INFO, sdp, in sg_write()
653 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sdp, in sg_write()
780 Sg_device *sdp = sfp->parentdp; in sg_common_write() local
808 if (atomic_read(&sdp->detaching)) { in sg_common_write()
829 blk_execute_rq_nowait(sdp->device->request_queue, sdp->disk, in sg_common_write()
915 sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp, in sg_ioctl_common() argument
923 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, in sg_ioctl_common()
929 if (atomic_read(&sdp->detaching)) in sg_ioctl_common()
931 if (!scsi_block_when_processing_errors(sdp->device)) in sg_ioctl_common()
973 return put_user((int) sdp->device->host->unchecked_isa_dma, ip); in sg_ioctl_common()
978 if (atomic_read(&sdp->detaching)) in sg_ioctl_common()
981 v.host_no = sdp->device->host->host_no; in sg_ioctl_common()
982 v.channel = sdp->device->channel; in sg_ioctl_common()
983 v.scsi_id = sdp->device->id; in sg_ioctl_common()
984 v.lun = sdp->device->lun; in sg_ioctl_common()
985 v.scsi_type = sdp->device->type; in sg_ioctl_common()
986 v.h_cmd_per_lun = sdp->device->host->cmd_per_lun; in sg_ioctl_common()
987 v.d_queue_depth = sdp->device->queue_depth; in sg_ioctl_common()
1019 return put_user(sdp->sg_tablesize, ip); in sg_ioctl_common()
1027 max_sectors_bytes(sdp->device->request_queue)); in sg_ioctl_common()
1043 max_sectors_bytes(sdp->device->request_queue)); in sg_ioctl_common()
1073 val = (sdp->device ? 1 : 0); in sg_ioctl_common()
1098 if (atomic_read(&sdp->detaching)) in sg_ioctl_common()
1100 return put_user(sdp->device->host->hostt->emulated, ip); in sg_ioctl_common()
1102 if (atomic_read(&sdp->detaching)) in sg_ioctl_common()
1104 return sg_scsi_ioctl(sdp->device->request_queue, NULL, filp->f_mode, p); in sg_ioctl_common()
1109 sdp->sgdebug = (char) val; in sg_ioctl_common()
1112 return put_user(max_sectors_bytes(sdp->device->request_queue), in sg_ioctl_common()
1115 return blk_trace_setup(sdp->device->request_queue, in sg_ioctl_common()
1116 sdp->disk->disk_name, in sg_ioctl_common()
1117 MKDEV(SCSI_GENERIC_MAJOR, sdp->index), in sg_ioctl_common()
1120 return blk_trace_startstop(sdp->device->request_queue, 1); in sg_ioctl_common()
1122 return blk_trace_startstop(sdp->device->request_queue, 0); in sg_ioctl_common()
1124 return blk_trace_remove(sdp->device->request_queue); in sg_ioctl_common()
1130 if (atomic_read(&sdp->detaching)) in sg_ioctl_common()
1139 result = scsi_ioctl_block_when_processing_errors(sdp->device, in sg_ioctl_common()
1151 Sg_device *sdp; in sg_ioctl() local
1155 if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) in sg_ioctl()
1158 ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p); in sg_ioctl()
1162 return scsi_ioctl(sdp->device, cmd_in, p); in sg_ioctl()
1169 Sg_device *sdp; in sg_compat_ioctl() local
1173 if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) in sg_compat_ioctl()
1176 ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p); in sg_compat_ioctl()
1180 return scsi_compat_ioctl(sdp->device, cmd_in, p); in sg_compat_ioctl()
1188 Sg_device *sdp; in sg_poll() local
1197 sdp = sfp->parentdp; in sg_poll()
1198 if (!sdp) in sg_poll()
1210 if (atomic_read(&sdp->detaching)) in sg_poll()
1217 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, in sg_poll()
1225 Sg_device *sdp; in sg_fasync() local
1228 if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) in sg_fasync()
1230 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, in sg_fasync()
1338 Sg_device *sdp; in sg_rq_end_io() local
1352 sdp = sfp->parentdp; in sg_rq_end_io()
1353 if (unlikely(atomic_read(&sdp->detaching))) in sg_rq_end_io()
1360 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sdp, in sg_rq_end_io()
1375 if ((sdp->sgdebug > 0) && in sg_rq_end_io()
1378 __scsi_print_sense(sdp->device, __func__, sense, in sg_rq_end_io()
1386 && sdp->device->removable) { in sg_rq_end_io()
1389 sdp->device->changed = 1; in sg_rq_end_io()
1455 Sg_device *sdp; in sg_alloc() local
1460 sdp = kzalloc(sizeof(Sg_device), GFP_KERNEL); in sg_alloc()
1461 if (!sdp) { in sg_alloc()
1470 error = idr_alloc(&sg_index_idr, sdp, 0, SG_MAX_DEVS, GFP_NOWAIT); in sg_alloc()
1490 sdp->disk = disk; in sg_alloc()
1491 sdp->device = scsidp; in sg_alloc()
1492 mutex_init(&sdp->open_rel_lock); in sg_alloc()
1493 INIT_LIST_HEAD(&sdp->sfds); in sg_alloc()
1494 init_waitqueue_head(&sdp->open_wait); in sg_alloc()
1495 atomic_set(&sdp->detaching, 0); in sg_alloc()
1496 rwlock_init(&sdp->sfd_lock); in sg_alloc()
1497 sdp->sg_tablesize = queue_max_segments(q); in sg_alloc()
1498 sdp->index = k; in sg_alloc()
1499 kref_init(&sdp->d_ref); in sg_alloc()
1507 kfree(sdp); in sg_alloc()
1510 return sdp; in sg_alloc()
1518 Sg_device *sdp = NULL; in sg_add_device() local
1539 sdp = sg_alloc(disk, scsidp); in sg_add_device()
1540 if (IS_ERR(sdp)) { in sg_add_device()
1542 error = PTR_ERR(sdp); in sg_add_device()
1546 error = cdev_add(cdev, MKDEV(SCSI_GENERIC_MAJOR, sdp->index), 1); in sg_add_device()
1550 sdp->cdev = cdev; in sg_add_device()
1556 sdp->index), in sg_add_device()
1557 sdp, "%s", disk->disk_name); in sg_add_device()
1567 "to sg%d\n", __func__, sdp->index); in sg_add_device()
1572 "type %d\n", sdp->index, scsidp->type); in sg_add_device()
1574 dev_set_drvdata(cl_dev, sdp); in sg_add_device()
1580 idr_remove(&sg_index_idr, sdp->index); in sg_add_device()
1582 kfree(sdp); in sg_add_device()
1594 struct sg_device *sdp = container_of(kref, struct sg_device, d_ref); in sg_device_destroy() local
1603 idr_remove(&sg_index_idr, sdp->index); in sg_device_destroy()
1607 sg_printk(KERN_INFO, sdp, "sg_device_destroy\n")); in sg_device_destroy()
1609 put_disk(sdp->disk); in sg_device_destroy()
1610 kfree(sdp); in sg_device_destroy()
1617 Sg_device *sdp = dev_get_drvdata(cl_dev); in sg_remove_device() local
1622 if (!sdp) in sg_remove_device()
1624 /* want sdp->detaching non-zero as soon as possible */ in sg_remove_device()
1625 val = atomic_inc_return(&sdp->detaching); in sg_remove_device()
1629 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, in sg_remove_device()
1632 read_lock_irqsave(&sdp->sfd_lock, iflags); in sg_remove_device()
1633 list_for_each_entry(sfp, &sdp->sfds, sfd_siblings) { in sg_remove_device()
1637 wake_up_interruptible_all(&sdp->open_wait); in sg_remove_device()
1638 read_unlock_irqrestore(&sdp->sfd_lock, iflags); in sg_remove_device()
1641 device_destroy(sg_sysfs_class, MKDEV(SCSI_GENERIC_MAJOR, sdp->index)); in sg_remove_device()
1642 cdev_del(sdp->cdev); in sg_remove_device()
1643 sdp->cdev = NULL; in sg_remove_device()
1645 kref_put(&sdp->d_ref, sg_device_destroy); in sg_remove_device()
1892 struct sg_device *sdp = sfp->parentdp; in sg_build_indirect() local
1918 if (sdp->device->host->unchecked_isa_dma) in sg_build_indirect()
2179 sg_add_sfp(Sg_device * sdp) in sg_add_sfp() argument
2199 sfp->parentdp = sdp; in sg_add_sfp()
2200 write_lock_irqsave(&sdp->sfd_lock, iflags); in sg_add_sfp()
2201 if (atomic_read(&sdp->detaching)) { in sg_add_sfp()
2202 write_unlock_irqrestore(&sdp->sfd_lock, iflags); in sg_add_sfp()
2206 list_add_tail(&sfp->sfd_siblings, &sdp->sfds); in sg_add_sfp()
2207 write_unlock_irqrestore(&sdp->sfd_lock, iflags); in sg_add_sfp()
2208 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, in sg_add_sfp()
2214 max_sectors_bytes(sdp->device->request_queue)); in sg_add_sfp()
2216 SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp, in sg_add_sfp()
2221 kref_get(&sdp->d_ref); in sg_add_sfp()
2230 struct sg_device *sdp = sfp->parentdp; in sg_remove_sfp_usercontext() local
2245 SCSI_LOG_TIMEOUT(6, sg_printk(KERN_INFO, sdp, in sg_remove_sfp_usercontext()
2252 SCSI_LOG_TIMEOUT(6, sg_printk(KERN_INFO, sdp, in sg_remove_sfp_usercontext()
2256 scsi_device_put(sdp->device); in sg_remove_sfp_usercontext()
2257 kref_put(&sdp->d_ref, sg_device_destroy); in sg_remove_sfp_usercontext()
2265 struct sg_device *sdp = sfp->parentdp; in sg_remove_sfp() local
2268 write_lock_irqsave(&sdp->sfd_lock, iflags); in sg_remove_sfp()
2270 write_unlock_irqrestore(&sdp->sfd_lock, iflags); in sg_remove_sfp()
2310 struct sg_device *sdp; in sg_get_dev() local
2314 sdp = sg_lookup_dev(dev); in sg_get_dev()
2315 if (!sdp) in sg_get_dev()
2316 sdp = ERR_PTR(-ENXIO); in sg_get_dev()
2317 else if (atomic_read(&sdp->detaching)) { in sg_get_dev()
2318 /* If sdp->detaching, then the refcount may already be 0, in in sg_get_dev()
2321 sdp = ERR_PTR(-ENODEV); in sg_get_dev()
2323 kref_get(&sdp->d_ref); in sg_get_dev()
2326 return sdp; in sg_get_dev()
2504 Sg_device *sdp; in sg_proc_seq_show_dev() local
2509 sdp = it ? sg_lookup_dev(it->index) : NULL; in sg_proc_seq_show_dev()
2510 if ((NULL == sdp) || (NULL == sdp->device) || in sg_proc_seq_show_dev()
2511 (atomic_read(&sdp->detaching))) in sg_proc_seq_show_dev()
2514 scsidp = sdp->device; in sg_proc_seq_show_dev()
2530 Sg_device *sdp; in sg_proc_seq_show_devstrs() local
2535 sdp = it ? sg_lookup_dev(it->index) : NULL; in sg_proc_seq_show_devstrs()
2536 scsidp = sdp ? sdp->device : NULL; in sg_proc_seq_show_devstrs()
2537 if (sdp && scsidp && (!atomic_read(&sdp->detaching))) in sg_proc_seq_show_devstrs()
2547 static void sg_proc_debug_helper(struct seq_file *s, Sg_device * sdp) in sg_proc_debug_helper() argument
2557 list_for_each_entry(fp, &sdp->sfds, sfd_siblings) { in sg_proc_debug_helper()
2565 (int) sdp->device->host->unchecked_isa_dma); in sg_proc_debug_helper()
2613 Sg_device *sdp; in sg_proc_seq_show_debug() local
2621 sdp = it ? sg_lookup_dev(it->index) : NULL; in sg_proc_seq_show_debug()
2622 if (NULL == sdp) in sg_proc_seq_show_debug()
2624 read_lock(&sdp->sfd_lock); in sg_proc_seq_show_debug()
2625 if (!list_empty(&sdp->sfds)) { in sg_proc_seq_show_debug()
2626 seq_printf(s, " >>> device=%s ", sdp->disk->disk_name); in sg_proc_seq_show_debug()
2627 if (atomic_read(&sdp->detaching)) in sg_proc_seq_show_debug()
2629 else if (sdp->device) { in sg_proc_seq_show_debug()
2630 struct scsi_device *scsidp = sdp->device; in sg_proc_seq_show_debug()
2639 sdp->sg_tablesize, sdp->exclude, sdp->open_cnt); in sg_proc_seq_show_debug()
2640 sg_proc_debug_helper(s, sdp); in sg_proc_seq_show_debug()
2642 read_unlock(&sdp->sfd_lock); in sg_proc_seq_show_debug()