Lines Matching refs:cqr

86 	struct dasd_ccw_req cqr;  member
93 struct dasd_ccw_req cqr; member
109 struct dasd_ccw_req cqr; member
777 struct dasd_ccw_req *cqr, in dasd_eckd_fill_rcd_cqr() argument
791 ccw = cqr->cpaddr; in dasd_eckd_fill_rcd_cqr()
796 cqr->magic = DASD_ECKD_MAGIC; in dasd_eckd_fill_rcd_cqr()
798 cqr->startdev = device; in dasd_eckd_fill_rcd_cqr()
799 cqr->memdev = device; in dasd_eckd_fill_rcd_cqr()
800 cqr->block = NULL; in dasd_eckd_fill_rcd_cqr()
801 cqr->expires = 10*HZ; in dasd_eckd_fill_rcd_cqr()
802 cqr->lpm = lpm; in dasd_eckd_fill_rcd_cqr()
803 cqr->retries = 256; in dasd_eckd_fill_rcd_cqr()
804 cqr->buildclk = get_tod_clock(); in dasd_eckd_fill_rcd_cqr()
805 cqr->status = DASD_CQR_FILLED; in dasd_eckd_fill_rcd_cqr()
806 set_bit(DASD_CQR_VERIFY_PATH, &cqr->flags); in dasd_eckd_fill_rcd_cqr()
815 static void read_conf_cb(struct dasd_ccw_req *cqr, void *data) in read_conf_cb() argument
820 if (cqr->status != DASD_CQR_DONE) { in read_conf_cb()
821 ccw = cqr->cpaddr; in read_conf_cb()
830 dasd_wakeup_cb(cqr, data); in read_conf_cb()
834 struct dasd_ccw_req *cqr, in dasd_eckd_read_conf_immediately() argument
848 dasd_eckd_fill_rcd_cqr(device, cqr, rcd_buffer, lpm); in dasd_eckd_read_conf_immediately()
849 clear_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags); in dasd_eckd_read_conf_immediately()
850 set_bit(DASD_CQR_ALLOW_SLOCK, &cqr->flags); in dasd_eckd_read_conf_immediately()
851 cqr->retries = 5; in dasd_eckd_read_conf_immediately()
852 cqr->callback = read_conf_cb; in dasd_eckd_read_conf_immediately()
853 rc = dasd_sleep_on_immediatly(cqr); in dasd_eckd_read_conf_immediately()
864 struct dasd_ccw_req *cqr; in dasd_eckd_read_conf_lpm() local
880 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* RCD */, in dasd_eckd_read_conf_lpm()
883 if (IS_ERR(cqr)) { in dasd_eckd_read_conf_lpm()
889 dasd_eckd_fill_rcd_cqr(device, cqr, rcd_buf, lpm); in dasd_eckd_read_conf_lpm()
890 cqr->callback = read_conf_cb; in dasd_eckd_read_conf_lpm()
891 ret = dasd_sleep_on(cqr); in dasd_eckd_read_conf_lpm()
895 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_read_conf_lpm()
1192 memset(&data->cqr, 0, sizeof(data->cqr)); in rebuild_device_uid()
1193 data->cqr.cpaddr = &data->ccw; in rebuild_device_uid()
1194 rc = dasd_eckd_read_conf_immediately(device, &data->cqr, in rebuild_device_uid()
1256 memset(&data->cqr, 0, sizeof(data->cqr)); in do_path_verification_work()
1257 data->cqr.cpaddr = &data->ccw; in do_path_verification_work()
1258 rc = dasd_eckd_read_conf_immediately(device, &data->cqr, in do_path_verification_work()
1430 struct dasd_ccw_req *cqr; in dasd_eckd_read_features() local
1435 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ + 1 /* RSSD */, in dasd_eckd_read_features()
1439 if (IS_ERR(cqr)) { in dasd_eckd_read_features()
1442 return PTR_ERR(cqr); in dasd_eckd_read_features()
1444 cqr->startdev = device; in dasd_eckd_read_features()
1445 cqr->memdev = device; in dasd_eckd_read_features()
1446 cqr->block = NULL; in dasd_eckd_read_features()
1447 cqr->retries = 256; in dasd_eckd_read_features()
1448 cqr->expires = 10 * HZ; in dasd_eckd_read_features()
1451 prssdp = (struct dasd_psf_prssd_data *) cqr->data; in dasd_eckd_read_features()
1457 ccw = cqr->cpaddr; in dasd_eckd_read_features()
1472 cqr->buildclk = get_tod_clock(); in dasd_eckd_read_features()
1473 cqr->status = DASD_CQR_FILLED; in dasd_eckd_read_features()
1474 rc = dasd_sleep_on(cqr); in dasd_eckd_read_features()
1476 prssdp = (struct dasd_psf_prssd_data *) cqr->data; in dasd_eckd_read_features()
1483 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_read_features()
1493 struct dasd_ccw_req *cqr; in dasd_eckd_read_vol_info() local
1504 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 2 /* PSF + RSSD */, in dasd_eckd_read_vol_info()
1506 if (IS_ERR(cqr)) { in dasd_eckd_read_vol_info()
1511 cqr = &dasd_vol_info_req->cqr; in dasd_eckd_read_vol_info()
1512 memset(cqr, 0, sizeof(*cqr)); in dasd_eckd_read_vol_info()
1514 cqr->cpaddr = &dasd_vol_info_req->ccw; in dasd_eckd_read_vol_info()
1515 cqr->data = &dasd_vol_info_req->data; in dasd_eckd_read_vol_info()
1516 cqr->magic = DASD_ECKD_MAGIC; in dasd_eckd_read_vol_info()
1520 prssdp = cqr->data; in dasd_eckd_read_vol_info()
1526 ccw = cqr->cpaddr; in dasd_eckd_read_vol_info()
1542 cqr->buildclk = get_tod_clock(); in dasd_eckd_read_vol_info()
1543 cqr->status = DASD_CQR_FILLED; in dasd_eckd_read_vol_info()
1544 cqr->startdev = device; in dasd_eckd_read_vol_info()
1545 cqr->memdev = device; in dasd_eckd_read_vol_info()
1546 cqr->block = NULL; in dasd_eckd_read_vol_info()
1547 cqr->retries = 256; in dasd_eckd_read_vol_info()
1548 cqr->expires = device->default_expires * HZ; in dasd_eckd_read_vol_info()
1550 __set_bit(DASD_CQR_SUPPRESS_CR, &cqr->flags); in dasd_eckd_read_vol_info()
1552 rc = dasd_sleep_on_interruptible(cqr); in dasd_eckd_read_vol_info()
1563 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_read_vol_info()
1642 struct dasd_ccw_req *cqr) in dasd_eckd_ext_pool_exhaust() argument
1653 if (cqr->block) in dasd_eckd_ext_pool_exhaust()
1654 data->base = cqr->block->base; in dasd_eckd_ext_pool_exhaust()
1655 else if (cqr->basedev) in dasd_eckd_ext_pool_exhaust()
1656 data->base = cqr->basedev; in dasd_eckd_ext_pool_exhaust()
1688 struct dasd_ccw_req *cqr; in dasd_eckd_read_ext_pool_info() local
1697 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 2 /* PSF + RSSD */, in dasd_eckd_read_ext_pool_info()
1699 if (IS_ERR(cqr)) { in dasd_eckd_read_ext_pool_info()
1702 return PTR_ERR(cqr); in dasd_eckd_read_ext_pool_info()
1706 prssdp = cqr->data; in dasd_eckd_read_ext_pool_info()
1711 ccw = cqr->cpaddr; in dasd_eckd_read_ext_pool_info()
1726 cqr->buildclk = get_tod_clock(); in dasd_eckd_read_ext_pool_info()
1727 cqr->status = DASD_CQR_FILLED; in dasd_eckd_read_ext_pool_info()
1728 cqr->startdev = device; in dasd_eckd_read_ext_pool_info()
1729 cqr->memdev = device; in dasd_eckd_read_ext_pool_info()
1730 cqr->block = NULL; in dasd_eckd_read_ext_pool_info()
1731 cqr->retries = 256; in dasd_eckd_read_ext_pool_info()
1732 cqr->expires = device->default_expires * HZ; in dasd_eckd_read_ext_pool_info()
1734 __set_bit(DASD_CQR_SUPPRESS_CR, &cqr->flags); in dasd_eckd_read_ext_pool_info()
1736 rc = dasd_sleep_on_interruptible(cqr); in dasd_eckd_read_ext_pool_info()
1744 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_read_ext_pool_info()
1799 struct dasd_ccw_req *cqr; in dasd_eckd_build_psf_ssc() local
1803 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ , in dasd_eckd_build_psf_ssc()
1807 if (IS_ERR(cqr)) { in dasd_eckd_build_psf_ssc()
1810 return cqr; in dasd_eckd_build_psf_ssc()
1812 psf_ssc_data = (struct dasd_psf_ssc_data *)cqr->data; in dasd_eckd_build_psf_ssc()
1819 ccw = cqr->cpaddr; in dasd_eckd_build_psf_ssc()
1824 cqr->startdev = device; in dasd_eckd_build_psf_ssc()
1825 cqr->memdev = device; in dasd_eckd_build_psf_ssc()
1826 cqr->block = NULL; in dasd_eckd_build_psf_ssc()
1827 cqr->retries = 256; in dasd_eckd_build_psf_ssc()
1828 cqr->expires = 10*HZ; in dasd_eckd_build_psf_ssc()
1829 cqr->buildclk = get_tod_clock(); in dasd_eckd_build_psf_ssc()
1830 cqr->status = DASD_CQR_FILLED; in dasd_eckd_build_psf_ssc()
1831 return cqr; in dasd_eckd_build_psf_ssc()
1843 struct dasd_ccw_req *cqr; in dasd_eckd_psf_ssc() local
1846 cqr = dasd_eckd_build_psf_ssc(device, enable_pav); in dasd_eckd_psf_ssc()
1847 if (IS_ERR(cqr)) in dasd_eckd_psf_ssc()
1848 return PTR_ERR(cqr); in dasd_eckd_psf_ssc()
1854 cqr->flags |= flags; in dasd_eckd_psf_ssc()
1856 rc = dasd_sleep_on(cqr); in dasd_eckd_psf_ssc()
1860 else if (cqr->intrc == -EAGAIN) in dasd_eckd_psf_ssc()
1863 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_psf_ssc()
2118 struct dasd_ccw_req *cqr; in dasd_eckd_analysis_ccw() local
2125 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, cplength, datasize, device, in dasd_eckd_analysis_ccw()
2127 if (IS_ERR(cqr)) in dasd_eckd_analysis_ccw()
2128 return cqr; in dasd_eckd_analysis_ccw()
2129 ccw = cqr->cpaddr; in dasd_eckd_analysis_ccw()
2131 define_extent(ccw++, cqr->data, 0, 1, in dasd_eckd_analysis_ccw()
2133 LO_data = cqr->data + sizeof(struct DE_eckd_data); in dasd_eckd_analysis_ccw()
2161 cqr->block = NULL; in dasd_eckd_analysis_ccw()
2162 cqr->startdev = device; in dasd_eckd_analysis_ccw()
2163 cqr->memdev = device; in dasd_eckd_analysis_ccw()
2164 cqr->retries = 255; in dasd_eckd_analysis_ccw()
2165 cqr->buildclk = get_tod_clock(); in dasd_eckd_analysis_ccw()
2166 cqr->status = DASD_CQR_FILLED; in dasd_eckd_analysis_ccw()
2168 set_bit(DASD_CQR_SUPPRESS_NRF, &cqr->flags); in dasd_eckd_analysis_ccw()
2170 return cqr; in dasd_eckd_analysis_ccw()
2386 struct dasd_ccw_req *cqr; in dasd_eckd_build_check_tcw() local
2409 cqr = dasd_fmalloc_request(DASD_ECKD_MAGIC, 0, itcw_size, startdev); in dasd_eckd_build_check_tcw()
2410 if (IS_ERR(cqr)) in dasd_eckd_build_check_tcw()
2411 return cqr; in dasd_eckd_build_check_tcw()
2415 itcw = itcw_init(cqr->data, itcw_size, ITCW_OP_READ, 0, count, 0); in dasd_eckd_build_check_tcw()
2421 cqr->cpaddr = itcw_get_tcw(itcw); in dasd_eckd_build_check_tcw()
2441 cqr->cpmode = 1; in dasd_eckd_build_check_tcw()
2442 cqr->startdev = startdev; in dasd_eckd_build_check_tcw()
2443 cqr->memdev = startdev; in dasd_eckd_build_check_tcw()
2444 cqr->basedev = base; in dasd_eckd_build_check_tcw()
2445 cqr->retries = startdev->default_retries; in dasd_eckd_build_check_tcw()
2446 cqr->expires = startdev->default_expires * HZ; in dasd_eckd_build_check_tcw()
2447 cqr->buildclk = get_tod_clock(); in dasd_eckd_build_check_tcw()
2448 cqr->status = DASD_CQR_FILLED; in dasd_eckd_build_check_tcw()
2450 set_bit(DASD_CQR_SUPPRESS_FP, &cqr->flags); in dasd_eckd_build_check_tcw()
2451 set_bit(DASD_CQR_SUPPRESS_IL, &cqr->flags); in dasd_eckd_build_check_tcw()
2453 return cqr; in dasd_eckd_build_check_tcw()
2456 dasd_sfree_request(cqr, startdev); in dasd_eckd_build_check_tcw()
2471 struct dasd_ccw_req *cqr; in dasd_eckd_build_check() local
2502 cqr = dasd_fmalloc_request(DASD_ECKD_MAGIC, cplength, datasize, startdev); in dasd_eckd_build_check()
2503 if (IS_ERR(cqr)) in dasd_eckd_build_check()
2504 return cqr; in dasd_eckd_build_check()
2507 data = cqr->data; in dasd_eckd_build_check()
2508 ccw = cqr->cpaddr; in dasd_eckd_build_check()
2535 cqr->startdev = startdev; in dasd_eckd_build_check()
2536 cqr->memdev = startdev; in dasd_eckd_build_check()
2537 cqr->basedev = base; in dasd_eckd_build_check()
2538 cqr->retries = DASD_RETRIES; in dasd_eckd_build_check()
2539 cqr->expires = startdev->default_expires * HZ; in dasd_eckd_build_check()
2540 cqr->buildclk = get_tod_clock(); in dasd_eckd_build_check()
2541 cqr->status = DASD_CQR_FILLED; in dasd_eckd_build_check()
2543 set_bit(DASD_CQR_SUPPRESS_NRF, &cqr->flags); in dasd_eckd_build_check()
2545 return cqr; in dasd_eckd_build_check()
2879 struct dasd_ccw_req *cqr, *n; in dasd_eckd_format_process_data() local
2917 cqr = dasd_eckd_format_build_ccw_req(base, fdata, in dasd_eckd_format_process_data()
2920 if (IS_ERR(cqr)) { in dasd_eckd_format_process_data()
2921 rc = PTR_ERR(cqr); in dasd_eckd_format_process_data()
2935 list_add_tail(&cqr->blocklist, &format_queue); in dasd_eckd_format_process_data()
2948 list_for_each_entry_safe(cqr, n, &format_queue, blocklist) { in dasd_eckd_format_process_data()
2949 device = cqr->startdev; in dasd_eckd_format_process_data()
2952 if (cqr->status == DASD_CQR_FAILED) { in dasd_eckd_format_process_data()
2958 sense = dasd_get_sense(&cqr->irb); in dasd_eckd_format_process_data()
2959 memcpy(irb, &cqr->irb, sizeof(*irb)); in dasd_eckd_format_process_data()
2963 list_del_init(&cqr->blocklist); in dasd_eckd_format_process_data()
2964 dasd_ffree_request(cqr, device); in dasd_eckd_format_process_data()
3006 static void dasd_eckd_ese_format_cb(struct dasd_ccw_req *cqr, void *data) in dasd_eckd_ese_format_cb() argument
3008 struct dasd_device *device = cqr->startdev; in dasd_eckd_ese_format_cb()
3012 dasd_ffree_request(cqr, device); in dasd_eckd_ese_format_cb()
3016 dasd_eckd_ese_format(struct dasd_device *startdev, struct dasd_ccw_req *cqr) in dasd_eckd_ese_format() argument
3030 req = cqr->callback_data; in dasd_eckd_ese_format()
3031 base = cqr->block->base; in dasd_eckd_ese_format()
3069 static void dasd_eckd_ese_read(struct dasd_ccw_req *cqr) in dasd_eckd_ese_read() argument
3078 req = (struct request *) cqr->callback_data; in dasd_eckd_ese_read()
3079 base = cqr->block->base; in dasd_eckd_ese_read()
3310 static void dasd_eckd_handle_terminated_request(struct dasd_ccw_req *cqr) in dasd_eckd_handle_terminated_request() argument
3312 if (cqr->retries < 0) { in dasd_eckd_handle_terminated_request()
3313 cqr->status = DASD_CQR_FAILED; in dasd_eckd_handle_terminated_request()
3316 cqr->status = DASD_CQR_FILLED; in dasd_eckd_handle_terminated_request()
3317 if (cqr->block && (cqr->startdev != cqr->block->base)) { in dasd_eckd_handle_terminated_request()
3318 dasd_eckd_reset_ccw_to_base_io(cqr); in dasd_eckd_handle_terminated_request()
3319 cqr->startdev = cqr->block->base; in dasd_eckd_handle_terminated_request()
3320 cqr->lpm = dasd_path_get_opm(cqr->block->base); in dasd_eckd_handle_terminated_request()
3325 dasd_eckd_erp_action(struct dasd_ccw_req * cqr) in dasd_eckd_erp_action() argument
3327 struct dasd_device *device = (struct dasd_device *) cqr->startdev; in dasd_eckd_erp_action()
3344 dasd_eckd_erp_postaction(struct dasd_ccw_req * cqr) in dasd_eckd_erp_postaction() argument
3350 struct dasd_ccw_req *cqr, in dasd_eckd_check_for_device_change() argument
3407 if (!cqr && !(sense[27] & DASD_SENSE_BIT_0) && in dasd_eckd_check_for_device_change()
3505 struct dasd_ccw_req *cqr; in dasd_eckd_dso_ras() local
3529 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1, size, device, rq); in dasd_eckd_dso_ras()
3530 if (IS_ERR(cqr)) { in dasd_eckd_dso_ras()
3533 return cqr; in dasd_eckd_dso_ras()
3536 ras_data = cqr->data; in dasd_eckd_dso_ras()
3560 ras_range = (struct dasd_dso_ras_ext_range *)(cqr->data + ras_size); in dasd_eckd_dso_ras()
3579 ccw = cqr->cpaddr; in dasd_eckd_dso_ras()
3580 ccw->cda = (__u32)(addr_t)cqr->data; in dasd_eckd_dso_ras()
3584 cqr->startdev = device; in dasd_eckd_dso_ras()
3585 cqr->memdev = device; in dasd_eckd_dso_ras()
3586 cqr->block = block; in dasd_eckd_dso_ras()
3587 cqr->retries = 256; in dasd_eckd_dso_ras()
3588 cqr->expires = device->default_expires * HZ; in dasd_eckd_dso_ras()
3589 cqr->buildclk = get_tod_clock(); in dasd_eckd_dso_ras()
3590 cqr->status = DASD_CQR_FILLED; in dasd_eckd_dso_ras()
3592 return cqr; in dasd_eckd_dso_ras()
3597 struct dasd_ccw_req *cqr; in dasd_eckd_release_space_full() local
3600 cqr = dasd_eckd_dso_ras(device, NULL, NULL, 0, 0, 0); in dasd_eckd_release_space_full()
3601 if (IS_ERR(cqr)) in dasd_eckd_release_space_full()
3602 return PTR_ERR(cqr); in dasd_eckd_release_space_full()
3604 rc = dasd_sleep_on_interruptible(cqr); in dasd_eckd_release_space_full()
3606 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_release_space_full()
3616 struct dasd_ccw_req *cqr, *n; in dasd_eckd_release_space_trks() local
3642 cqr = dasd_eckd_dso_ras(device, NULL, NULL, cur_pos, stop, 1); in dasd_eckd_release_space_trks()
3643 if (IS_ERR(cqr)) { in dasd_eckd_release_space_trks()
3644 rc = PTR_ERR(cqr); in dasd_eckd_release_space_trks()
3655 list_add_tail(&cqr->blocklist, &ras_queue); in dasd_eckd_release_space_trks()
3663 list_for_each_entry_safe(cqr, n, &ras_queue, blocklist) { in dasd_eckd_release_space_trks()
3664 device = cqr->startdev; in dasd_eckd_release_space_trks()
3668 list_del_init(&cqr->blocklist); in dasd_eckd_release_space_trks()
3670 dasd_sfree_request(cqr, device); in dasd_eckd_release_space_trks()
3707 struct dasd_ccw_req *cqr; in dasd_eckd_build_cp_cmd_single() local
3768 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, cplength, datasize, in dasd_eckd_build_cp_cmd_single()
3770 if (IS_ERR(cqr)) in dasd_eckd_build_cp_cmd_single()
3771 return cqr; in dasd_eckd_build_cp_cmd_single()
3772 ccw = cqr->cpaddr; in dasd_eckd_build_cp_cmd_single()
3775 if (prefix(ccw++, cqr->data, first_trk, in dasd_eckd_build_cp_cmd_single()
3780 dasd_sfree_request(cqr, startdev); in dasd_eckd_build_cp_cmd_single()
3783 idaws = (unsigned long *) (cqr->data + in dasd_eckd_build_cp_cmd_single()
3786 if (define_extent(ccw++, cqr->data, first_trk, in dasd_eckd_build_cp_cmd_single()
3791 dasd_sfree_request(cqr, startdev); in dasd_eckd_build_cp_cmd_single()
3794 idaws = (unsigned long *) (cqr->data + in dasd_eckd_build_cp_cmd_single()
3863 set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags); in dasd_eckd_build_cp_cmd_single()
3864 cqr->startdev = startdev; in dasd_eckd_build_cp_cmd_single()
3865 cqr->memdev = startdev; in dasd_eckd_build_cp_cmd_single()
3866 cqr->block = block; in dasd_eckd_build_cp_cmd_single()
3867 cqr->expires = startdev->default_expires * HZ; /* default 5 minutes */ in dasd_eckd_build_cp_cmd_single()
3868 cqr->lpm = dasd_path_get_ppm(startdev); in dasd_eckd_build_cp_cmd_single()
3869 cqr->retries = startdev->default_retries; in dasd_eckd_build_cp_cmd_single()
3870 cqr->buildclk = get_tod_clock(); in dasd_eckd_build_cp_cmd_single()
3871 cqr->status = DASD_CQR_FILLED; in dasd_eckd_build_cp_cmd_single()
3875 set_bit(DASD_CQR_SUPPRESS_FP, &cqr->flags); in dasd_eckd_build_cp_cmd_single()
3876 set_bit(DASD_CQR_SUPPRESS_IL, &cqr->flags); in dasd_eckd_build_cp_cmd_single()
3877 set_bit(DASD_CQR_SUPPRESS_NRF, &cqr->flags); in dasd_eckd_build_cp_cmd_single()
3880 return cqr; in dasd_eckd_build_cp_cmd_single()
3897 struct dasd_ccw_req *cqr; in dasd_eckd_build_cp_cmd_track() local
3935 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, cplength, datasize, in dasd_eckd_build_cp_cmd_track()
3937 if (IS_ERR(cqr)) in dasd_eckd_build_cp_cmd_track()
3938 return cqr; in dasd_eckd_build_cp_cmd_track()
3939 ccw = cqr->cpaddr; in dasd_eckd_build_cp_cmd_track()
3947 if (prefix_LRE(ccw++, cqr->data, first_trk, in dasd_eckd_build_cp_cmd_track()
3955 dasd_sfree_request(cqr, startdev); in dasd_eckd_build_cp_cmd_track()
3966 idaws = (unsigned long *) (cqr->data + sizeof(struct PFX_eckd_data)); in dasd_eckd_build_cp_cmd_track()
4004 dasd_sfree_request(cqr, startdev); in dasd_eckd_build_cp_cmd_track()
4010 dasd_sfree_request(cqr, startdev); in dasd_eckd_build_cp_cmd_track()
4042 set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags); in dasd_eckd_build_cp_cmd_track()
4043 cqr->startdev = startdev; in dasd_eckd_build_cp_cmd_track()
4044 cqr->memdev = startdev; in dasd_eckd_build_cp_cmd_track()
4045 cqr->block = block; in dasd_eckd_build_cp_cmd_track()
4046 cqr->expires = startdev->default_expires * HZ; /* default 5 minutes */ in dasd_eckd_build_cp_cmd_track()
4047 cqr->lpm = dasd_path_get_ppm(startdev); in dasd_eckd_build_cp_cmd_track()
4048 cqr->retries = startdev->default_retries; in dasd_eckd_build_cp_cmd_track()
4049 cqr->buildclk = get_tod_clock(); in dasd_eckd_build_cp_cmd_track()
4050 cqr->status = DASD_CQR_FILLED; in dasd_eckd_build_cp_cmd_track()
4054 set_bit(DASD_CQR_SUPPRESS_NRF, &cqr->flags); in dasd_eckd_build_cp_cmd_track()
4056 return cqr; in dasd_eckd_build_cp_cmd_track()
4228 struct dasd_ccw_req *cqr; in dasd_eckd_build_cp_tpm_track() local
4274 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 0, itcw_size, startdev, in dasd_eckd_build_cp_tpm_track()
4276 if (IS_ERR(cqr)) in dasd_eckd_build_cp_tpm_track()
4277 return cqr; in dasd_eckd_build_cp_tpm_track()
4286 itcw = itcw_init(cqr->data, itcw_size, itcw_op, 0, ctidaw, 0); in dasd_eckd_build_cp_tpm_track()
4291 cqr->cpaddr = itcw_get_tcw(itcw); in dasd_eckd_build_cp_tpm_track()
4365 set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags); in dasd_eckd_build_cp_tpm_track()
4366 cqr->cpmode = 1; in dasd_eckd_build_cp_tpm_track()
4367 cqr->startdev = startdev; in dasd_eckd_build_cp_tpm_track()
4368 cqr->memdev = startdev; in dasd_eckd_build_cp_tpm_track()
4369 cqr->block = block; in dasd_eckd_build_cp_tpm_track()
4370 cqr->expires = startdev->default_expires * HZ; /* default 5 minutes */ in dasd_eckd_build_cp_tpm_track()
4371 cqr->lpm = dasd_path_get_ppm(startdev); in dasd_eckd_build_cp_tpm_track()
4372 cqr->retries = startdev->default_retries; in dasd_eckd_build_cp_tpm_track()
4373 cqr->buildclk = get_tod_clock(); in dasd_eckd_build_cp_tpm_track()
4374 cqr->status = DASD_CQR_FILLED; in dasd_eckd_build_cp_tpm_track()
4378 set_bit(DASD_CQR_SUPPRESS_FP, &cqr->flags); in dasd_eckd_build_cp_tpm_track()
4379 set_bit(DASD_CQR_SUPPRESS_IL, &cqr->flags); in dasd_eckd_build_cp_tpm_track()
4380 set_bit(DASD_CQR_SUPPRESS_NRF, &cqr->flags); in dasd_eckd_build_cp_tpm_track()
4383 return cqr; in dasd_eckd_build_cp_tpm_track()
4385 dasd_sfree_request(cqr, startdev); in dasd_eckd_build_cp_tpm_track()
4404 struct dasd_ccw_req *cqr; in dasd_eckd_build_cp() local
4435 cqr = NULL; in dasd_eckd_build_cp()
4440 cqr = dasd_eckd_build_cp_tpm_track(startdev, block, req, in dasd_eckd_build_cp()
4445 if (IS_ERR(cqr) && (PTR_ERR(cqr) != -EAGAIN) && in dasd_eckd_build_cp()
4446 (PTR_ERR(cqr) != -ENOMEM)) in dasd_eckd_build_cp()
4447 cqr = NULL; in dasd_eckd_build_cp()
4451 cqr = dasd_eckd_build_cp_cmd_track(startdev, block, req, in dasd_eckd_build_cp()
4456 if (IS_ERR(cqr) && (PTR_ERR(cqr) != -EAGAIN) && in dasd_eckd_build_cp()
4457 (PTR_ERR(cqr) != -ENOMEM)) in dasd_eckd_build_cp()
4458 cqr = NULL; in dasd_eckd_build_cp()
4460 if (!cqr) in dasd_eckd_build_cp()
4461 cqr = dasd_eckd_build_cp_cmd_single(startdev, block, req, in dasd_eckd_build_cp()
4466 return cqr; in dasd_eckd_build_cp()
4480 struct dasd_ccw_req *cqr; in dasd_eckd_build_cp_raw() local
4549 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, cplength, in dasd_eckd_build_cp_raw()
4551 if (IS_ERR(cqr)) in dasd_eckd_build_cp_raw()
4552 return cqr; in dasd_eckd_build_cp_raw()
4554 ccw = cqr->cpaddr; in dasd_eckd_build_cp_raw()
4555 data = cqr->data; in dasd_eckd_build_cp_raw()
4569 idaws = (unsigned long *)(cqr->data + size); in dasd_eckd_build_cp_raw()
4609 set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags); in dasd_eckd_build_cp_raw()
4610 cqr->startdev = startdev; in dasd_eckd_build_cp_raw()
4611 cqr->memdev = startdev; in dasd_eckd_build_cp_raw()
4612 cqr->block = block; in dasd_eckd_build_cp_raw()
4613 cqr->expires = startdev->default_expires * HZ; in dasd_eckd_build_cp_raw()
4614 cqr->lpm = dasd_path_get_ppm(startdev); in dasd_eckd_build_cp_raw()
4615 cqr->retries = startdev->default_retries; in dasd_eckd_build_cp_raw()
4616 cqr->buildclk = get_tod_clock(); in dasd_eckd_build_cp_raw()
4617 cqr->status = DASD_CQR_FILLED; in dasd_eckd_build_cp_raw()
4619 return cqr; in dasd_eckd_build_cp_raw()
4624 dasd_eckd_free_cp(struct dasd_ccw_req *cqr, struct request *req) in dasd_eckd_free_cp() argument
4637 private = cqr->block->base->private; in dasd_eckd_free_cp()
4638 blksize = cqr->block->bp_block; in dasd_eckd_free_cp()
4640 recid = blk_rq_pos(req) >> cqr->block->s2b_shift; in dasd_eckd_free_cp()
4641 ccw = cqr->cpaddr; in dasd_eckd_free_cp()
4670 status = cqr->status == DASD_CQR_DONE; in dasd_eckd_free_cp()
4671 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_free_cp()
4682 void dasd_eckd_reset_ccw_to_base_io(struct dasd_ccw_req *cqr) in dasd_eckd_reset_ccw_to_base_io() argument
4690 if (cqr->cpmode == 1) { in dasd_eckd_reset_ccw_to_base_io()
4691 tcw = cqr->cpaddr; in dasd_eckd_reset_ccw_to_base_io()
4698 ccw = cqr->cpaddr; in dasd_eckd_reset_ccw_to_base_io()
4699 pfxdata = cqr->data; in dasd_eckd_reset_ccw_to_base_io()
4716 struct dasd_ccw_req *cqr; in dasd_eckd_build_alias_cp() local
4728 cqr = dasd_eckd_build_cp_raw(startdev, block, req); in dasd_eckd_build_alias_cp()
4730 cqr = dasd_eckd_build_cp(startdev, block, req); in dasd_eckd_build_alias_cp()
4731 if (IS_ERR(cqr)) in dasd_eckd_build_alias_cp()
4734 return cqr; in dasd_eckd_build_alias_cp()
4737 static int dasd_eckd_free_alias_cp(struct dasd_ccw_req *cqr, in dasd_eckd_free_alias_cp() argument
4743 spin_lock_irqsave(get_ccwdev_lock(cqr->memdev->cdev), flags); in dasd_eckd_free_alias_cp()
4744 private = cqr->memdev->private; in dasd_eckd_free_alias_cp()
4746 spin_unlock_irqrestore(get_ccwdev_lock(cqr->memdev->cdev), flags); in dasd_eckd_free_alias_cp()
4747 return dasd_eckd_free_cp(cqr, req); in dasd_eckd_free_alias_cp()
4781 struct dasd_ccw_req *cqr; in dasd_eckd_release() local
4790 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1, 32, device, NULL); in dasd_eckd_release()
4791 if (IS_ERR(cqr)) { in dasd_eckd_release()
4794 cqr = &dasd_reserve_req->cqr; in dasd_eckd_release()
4795 memset(cqr, 0, sizeof(*cqr)); in dasd_eckd_release()
4798 cqr->cpaddr = &dasd_reserve_req->ccw; in dasd_eckd_release()
4799 cqr->data = &dasd_reserve_req->data; in dasd_eckd_release()
4800 cqr->magic = DASD_ECKD_MAGIC; in dasd_eckd_release()
4802 ccw = cqr->cpaddr; in dasd_eckd_release()
4806 ccw->cda = (__u32)(addr_t) cqr->data; in dasd_eckd_release()
4807 cqr->startdev = device; in dasd_eckd_release()
4808 cqr->memdev = device; in dasd_eckd_release()
4809 clear_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags); in dasd_eckd_release()
4810 set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags); in dasd_eckd_release()
4811 cqr->retries = 2; /* set retry counter to enable basic ERP */ in dasd_eckd_release()
4812 cqr->expires = 2 * HZ; in dasd_eckd_release()
4813 cqr->buildclk = get_tod_clock(); in dasd_eckd_release()
4814 cqr->status = DASD_CQR_FILLED; in dasd_eckd_release()
4816 rc = dasd_sleep_on_immediatly(cqr); in dasd_eckd_release()
4823 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_release()
4836 struct dasd_ccw_req *cqr; in dasd_eckd_reserve() local
4845 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1, 32, device, NULL); in dasd_eckd_reserve()
4846 if (IS_ERR(cqr)) { in dasd_eckd_reserve()
4849 cqr = &dasd_reserve_req->cqr; in dasd_eckd_reserve()
4850 memset(cqr, 0, sizeof(*cqr)); in dasd_eckd_reserve()
4853 cqr->cpaddr = &dasd_reserve_req->ccw; in dasd_eckd_reserve()
4854 cqr->data = &dasd_reserve_req->data; in dasd_eckd_reserve()
4855 cqr->magic = DASD_ECKD_MAGIC; in dasd_eckd_reserve()
4857 ccw = cqr->cpaddr; in dasd_eckd_reserve()
4861 ccw->cda = (__u32)(addr_t) cqr->data; in dasd_eckd_reserve()
4862 cqr->startdev = device; in dasd_eckd_reserve()
4863 cqr->memdev = device; in dasd_eckd_reserve()
4864 clear_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags); in dasd_eckd_reserve()
4865 set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags); in dasd_eckd_reserve()
4866 cqr->retries = 2; /* set retry counter to enable basic ERP */ in dasd_eckd_reserve()
4867 cqr->expires = 2 * HZ; in dasd_eckd_reserve()
4868 cqr->buildclk = get_tod_clock(); in dasd_eckd_reserve()
4869 cqr->status = DASD_CQR_FILLED; in dasd_eckd_reserve()
4871 rc = dasd_sleep_on_immediatly(cqr); in dasd_eckd_reserve()
4878 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_reserve()
4890 struct dasd_ccw_req *cqr; in dasd_eckd_steal_lock() local
4899 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1, 32, device, NULL); in dasd_eckd_steal_lock()
4900 if (IS_ERR(cqr)) { in dasd_eckd_steal_lock()
4903 cqr = &dasd_reserve_req->cqr; in dasd_eckd_steal_lock()
4904 memset(cqr, 0, sizeof(*cqr)); in dasd_eckd_steal_lock()
4907 cqr->cpaddr = &dasd_reserve_req->ccw; in dasd_eckd_steal_lock()
4908 cqr->data = &dasd_reserve_req->data; in dasd_eckd_steal_lock()
4909 cqr->magic = DASD_ECKD_MAGIC; in dasd_eckd_steal_lock()
4911 ccw = cqr->cpaddr; in dasd_eckd_steal_lock()
4915 ccw->cda = (__u32)(addr_t) cqr->data; in dasd_eckd_steal_lock()
4916 cqr->startdev = device; in dasd_eckd_steal_lock()
4917 cqr->memdev = device; in dasd_eckd_steal_lock()
4918 clear_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags); in dasd_eckd_steal_lock()
4919 set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags); in dasd_eckd_steal_lock()
4920 cqr->retries = 2; /* set retry counter to enable basic ERP */ in dasd_eckd_steal_lock()
4921 cqr->expires = 2 * HZ; in dasd_eckd_steal_lock()
4922 cqr->buildclk = get_tod_clock(); in dasd_eckd_steal_lock()
4923 cqr->status = DASD_CQR_FILLED; in dasd_eckd_steal_lock()
4925 rc = dasd_sleep_on_immediatly(cqr); in dasd_eckd_steal_lock()
4932 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_steal_lock()
4945 struct dasd_ccw_req *cqr; in dasd_eckd_snid() local
4958 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1, in dasd_eckd_snid()
4961 if (IS_ERR(cqr)) { in dasd_eckd_snid()
4964 cqr = &dasd_reserve_req->cqr; in dasd_eckd_snid()
4965 memset(cqr, 0, sizeof(*cqr)); in dasd_eckd_snid()
4968 cqr->cpaddr = &dasd_reserve_req->ccw; in dasd_eckd_snid()
4969 cqr->data = &dasd_reserve_req->data; in dasd_eckd_snid()
4970 cqr->magic = DASD_ECKD_MAGIC; in dasd_eckd_snid()
4972 ccw = cqr->cpaddr; in dasd_eckd_snid()
4976 ccw->cda = (__u32)(addr_t) cqr->data; in dasd_eckd_snid()
4977 cqr->startdev = device; in dasd_eckd_snid()
4978 cqr->memdev = device; in dasd_eckd_snid()
4979 clear_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags); in dasd_eckd_snid()
4980 set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags); in dasd_eckd_snid()
4981 set_bit(DASD_CQR_ALLOW_SLOCK, &cqr->flags); in dasd_eckd_snid()
4982 cqr->retries = 5; in dasd_eckd_snid()
4983 cqr->expires = 10 * HZ; in dasd_eckd_snid()
4984 cqr->buildclk = get_tod_clock(); in dasd_eckd_snid()
4985 cqr->status = DASD_CQR_FILLED; in dasd_eckd_snid()
4986 cqr->lpm = usrparm.path_mask; in dasd_eckd_snid()
4988 rc = dasd_sleep_on_immediatly(cqr); in dasd_eckd_snid()
4990 if (!rc && usrparm.path_mask && (cqr->lpm != usrparm.path_mask)) in dasd_eckd_snid()
4993 usrparm.data = *((struct dasd_snid_data *)cqr->data); in dasd_eckd_snid()
5001 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_snid()
5013 struct dasd_ccw_req *cqr; in dasd_eckd_performance() local
5017 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ + 1 /* RSSD */, in dasd_eckd_performance()
5021 if (IS_ERR(cqr)) { in dasd_eckd_performance()
5024 return PTR_ERR(cqr); in dasd_eckd_performance()
5026 cqr->startdev = device; in dasd_eckd_performance()
5027 cqr->memdev = device; in dasd_eckd_performance()
5028 cqr->retries = 0; in dasd_eckd_performance()
5029 clear_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags); in dasd_eckd_performance()
5030 cqr->expires = 10 * HZ; in dasd_eckd_performance()
5033 prssdp = (struct dasd_psf_prssd_data *) cqr->data; in dasd_eckd_performance()
5039 ccw = cqr->cpaddr; in dasd_eckd_performance()
5054 cqr->buildclk = get_tod_clock(); in dasd_eckd_performance()
5055 cqr->status = DASD_CQR_FILLED; in dasd_eckd_performance()
5056 rc = dasd_sleep_on(cqr); in dasd_eckd_performance()
5058 prssdp = (struct dasd_psf_prssd_data *) cqr->data; in dasd_eckd_performance()
5064 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_performance()
5125 struct dasd_ccw_req *cqr; in dasd_symm_io() local
5174 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 2, 0, device, NULL); in dasd_symm_io()
5175 if (IS_ERR(cqr)) { in dasd_symm_io()
5178 rc = PTR_ERR(cqr); in dasd_symm_io()
5182 cqr->startdev = device; in dasd_symm_io()
5183 cqr->memdev = device; in dasd_symm_io()
5184 cqr->retries = 3; in dasd_symm_io()
5185 cqr->expires = 10 * HZ; in dasd_symm_io()
5186 cqr->buildclk = get_tod_clock(); in dasd_symm_io()
5187 cqr->status = DASD_CQR_FILLED; in dasd_symm_io()
5190 ccw = cqr->cpaddr; in dasd_symm_io()
5206 rc = dasd_sleep_on(cqr); in dasd_symm_io()
5217 dasd_sfree_request(cqr, cqr->memdev); in dasd_symm_io()
5733 struct dasd_ccw_req *cqr; in dasd_eckd_read_message_buffer() local
5737 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ + 1 /* RSSD */, in dasd_eckd_read_message_buffer()
5741 if (IS_ERR(cqr)) { in dasd_eckd_read_message_buffer()
5744 return PTR_ERR(cqr); in dasd_eckd_read_message_buffer()
5747 cqr->lpm = lpum; in dasd_eckd_read_message_buffer()
5749 cqr->startdev = device; in dasd_eckd_read_message_buffer()
5750 cqr->memdev = device; in dasd_eckd_read_message_buffer()
5751 cqr->block = NULL; in dasd_eckd_read_message_buffer()
5752 cqr->expires = 10 * HZ; in dasd_eckd_read_message_buffer()
5753 set_bit(DASD_CQR_VERIFY_PATH, &cqr->flags); in dasd_eckd_read_message_buffer()
5757 clear_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags); in dasd_eckd_read_message_buffer()
5758 cqr->retries = 256; in dasd_eckd_read_message_buffer()
5761 prssdp = (struct dasd_psf_prssd_data *) cqr->data; in dasd_eckd_read_message_buffer()
5767 ccw = cqr->cpaddr; in dasd_eckd_read_message_buffer()
5784 cqr->buildclk = get_tod_clock(); in dasd_eckd_read_message_buffer()
5785 cqr->status = DASD_CQR_FILLED; in dasd_eckd_read_message_buffer()
5786 rc = dasd_sleep_on_immediatly(cqr); in dasd_eckd_read_message_buffer()
5788 prssdp = (struct dasd_psf_prssd_data *) cqr->data; in dasd_eckd_read_message_buffer()
5793 } else if (cqr->lpm) { in dasd_eckd_read_message_buffer()
5799 cqr->lpm = 0; in dasd_eckd_read_message_buffer()
5805 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_read_message_buffer()
5815 struct dasd_ccw_req *cqr; in dasd_eckd_query_host_access() local
5827 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ + 1 /* RSSD */, in dasd_eckd_query_host_access()
5830 if (IS_ERR(cqr)) { in dasd_eckd_query_host_access()
5833 return PTR_ERR(cqr); in dasd_eckd_query_host_access()
5837 dasd_sfree_request(cqr, device); in dasd_eckd_query_host_access()
5842 cqr->startdev = device; in dasd_eckd_query_host_access()
5843 cqr->memdev = device; in dasd_eckd_query_host_access()
5844 cqr->block = NULL; in dasd_eckd_query_host_access()
5845 cqr->retries = 256; in dasd_eckd_query_host_access()
5846 cqr->expires = 10 * HZ; in dasd_eckd_query_host_access()
5849 prssdp = (struct dasd_psf_prssd_data *) cqr->data; in dasd_eckd_query_host_access()
5858 ccw = cqr->cpaddr; in dasd_eckd_query_host_access()
5872 cqr->buildclk = get_tod_clock(); in dasd_eckd_query_host_access()
5873 cqr->status = DASD_CQR_FILLED; in dasd_eckd_query_host_access()
5875 __set_bit(DASD_CQR_SUPPRESS_CR, &cqr->flags); in dasd_eckd_query_host_access()
5876 rc = dasd_sleep_on_interruptible(cqr); in dasd_eckd_query_host_access()
5886 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_query_host_access()
5982 struct dasd_ccw_req *cqr; in dasd_eckd_psf_cuir_response() local
5986 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ , in dasd_eckd_psf_cuir_response()
5990 if (IS_ERR(cqr)) { in dasd_eckd_psf_cuir_response()
5993 return PTR_ERR(cqr); in dasd_eckd_psf_cuir_response()
5996 psf_cuir = (struct dasd_psf_cuir_response *)cqr->data; in dasd_eckd_psf_cuir_response()
6003 ccw = cqr->cpaddr; in dasd_eckd_psf_cuir_response()
6009 cqr->startdev = device; in dasd_eckd_psf_cuir_response()
6010 cqr->memdev = device; in dasd_eckd_psf_cuir_response()
6011 cqr->block = NULL; in dasd_eckd_psf_cuir_response()
6012 cqr->retries = 256; in dasd_eckd_psf_cuir_response()
6013 cqr->expires = 10*HZ; in dasd_eckd_psf_cuir_response()
6014 cqr->buildclk = get_tod_clock(); in dasd_eckd_psf_cuir_response()
6015 cqr->status = DASD_CQR_FILLED; in dasd_eckd_psf_cuir_response()
6016 set_bit(DASD_CQR_VERIFY_PATH, &cqr->flags); in dasd_eckd_psf_cuir_response()
6018 rc = dasd_sleep_on(cqr); in dasd_eckd_psf_cuir_response()
6020 dasd_sfree_request(cqr, cqr->memdev); in dasd_eckd_psf_cuir_response()