Lines Matching refs:device
40 * device. Currently each device gets 2 pages. We want to fit two requests
98 /* Initialize block I/O to DIAG device using the specified blocksize and
100 * number of blocks on the device minus the specified offset. Return non-zero
103 mdsk_init_io(struct dasd_device *device, unsigned int blocksize,
106 struct dasd_diag_private *private = device->private;
125 /* Remove block I/O environment for device. Return zero on success, non-zero
128 mdsk_term_io(struct dasd_device * device)
130 struct dasd_diag_private *private = device->private;
143 dasd_diag_erp(struct dasd_device *device)
147 mdsk_term_io(device);
148 rc = mdsk_init_io(device, device->block->bp_block, 0, NULL);
150 if (!(test_and_set_bit(DASD_FLAG_DEVICE_RO, &device->flags)))
151 pr_warn("%s: The access mode of a DIAG device changed to read-only\n",
152 dev_name(&device->cdev->dev));
157 dev_name(&device->cdev->dev), rc);
160 /* Start a given request at the device. Return zero on success, non-zero
165 struct dasd_device *device;
170 device = cqr->startdev;
172 DBF_DEV_EVENT(DBF_ERR, device, "DIAG start_IO: request %p "
177 private = device->private;
207 DBF_DEV_EVENT(DBF_WARNING, device, "dia250 returned rc=%d", rc);
208 dasd_diag_erp(device);
216 /* Terminate given request at the device. */
220 struct dasd_device *device;
222 device = cqr->startdev;
223 mdsk_term_io(device);
224 mdsk_init_io(device, device->block->bp_block, 0, NULL);
227 dasd_schedule_device_bh(device);
236 struct dasd_device *device;
259 device = (struct dasd_device *) cqr->startdev;
260 if (strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) {
261 DBF_DEV_EVENT(DBF_WARNING, device,
264 cqr->magic, *(int *) (&device->discipline->name));
269 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
274 dasd_device_clear_timer(device);
275 dasd_schedule_device_bh(device);
276 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
286 if (!list_empty(&device->ccw_queue)) {
287 next = list_entry(device->ccw_queue.next,
297 DBF_DEV_EVENT(DBF_DEBUG, device, "interrupt status for "
300 dasd_diag_erp(device);
304 dasd_device_set_timer(device, expires);
306 dasd_device_clear_timer(device);
307 dasd_schedule_device_bh(device);
309 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
312 /* Check whether device can be controlled by DIAG discipline. Return zero on
315 dasd_diag_check_device(struct dasd_device *device)
317 struct dasd_diag_private *private = device->private;
329 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
334 ccw_device_get_id(device->cdev, &private->dev_id);
335 device->private = private;
339 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
341 device->private = NULL;
345 device->block = block;
346 block->base = device;
355 DBF_DEV_EVENT(DBF_WARNING, device, "failed to retrieve device "
361 device->default_expires = DIAG_TIMEOUT;
362 device->default_retries = DIAG_MAX_RETRIES;
374 dev_name(&device->cdev->dev),
380 DBF_DEV_EVENT(DBF_INFO, device,
387 mdsk_term_io(device);
389 /* figure out blocksize of device */
392 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
399 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
408 mdsk_init_io(device, bsize, 0, &end_block);
424 dev_name(&device->cdev->dev));
428 mdsk_term_io(device);
434 dev_name(&device->cdev->dev), rc);
450 rc = mdsk_init_io(device, block->bp_block, 0, NULL);
453 dev_name(&device->cdev->dev), rc);
457 set_bit(DASD_FLAG_DEVICE_RO, &device->flags);
459 "KB%s\n", dev_name(&device->cdev->dev),
463 (rc == 4) ? ", read-only device" : "");
472 device->block = NULL;
474 device->private = NULL;
480 /* Fill in virtual disk geometry for device. Return zero on success, non-zero
505 /* Create DASD request from block device request. Return pointer to new
599 /* Fill in IOCTL data for device. */
601 dasd_diag_fill_info(struct dasd_device * device,
604 struct dasd_diag_private *private = device->private;
617 dasd_diag_dump_sense(struct dasd_device *device, struct dasd_ccw_req * req,
620 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
645 static int dasd_diag_pe_handler(struct dasd_device *device,
648 return dasd_generic_verify_path(device, tbvpm);