Lines Matching refs:device

40  * device. Currently each device gets 2 pages. We want to fit two requests
99 /* Initialize block I/O to DIAG device using the specified blocksize and
101 * number of blocks on the device minus the specified offset. Return non-zero
104 mdsk_init_io(struct dasd_device *device, unsigned int blocksize,
107 struct dasd_diag_private *private = device->private;
126 /* Remove block I/O environment for device. Return zero on success, non-zero
129 mdsk_term_io(struct dasd_device * device)
131 struct dasd_diag_private *private = device->private;
144 dasd_diag_erp(struct dasd_device *device)
148 mdsk_term_io(device);
149 rc = mdsk_init_io(device, device->block->bp_block, 0, NULL);
151 if (!(test_and_set_bit(DASD_FLAG_DEVICE_RO, &device->flags)))
152 pr_warn("%s: The access mode of a DIAG device changed to read-only\n",
153 dev_name(&device->cdev->dev));
158 dev_name(&device->cdev->dev), rc);
161 /* Start a given request at the device. Return zero on success, non-zero
166 struct dasd_device *device;
171 device = cqr->startdev;
173 DBF_DEV_EVENT(DBF_ERR, device, "DIAG start_IO: request %p "
178 private = device->private;
208 DBF_DEV_EVENT(DBF_WARNING, device, "dia250 returned rc=%d", rc);
209 dasd_diag_erp(device);
217 /* Terminate given request at the device. */
221 struct dasd_device *device;
223 device = cqr->startdev;
224 mdsk_term_io(device);
225 mdsk_init_io(device, device->block->bp_block, 0, NULL);
228 dasd_schedule_device_bh(device);
237 struct dasd_device *device;
260 device = (struct dasd_device *) cqr->startdev;
261 if (strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) {
262 DBF_DEV_EVENT(DBF_WARNING, device,
265 cqr->magic, *(int *) (&device->discipline->name));
270 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
275 dasd_device_clear_timer(device);
276 dasd_schedule_device_bh(device);
277 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
287 if (!list_empty(&device->ccw_queue)) {
288 next = list_entry(device->ccw_queue.next,
298 DBF_DEV_EVENT(DBF_DEBUG, device, "interrupt status for "
301 dasd_diag_erp(device);
305 dasd_device_set_timer(device, expires);
307 dasd_device_clear_timer(device);
308 dasd_schedule_device_bh(device);
310 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
313 /* Check whether device can be controlled by DIAG discipline. Return zero on
316 dasd_diag_check_device(struct dasd_device *device)
318 struct dasd_diag_private *private = device->private;
330 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
335 ccw_device_get_id(device->cdev, &private->dev_id);
336 device->private = private;
340 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
342 device->private = NULL;
346 device->block = block;
347 block->base = device;
356 DBF_DEV_EVENT(DBF_WARNING, device, "failed to retrieve device "
362 device->default_expires = DIAG_TIMEOUT;
363 device->default_retries = DIAG_MAX_RETRIES;
375 dev_name(&device->cdev->dev),
381 DBF_DEV_EVENT(DBF_INFO, device,
388 mdsk_term_io(device);
390 /* figure out blocksize of device */
393 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
400 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
409 mdsk_init_io(device, bsize, 0, &end_block);
425 dev_name(&device->cdev->dev));
429 mdsk_term_io(device);
435 dev_name(&device->cdev->dev), rc);
451 rc = mdsk_init_io(device, block->bp_block, 0, NULL);
454 dev_name(&device->cdev->dev), rc);
458 set_bit(DASD_FLAG_DEVICE_RO, &device->flags);
460 "KB%s\n", dev_name(&device->cdev->dev),
464 (rc == 4) ? ", read-only device" : "");
473 device->block = NULL;
475 device->private = NULL;
481 /* Fill in virtual disk geometry for device. Return zero on success, non-zero
506 /* Create DASD request from block device request. Return pointer to new
600 /* Fill in IOCTL data for device. */
602 dasd_diag_fill_info(struct dasd_device * device,
605 struct dasd_diag_private *private = device->private;
618 dasd_diag_dump_sense(struct dasd_device *device, struct dasd_ccw_req * req,
621 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
645 static int dasd_diag_pe_handler(struct dasd_device *device, __u8 tbvpm)
647 return dasd_generic_verify_path(device, tbvpm);