Lines Matching refs:arr

1633 static int fill_from_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr,  in fill_from_dev_buffer()  argument
1645 arr, arr_len); in fill_from_dev_buffer()
1656 static int p_fill_from_dev_buffer(struct scsi_cmnd *scp, const void *arr, in p_fill_from_dev_buffer() argument
1669 arr, arr_len, skip); in p_fill_from_dev_buffer()
1681 static int fetch_to_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr, in fetch_to_dev_buffer() argument
1689 return scsi_sg_copy_to_buffer(scp, arr, arr_len); in fetch_to_dev_buffer()
1702 static int inquiry_vpd_83(unsigned char *arr, int port_group_id, in inquiry_vpd_83() argument
1712 arr[0] = 0x2; /* ASCII */ in inquiry_vpd_83()
1713 arr[1] = 0x1; in inquiry_vpd_83()
1714 arr[2] = 0x0; in inquiry_vpd_83()
1715 memcpy(&arr[4], sdebug_inq_vendor_id, 8); in inquiry_vpd_83()
1716 memcpy(&arr[12], sdebug_inq_product_id, 16); in inquiry_vpd_83()
1717 memcpy(&arr[28], dev_id_str, dev_id_str_len); in inquiry_vpd_83()
1719 arr[3] = num; in inquiry_vpd_83()
1724 arr[num++] = 0x1; /* binary (not necessarily sas) */ in inquiry_vpd_83()
1725 arr[num++] = 0xa; /* PIV=0, lu, naa */ in inquiry_vpd_83()
1726 arr[num++] = 0x0; in inquiry_vpd_83()
1727 arr[num++] = 0x12; in inquiry_vpd_83()
1728 arr[num++] = 0x10; /* uuid type=1, locally assigned */ in inquiry_vpd_83()
1729 arr[num++] = 0x0; in inquiry_vpd_83()
1730 memcpy(arr + num, lu_name, 16); in inquiry_vpd_83()
1734 arr[num++] = 0x1; /* binary (not necessarily sas) */ in inquiry_vpd_83()
1735 arr[num++] = 0x3; /* PIV=0, lu, naa */ in inquiry_vpd_83()
1736 arr[num++] = 0x0; in inquiry_vpd_83()
1737 arr[num++] = 0x8; in inquiry_vpd_83()
1738 put_unaligned_be64(naa3_comp_b + dev_id_num, arr + num); in inquiry_vpd_83()
1742 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_83()
1743 arr[num++] = 0x94; /* PIV=1, target port, rel port */ in inquiry_vpd_83()
1744 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_83()
1745 arr[num++] = 0x4; /* length */ in inquiry_vpd_83()
1746 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_83()
1747 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_83()
1748 arr[num++] = 0x0; in inquiry_vpd_83()
1749 arr[num++] = 0x1; /* relative port A */ in inquiry_vpd_83()
1752 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_83()
1753 arr[num++] = 0x93; /* piv=1, target port, naa */ in inquiry_vpd_83()
1754 arr[num++] = 0x0; in inquiry_vpd_83()
1755 arr[num++] = 0x8; in inquiry_vpd_83()
1756 put_unaligned_be64(naa3_comp_a + port_a, arr + num); in inquiry_vpd_83()
1759 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_83()
1760 arr[num++] = 0x95; /* piv=1, target port group id */ in inquiry_vpd_83()
1761 arr[num++] = 0x0; in inquiry_vpd_83()
1762 arr[num++] = 0x4; in inquiry_vpd_83()
1763 arr[num++] = 0; in inquiry_vpd_83()
1764 arr[num++] = 0; in inquiry_vpd_83()
1765 put_unaligned_be16(port_group_id, arr + num); in inquiry_vpd_83()
1768 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_83()
1769 arr[num++] = 0xa3; /* piv=1, target device, naa */ in inquiry_vpd_83()
1770 arr[num++] = 0x0; in inquiry_vpd_83()
1771 arr[num++] = 0x8; in inquiry_vpd_83()
1772 put_unaligned_be64(naa3_comp_a + target_dev_id, arr + num); in inquiry_vpd_83()
1775 arr[num++] = 0x63; /* proto=sas, UTF-8 */ in inquiry_vpd_83()
1776 arr[num++] = 0xa8; /* piv=1, target device, SCSI name string */ in inquiry_vpd_83()
1777 arr[num++] = 0x0; in inquiry_vpd_83()
1778 arr[num++] = 24; in inquiry_vpd_83()
1779 memcpy(arr + num, "naa.32222220", 12); in inquiry_vpd_83()
1782 memcpy(arr + num, b, 8); in inquiry_vpd_83()
1784 memset(arr + num, 0, 4); in inquiry_vpd_83()
1796 static int inquiry_vpd_84(unsigned char *arr) in inquiry_vpd_84() argument
1798 memcpy(arr, vpd84_data, sizeof(vpd84_data)); in inquiry_vpd_84()
1803 static int inquiry_vpd_85(unsigned char *arr) in inquiry_vpd_85() argument
1810 arr[num++] = 0x1; /* lu, storage config */ in inquiry_vpd_85()
1811 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_85()
1812 arr[num++] = 0x0; in inquiry_vpd_85()
1817 arr[num++] = plen; /* length, null termianted, padded */ in inquiry_vpd_85()
1818 memcpy(arr + num, na1, olen); in inquiry_vpd_85()
1819 memset(arr + num + olen, 0, plen - olen); in inquiry_vpd_85()
1822 arr[num++] = 0x4; /* lu, logging */ in inquiry_vpd_85()
1823 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_85()
1824 arr[num++] = 0x0; in inquiry_vpd_85()
1829 arr[num++] = plen; /* length, null terminated, padded */ in inquiry_vpd_85()
1830 memcpy(arr + num, na2, olen); in inquiry_vpd_85()
1831 memset(arr + num + olen, 0, plen - olen); in inquiry_vpd_85()
1838 static int inquiry_vpd_88(unsigned char *arr, int target_dev_id) in inquiry_vpd_88() argument
1845 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1846 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1847 arr[num++] = 0x0; in inquiry_vpd_88()
1848 arr[num++] = 0x1; /* relative port 1 (primary) */ in inquiry_vpd_88()
1849 memset(arr + num, 0, 6); in inquiry_vpd_88()
1851 arr[num++] = 0x0; in inquiry_vpd_88()
1852 arr[num++] = 12; /* length tp descriptor */ in inquiry_vpd_88()
1854 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_88()
1855 arr[num++] = 0x93; /* PIV=1, target port, NAA */ in inquiry_vpd_88()
1856 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1857 arr[num++] = 0x8; /* length */ in inquiry_vpd_88()
1858 put_unaligned_be64(naa3_comp_a + port_a, arr + num); in inquiry_vpd_88()
1860 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1861 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1862 arr[num++] = 0x0; in inquiry_vpd_88()
1863 arr[num++] = 0x2; /* relative port 2 (secondary) */ in inquiry_vpd_88()
1864 memset(arr + num, 0, 6); in inquiry_vpd_88()
1866 arr[num++] = 0x0; in inquiry_vpd_88()
1867 arr[num++] = 12; /* length tp descriptor */ in inquiry_vpd_88()
1869 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_88()
1870 arr[num++] = 0x93; /* PIV=1, target port, NAA */ in inquiry_vpd_88()
1871 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1872 arr[num++] = 0x8; /* length */ in inquiry_vpd_88()
1873 put_unaligned_be64(naa3_comp_a + port_b, arr + num); in inquiry_vpd_88()
1925 static int inquiry_vpd_89(unsigned char *arr) in inquiry_vpd_89() argument
1927 memcpy(arr, vpd89_data, sizeof(vpd89_data)); in inquiry_vpd_89()
1940 static int inquiry_vpd_b0(unsigned char *arr) in inquiry_vpd_b0() argument
1944 memcpy(arr, vpdb0_data, sizeof(vpdb0_data)); in inquiry_vpd_b0()
1952 put_unaligned_be16(gran, arr + 2); in inquiry_vpd_b0()
1956 put_unaligned_be32(sdebug_store_sectors, arr + 4); in inquiry_vpd_b0()
1959 put_unaligned_be32(sdebug_opt_blks, &arr[8]); in inquiry_vpd_b0()
1963 put_unaligned_be32(sdebug_unmap_max_blocks, &arr[16]); in inquiry_vpd_b0()
1966 put_unaligned_be32(sdebug_unmap_max_desc, &arr[20]); in inquiry_vpd_b0()
1971 put_unaligned_be32(sdebug_unmap_alignment, &arr[28]); in inquiry_vpd_b0()
1972 arr[28] |= 0x80; /* UGAVALID */ in inquiry_vpd_b0()
1976 put_unaligned_be32(sdebug_unmap_granularity, &arr[24]); in inquiry_vpd_b0()
1979 put_unaligned_be64(sdebug_write_same_length, &arr[32]); in inquiry_vpd_b0()
1982 put_unaligned_be32(sdebug_atomic_wr_max_length, &arr[40]); in inquiry_vpd_b0()
1983 put_unaligned_be32(sdebug_atomic_wr_align, &arr[44]); in inquiry_vpd_b0()
1984 put_unaligned_be32(sdebug_atomic_wr_gran, &arr[48]); in inquiry_vpd_b0()
1985 put_unaligned_be32(sdebug_atomic_wr_max_length_bndry, &arr[52]); in inquiry_vpd_b0()
1986 put_unaligned_be32(sdebug_atomic_wr_max_bndry, &arr[56]); in inquiry_vpd_b0()
1993 static int inquiry_vpd_b1(struct sdebug_dev_info *devip, unsigned char *arr) in inquiry_vpd_b1() argument
1995 memset(arr, 0, 0x3c); in inquiry_vpd_b1()
1996 arr[0] = 0; in inquiry_vpd_b1()
1997 arr[1] = 1; /* non rotating medium (e.g. solid state) */ in inquiry_vpd_b1()
1998 arr[2] = 0; in inquiry_vpd_b1()
1999 arr[3] = 5; /* less than 1.8" */ in inquiry_vpd_b1()
2005 static int inquiry_vpd_b2(unsigned char *arr) in inquiry_vpd_b2() argument
2007 memset(arr, 0, 0x4); in inquiry_vpd_b2()
2008 arr[0] = 0; /* threshold exponent */ in inquiry_vpd_b2()
2010 arr[1] = 1 << 7; in inquiry_vpd_b2()
2012 arr[1] |= 1 << 6; in inquiry_vpd_b2()
2014 arr[1] |= 1 << 5; in inquiry_vpd_b2()
2016 arr[1] |= (sdebug_lbprz & 0x7) << 2; /* sbc4r07 and later */ in inquiry_vpd_b2()
2024 static int inquiry_vpd_b6(struct sdebug_dev_info *devip, unsigned char *arr) in inquiry_vpd_b6() argument
2026 memset(arr, 0, 0x3c); in inquiry_vpd_b6()
2027 arr[0] = 0x1; /* set URSWRZ (unrestricted read in seq. wr req zone) */ in inquiry_vpd_b6()
2034 put_unaligned_be32(0xffffffff, &arr[4]); in inquiry_vpd_b6()
2035 put_unaligned_be32(0xffffffff, &arr[8]); in inquiry_vpd_b6()
2037 put_unaligned_be32(devip->max_open, &arr[12]); in inquiry_vpd_b6()
2039 put_unaligned_be32(0xffffffff, &arr[12]); in inquiry_vpd_b6()
2041 arr[19] = ZBC_CONSTANT_ZONE_START_OFFSET; in inquiry_vpd_b6()
2042 put_unaligned_be64(devip->zsize, &arr[20]); in inquiry_vpd_b6()
2044 arr[19] = 0; in inquiry_vpd_b6()
2068 unsigned char *arr; in resp_inquiry() local
2075 arr = kzalloc(SDEBUG_MAX_INQ_ARR_SZ, GFP_ATOMIC); in resp_inquiry()
2076 if (! arr) in resp_inquiry()
2095 arr[0] = pq_pdt; in resp_inquiry()
2098 kfree(arr); in resp_inquiry()
2106 arr[1] = cmd[2]; in resp_inquiry()
2118 arr[n++] = 0x0; /* this page */ in resp_inquiry()
2119 arr[n++] = 0x80; /* unit serial number */ in resp_inquiry()
2120 arr[n++] = 0x83; /* device identification */ in resp_inquiry()
2121 arr[n++] = 0x84; /* software interface ident. */ in resp_inquiry()
2122 arr[n++] = 0x85; /* management network addresses */ in resp_inquiry()
2123 arr[n++] = 0x86; /* extended inquiry */ in resp_inquiry()
2124 arr[n++] = 0x87; /* mode page policy */ in resp_inquiry()
2125 arr[n++] = 0x88; /* SCSI ports */ in resp_inquiry()
2127 arr[n++] = 0x89; /* ATA information */ in resp_inquiry()
2128 arr[n++] = 0xb0; /* Block limits */ in resp_inquiry()
2129 arr[n++] = 0xb1; /* Block characteristics */ in resp_inquiry()
2131 arr[n++] = 0xb2; /* LB Provisioning */ in resp_inquiry()
2133 arr[n++] = 0xb6; /* ZB dev. char. */ in resp_inquiry()
2134 arr[n++] = 0xb7; /* Block limits extension */ in resp_inquiry()
2136 arr[3] = n - 4; /* number of supported VPD pages */ in resp_inquiry()
2138 arr[3] = len; in resp_inquiry()
2139 memcpy(&arr[4], lu_id_str, len); in resp_inquiry()
2141 arr[3] = inquiry_vpd_83(&arr[4], port_group_id, in resp_inquiry()
2146 arr[3] = inquiry_vpd_84(&arr[4]); in resp_inquiry()
2148 arr[3] = inquiry_vpd_85(&arr[4]); in resp_inquiry()
2150 arr[3] = 0x3c; /* number of following entries */ in resp_inquiry()
2152 arr[4] = 0x4; /* SPT: GRD_CHK:1 */ in resp_inquiry()
2154 arr[4] = 0x5; /* SPT: GRD_CHK:1, REF_CHK:1 */ in resp_inquiry()
2156 arr[4] = 0x0; /* no protection stuff */ in resp_inquiry()
2161 arr[5] = 0x17; in resp_inquiry()
2163 arr[3] = 0x8; /* number of following entries */ in resp_inquiry()
2164 arr[4] = 0x2; /* disconnect-reconnect mp */ in resp_inquiry()
2165 arr[6] = 0x80; /* mlus, shared */ in resp_inquiry()
2166 arr[8] = 0x18; /* protocol specific lu */ in resp_inquiry()
2167 arr[10] = 0x82; /* mlus, per initiator port */ in resp_inquiry()
2169 arr[3] = inquiry_vpd_88(&arr[4], target_dev_id); in resp_inquiry()
2171 n = inquiry_vpd_89(&arr[4]); in resp_inquiry()
2172 put_unaligned_be16(n, arr + 2); in resp_inquiry()
2174 arr[3] = inquiry_vpd_b0(&arr[4]); in resp_inquiry()
2176 arr[3] = inquiry_vpd_b1(devip, &arr[4]); in resp_inquiry()
2178 arr[3] = inquiry_vpd_b2(&arr[4]); in resp_inquiry()
2180 arr[3] = inquiry_vpd_b6(devip, &arr[4]); in resp_inquiry()
2182 arr[3] = inquiry_vpd_b7(&arr[4]); in resp_inquiry()
2185 kfree(arr); in resp_inquiry()
2188 len = min_t(u32, get_unaligned_be16(arr + 2) + 4, alloc_len); in resp_inquiry()
2189 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
2191 kfree(arr); in resp_inquiry()
2195 arr[1] = sdebug_removable ? 0x80 : 0; /* Removable disk */ in resp_inquiry()
2196 arr[2] = sdebug_scsi_level; in resp_inquiry()
2197 arr[3] = 2; /* response_data_format==2 */ in resp_inquiry()
2198 arr[4] = SDEBUG_LONG_INQ_SZ - 5; in resp_inquiry()
2199 arr[5] = (int)have_dif_prot; /* PROTECT bit */ in resp_inquiry()
2201 arr[5] |= 0x10; /* claim: implicit TPGS */ in resp_inquiry()
2202 arr[6] = 0x10; /* claim: MultiP */ in resp_inquiry()
2204 arr[7] = 0xa; /* claim: LINKED + CMDQUE */ in resp_inquiry()
2205 memcpy(&arr[8], sdebug_inq_vendor_id, 8); in resp_inquiry()
2206 memcpy(&arr[16], sdebug_inq_product_id, 16); in resp_inquiry()
2207 memcpy(&arr[32], sdebug_inq_product_rev, 4); in resp_inquiry()
2209 memcpy(&arr[36], sdebug_version_date, 8); in resp_inquiry()
2211 put_unaligned_be16(0xc0, arr + 58); /* SAM-6 no version claimed */ in resp_inquiry()
2212 put_unaligned_be16(0x5c0, arr + 60); /* SPC-5 no version claimed */ in resp_inquiry()
2215 put_unaligned_be16(0x600, arr + n); in resp_inquiry()
2218 put_unaligned_be16(0x525, arr + n); in resp_inquiry()
2221 put_unaligned_be16(0x624, arr + n); in resp_inquiry()
2224 put_unaligned_be16(0x2100, arr + n); /* SPL-4 no version claimed */ in resp_inquiry()
2225 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
2227 kfree(arr); in resp_inquiry()
2239 unsigned char arr[SCSI_SENSE_BUFFERSIZE]; /* assume >= 18 bytes */ in resp_requests() local
2245 memset(arr, 0, sizeof(arr)); in resp_requests()
2248 arr[0] = 0x72; in resp_requests()
2249 arr[1] = NOT_READY; in resp_requests()
2250 arr[2] = LOGICAL_UNIT_NOT_READY; in resp_requests()
2251 arr[3] = (stopped_state == 2) ? 0x1 : 0x2; in resp_requests()
2254 arr[0] = 0x70; in resp_requests()
2255 arr[2] = NOT_READY; /* NO_SENSE in sense_key */ in resp_requests()
2256 arr[7] = 0xa; /* 18 byte sense buffer */ in resp_requests()
2257 arr[12] = LOGICAL_UNIT_NOT_READY; in resp_requests()
2258 arr[13] = (stopped_state == 2) ? 0x1 : 0x2; in resp_requests()
2263 arr[0] = 0x72; in resp_requests()
2264 arr[1] = 0x0; /* NO_SENSE in sense_key */ in resp_requests()
2265 arr[2] = THRESHOLD_EXCEEDED; in resp_requests()
2266 arr[3] = 0xff; /* Failure prediction(false) */ in resp_requests()
2269 arr[0] = 0x70; in resp_requests()
2270 arr[2] = 0x0; /* NO_SENSE in sense_key */ in resp_requests()
2271 arr[7] = 0xa; /* 18 byte sense buffer */ in resp_requests()
2272 arr[12] = THRESHOLD_EXCEEDED; in resp_requests()
2273 arr[13] = 0xff; /* Failure prediction(false) */ in resp_requests()
2278 memset(arr, 0, len); in resp_requests()
2279 arr[0] = 0x72; in resp_requests()
2281 memset(arr, 0, len); in resp_requests()
2282 arr[0] = 0x70; in resp_requests()
2283 arr[7] = 0xa; in resp_requests()
2286 return fill_from_dev_buffer(scp, arr, min_t(u32, len, alloc_len)); in resp_requests()
2355 unsigned char arr[SDEBUG_READCAP_ARR_SZ]; in resp_readcap() local
2360 memset(arr, 0, SDEBUG_READCAP_ARR_SZ); in resp_readcap()
2363 put_unaligned_be32(capac, arr + 0); in resp_readcap()
2365 put_unaligned_be32(0xffffffff, arr + 0); in resp_readcap()
2366 put_unaligned_be16(sdebug_sector_size, arr + 6); in resp_readcap()
2367 return fill_from_dev_buffer(scp, arr, SDEBUG_READCAP_ARR_SZ); in resp_readcap()
2375 unsigned char arr[SDEBUG_READCAP16_ARR_SZ]; in resp_readcap16() local
2381 memset(arr, 0, SDEBUG_READCAP16_ARR_SZ); in resp_readcap16()
2382 put_unaligned_be64((u64)(sdebug_capacity - 1), arr + 0); in resp_readcap16()
2383 put_unaligned_be32(sdebug_sector_size, arr + 8); in resp_readcap16()
2384 arr[13] = sdebug_physblk_exp & 0xf; in resp_readcap16()
2385 arr[14] = (sdebug_lowest_aligned >> 8) & 0x3f; in resp_readcap16()
2388 arr[14] |= 0x80; /* LBPME */ in resp_readcap16()
2394 arr[14] |= 0x40; in resp_readcap16()
2402 arr[12] |= 1 << 4; in resp_readcap16()
2404 arr[15] = sdebug_lowest_aligned & 0xff; in resp_readcap16()
2407 arr[12] = (sdebug_dif - 1) << 1; /* P_TYPE */ in resp_readcap16()
2408 arr[12] |= 1; /* PROT_EN */ in resp_readcap16()
2411 return fill_from_dev_buffer(scp, arr, in resp_readcap16()
2421 unsigned char *arr; in resp_report_tgtpgs() local
2428 arr = kzalloc(SDEBUG_MAX_TGTPGS_ARR_SZ, GFP_ATOMIC); in resp_report_tgtpgs()
2429 if (! arr) in resp_report_tgtpgs()
2449 arr[n++] = host_no % 3; /* Asymm access state */ in resp_report_tgtpgs()
2450 arr[n++] = 0x0F; /* claim: all states are supported */ in resp_report_tgtpgs()
2452 arr[n++] = 0x0; /* Active/Optimized path */ in resp_report_tgtpgs()
2453 arr[n++] = 0x01; /* only support active/optimized paths */ in resp_report_tgtpgs()
2455 put_unaligned_be16(port_group_a, arr + n); in resp_report_tgtpgs()
2457 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
2458 arr[n++] = 0; /* Status code */ in resp_report_tgtpgs()
2459 arr[n++] = 0; /* Vendor unique */ in resp_report_tgtpgs()
2460 arr[n++] = 0x1; /* One port per group */ in resp_report_tgtpgs()
2461 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
2462 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
2463 put_unaligned_be16(port_a, arr + n); in resp_report_tgtpgs()
2465 arr[n++] = 3; /* Port unavailable */ in resp_report_tgtpgs()
2466 arr[n++] = 0x08; /* claim: only unavailalbe paths are supported */ in resp_report_tgtpgs()
2467 put_unaligned_be16(port_group_b, arr + n); in resp_report_tgtpgs()
2469 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
2470 arr[n++] = 0; /* Status code */ in resp_report_tgtpgs()
2471 arr[n++] = 0; /* Vendor unique */ in resp_report_tgtpgs()
2472 arr[n++] = 0x1; /* One port per group */ in resp_report_tgtpgs()
2473 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
2474 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
2475 put_unaligned_be16(port_b, arr + n); in resp_report_tgtpgs()
2479 put_unaligned_be32(rlen, arr + 0); in resp_report_tgtpgs()
2488 ret = fill_from_dev_buffer(scp, arr, in resp_report_tgtpgs()
2490 kfree(arr); in resp_report_tgtpgs()
2504 u8 *arr; in resp_rsup_opcodes() local
2521 arr = kzalloc((a_len < 256) ? 320 : a_len + 64, GFP_ATOMIC); in resp_rsup_opcodes()
2522 if (NULL == arr) { in resp_rsup_opcodes()
2535 arr[offset] = oip->opcode; in resp_rsup_opcodes()
2536 put_unaligned_be16(oip->sa, arr + offset + 2); in resp_rsup_opcodes()
2538 arr[offset + 5] |= 0x2; in resp_rsup_opcodes()
2540 arr[offset + 5] |= 0x1; in resp_rsup_opcodes()
2541 put_unaligned_be16(oip->len_mask[0], arr + offset + 6); in resp_rsup_opcodes()
2543 put_unaligned_be16(0xa, arr + offset + 8); in resp_rsup_opcodes()
2553 arr[offset] = oip->opcode; in resp_rsup_opcodes()
2554 put_unaligned_be16(oip->sa, arr + offset + 2); in resp_rsup_opcodes()
2556 arr[offset + 5] |= 0x2; in resp_rsup_opcodes()
2558 arr[offset + 5] |= 0x1; in resp_rsup_opcodes()
2560 arr + offset + 6); in resp_rsup_opcodes()
2563 arr + offset + 8); in resp_rsup_opcodes()
2568 put_unaligned_be32(offset - 4, arr); in resp_rsup_opcodes()
2583 kfree(arr); in resp_rsup_opcodes()
2590 kfree(arr); /* point at requested sa */ in resp_rsup_opcodes()
2619 put_unaligned_be16(u, arr + 2); in resp_rsup_opcodes()
2620 arr[4] = oip->opcode; in resp_rsup_opcodes()
2622 arr[4 + k] = (k < 16) ? in resp_rsup_opcodes()
2628 arr[1] = (rctd ? 0x80 : 0) | supp; in resp_rsup_opcodes()
2630 put_unaligned_be16(0xa, arr + offset); in resp_rsup_opcodes()
2636 kfree(arr); in resp_rsup_opcodes()
2641 errsts = fill_from_dev_buffer(scp, arr, len); in resp_rsup_opcodes()
2642 kfree(arr); in resp_rsup_opcodes()
2651 u8 arr[16]; in resp_rsup_tmfs() local
2654 memset(arr, 0, sizeof(arr)); in resp_rsup_tmfs()
2661 arr[0] = 0xc8; /* ATS | ATSS | LURS */ in resp_rsup_tmfs()
2662 arr[1] = 0x1; /* ITNRS */ in resp_rsup_tmfs()
2664 arr[3] = 0xc; in resp_rsup_tmfs()
2670 return fill_from_dev_buffer(scp, arr, len); in resp_rsup_tmfs()
2969 unsigned char *arr __free(kfree); in resp_mode_sense()
2973 arr = kzalloc(SDEBUG_MAX_MSENSE_SZ, GFP_ATOMIC); in resp_mode_sense()
2974 if (!arr) in resp_mode_sense()
3004 arr[2] = dev_spec; in resp_mode_sense()
3005 arr[3] = bd_len; in resp_mode_sense()
3008 arr[3] = dev_spec; in resp_mode_sense()
3010 arr[4] = 0x1; /* set LONGLBA bit */ in resp_mode_sense()
3011 arr[7] = bd_len; /* assume 255 or less */ in resp_mode_sense()
3014 ap = arr + offset; in resp_mode_sense()
3029 ap = arr + offset; in resp_mode_sense()
3038 ap = arr + offset; in resp_mode_sense()
3156 arr[0] = offset - 1; in resp_mode_sense()
3158 put_unaligned_be16((offset - 2), arr + 0); in resp_mode_sense()
3159 return fill_from_dev_buffer(scp, arr, min_t(u32, alloc_len, offset)); in resp_mode_sense()
3177 unsigned char arr[SDEBUG_MAX_MSELECT_SZ]; in resp_mode_select() local
3181 memset(arr, 0, sizeof(arr)); in resp_mode_select()
3189 res = fetch_to_dev_buffer(scp, arr, param_len); in resp_mode_select()
3196 md_len = mselect6 ? (arr[0] + 1) : (get_unaligned_be16(arr + 0) + 2); in resp_mode_select()
3197 bd_len = mselect6 ? arr[3] : get_unaligned_be16(arr + 6); in resp_mode_select()
3207 if (arr[off] == TAPE_BAD_DENSITY) { in resp_mode_select()
3211 blksize = get_unaligned_be16(arr + off + 6); in resp_mode_select()
3219 devip->tape_density = arr[off]; in resp_mode_select()
3229 mpage = arr[off] & 0x3f; in resp_mode_select()
3230 ps = !!(arr[off] & 0x80); in resp_mode_select()
3235 spf = !!(arr[off] & 0x40); in resp_mode_select()
3236 pg_len = spf ? (get_unaligned_be16(arr + off + 2) + 4) : in resp_mode_select()
3237 (arr[off + 1] + 2); in resp_mode_select()
3245 if (caching_pg[1] == arr[off + 1]) { in resp_mode_select()
3246 memcpy(caching_pg + 2, arr + off + 2, in resp_mode_select()
3252 if (ctrl_m_pg[1] == arr[off + 1]) { in resp_mode_select()
3253 memcpy(ctrl_m_pg + 2, arr + off + 2, in resp_mode_select()
3266 if ((arr[off + 2] & 0x40) != 0) { in resp_mode_select()
3267 devip->tape_dce = (arr[off + 2] & 0x80) != 0; in resp_mode_select()
3275 fld = process_medium_part_m_pg(devip, &arr[off], pg_len); in resp_mode_select()
3283 if (iec_m_pg[1] == arr[off + 1]) { in resp_mode_select()
3284 memcpy(iec_m_pg + 2, arr + off + 2, in resp_mode_select()
3303 static int resp_temp_l_pg(unsigned char *arr) in resp_temp_l_pg() argument
3310 memcpy(arr, temp_l_pg, sizeof(temp_l_pg)); in resp_temp_l_pg()
3314 static int resp_ie_l_pg(unsigned char *arr) in resp_ie_l_pg() argument
3320 memcpy(arr, ie_l_pg, sizeof(ie_l_pg)); in resp_ie_l_pg()
3322 arr[4] = THRESHOLD_EXCEEDED; in resp_ie_l_pg()
3323 arr[5] = 0xff; in resp_ie_l_pg()
3328 static int resp_env_rep_l_spg(unsigned char *arr) in resp_env_rep_l_spg() argument
3337 memcpy(arr, env_rep_l_spg, sizeof(env_rep_l_spg)); in resp_env_rep_l_spg()
3348 unsigned char arr[SDEBUG_MAX_LSENSE_SZ]; in resp_log_sense() local
3351 memset(arr, 0, sizeof(arr)); in resp_log_sense()
3361 arr[0] = pcode; in resp_log_sense()
3366 arr[n++] = 0x0; /* this page */ in resp_log_sense()
3367 arr[n++] = 0xd; /* Temperature */ in resp_log_sense()
3368 arr[n++] = 0x2f; /* Informational exceptions */ in resp_log_sense()
3369 arr[3] = n - 4; in resp_log_sense()
3372 arr[3] = resp_temp_l_pg(arr + 4); in resp_log_sense()
3375 arr[3] = resp_ie_l_pg(arr + 4); in resp_log_sense()
3382 arr[0] |= 0x40; in resp_log_sense()
3383 arr[1] = subpcode; in resp_log_sense()
3387 arr[n++] = 0x0; in resp_log_sense()
3388 arr[n++] = 0x0; /* 0,0 page */ in resp_log_sense()
3389 arr[n++] = 0x0; in resp_log_sense()
3390 arr[n++] = 0xff; /* this page */ in resp_log_sense()
3391 arr[n++] = 0xd; in resp_log_sense()
3392 arr[n++] = 0x0; /* Temperature */ in resp_log_sense()
3393 arr[n++] = 0xd; in resp_log_sense()
3394 arr[n++] = 0x1; /* Environment reporting */ in resp_log_sense()
3395 arr[n++] = 0xd; in resp_log_sense()
3396 arr[n++] = 0xff; /* all 0xd subpages */ in resp_log_sense()
3397 arr[n++] = 0x2f; in resp_log_sense()
3398 arr[n++] = 0x0; /* Informational exceptions */ in resp_log_sense()
3399 arr[n++] = 0x2f; in resp_log_sense()
3400 arr[n++] = 0xff; /* all 0x2f subpages */ in resp_log_sense()
3401 arr[3] = n - 4; in resp_log_sense()
3405 arr[n++] = 0xd; in resp_log_sense()
3406 arr[n++] = 0x0; /* Temperature */ in resp_log_sense()
3407 arr[n++] = 0xd; in resp_log_sense()
3408 arr[n++] = 0x1; /* Environment reporting */ in resp_log_sense()
3409 arr[n++] = 0xd; in resp_log_sense()
3410 arr[n++] = 0xff; /* these subpages */ in resp_log_sense()
3411 arr[3] = n - 4; in resp_log_sense()
3415 arr[n++] = 0x2f; in resp_log_sense()
3416 arr[n++] = 0x0; /* Informational exceptions */ in resp_log_sense()
3417 arr[n++] = 0x2f; in resp_log_sense()
3418 arr[n++] = 0xff; /* these subpages */ in resp_log_sense()
3419 arr[3] = n - 4; in resp_log_sense()
3426 arr[0] |= 0x40; in resp_log_sense()
3427 arr[1] = subpcode; in resp_log_sense()
3429 arr[3] = resp_env_rep_l_spg(arr + 4); in resp_log_sense()
3438 len = min_t(u32, get_unaligned_be16(arr + 2) + 4, alloc_len); in resp_log_sense()
3439 return fill_from_dev_buffer(scp, arr, in resp_log_sense()
3447 unsigned char arr[SDEBUG_READ_BLOCK_LIMITS_ARR_SZ]; in resp_read_blklimits() local
3449 arr[0] = 4; in resp_read_blklimits()
3450 put_unaligned_be24(TAPE_MAX_BLKSIZE, arr + 1); in resp_read_blklimits()
3451 put_unaligned_be16(TAPE_MIN_BLKSIZE, arr + 4); in resp_read_blklimits()
3452 return fill_from_dev_buffer(scp, arr, SDEBUG_READ_BLOCK_LIMITS_ARR_SZ); in resp_read_blklimits()
3640 unsigned char arr[20]; in resp_read_position() local
3650 memset(arr, 0, SDEBUG_READ_POSITION_ARR_SZ); in resp_read_position()
3651 arr[1] = devip->tape_partition; in resp_read_position()
3653 put_unaligned_be32(pos, arr + 4); in resp_read_position()
3654 put_unaligned_be32(pos, arr + 8); in resp_read_position()
3655 return fill_from_dev_buffer(scp, arr, SDEBUG_READ_POSITION_ARR_SZ); in resp_read_position()
4314 const u8 *arr, bool compare_only) in comp_write_worker() argument
4326 res = !memcmp(fsp + (block * lb_size), arr, (num - rest) * lb_size); in comp_write_worker()
4330 res = memcmp(fsp, arr + ((num - rest) * lb_size), in comp_write_worker()
4336 arr += num * lb_size; in comp_write_worker()
4337 memcpy(fsp + (block * lb_size), arr, (num - rest) * lb_size); in comp_write_worker()
4339 memcpy(fsp, arr + ((num - rest) * lb_size), rest * lb_size); in comp_write_worker()
5424 u8 *arr; in resp_comp_write() local
5451 arr = kcalloc(lb_size, dnum, GFP_ATOMIC); in resp_comp_write()
5452 if (NULL == arr) { in resp_comp_write()
5458 ret = do_dout_fetch(scp, dnum, arr); in resp_comp_write()
5469 if (!comp_write_worker(sip, lba, num, arr, false)) { in resp_comp_write()
5482 kfree(arr); in resp_comp_write()
5556 u8 arr[SDEBUG_GET_LBA_STATUS_LEN]; in resp_get_lba_status() local
5582 memset(arr, 0, SDEBUG_GET_LBA_STATUS_LEN); in resp_get_lba_status()
5583 put_unaligned_be32(20, arr); /* Parameter Data Length */ in resp_get_lba_status()
5584 put_unaligned_be64(lba, arr + 8); /* LBA */ in resp_get_lba_status()
5585 put_unaligned_be32(num, arr + 16); /* Number of blocks */ in resp_get_lba_status()
5586 arr[20] = !mapped; /* prov_stat=0: mapped; 1: dealloc */ in resp_get_lba_status()
5588 return fill_from_dev_buffer(scp, arr, SDEBUG_GET_LBA_STATUS_LEN); in resp_get_lba_status()
5597 u8 arr[256] = {}; in resp_get_stream_status() local
5598 struct scsi_stream_status_header *h = (void *)arr; in resp_get_stream_status()
5621 offset + 8 <= min_t(u32, alloc_len, sizeof(arr)) && in resp_get_stream_status()
5624 struct scsi_stream_status *stream_status = (void *)arr + offset; in resp_get_stream_status()
5633 return fill_from_dev_buffer(scp, arr, min(offset, alloc_len)); in resp_get_stream_status()
5732 u8 arr[RL_BUCKET_ELEMS * sizeof(struct scsi_lun)]; in resp_report_luns() local
5786 memset(arr, 0, sizeof(arr)); in resp_report_luns()
5787 lun_p = (struct scsi_lun *)&arr[0]; in resp_report_luns()
5789 put_unaligned_be32(rlen, &arr[0]); in resp_report_luns()
5803 res = p_fill_from_dev_buffer(scp, arr, n, off_rsp); in resp_report_luns()
5813 res = p_fill_from_dev_buffer(scp, arr, j * sz_lun, off_rsp); in resp_report_luns()
5825 u8 *arr; in resp_verify() local
5859 arr = kcalloc(lb_size, vnum, GFP_ATOMIC | __GFP_NOWARN); in resp_verify()
5860 if (!arr) { in resp_verify()
5868 ret = do_dout_fetch(scp, a_num, arr); in resp_verify()
5879 memcpy(arr + off, arr, lb_size); in resp_verify()
5882 if (!comp_write_worker(sip, lba, vnum, arr, true)) { in resp_verify()
5889 kfree(arr); in resp_verify()
5904 u8 *arr = NULL, *desc; in resp_report_zones() local
5927 arr = kzalloc(alloc_len, GFP_ATOMIC | __GFP_NOWARN); in resp_report_zones()
5928 if (!arr) { in resp_report_zones()
5936 desc = arr + 64; in resp_report_zones()
6021 put_unaligned_be32(nrz * RZONES_DESC_HD, arr + 0); in resp_report_zones()
6023 put_unaligned_be64(sdebug_capacity - 1, arr + 8); in resp_report_zones()
6026 put_unaligned_be64(devip->zsize, arr + 16); in resp_report_zones()
6028 rep_len = (unsigned long)desc - (unsigned long)arr; in resp_report_zones()
6029 ret = fill_from_dev_buffer(scp, arr, min_t(u32, alloc_len, rep_len)); in resp_report_zones()
6033 kfree(arr); in resp_report_zones()
7490 char arr[16]; in scsi_debug_write_info() local
7496 memcpy(arr, buffer, minLen); in scsi_debug_write_info()
7497 arr[minLen] = '\0'; in scsi_debug_write_info()
7498 if (1 != sscanf(arr, "%d", &opts)) in scsi_debug_write_info()