cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sd.c (102675B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 *      sd.c Copyright (C) 1992 Drew Eckhardt
      4 *           Copyright (C) 1993, 1994, 1995, 1999 Eric Youngdale
      5 *
      6 *      Linux scsi disk driver
      7 *              Initial versions: Drew Eckhardt
      8 *              Subsequent revisions: Eric Youngdale
      9 *	Modification history:
     10 *       - Drew Eckhardt <drew@colorado.edu> original
     11 *       - Eric Youngdale <eric@andante.org> add scatter-gather, multiple 
     12 *         outstanding request, and other enhancements.
     13 *         Support loadable low-level scsi drivers.
     14 *       - Jirka Hanika <geo@ff.cuni.cz> support more scsi disks using 
     15 *         eight major numbers.
     16 *       - Richard Gooch <rgooch@atnf.csiro.au> support devfs.
     17 *	 - Torben Mathiasen <tmm@image.dk> Resource allocation fixes in 
     18 *	   sd_init and cleanups.
     19 *	 - Alex Davis <letmein@erols.com> Fix problem where partition info
     20 *	   not being read in sd_open. Fix problem where removable media 
     21 *	   could be ejected after sd_open.
     22 *	 - Douglas Gilbert <dgilbert@interlog.com> cleanup for lk 2.5.x
     23 *	 - Badari Pulavarty <pbadari@us.ibm.com>, Matthew Wilcox 
     24 *	   <willy@debian.org>, Kurt Garloff <garloff@suse.de>: 
     25 *	   Support 32k/1M disks.
     26 *
     27 *	Logging policy (needs CONFIG_SCSI_LOGGING defined):
     28 *	 - setting up transfer: SCSI_LOG_HLQUEUE levels 1 and 2
     29 *	 - end of transfer (bh + scsi_lib): SCSI_LOG_HLCOMPLETE level 1
     30 *	 - entering sd_ioctl: SCSI_LOG_IOCTL level 1
     31 *	 - entering other commands: SCSI_LOG_HLQUEUE level 3
     32 *	Note: when the logging level is set by the user, it must be greater
     33 *	than the level indicated above to trigger output.	
     34 */
     35
     36#include <linux/module.h>
     37#include <linux/fs.h>
     38#include <linux/kernel.h>
     39#include <linux/mm.h>
     40#include <linux/bio.h>
     41#include <linux/hdreg.h>
     42#include <linux/errno.h>
     43#include <linux/idr.h>
     44#include <linux/interrupt.h>
     45#include <linux/init.h>
     46#include <linux/blkdev.h>
     47#include <linux/blkpg.h>
     48#include <linux/blk-pm.h>
     49#include <linux/delay.h>
     50#include <linux/major.h>
     51#include <linux/mutex.h>
     52#include <linux/string_helpers.h>
     53#include <linux/slab.h>
     54#include <linux/sed-opal.h>
     55#include <linux/pm_runtime.h>
     56#include <linux/pr.h>
     57#include <linux/t10-pi.h>
     58#include <linux/uaccess.h>
     59#include <asm/unaligned.h>
     60
     61#include <scsi/scsi.h>
     62#include <scsi/scsi_cmnd.h>
     63#include <scsi/scsi_dbg.h>
     64#include <scsi/scsi_device.h>
     65#include <scsi/scsi_driver.h>
     66#include <scsi/scsi_eh.h>
     67#include <scsi/scsi_host.h>
     68#include <scsi/scsi_ioctl.h>
     69#include <scsi/scsicam.h>
     70
     71#include "sd.h"
     72#include "scsi_priv.h"
     73#include "scsi_logging.h"
     74
     75MODULE_AUTHOR("Eric Youngdale");
     76MODULE_DESCRIPTION("SCSI disk (sd) driver");
     77MODULE_LICENSE("GPL");
     78
     79MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK0_MAJOR);
     80MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK1_MAJOR);
     81MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK2_MAJOR);
     82MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK3_MAJOR);
     83MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK4_MAJOR);
     84MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK5_MAJOR);
     85MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK6_MAJOR);
     86MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK7_MAJOR);
     87MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK8_MAJOR);
     88MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK9_MAJOR);
     89MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK10_MAJOR);
     90MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK11_MAJOR);
     91MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK12_MAJOR);
     92MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK13_MAJOR);
     93MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK14_MAJOR);
     94MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK15_MAJOR);
     95MODULE_ALIAS_SCSI_DEVICE(TYPE_DISK);
     96MODULE_ALIAS_SCSI_DEVICE(TYPE_MOD);
     97MODULE_ALIAS_SCSI_DEVICE(TYPE_RBC);
     98MODULE_ALIAS_SCSI_DEVICE(TYPE_ZBC);
     99
    100#define SD_MINORS	16
    101
    102static void sd_config_discard(struct scsi_disk *, unsigned int);
    103static void sd_config_write_same(struct scsi_disk *);
    104static int  sd_revalidate_disk(struct gendisk *);
    105static void sd_unlock_native_capacity(struct gendisk *disk);
    106static int  sd_probe(struct device *);
    107static int  sd_remove(struct device *);
    108static void sd_shutdown(struct device *);
    109static int sd_suspend_system(struct device *);
    110static int sd_suspend_runtime(struct device *);
    111static int sd_resume_system(struct device *);
    112static int sd_resume_runtime(struct device *);
    113static void sd_rescan(struct device *);
    114static blk_status_t sd_init_command(struct scsi_cmnd *SCpnt);
    115static void sd_uninit_command(struct scsi_cmnd *SCpnt);
    116static int sd_done(struct scsi_cmnd *);
    117static void sd_eh_reset(struct scsi_cmnd *);
    118static int sd_eh_action(struct scsi_cmnd *, int);
    119static void sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer);
    120static void scsi_disk_release(struct device *cdev);
    121
    122static DEFINE_IDA(sd_index_ida);
    123
    124static struct kmem_cache *sd_cdb_cache;
    125static mempool_t *sd_page_pool;
    126static struct lock_class_key sd_bio_compl_lkclass;
    127
    128static const char *sd_cache_types[] = {
    129	"write through", "none", "write back",
    130	"write back, no read (daft)"
    131};
    132
    133static void sd_set_flush_flag(struct scsi_disk *sdkp)
    134{
    135	bool wc = false, fua = false;
    136
    137	if (sdkp->WCE) {
    138		wc = true;
    139		if (sdkp->DPOFUA)
    140			fua = true;
    141	}
    142
    143	blk_queue_write_cache(sdkp->disk->queue, wc, fua);
    144}
    145
    146static ssize_t
    147cache_type_store(struct device *dev, struct device_attribute *attr,
    148		 const char *buf, size_t count)
    149{
    150	int ct, rcd, wce, sp;
    151	struct scsi_disk *sdkp = to_scsi_disk(dev);
    152	struct scsi_device *sdp = sdkp->device;
    153	char buffer[64];
    154	char *buffer_data;
    155	struct scsi_mode_data data;
    156	struct scsi_sense_hdr sshdr;
    157	static const char temp[] = "temporary ";
    158	int len;
    159
    160	if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
    161		/* no cache control on RBC devices; theoretically they
    162		 * can do it, but there's probably so many exceptions
    163		 * it's not worth the risk */
    164		return -EINVAL;
    165
    166	if (strncmp(buf, temp, sizeof(temp) - 1) == 0) {
    167		buf += sizeof(temp) - 1;
    168		sdkp->cache_override = 1;
    169	} else {
    170		sdkp->cache_override = 0;
    171	}
    172
    173	ct = sysfs_match_string(sd_cache_types, buf);
    174	if (ct < 0)
    175		return -EINVAL;
    176
    177	rcd = ct & 0x01 ? 1 : 0;
    178	wce = (ct & 0x02) && !sdkp->write_prot ? 1 : 0;
    179
    180	if (sdkp->cache_override) {
    181		sdkp->WCE = wce;
    182		sdkp->RCD = rcd;
    183		sd_set_flush_flag(sdkp);
    184		return count;
    185	}
    186
    187	if (scsi_mode_sense(sdp, 0x08, 8, buffer, sizeof(buffer), SD_TIMEOUT,
    188			    sdkp->max_retries, &data, NULL))
    189		return -EINVAL;
    190	len = min_t(size_t, sizeof(buffer), data.length - data.header_length -
    191		  data.block_descriptor_length);
    192	buffer_data = buffer + data.header_length +
    193		data.block_descriptor_length;
    194	buffer_data[2] &= ~0x05;
    195	buffer_data[2] |= wce << 2 | rcd;
    196	sp = buffer_data[0] & 0x80 ? 1 : 0;
    197	buffer_data[0] &= ~0x80;
    198
    199	/*
    200	 * Ensure WP, DPOFUA, and RESERVED fields are cleared in
    201	 * received mode parameter buffer before doing MODE SELECT.
    202	 */
    203	data.device_specific = 0;
    204
    205	if (scsi_mode_select(sdp, 1, sp, buffer_data, len, SD_TIMEOUT,
    206			     sdkp->max_retries, &data, &sshdr)) {
    207		if (scsi_sense_valid(&sshdr))
    208			sd_print_sense_hdr(sdkp, &sshdr);
    209		return -EINVAL;
    210	}
    211	sd_revalidate_disk(sdkp->disk);
    212	return count;
    213}
    214
    215static ssize_t
    216manage_start_stop_show(struct device *dev, struct device_attribute *attr,
    217		       char *buf)
    218{
    219	struct scsi_disk *sdkp = to_scsi_disk(dev);
    220	struct scsi_device *sdp = sdkp->device;
    221
    222	return sprintf(buf, "%u\n", sdp->manage_start_stop);
    223}
    224
    225static ssize_t
    226manage_start_stop_store(struct device *dev, struct device_attribute *attr,
    227			const char *buf, size_t count)
    228{
    229	struct scsi_disk *sdkp = to_scsi_disk(dev);
    230	struct scsi_device *sdp = sdkp->device;
    231	bool v;
    232
    233	if (!capable(CAP_SYS_ADMIN))
    234		return -EACCES;
    235
    236	if (kstrtobool(buf, &v))
    237		return -EINVAL;
    238
    239	sdp->manage_start_stop = v;
    240
    241	return count;
    242}
    243static DEVICE_ATTR_RW(manage_start_stop);
    244
    245static ssize_t
    246allow_restart_show(struct device *dev, struct device_attribute *attr, char *buf)
    247{
    248	struct scsi_disk *sdkp = to_scsi_disk(dev);
    249
    250	return sprintf(buf, "%u\n", sdkp->device->allow_restart);
    251}
    252
    253static ssize_t
    254allow_restart_store(struct device *dev, struct device_attribute *attr,
    255		    const char *buf, size_t count)
    256{
    257	bool v;
    258	struct scsi_disk *sdkp = to_scsi_disk(dev);
    259	struct scsi_device *sdp = sdkp->device;
    260
    261	if (!capable(CAP_SYS_ADMIN))
    262		return -EACCES;
    263
    264	if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
    265		return -EINVAL;
    266
    267	if (kstrtobool(buf, &v))
    268		return -EINVAL;
    269
    270	sdp->allow_restart = v;
    271
    272	return count;
    273}
    274static DEVICE_ATTR_RW(allow_restart);
    275
    276static ssize_t
    277cache_type_show(struct device *dev, struct device_attribute *attr, char *buf)
    278{
    279	struct scsi_disk *sdkp = to_scsi_disk(dev);
    280	int ct = sdkp->RCD + 2*sdkp->WCE;
    281
    282	return sprintf(buf, "%s\n", sd_cache_types[ct]);
    283}
    284static DEVICE_ATTR_RW(cache_type);
    285
    286static ssize_t
    287FUA_show(struct device *dev, struct device_attribute *attr, char *buf)
    288{
    289	struct scsi_disk *sdkp = to_scsi_disk(dev);
    290
    291	return sprintf(buf, "%u\n", sdkp->DPOFUA);
    292}
    293static DEVICE_ATTR_RO(FUA);
    294
    295static ssize_t
    296protection_type_show(struct device *dev, struct device_attribute *attr,
    297		     char *buf)
    298{
    299	struct scsi_disk *sdkp = to_scsi_disk(dev);
    300
    301	return sprintf(buf, "%u\n", sdkp->protection_type);
    302}
    303
    304static ssize_t
    305protection_type_store(struct device *dev, struct device_attribute *attr,
    306		      const char *buf, size_t count)
    307{
    308	struct scsi_disk *sdkp = to_scsi_disk(dev);
    309	unsigned int val;
    310	int err;
    311
    312	if (!capable(CAP_SYS_ADMIN))
    313		return -EACCES;
    314
    315	err = kstrtouint(buf, 10, &val);
    316
    317	if (err)
    318		return err;
    319
    320	if (val <= T10_PI_TYPE3_PROTECTION)
    321		sdkp->protection_type = val;
    322
    323	return count;
    324}
    325static DEVICE_ATTR_RW(protection_type);
    326
    327static ssize_t
    328protection_mode_show(struct device *dev, struct device_attribute *attr,
    329		     char *buf)
    330{
    331	struct scsi_disk *sdkp = to_scsi_disk(dev);
    332	struct scsi_device *sdp = sdkp->device;
    333	unsigned int dif, dix;
    334
    335	dif = scsi_host_dif_capable(sdp->host, sdkp->protection_type);
    336	dix = scsi_host_dix_capable(sdp->host, sdkp->protection_type);
    337
    338	if (!dix && scsi_host_dix_capable(sdp->host, T10_PI_TYPE0_PROTECTION)) {
    339		dif = 0;
    340		dix = 1;
    341	}
    342
    343	if (!dif && !dix)
    344		return sprintf(buf, "none\n");
    345
    346	return sprintf(buf, "%s%u\n", dix ? "dix" : "dif", dif);
    347}
    348static DEVICE_ATTR_RO(protection_mode);
    349
    350static ssize_t
    351app_tag_own_show(struct device *dev, struct device_attribute *attr, char *buf)
    352{
    353	struct scsi_disk *sdkp = to_scsi_disk(dev);
    354
    355	return sprintf(buf, "%u\n", sdkp->ATO);
    356}
    357static DEVICE_ATTR_RO(app_tag_own);
    358
    359static ssize_t
    360thin_provisioning_show(struct device *dev, struct device_attribute *attr,
    361		       char *buf)
    362{
    363	struct scsi_disk *sdkp = to_scsi_disk(dev);
    364
    365	return sprintf(buf, "%u\n", sdkp->lbpme);
    366}
    367static DEVICE_ATTR_RO(thin_provisioning);
    368
    369/* sysfs_match_string() requires dense arrays */
    370static const char *lbp_mode[] = {
    371	[SD_LBP_FULL]		= "full",
    372	[SD_LBP_UNMAP]		= "unmap",
    373	[SD_LBP_WS16]		= "writesame_16",
    374	[SD_LBP_WS10]		= "writesame_10",
    375	[SD_LBP_ZERO]		= "writesame_zero",
    376	[SD_LBP_DISABLE]	= "disabled",
    377};
    378
    379static ssize_t
    380provisioning_mode_show(struct device *dev, struct device_attribute *attr,
    381		       char *buf)
    382{
    383	struct scsi_disk *sdkp = to_scsi_disk(dev);
    384
    385	return sprintf(buf, "%s\n", lbp_mode[sdkp->provisioning_mode]);
    386}
    387
    388static ssize_t
    389provisioning_mode_store(struct device *dev, struct device_attribute *attr,
    390			const char *buf, size_t count)
    391{
    392	struct scsi_disk *sdkp = to_scsi_disk(dev);
    393	struct scsi_device *sdp = sdkp->device;
    394	int mode;
    395
    396	if (!capable(CAP_SYS_ADMIN))
    397		return -EACCES;
    398
    399	if (sd_is_zoned(sdkp)) {
    400		sd_config_discard(sdkp, SD_LBP_DISABLE);
    401		return count;
    402	}
    403
    404	if (sdp->type != TYPE_DISK)
    405		return -EINVAL;
    406
    407	mode = sysfs_match_string(lbp_mode, buf);
    408	if (mode < 0)
    409		return -EINVAL;
    410
    411	sd_config_discard(sdkp, mode);
    412
    413	return count;
    414}
    415static DEVICE_ATTR_RW(provisioning_mode);
    416
    417/* sysfs_match_string() requires dense arrays */
    418static const char *zeroing_mode[] = {
    419	[SD_ZERO_WRITE]		= "write",
    420	[SD_ZERO_WS]		= "writesame",
    421	[SD_ZERO_WS16_UNMAP]	= "writesame_16_unmap",
    422	[SD_ZERO_WS10_UNMAP]	= "writesame_10_unmap",
    423};
    424
    425static ssize_t
    426zeroing_mode_show(struct device *dev, struct device_attribute *attr,
    427		  char *buf)
    428{
    429	struct scsi_disk *sdkp = to_scsi_disk(dev);
    430
    431	return sprintf(buf, "%s\n", zeroing_mode[sdkp->zeroing_mode]);
    432}
    433
    434static ssize_t
    435zeroing_mode_store(struct device *dev, struct device_attribute *attr,
    436		   const char *buf, size_t count)
    437{
    438	struct scsi_disk *sdkp = to_scsi_disk(dev);
    439	int mode;
    440
    441	if (!capable(CAP_SYS_ADMIN))
    442		return -EACCES;
    443
    444	mode = sysfs_match_string(zeroing_mode, buf);
    445	if (mode < 0)
    446		return -EINVAL;
    447
    448	sdkp->zeroing_mode = mode;
    449
    450	return count;
    451}
    452static DEVICE_ATTR_RW(zeroing_mode);
    453
    454static ssize_t
    455max_medium_access_timeouts_show(struct device *dev,
    456				struct device_attribute *attr, char *buf)
    457{
    458	struct scsi_disk *sdkp = to_scsi_disk(dev);
    459
    460	return sprintf(buf, "%u\n", sdkp->max_medium_access_timeouts);
    461}
    462
    463static ssize_t
    464max_medium_access_timeouts_store(struct device *dev,
    465				 struct device_attribute *attr, const char *buf,
    466				 size_t count)
    467{
    468	struct scsi_disk *sdkp = to_scsi_disk(dev);
    469	int err;
    470
    471	if (!capable(CAP_SYS_ADMIN))
    472		return -EACCES;
    473
    474	err = kstrtouint(buf, 10, &sdkp->max_medium_access_timeouts);
    475
    476	return err ? err : count;
    477}
    478static DEVICE_ATTR_RW(max_medium_access_timeouts);
    479
    480static ssize_t
    481max_write_same_blocks_show(struct device *dev, struct device_attribute *attr,
    482			   char *buf)
    483{
    484	struct scsi_disk *sdkp = to_scsi_disk(dev);
    485
    486	return sprintf(buf, "%u\n", sdkp->max_ws_blocks);
    487}
    488
    489static ssize_t
    490max_write_same_blocks_store(struct device *dev, struct device_attribute *attr,
    491			    const char *buf, size_t count)
    492{
    493	struct scsi_disk *sdkp = to_scsi_disk(dev);
    494	struct scsi_device *sdp = sdkp->device;
    495	unsigned long max;
    496	int err;
    497
    498	if (!capable(CAP_SYS_ADMIN))
    499		return -EACCES;
    500
    501	if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
    502		return -EINVAL;
    503
    504	err = kstrtoul(buf, 10, &max);
    505
    506	if (err)
    507		return err;
    508
    509	if (max == 0)
    510		sdp->no_write_same = 1;
    511	else if (max <= SD_MAX_WS16_BLOCKS) {
    512		sdp->no_write_same = 0;
    513		sdkp->max_ws_blocks = max;
    514	}
    515
    516	sd_config_write_same(sdkp);
    517
    518	return count;
    519}
    520static DEVICE_ATTR_RW(max_write_same_blocks);
    521
    522static ssize_t
    523zoned_cap_show(struct device *dev, struct device_attribute *attr, char *buf)
    524{
    525	struct scsi_disk *sdkp = to_scsi_disk(dev);
    526
    527	if (sdkp->device->type == TYPE_ZBC)
    528		return sprintf(buf, "host-managed\n");
    529	if (sdkp->zoned == 1)
    530		return sprintf(buf, "host-aware\n");
    531	if (sdkp->zoned == 2)
    532		return sprintf(buf, "drive-managed\n");
    533	return sprintf(buf, "none\n");
    534}
    535static DEVICE_ATTR_RO(zoned_cap);
    536
    537static ssize_t
    538max_retries_store(struct device *dev, struct device_attribute *attr,
    539		  const char *buf, size_t count)
    540{
    541	struct scsi_disk *sdkp = to_scsi_disk(dev);
    542	struct scsi_device *sdev = sdkp->device;
    543	int retries, err;
    544
    545	err = kstrtoint(buf, 10, &retries);
    546	if (err)
    547		return err;
    548
    549	if (retries == SCSI_CMD_RETRIES_NO_LIMIT || retries <= SD_MAX_RETRIES) {
    550		sdkp->max_retries = retries;
    551		return count;
    552	}
    553
    554	sdev_printk(KERN_ERR, sdev, "max_retries must be between -1 and %d\n",
    555		    SD_MAX_RETRIES);
    556	return -EINVAL;
    557}
    558
    559static ssize_t
    560max_retries_show(struct device *dev, struct device_attribute *attr,
    561		 char *buf)
    562{
    563	struct scsi_disk *sdkp = to_scsi_disk(dev);
    564
    565	return sprintf(buf, "%d\n", sdkp->max_retries);
    566}
    567
    568static DEVICE_ATTR_RW(max_retries);
    569
    570static struct attribute *sd_disk_attrs[] = {
    571	&dev_attr_cache_type.attr,
    572	&dev_attr_FUA.attr,
    573	&dev_attr_allow_restart.attr,
    574	&dev_attr_manage_start_stop.attr,
    575	&dev_attr_protection_type.attr,
    576	&dev_attr_protection_mode.attr,
    577	&dev_attr_app_tag_own.attr,
    578	&dev_attr_thin_provisioning.attr,
    579	&dev_attr_provisioning_mode.attr,
    580	&dev_attr_zeroing_mode.attr,
    581	&dev_attr_max_write_same_blocks.attr,
    582	&dev_attr_max_medium_access_timeouts.attr,
    583	&dev_attr_zoned_cap.attr,
    584	&dev_attr_max_retries.attr,
    585	NULL,
    586};
    587ATTRIBUTE_GROUPS(sd_disk);
    588
    589static struct class sd_disk_class = {
    590	.name		= "scsi_disk",
    591	.owner		= THIS_MODULE,
    592	.dev_release	= scsi_disk_release,
    593	.dev_groups	= sd_disk_groups,
    594};
    595
    596static const struct dev_pm_ops sd_pm_ops = {
    597	.suspend		= sd_suspend_system,
    598	.resume			= sd_resume_system,
    599	.poweroff		= sd_suspend_system,
    600	.restore		= sd_resume_system,
    601	.runtime_suspend	= sd_suspend_runtime,
    602	.runtime_resume		= sd_resume_runtime,
    603};
    604
    605static struct scsi_driver sd_template = {
    606	.gendrv = {
    607		.name		= "sd",
    608		.owner		= THIS_MODULE,
    609		.probe		= sd_probe,
    610		.probe_type	= PROBE_PREFER_ASYNCHRONOUS,
    611		.remove		= sd_remove,
    612		.shutdown	= sd_shutdown,
    613		.pm		= &sd_pm_ops,
    614	},
    615	.rescan			= sd_rescan,
    616	.init_command		= sd_init_command,
    617	.uninit_command		= sd_uninit_command,
    618	.done			= sd_done,
    619	.eh_action		= sd_eh_action,
    620	.eh_reset		= sd_eh_reset,
    621};
    622
    623/*
    624 * Don't request a new module, as that could deadlock in multipath
    625 * environment.
    626 */
    627static void sd_default_probe(dev_t devt)
    628{
    629}
    630
    631/*
    632 * Device no to disk mapping:
    633 * 
    634 *       major         disc2     disc  p1
    635 *   |............|.............|....|....| <- dev_t
    636 *    31        20 19          8 7  4 3  0
    637 * 
    638 * Inside a major, we have 16k disks, however mapped non-
    639 * contiguously. The first 16 disks are for major0, the next
    640 * ones with major1, ... Disk 256 is for major0 again, disk 272 
    641 * for major1, ... 
    642 * As we stay compatible with our numbering scheme, we can reuse 
    643 * the well-know SCSI majors 8, 65--71, 136--143.
    644 */
    645static int sd_major(int major_idx)
    646{
    647	switch (major_idx) {
    648	case 0:
    649		return SCSI_DISK0_MAJOR;
    650	case 1 ... 7:
    651		return SCSI_DISK1_MAJOR + major_idx - 1;
    652	case 8 ... 15:
    653		return SCSI_DISK8_MAJOR + major_idx - 8;
    654	default:
    655		BUG();
    656		return 0;	/* shut up gcc */
    657	}
    658}
    659
    660#ifdef CONFIG_BLK_SED_OPAL
    661static int sd_sec_submit(void *data, u16 spsp, u8 secp, void *buffer,
    662		size_t len, bool send)
    663{
    664	struct scsi_disk *sdkp = data;
    665	struct scsi_device *sdev = sdkp->device;
    666	u8 cdb[12] = { 0, };
    667	int ret;
    668
    669	cdb[0] = send ? SECURITY_PROTOCOL_OUT : SECURITY_PROTOCOL_IN;
    670	cdb[1] = secp;
    671	put_unaligned_be16(spsp, &cdb[2]);
    672	put_unaligned_be32(len, &cdb[6]);
    673
    674	ret = scsi_execute(sdev, cdb, send ? DMA_TO_DEVICE : DMA_FROM_DEVICE,
    675		buffer, len, NULL, NULL, SD_TIMEOUT, sdkp->max_retries, 0,
    676		RQF_PM, NULL);
    677	return ret <= 0 ? ret : -EIO;
    678}
    679#endif /* CONFIG_BLK_SED_OPAL */
    680
    681/*
    682 * Look up the DIX operation based on whether the command is read or
    683 * write and whether dix and dif are enabled.
    684 */
    685static unsigned int sd_prot_op(bool write, bool dix, bool dif)
    686{
    687	/* Lookup table: bit 2 (write), bit 1 (dix), bit 0 (dif) */
    688	static const unsigned int ops[] = {	/* wrt dix dif */
    689		SCSI_PROT_NORMAL,		/*  0	0   0  */
    690		SCSI_PROT_READ_STRIP,		/*  0	0   1  */
    691		SCSI_PROT_READ_INSERT,		/*  0	1   0  */
    692		SCSI_PROT_READ_PASS,		/*  0	1   1  */
    693		SCSI_PROT_NORMAL,		/*  1	0   0  */
    694		SCSI_PROT_WRITE_INSERT,		/*  1	0   1  */
    695		SCSI_PROT_WRITE_STRIP,		/*  1	1   0  */
    696		SCSI_PROT_WRITE_PASS,		/*  1	1   1  */
    697	};
    698
    699	return ops[write << 2 | dix << 1 | dif];
    700}
    701
    702/*
    703 * Returns a mask of the protection flags that are valid for a given DIX
    704 * operation.
    705 */
    706static unsigned int sd_prot_flag_mask(unsigned int prot_op)
    707{
    708	static const unsigned int flag_mask[] = {
    709		[SCSI_PROT_NORMAL]		= 0,
    710
    711		[SCSI_PROT_READ_STRIP]		= SCSI_PROT_TRANSFER_PI |
    712						  SCSI_PROT_GUARD_CHECK |
    713						  SCSI_PROT_REF_CHECK |
    714						  SCSI_PROT_REF_INCREMENT,
    715
    716		[SCSI_PROT_READ_INSERT]		= SCSI_PROT_REF_INCREMENT |
    717						  SCSI_PROT_IP_CHECKSUM,
    718
    719		[SCSI_PROT_READ_PASS]		= SCSI_PROT_TRANSFER_PI |
    720						  SCSI_PROT_GUARD_CHECK |
    721						  SCSI_PROT_REF_CHECK |
    722						  SCSI_PROT_REF_INCREMENT |
    723						  SCSI_PROT_IP_CHECKSUM,
    724
    725		[SCSI_PROT_WRITE_INSERT]	= SCSI_PROT_TRANSFER_PI |
    726						  SCSI_PROT_REF_INCREMENT,
    727
    728		[SCSI_PROT_WRITE_STRIP]		= SCSI_PROT_GUARD_CHECK |
    729						  SCSI_PROT_REF_CHECK |
    730						  SCSI_PROT_REF_INCREMENT |
    731						  SCSI_PROT_IP_CHECKSUM,
    732
    733		[SCSI_PROT_WRITE_PASS]		= SCSI_PROT_TRANSFER_PI |
    734						  SCSI_PROT_GUARD_CHECK |
    735						  SCSI_PROT_REF_CHECK |
    736						  SCSI_PROT_REF_INCREMENT |
    737						  SCSI_PROT_IP_CHECKSUM,
    738	};
    739
    740	return flag_mask[prot_op];
    741}
    742
    743static unsigned char sd_setup_protect_cmnd(struct scsi_cmnd *scmd,
    744					   unsigned int dix, unsigned int dif)
    745{
    746	struct request *rq = scsi_cmd_to_rq(scmd);
    747	struct bio *bio = rq->bio;
    748	unsigned int prot_op = sd_prot_op(rq_data_dir(rq), dix, dif);
    749	unsigned int protect = 0;
    750
    751	if (dix) {				/* DIX Type 0, 1, 2, 3 */
    752		if (bio_integrity_flagged(bio, BIP_IP_CHECKSUM))
    753			scmd->prot_flags |= SCSI_PROT_IP_CHECKSUM;
    754
    755		if (bio_integrity_flagged(bio, BIP_CTRL_NOCHECK) == false)
    756			scmd->prot_flags |= SCSI_PROT_GUARD_CHECK;
    757	}
    758
    759	if (dif != T10_PI_TYPE3_PROTECTION) {	/* DIX/DIF Type 0, 1, 2 */
    760		scmd->prot_flags |= SCSI_PROT_REF_INCREMENT;
    761
    762		if (bio_integrity_flagged(bio, BIP_CTRL_NOCHECK) == false)
    763			scmd->prot_flags |= SCSI_PROT_REF_CHECK;
    764	}
    765
    766	if (dif) {				/* DIX/DIF Type 1, 2, 3 */
    767		scmd->prot_flags |= SCSI_PROT_TRANSFER_PI;
    768
    769		if (bio_integrity_flagged(bio, BIP_DISK_NOCHECK))
    770			protect = 3 << 5;	/* Disable target PI checking */
    771		else
    772			protect = 1 << 5;	/* Enable target PI checking */
    773	}
    774
    775	scsi_set_prot_op(scmd, prot_op);
    776	scsi_set_prot_type(scmd, dif);
    777	scmd->prot_flags &= sd_prot_flag_mask(prot_op);
    778
    779	return protect;
    780}
    781
    782static void sd_config_discard(struct scsi_disk *sdkp, unsigned int mode)
    783{
    784	struct request_queue *q = sdkp->disk->queue;
    785	unsigned int logical_block_size = sdkp->device->sector_size;
    786	unsigned int max_blocks = 0;
    787
    788	q->limits.discard_alignment =
    789		sdkp->unmap_alignment * logical_block_size;
    790	q->limits.discard_granularity =
    791		max(sdkp->physical_block_size,
    792		    sdkp->unmap_granularity * logical_block_size);
    793	sdkp->provisioning_mode = mode;
    794
    795	switch (mode) {
    796
    797	case SD_LBP_FULL:
    798	case SD_LBP_DISABLE:
    799		blk_queue_max_discard_sectors(q, 0);
    800		return;
    801
    802	case SD_LBP_UNMAP:
    803		max_blocks = min_not_zero(sdkp->max_unmap_blocks,
    804					  (u32)SD_MAX_WS16_BLOCKS);
    805		break;
    806
    807	case SD_LBP_WS16:
    808		if (sdkp->device->unmap_limit_for_ws)
    809			max_blocks = sdkp->max_unmap_blocks;
    810		else
    811			max_blocks = sdkp->max_ws_blocks;
    812
    813		max_blocks = min_not_zero(max_blocks, (u32)SD_MAX_WS16_BLOCKS);
    814		break;
    815
    816	case SD_LBP_WS10:
    817		if (sdkp->device->unmap_limit_for_ws)
    818			max_blocks = sdkp->max_unmap_blocks;
    819		else
    820			max_blocks = sdkp->max_ws_blocks;
    821
    822		max_blocks = min_not_zero(max_blocks, (u32)SD_MAX_WS10_BLOCKS);
    823		break;
    824
    825	case SD_LBP_ZERO:
    826		max_blocks = min_not_zero(sdkp->max_ws_blocks,
    827					  (u32)SD_MAX_WS10_BLOCKS);
    828		break;
    829	}
    830
    831	blk_queue_max_discard_sectors(q, max_blocks * (logical_block_size >> 9));
    832}
    833
    834static blk_status_t sd_setup_unmap_cmnd(struct scsi_cmnd *cmd)
    835{
    836	struct scsi_device *sdp = cmd->device;
    837	struct request *rq = scsi_cmd_to_rq(cmd);
    838	struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
    839	u64 lba = sectors_to_logical(sdp, blk_rq_pos(rq));
    840	u32 nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
    841	unsigned int data_len = 24;
    842	char *buf;
    843
    844	rq->special_vec.bv_page = mempool_alloc(sd_page_pool, GFP_ATOMIC);
    845	if (!rq->special_vec.bv_page)
    846		return BLK_STS_RESOURCE;
    847	clear_highpage(rq->special_vec.bv_page);
    848	rq->special_vec.bv_offset = 0;
    849	rq->special_vec.bv_len = data_len;
    850	rq->rq_flags |= RQF_SPECIAL_PAYLOAD;
    851
    852	cmd->cmd_len = 10;
    853	cmd->cmnd[0] = UNMAP;
    854	cmd->cmnd[8] = 24;
    855
    856	buf = bvec_virt(&rq->special_vec);
    857	put_unaligned_be16(6 + 16, &buf[0]);
    858	put_unaligned_be16(16, &buf[2]);
    859	put_unaligned_be64(lba, &buf[8]);
    860	put_unaligned_be32(nr_blocks, &buf[16]);
    861
    862	cmd->allowed = sdkp->max_retries;
    863	cmd->transfersize = data_len;
    864	rq->timeout = SD_TIMEOUT;
    865
    866	return scsi_alloc_sgtables(cmd);
    867}
    868
    869static blk_status_t sd_setup_write_same16_cmnd(struct scsi_cmnd *cmd,
    870		bool unmap)
    871{
    872	struct scsi_device *sdp = cmd->device;
    873	struct request *rq = scsi_cmd_to_rq(cmd);
    874	struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
    875	u64 lba = sectors_to_logical(sdp, blk_rq_pos(rq));
    876	u32 nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
    877	u32 data_len = sdp->sector_size;
    878
    879	rq->special_vec.bv_page = mempool_alloc(sd_page_pool, GFP_ATOMIC);
    880	if (!rq->special_vec.bv_page)
    881		return BLK_STS_RESOURCE;
    882	clear_highpage(rq->special_vec.bv_page);
    883	rq->special_vec.bv_offset = 0;
    884	rq->special_vec.bv_len = data_len;
    885	rq->rq_flags |= RQF_SPECIAL_PAYLOAD;
    886
    887	cmd->cmd_len = 16;
    888	cmd->cmnd[0] = WRITE_SAME_16;
    889	if (unmap)
    890		cmd->cmnd[1] = 0x8; /* UNMAP */
    891	put_unaligned_be64(lba, &cmd->cmnd[2]);
    892	put_unaligned_be32(nr_blocks, &cmd->cmnd[10]);
    893
    894	cmd->allowed = sdkp->max_retries;
    895	cmd->transfersize = data_len;
    896	rq->timeout = unmap ? SD_TIMEOUT : SD_WRITE_SAME_TIMEOUT;
    897
    898	return scsi_alloc_sgtables(cmd);
    899}
    900
    901static blk_status_t sd_setup_write_same10_cmnd(struct scsi_cmnd *cmd,
    902		bool unmap)
    903{
    904	struct scsi_device *sdp = cmd->device;
    905	struct request *rq = scsi_cmd_to_rq(cmd);
    906	struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
    907	u64 lba = sectors_to_logical(sdp, blk_rq_pos(rq));
    908	u32 nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
    909	u32 data_len = sdp->sector_size;
    910
    911	rq->special_vec.bv_page = mempool_alloc(sd_page_pool, GFP_ATOMIC);
    912	if (!rq->special_vec.bv_page)
    913		return BLK_STS_RESOURCE;
    914	clear_highpage(rq->special_vec.bv_page);
    915	rq->special_vec.bv_offset = 0;
    916	rq->special_vec.bv_len = data_len;
    917	rq->rq_flags |= RQF_SPECIAL_PAYLOAD;
    918
    919	cmd->cmd_len = 10;
    920	cmd->cmnd[0] = WRITE_SAME;
    921	if (unmap)
    922		cmd->cmnd[1] = 0x8; /* UNMAP */
    923	put_unaligned_be32(lba, &cmd->cmnd[2]);
    924	put_unaligned_be16(nr_blocks, &cmd->cmnd[7]);
    925
    926	cmd->allowed = sdkp->max_retries;
    927	cmd->transfersize = data_len;
    928	rq->timeout = unmap ? SD_TIMEOUT : SD_WRITE_SAME_TIMEOUT;
    929
    930	return scsi_alloc_sgtables(cmd);
    931}
    932
    933static blk_status_t sd_setup_write_zeroes_cmnd(struct scsi_cmnd *cmd)
    934{
    935	struct request *rq = scsi_cmd_to_rq(cmd);
    936	struct scsi_device *sdp = cmd->device;
    937	struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
    938	u64 lba = sectors_to_logical(sdp, blk_rq_pos(rq));
    939	u32 nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
    940
    941	if (!(rq->cmd_flags & REQ_NOUNMAP)) {
    942		switch (sdkp->zeroing_mode) {
    943		case SD_ZERO_WS16_UNMAP:
    944			return sd_setup_write_same16_cmnd(cmd, true);
    945		case SD_ZERO_WS10_UNMAP:
    946			return sd_setup_write_same10_cmnd(cmd, true);
    947		}
    948	}
    949
    950	if (sdp->no_write_same) {
    951		rq->rq_flags |= RQF_QUIET;
    952		return BLK_STS_TARGET;
    953	}
    954
    955	if (sdkp->ws16 || lba > 0xffffffff || nr_blocks > 0xffff)
    956		return sd_setup_write_same16_cmnd(cmd, false);
    957
    958	return sd_setup_write_same10_cmnd(cmd, false);
    959}
    960
    961static void sd_config_write_same(struct scsi_disk *sdkp)
    962{
    963	struct request_queue *q = sdkp->disk->queue;
    964	unsigned int logical_block_size = sdkp->device->sector_size;
    965
    966	if (sdkp->device->no_write_same) {
    967		sdkp->max_ws_blocks = 0;
    968		goto out;
    969	}
    970
    971	/* Some devices can not handle block counts above 0xffff despite
    972	 * supporting WRITE SAME(16). Consequently we default to 64k
    973	 * blocks per I/O unless the device explicitly advertises a
    974	 * bigger limit.
    975	 */
    976	if (sdkp->max_ws_blocks > SD_MAX_WS10_BLOCKS)
    977		sdkp->max_ws_blocks = min_not_zero(sdkp->max_ws_blocks,
    978						   (u32)SD_MAX_WS16_BLOCKS);
    979	else if (sdkp->ws16 || sdkp->ws10 || sdkp->device->no_report_opcodes)
    980		sdkp->max_ws_blocks = min_not_zero(sdkp->max_ws_blocks,
    981						   (u32)SD_MAX_WS10_BLOCKS);
    982	else {
    983		sdkp->device->no_write_same = 1;
    984		sdkp->max_ws_blocks = 0;
    985	}
    986
    987	if (sdkp->lbprz && sdkp->lbpws)
    988		sdkp->zeroing_mode = SD_ZERO_WS16_UNMAP;
    989	else if (sdkp->lbprz && sdkp->lbpws10)
    990		sdkp->zeroing_mode = SD_ZERO_WS10_UNMAP;
    991	else if (sdkp->max_ws_blocks)
    992		sdkp->zeroing_mode = SD_ZERO_WS;
    993	else
    994		sdkp->zeroing_mode = SD_ZERO_WRITE;
    995
    996	if (sdkp->max_ws_blocks &&
    997	    sdkp->physical_block_size > logical_block_size) {
    998		/*
    999		 * Reporting a maximum number of blocks that is not aligned
   1000		 * on the device physical size would cause a large write same
   1001		 * request to be split into physically unaligned chunks by
   1002		 * __blkdev_issue_write_zeroes() even if the caller of this
   1003		 * functions took care to align the large request. So make sure
   1004		 * the maximum reported is aligned to the device physical block
   1005		 * size. This is only an optional optimization for regular
   1006		 * disks, but this is mandatory to avoid failure of large write
   1007		 * same requests directed at sequential write required zones of
   1008		 * host-managed ZBC disks.
   1009		 */
   1010		sdkp->max_ws_blocks =
   1011			round_down(sdkp->max_ws_blocks,
   1012				   bytes_to_logical(sdkp->device,
   1013						    sdkp->physical_block_size));
   1014	}
   1015
   1016out:
   1017	blk_queue_max_write_zeroes_sectors(q, sdkp->max_ws_blocks *
   1018					 (logical_block_size >> 9));
   1019}
   1020
   1021static blk_status_t sd_setup_flush_cmnd(struct scsi_cmnd *cmd)
   1022{
   1023	struct request *rq = scsi_cmd_to_rq(cmd);
   1024	struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
   1025
   1026	/* flush requests don't perform I/O, zero the S/G table */
   1027	memset(&cmd->sdb, 0, sizeof(cmd->sdb));
   1028
   1029	cmd->cmnd[0] = SYNCHRONIZE_CACHE;
   1030	cmd->cmd_len = 10;
   1031	cmd->transfersize = 0;
   1032	cmd->allowed = sdkp->max_retries;
   1033
   1034	rq->timeout = rq->q->rq_timeout * SD_FLUSH_TIMEOUT_MULTIPLIER;
   1035	return BLK_STS_OK;
   1036}
   1037
   1038static blk_status_t sd_setup_rw32_cmnd(struct scsi_cmnd *cmd, bool write,
   1039				       sector_t lba, unsigned int nr_blocks,
   1040				       unsigned char flags)
   1041{
   1042	cmd->cmd_len = SD_EXT_CDB_SIZE;
   1043	cmd->cmnd[0]  = VARIABLE_LENGTH_CMD;
   1044	cmd->cmnd[7]  = 0x18; /* Additional CDB len */
   1045	cmd->cmnd[9]  = write ? WRITE_32 : READ_32;
   1046	cmd->cmnd[10] = flags;
   1047	put_unaligned_be64(lba, &cmd->cmnd[12]);
   1048	put_unaligned_be32(lba, &cmd->cmnd[20]); /* Expected Indirect LBA */
   1049	put_unaligned_be32(nr_blocks, &cmd->cmnd[28]);
   1050
   1051	return BLK_STS_OK;
   1052}
   1053
   1054static blk_status_t sd_setup_rw16_cmnd(struct scsi_cmnd *cmd, bool write,
   1055				       sector_t lba, unsigned int nr_blocks,
   1056				       unsigned char flags)
   1057{
   1058	cmd->cmd_len  = 16;
   1059	cmd->cmnd[0]  = write ? WRITE_16 : READ_16;
   1060	cmd->cmnd[1]  = flags;
   1061	cmd->cmnd[14] = 0;
   1062	cmd->cmnd[15] = 0;
   1063	put_unaligned_be64(lba, &cmd->cmnd[2]);
   1064	put_unaligned_be32(nr_blocks, &cmd->cmnd[10]);
   1065
   1066	return BLK_STS_OK;
   1067}
   1068
   1069static blk_status_t sd_setup_rw10_cmnd(struct scsi_cmnd *cmd, bool write,
   1070				       sector_t lba, unsigned int nr_blocks,
   1071				       unsigned char flags)
   1072{
   1073	cmd->cmd_len = 10;
   1074	cmd->cmnd[0] = write ? WRITE_10 : READ_10;
   1075	cmd->cmnd[1] = flags;
   1076	cmd->cmnd[6] = 0;
   1077	cmd->cmnd[9] = 0;
   1078	put_unaligned_be32(lba, &cmd->cmnd[2]);
   1079	put_unaligned_be16(nr_blocks, &cmd->cmnd[7]);
   1080
   1081	return BLK_STS_OK;
   1082}
   1083
   1084static blk_status_t sd_setup_rw6_cmnd(struct scsi_cmnd *cmd, bool write,
   1085				      sector_t lba, unsigned int nr_blocks,
   1086				      unsigned char flags)
   1087{
   1088	/* Avoid that 0 blocks gets translated into 256 blocks. */
   1089	if (WARN_ON_ONCE(nr_blocks == 0))
   1090		return BLK_STS_IOERR;
   1091
   1092	if (unlikely(flags & 0x8)) {
   1093		/*
   1094		 * This happens only if this drive failed 10byte rw
   1095		 * command with ILLEGAL_REQUEST during operation and
   1096		 * thus turned off use_10_for_rw.
   1097		 */
   1098		scmd_printk(KERN_ERR, cmd, "FUA write on READ/WRITE(6) drive\n");
   1099		return BLK_STS_IOERR;
   1100	}
   1101
   1102	cmd->cmd_len = 6;
   1103	cmd->cmnd[0] = write ? WRITE_6 : READ_6;
   1104	cmd->cmnd[1] = (lba >> 16) & 0x1f;
   1105	cmd->cmnd[2] = (lba >> 8) & 0xff;
   1106	cmd->cmnd[3] = lba & 0xff;
   1107	cmd->cmnd[4] = nr_blocks;
   1108	cmd->cmnd[5] = 0;
   1109
   1110	return BLK_STS_OK;
   1111}
   1112
   1113static blk_status_t sd_setup_read_write_cmnd(struct scsi_cmnd *cmd)
   1114{
   1115	struct request *rq = scsi_cmd_to_rq(cmd);
   1116	struct scsi_device *sdp = cmd->device;
   1117	struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
   1118	sector_t lba = sectors_to_logical(sdp, blk_rq_pos(rq));
   1119	sector_t threshold;
   1120	unsigned int nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
   1121	unsigned int mask = logical_to_sectors(sdp, 1) - 1;
   1122	bool write = rq_data_dir(rq) == WRITE;
   1123	unsigned char protect, fua;
   1124	blk_status_t ret;
   1125	unsigned int dif;
   1126	bool dix;
   1127
   1128	ret = scsi_alloc_sgtables(cmd);
   1129	if (ret != BLK_STS_OK)
   1130		return ret;
   1131
   1132	ret = BLK_STS_IOERR;
   1133	if (!scsi_device_online(sdp) || sdp->changed) {
   1134		scmd_printk(KERN_ERR, cmd, "device offline or changed\n");
   1135		goto fail;
   1136	}
   1137
   1138	if (blk_rq_pos(rq) + blk_rq_sectors(rq) > get_capacity(rq->q->disk)) {
   1139		scmd_printk(KERN_ERR, cmd, "access beyond end of device\n");
   1140		goto fail;
   1141	}
   1142
   1143	if ((blk_rq_pos(rq) & mask) || (blk_rq_sectors(rq) & mask)) {
   1144		scmd_printk(KERN_ERR, cmd, "request not aligned to the logical block size\n");
   1145		goto fail;
   1146	}
   1147
   1148	/*
   1149	 * Some SD card readers can't handle accesses which touch the
   1150	 * last one or two logical blocks. Split accesses as needed.
   1151	 */
   1152	threshold = sdkp->capacity - SD_LAST_BUGGY_SECTORS;
   1153
   1154	if (unlikely(sdp->last_sector_bug && lba + nr_blocks > threshold)) {
   1155		if (lba < threshold) {
   1156			/* Access up to the threshold but not beyond */
   1157			nr_blocks = threshold - lba;
   1158		} else {
   1159			/* Access only a single logical block */
   1160			nr_blocks = 1;
   1161		}
   1162	}
   1163
   1164	if (req_op(rq) == REQ_OP_ZONE_APPEND) {
   1165		ret = sd_zbc_prepare_zone_append(cmd, &lba, nr_blocks);
   1166		if (ret)
   1167			goto fail;
   1168	}
   1169
   1170	fua = rq->cmd_flags & REQ_FUA ? 0x8 : 0;
   1171	dix = scsi_prot_sg_count(cmd);
   1172	dif = scsi_host_dif_capable(cmd->device->host, sdkp->protection_type);
   1173
   1174	if (dif || dix)
   1175		protect = sd_setup_protect_cmnd(cmd, dix, dif);
   1176	else
   1177		protect = 0;
   1178
   1179	if (protect && sdkp->protection_type == T10_PI_TYPE2_PROTECTION) {
   1180		ret = sd_setup_rw32_cmnd(cmd, write, lba, nr_blocks,
   1181					 protect | fua);
   1182	} else if (sdp->use_16_for_rw || (nr_blocks > 0xffff)) {
   1183		ret = sd_setup_rw16_cmnd(cmd, write, lba, nr_blocks,
   1184					 protect | fua);
   1185	} else if ((nr_blocks > 0xff) || (lba > 0x1fffff) ||
   1186		   sdp->use_10_for_rw || protect) {
   1187		ret = sd_setup_rw10_cmnd(cmd, write, lba, nr_blocks,
   1188					 protect | fua);
   1189	} else {
   1190		ret = sd_setup_rw6_cmnd(cmd, write, lba, nr_blocks,
   1191					protect | fua);
   1192	}
   1193
   1194	if (unlikely(ret != BLK_STS_OK))
   1195		goto fail;
   1196
   1197	/*
   1198	 * We shouldn't disconnect in the middle of a sector, so with a dumb
   1199	 * host adapter, it's safe to assume that we can at least transfer
   1200	 * this many bytes between each connect / disconnect.
   1201	 */
   1202	cmd->transfersize = sdp->sector_size;
   1203	cmd->underflow = nr_blocks << 9;
   1204	cmd->allowed = sdkp->max_retries;
   1205	cmd->sdb.length = nr_blocks * sdp->sector_size;
   1206
   1207	SCSI_LOG_HLQUEUE(1,
   1208			 scmd_printk(KERN_INFO, cmd,
   1209				     "%s: block=%llu, count=%d\n", __func__,
   1210				     (unsigned long long)blk_rq_pos(rq),
   1211				     blk_rq_sectors(rq)));
   1212	SCSI_LOG_HLQUEUE(2,
   1213			 scmd_printk(KERN_INFO, cmd,
   1214				     "%s %d/%u 512 byte blocks.\n",
   1215				     write ? "writing" : "reading", nr_blocks,
   1216				     blk_rq_sectors(rq)));
   1217
   1218	/*
   1219	 * This indicates that the command is ready from our end to be queued.
   1220	 */
   1221	return BLK_STS_OK;
   1222fail:
   1223	scsi_free_sgtables(cmd);
   1224	return ret;
   1225}
   1226
   1227static blk_status_t sd_init_command(struct scsi_cmnd *cmd)
   1228{
   1229	struct request *rq = scsi_cmd_to_rq(cmd);
   1230
   1231	switch (req_op(rq)) {
   1232	case REQ_OP_DISCARD:
   1233		switch (scsi_disk(rq->q->disk)->provisioning_mode) {
   1234		case SD_LBP_UNMAP:
   1235			return sd_setup_unmap_cmnd(cmd);
   1236		case SD_LBP_WS16:
   1237			return sd_setup_write_same16_cmnd(cmd, true);
   1238		case SD_LBP_WS10:
   1239			return sd_setup_write_same10_cmnd(cmd, true);
   1240		case SD_LBP_ZERO:
   1241			return sd_setup_write_same10_cmnd(cmd, false);
   1242		default:
   1243			return BLK_STS_TARGET;
   1244		}
   1245	case REQ_OP_WRITE_ZEROES:
   1246		return sd_setup_write_zeroes_cmnd(cmd);
   1247	case REQ_OP_FLUSH:
   1248		return sd_setup_flush_cmnd(cmd);
   1249	case REQ_OP_READ:
   1250	case REQ_OP_WRITE:
   1251	case REQ_OP_ZONE_APPEND:
   1252		return sd_setup_read_write_cmnd(cmd);
   1253	case REQ_OP_ZONE_RESET:
   1254		return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_RESET_WRITE_POINTER,
   1255						   false);
   1256	case REQ_OP_ZONE_RESET_ALL:
   1257		return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_RESET_WRITE_POINTER,
   1258						   true);
   1259	case REQ_OP_ZONE_OPEN:
   1260		return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_OPEN_ZONE, false);
   1261	case REQ_OP_ZONE_CLOSE:
   1262		return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_CLOSE_ZONE, false);
   1263	case REQ_OP_ZONE_FINISH:
   1264		return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_FINISH_ZONE, false);
   1265	default:
   1266		WARN_ON_ONCE(1);
   1267		return BLK_STS_NOTSUPP;
   1268	}
   1269}
   1270
   1271static void sd_uninit_command(struct scsi_cmnd *SCpnt)
   1272{
   1273	struct request *rq = scsi_cmd_to_rq(SCpnt);
   1274
   1275	if (rq->rq_flags & RQF_SPECIAL_PAYLOAD)
   1276		mempool_free(rq->special_vec.bv_page, sd_page_pool);
   1277}
   1278
   1279static bool sd_need_revalidate(struct block_device *bdev,
   1280		struct scsi_disk *sdkp)
   1281{
   1282	if (sdkp->device->removable || sdkp->write_prot) {
   1283		if (bdev_check_media_change(bdev))
   1284			return true;
   1285	}
   1286
   1287	/*
   1288	 * Force a full rescan after ioctl(BLKRRPART).  While the disk state has
   1289	 * nothing to do with partitions, BLKRRPART is used to force a full
   1290	 * revalidate after things like a format for historical reasons.
   1291	 */
   1292	return test_bit(GD_NEED_PART_SCAN, &bdev->bd_disk->state);
   1293}
   1294
   1295/**
   1296 *	sd_open - open a scsi disk device
   1297 *	@bdev: Block device of the scsi disk to open
   1298 *	@mode: FMODE_* mask
   1299 *
   1300 *	Returns 0 if successful. Returns a negated errno value in case 
   1301 *	of error.
   1302 *
   1303 *	Note: This can be called from a user context (e.g. fsck(1) )
   1304 *	or from within the kernel (e.g. as a result of a mount(1) ).
   1305 *	In the latter case @inode and @filp carry an abridged amount
   1306 *	of information as noted above.
   1307 *
   1308 *	Locking: called with bdev->bd_disk->open_mutex held.
   1309 **/
   1310static int sd_open(struct block_device *bdev, fmode_t mode)
   1311{
   1312	struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk);
   1313	struct scsi_device *sdev = sdkp->device;
   1314	int retval;
   1315
   1316	if (scsi_device_get(sdev))
   1317		return -ENXIO;
   1318
   1319	SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp, "sd_open\n"));
   1320
   1321	/*
   1322	 * If the device is in error recovery, wait until it is done.
   1323	 * If the device is offline, then disallow any access to it.
   1324	 */
   1325	retval = -ENXIO;
   1326	if (!scsi_block_when_processing_errors(sdev))
   1327		goto error_out;
   1328
   1329	if (sd_need_revalidate(bdev, sdkp))
   1330		sd_revalidate_disk(bdev->bd_disk);
   1331
   1332	/*
   1333	 * If the drive is empty, just let the open fail.
   1334	 */
   1335	retval = -ENOMEDIUM;
   1336	if (sdev->removable && !sdkp->media_present && !(mode & FMODE_NDELAY))
   1337		goto error_out;
   1338
   1339	/*
   1340	 * If the device has the write protect tab set, have the open fail
   1341	 * if the user expects to be able to write to the thing.
   1342	 */
   1343	retval = -EROFS;
   1344	if (sdkp->write_prot && (mode & FMODE_WRITE))
   1345		goto error_out;
   1346
   1347	/*
   1348	 * It is possible that the disk changing stuff resulted in
   1349	 * the device being taken offline.  If this is the case,
   1350	 * report this to the user, and don't pretend that the
   1351	 * open actually succeeded.
   1352	 */
   1353	retval = -ENXIO;
   1354	if (!scsi_device_online(sdev))
   1355		goto error_out;
   1356
   1357	if ((atomic_inc_return(&sdkp->openers) == 1) && sdev->removable) {
   1358		if (scsi_block_when_processing_errors(sdev))
   1359			scsi_set_medium_removal(sdev, SCSI_REMOVAL_PREVENT);
   1360	}
   1361
   1362	return 0;
   1363
   1364error_out:
   1365	scsi_device_put(sdev);
   1366	return retval;	
   1367}
   1368
   1369/**
   1370 *	sd_release - invoked when the (last) close(2) is called on this
   1371 *	scsi disk.
   1372 *	@disk: disk to release
   1373 *	@mode: FMODE_* mask
   1374 *
   1375 *	Returns 0. 
   1376 *
   1377 *	Note: may block (uninterruptible) if error recovery is underway
   1378 *	on this disk.
   1379 *
   1380 *	Locking: called with bdev->bd_disk->open_mutex held.
   1381 **/
   1382static void sd_release(struct gendisk *disk, fmode_t mode)
   1383{
   1384	struct scsi_disk *sdkp = scsi_disk(disk);
   1385	struct scsi_device *sdev = sdkp->device;
   1386
   1387	SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp, "sd_release\n"));
   1388
   1389	if (atomic_dec_return(&sdkp->openers) == 0 && sdev->removable) {
   1390		if (scsi_block_when_processing_errors(sdev))
   1391			scsi_set_medium_removal(sdev, SCSI_REMOVAL_ALLOW);
   1392	}
   1393
   1394	scsi_device_put(sdev);
   1395}
   1396
   1397static int sd_getgeo(struct block_device *bdev, struct hd_geometry *geo)
   1398{
   1399	struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk);
   1400	struct scsi_device *sdp = sdkp->device;
   1401	struct Scsi_Host *host = sdp->host;
   1402	sector_t capacity = logical_to_sectors(sdp, sdkp->capacity);
   1403	int diskinfo[4];
   1404
   1405	/* default to most commonly used values */
   1406	diskinfo[0] = 0x40;	/* 1 << 6 */
   1407	diskinfo[1] = 0x20;	/* 1 << 5 */
   1408	diskinfo[2] = capacity >> 11;
   1409
   1410	/* override with calculated, extended default, or driver values */
   1411	if (host->hostt->bios_param)
   1412		host->hostt->bios_param(sdp, bdev, capacity, diskinfo);
   1413	else
   1414		scsicam_bios_param(bdev, capacity, diskinfo);
   1415
   1416	geo->heads = diskinfo[0];
   1417	geo->sectors = diskinfo[1];
   1418	geo->cylinders = diskinfo[2];
   1419	return 0;
   1420}
   1421
   1422/**
   1423 *	sd_ioctl - process an ioctl
   1424 *	@bdev: target block device
   1425 *	@mode: FMODE_* mask
   1426 *	@cmd: ioctl command number
   1427 *	@arg: this is third argument given to ioctl(2) system call.
   1428 *	Often contains a pointer.
   1429 *
   1430 *	Returns 0 if successful (some ioctls return positive numbers on
   1431 *	success as well). Returns a negated errno value in case of error.
   1432 *
   1433 *	Note: most ioctls are forward onto the block subsystem or further
   1434 *	down in the scsi subsystem.
   1435 **/
   1436static int sd_ioctl(struct block_device *bdev, fmode_t mode,
   1437		    unsigned int cmd, unsigned long arg)
   1438{
   1439	struct gendisk *disk = bdev->bd_disk;
   1440	struct scsi_disk *sdkp = scsi_disk(disk);
   1441	struct scsi_device *sdp = sdkp->device;
   1442	void __user *p = (void __user *)arg;
   1443	int error;
   1444    
   1445	SCSI_LOG_IOCTL(1, sd_printk(KERN_INFO, sdkp, "sd_ioctl: disk=%s, "
   1446				    "cmd=0x%x\n", disk->disk_name, cmd));
   1447
   1448	if (bdev_is_partition(bdev) && !capable(CAP_SYS_RAWIO))
   1449		return -ENOIOCTLCMD;
   1450
   1451	/*
   1452	 * If we are in the middle of error recovery, don't let anyone
   1453	 * else try and use this device.  Also, if error recovery fails, it
   1454	 * may try and take the device offline, in which case all further
   1455	 * access to the device is prohibited.
   1456	 */
   1457	error = scsi_ioctl_block_when_processing_errors(sdp, cmd,
   1458			(mode & FMODE_NDELAY) != 0);
   1459	if (error)
   1460		return error;
   1461
   1462	if (is_sed_ioctl(cmd))
   1463		return sed_ioctl(sdkp->opal_dev, cmd, p);
   1464	return scsi_ioctl(sdp, mode, cmd, p);
   1465}
   1466
   1467static void set_media_not_present(struct scsi_disk *sdkp)
   1468{
   1469	if (sdkp->media_present)
   1470		sdkp->device->changed = 1;
   1471
   1472	if (sdkp->device->removable) {
   1473		sdkp->media_present = 0;
   1474		sdkp->capacity = 0;
   1475	}
   1476}
   1477
   1478static int media_not_present(struct scsi_disk *sdkp,
   1479			     struct scsi_sense_hdr *sshdr)
   1480{
   1481	if (!scsi_sense_valid(sshdr))
   1482		return 0;
   1483
   1484	/* not invoked for commands that could return deferred errors */
   1485	switch (sshdr->sense_key) {
   1486	case UNIT_ATTENTION:
   1487	case NOT_READY:
   1488		/* medium not present */
   1489		if (sshdr->asc == 0x3A) {
   1490			set_media_not_present(sdkp);
   1491			return 1;
   1492		}
   1493	}
   1494	return 0;
   1495}
   1496
   1497/**
   1498 *	sd_check_events - check media events
   1499 *	@disk: kernel device descriptor
   1500 *	@clearing: disk events currently being cleared
   1501 *
   1502 *	Returns mask of DISK_EVENT_*.
   1503 *
   1504 *	Note: this function is invoked from the block subsystem.
   1505 **/
   1506static unsigned int sd_check_events(struct gendisk *disk, unsigned int clearing)
   1507{
   1508	struct scsi_disk *sdkp = disk->private_data;
   1509	struct scsi_device *sdp;
   1510	int retval;
   1511	bool disk_changed;
   1512
   1513	if (!sdkp)
   1514		return 0;
   1515
   1516	sdp = sdkp->device;
   1517	SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp, "sd_check_events\n"));
   1518
   1519	/*
   1520	 * If the device is offline, don't send any commands - just pretend as
   1521	 * if the command failed.  If the device ever comes back online, we
   1522	 * can deal with it then.  It is only because of unrecoverable errors
   1523	 * that we would ever take a device offline in the first place.
   1524	 */
   1525	if (!scsi_device_online(sdp)) {
   1526		set_media_not_present(sdkp);
   1527		goto out;
   1528	}
   1529
   1530	/*
   1531	 * Using TEST_UNIT_READY enables differentiation between drive with
   1532	 * no cartridge loaded - NOT READY, drive with changed cartridge -
   1533	 * UNIT ATTENTION, or with same cartridge - GOOD STATUS.
   1534	 *
   1535	 * Drives that auto spin down. eg iomega jaz 1G, will be started
   1536	 * by sd_spinup_disk() from sd_revalidate_disk(), which happens whenever
   1537	 * sd_revalidate() is called.
   1538	 */
   1539	if (scsi_block_when_processing_errors(sdp)) {
   1540		struct scsi_sense_hdr sshdr = { 0, };
   1541
   1542		retval = scsi_test_unit_ready(sdp, SD_TIMEOUT, sdkp->max_retries,
   1543					      &sshdr);
   1544
   1545		/* failed to execute TUR, assume media not present */
   1546		if (retval < 0 || host_byte(retval)) {
   1547			set_media_not_present(sdkp);
   1548			goto out;
   1549		}
   1550
   1551		if (media_not_present(sdkp, &sshdr))
   1552			goto out;
   1553	}
   1554
   1555	/*
   1556	 * For removable scsi disk we have to recognise the presence
   1557	 * of a disk in the drive.
   1558	 */
   1559	if (!sdkp->media_present)
   1560		sdp->changed = 1;
   1561	sdkp->media_present = 1;
   1562out:
   1563	/*
   1564	 * sdp->changed is set under the following conditions:
   1565	 *
   1566	 *	Medium present state has changed in either direction.
   1567	 *	Device has indicated UNIT_ATTENTION.
   1568	 */
   1569	disk_changed = sdp->changed;
   1570	sdp->changed = 0;
   1571	return disk_changed ? DISK_EVENT_MEDIA_CHANGE : 0;
   1572}
   1573
   1574static int sd_sync_cache(struct scsi_disk *sdkp, struct scsi_sense_hdr *sshdr)
   1575{
   1576	int retries, res;
   1577	struct scsi_device *sdp = sdkp->device;
   1578	const int timeout = sdp->request_queue->rq_timeout
   1579		* SD_FLUSH_TIMEOUT_MULTIPLIER;
   1580	struct scsi_sense_hdr my_sshdr;
   1581
   1582	if (!scsi_device_online(sdp))
   1583		return -ENODEV;
   1584
   1585	/* caller might not be interested in sense, but we need it */
   1586	if (!sshdr)
   1587		sshdr = &my_sshdr;
   1588
   1589	for (retries = 3; retries > 0; --retries) {
   1590		unsigned char cmd[10] = { 0 };
   1591
   1592		cmd[0] = SYNCHRONIZE_CACHE;
   1593		/*
   1594		 * Leave the rest of the command zero to indicate
   1595		 * flush everything.
   1596		 */
   1597		res = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, sshdr,
   1598				timeout, sdkp->max_retries, 0, RQF_PM, NULL);
   1599		if (res == 0)
   1600			break;
   1601	}
   1602
   1603	if (res) {
   1604		sd_print_result(sdkp, "Synchronize Cache(10) failed", res);
   1605
   1606		if (res < 0)
   1607			return res;
   1608
   1609		if (scsi_status_is_check_condition(res) &&
   1610		    scsi_sense_valid(sshdr)) {
   1611			sd_print_sense_hdr(sdkp, sshdr);
   1612
   1613			/* we need to evaluate the error return  */
   1614			if (sshdr->asc == 0x3a ||	/* medium not present */
   1615			    sshdr->asc == 0x20 ||	/* invalid command */
   1616			    (sshdr->asc == 0x74 && sshdr->ascq == 0x71))	/* drive is password locked */
   1617				/* this is no error here */
   1618				return 0;
   1619		}
   1620
   1621		switch (host_byte(res)) {
   1622		/* ignore errors due to racing a disconnection */
   1623		case DID_BAD_TARGET:
   1624		case DID_NO_CONNECT:
   1625			return 0;
   1626		/* signal the upper layer it might try again */
   1627		case DID_BUS_BUSY:
   1628		case DID_IMM_RETRY:
   1629		case DID_REQUEUE:
   1630		case DID_SOFT_ERROR:
   1631			return -EBUSY;
   1632		default:
   1633			return -EIO;
   1634		}
   1635	}
   1636	return 0;
   1637}
   1638
   1639static void sd_rescan(struct device *dev)
   1640{
   1641	struct scsi_disk *sdkp = dev_get_drvdata(dev);
   1642
   1643	sd_revalidate_disk(sdkp->disk);
   1644}
   1645
   1646static int sd_get_unique_id(struct gendisk *disk, u8 id[16],
   1647		enum blk_unique_id type)
   1648{
   1649	struct scsi_device *sdev = scsi_disk(disk)->device;
   1650	const struct scsi_vpd *vpd;
   1651	const unsigned char *d;
   1652	int ret = -ENXIO, len;
   1653
   1654	rcu_read_lock();
   1655	vpd = rcu_dereference(sdev->vpd_pg83);
   1656	if (!vpd)
   1657		goto out_unlock;
   1658
   1659	ret = -EINVAL;
   1660	for (d = vpd->data + 4; d < vpd->data + vpd->len; d += d[3] + 4) {
   1661		/* we only care about designators with LU association */
   1662		if (((d[1] >> 4) & 0x3) != 0x00)
   1663			continue;
   1664		if ((d[1] & 0xf) != type)
   1665			continue;
   1666
   1667		/*
   1668		 * Only exit early if a 16-byte descriptor was found.  Otherwise
   1669		 * keep looking as one with more entropy might still show up.
   1670		 */
   1671		len = d[3];
   1672		if (len != 8 && len != 12 && len != 16)
   1673			continue;
   1674		ret = len;
   1675		memcpy(id, d + 4, len);
   1676		if (len == 16)
   1677			break;
   1678	}
   1679out_unlock:
   1680	rcu_read_unlock();
   1681	return ret;
   1682}
   1683
   1684static char sd_pr_type(enum pr_type type)
   1685{
   1686	switch (type) {
   1687	case PR_WRITE_EXCLUSIVE:
   1688		return 0x01;
   1689	case PR_EXCLUSIVE_ACCESS:
   1690		return 0x03;
   1691	case PR_WRITE_EXCLUSIVE_REG_ONLY:
   1692		return 0x05;
   1693	case PR_EXCLUSIVE_ACCESS_REG_ONLY:
   1694		return 0x06;
   1695	case PR_WRITE_EXCLUSIVE_ALL_REGS:
   1696		return 0x07;
   1697	case PR_EXCLUSIVE_ACCESS_ALL_REGS:
   1698		return 0x08;
   1699	default:
   1700		return 0;
   1701	}
   1702};
   1703
   1704static int sd_pr_command(struct block_device *bdev, u8 sa,
   1705		u64 key, u64 sa_key, u8 type, u8 flags)
   1706{
   1707	struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk);
   1708	struct scsi_device *sdev = sdkp->device;
   1709	struct scsi_sense_hdr sshdr;
   1710	int result;
   1711	u8 cmd[16] = { 0, };
   1712	u8 data[24] = { 0, };
   1713
   1714	cmd[0] = PERSISTENT_RESERVE_OUT;
   1715	cmd[1] = sa;
   1716	cmd[2] = type;
   1717	put_unaligned_be32(sizeof(data), &cmd[5]);
   1718
   1719	put_unaligned_be64(key, &data[0]);
   1720	put_unaligned_be64(sa_key, &data[8]);
   1721	data[20] = flags;
   1722
   1723	result = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, &data, sizeof(data),
   1724			&sshdr, SD_TIMEOUT, sdkp->max_retries, NULL);
   1725
   1726	if (scsi_status_is_check_condition(result) &&
   1727	    scsi_sense_valid(&sshdr)) {
   1728		sdev_printk(KERN_INFO, sdev, "PR command failed: %d\n", result);
   1729		scsi_print_sense_hdr(sdev, NULL, &sshdr);
   1730	}
   1731
   1732	return result;
   1733}
   1734
   1735static int sd_pr_register(struct block_device *bdev, u64 old_key, u64 new_key,
   1736		u32 flags)
   1737{
   1738	if (flags & ~PR_FL_IGNORE_KEY)
   1739		return -EOPNOTSUPP;
   1740	return sd_pr_command(bdev, (flags & PR_FL_IGNORE_KEY) ? 0x06 : 0x00,
   1741			old_key, new_key, 0,
   1742			(1 << 0) /* APTPL */);
   1743}
   1744
   1745static int sd_pr_reserve(struct block_device *bdev, u64 key, enum pr_type type,
   1746		u32 flags)
   1747{
   1748	if (flags)
   1749		return -EOPNOTSUPP;
   1750	return sd_pr_command(bdev, 0x01, key, 0, sd_pr_type(type), 0);
   1751}
   1752
   1753static int sd_pr_release(struct block_device *bdev, u64 key, enum pr_type type)
   1754{
   1755	return sd_pr_command(bdev, 0x02, key, 0, sd_pr_type(type), 0);
   1756}
   1757
   1758static int sd_pr_preempt(struct block_device *bdev, u64 old_key, u64 new_key,
   1759		enum pr_type type, bool abort)
   1760{
   1761	return sd_pr_command(bdev, abort ? 0x05 : 0x04, old_key, new_key,
   1762			     sd_pr_type(type), 0);
   1763}
   1764
   1765static int sd_pr_clear(struct block_device *bdev, u64 key)
   1766{
   1767	return sd_pr_command(bdev, 0x03, key, 0, 0, 0);
   1768}
   1769
   1770static const struct pr_ops sd_pr_ops = {
   1771	.pr_register	= sd_pr_register,
   1772	.pr_reserve	= sd_pr_reserve,
   1773	.pr_release	= sd_pr_release,
   1774	.pr_preempt	= sd_pr_preempt,
   1775	.pr_clear	= sd_pr_clear,
   1776};
   1777
   1778static void scsi_disk_free_disk(struct gendisk *disk)
   1779{
   1780	struct scsi_disk *sdkp = scsi_disk(disk);
   1781
   1782	put_device(&sdkp->disk_dev);
   1783}
   1784
   1785static const struct block_device_operations sd_fops = {
   1786	.owner			= THIS_MODULE,
   1787	.open			= sd_open,
   1788	.release		= sd_release,
   1789	.ioctl			= sd_ioctl,
   1790	.getgeo			= sd_getgeo,
   1791	.compat_ioctl		= blkdev_compat_ptr_ioctl,
   1792	.check_events		= sd_check_events,
   1793	.unlock_native_capacity	= sd_unlock_native_capacity,
   1794	.report_zones		= sd_zbc_report_zones,
   1795	.get_unique_id		= sd_get_unique_id,
   1796	.free_disk		= scsi_disk_free_disk,
   1797	.pr_ops			= &sd_pr_ops,
   1798};
   1799
   1800/**
   1801 *	sd_eh_reset - reset error handling callback
   1802 *	@scmd:		sd-issued command that has failed
   1803 *
   1804 *	This function is called by the SCSI midlayer before starting
   1805 *	SCSI EH. When counting medium access failures we have to be
   1806 *	careful to register it only only once per device and SCSI EH run;
   1807 *	there might be several timed out commands which will cause the
   1808 *	'max_medium_access_timeouts' counter to trigger after the first
   1809 *	SCSI EH run already and set the device to offline.
   1810 *	So this function resets the internal counter before starting SCSI EH.
   1811 **/
   1812static void sd_eh_reset(struct scsi_cmnd *scmd)
   1813{
   1814	struct scsi_disk *sdkp = scsi_disk(scsi_cmd_to_rq(scmd)->q->disk);
   1815
   1816	/* New SCSI EH run, reset gate variable */
   1817	sdkp->ignore_medium_access_errors = false;
   1818}
   1819
   1820/**
   1821 *	sd_eh_action - error handling callback
   1822 *	@scmd:		sd-issued command that has failed
   1823 *	@eh_disp:	The recovery disposition suggested by the midlayer
   1824 *
   1825 *	This function is called by the SCSI midlayer upon completion of an
   1826 *	error test command (currently TEST UNIT READY). The result of sending
   1827 *	the eh command is passed in eh_disp.  We're looking for devices that
   1828 *	fail medium access commands but are OK with non access commands like
   1829 *	test unit ready (so wrongly see the device as having a successful
   1830 *	recovery)
   1831 **/
   1832static int sd_eh_action(struct scsi_cmnd *scmd, int eh_disp)
   1833{
   1834	struct scsi_disk *sdkp = scsi_disk(scsi_cmd_to_rq(scmd)->q->disk);
   1835	struct scsi_device *sdev = scmd->device;
   1836
   1837	if (!scsi_device_online(sdev) ||
   1838	    !scsi_medium_access_command(scmd) ||
   1839	    host_byte(scmd->result) != DID_TIME_OUT ||
   1840	    eh_disp != SUCCESS)
   1841		return eh_disp;
   1842
   1843	/*
   1844	 * The device has timed out executing a medium access command.
   1845	 * However, the TEST UNIT READY command sent during error
   1846	 * handling completed successfully. Either the device is in the
   1847	 * process of recovering or has it suffered an internal failure
   1848	 * that prevents access to the storage medium.
   1849	 */
   1850	if (!sdkp->ignore_medium_access_errors) {
   1851		sdkp->medium_access_timed_out++;
   1852		sdkp->ignore_medium_access_errors = true;
   1853	}
   1854
   1855	/*
   1856	 * If the device keeps failing read/write commands but TEST UNIT
   1857	 * READY always completes successfully we assume that medium
   1858	 * access is no longer possible and take the device offline.
   1859	 */
   1860	if (sdkp->medium_access_timed_out >= sdkp->max_medium_access_timeouts) {
   1861		scmd_printk(KERN_ERR, scmd,
   1862			    "Medium access timeout failure. Offlining disk!\n");
   1863		mutex_lock(&sdev->state_mutex);
   1864		scsi_device_set_state(sdev, SDEV_OFFLINE);
   1865		mutex_unlock(&sdev->state_mutex);
   1866
   1867		return SUCCESS;
   1868	}
   1869
   1870	return eh_disp;
   1871}
   1872
   1873static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
   1874{
   1875	struct request *req = scsi_cmd_to_rq(scmd);
   1876	struct scsi_device *sdev = scmd->device;
   1877	unsigned int transferred, good_bytes;
   1878	u64 start_lba, end_lba, bad_lba;
   1879
   1880	/*
   1881	 * Some commands have a payload smaller than the device logical
   1882	 * block size (e.g. INQUIRY on a 4K disk).
   1883	 */
   1884	if (scsi_bufflen(scmd) <= sdev->sector_size)
   1885		return 0;
   1886
   1887	/* Check if we have a 'bad_lba' information */
   1888	if (!scsi_get_sense_info_fld(scmd->sense_buffer,
   1889				     SCSI_SENSE_BUFFERSIZE,
   1890				     &bad_lba))
   1891		return 0;
   1892
   1893	/*
   1894	 * If the bad lba was reported incorrectly, we have no idea where
   1895	 * the error is.
   1896	 */
   1897	start_lba = sectors_to_logical(sdev, blk_rq_pos(req));
   1898	end_lba = start_lba + bytes_to_logical(sdev, scsi_bufflen(scmd));
   1899	if (bad_lba < start_lba || bad_lba >= end_lba)
   1900		return 0;
   1901
   1902	/*
   1903	 * resid is optional but mostly filled in.  When it's unused,
   1904	 * its value is zero, so we assume the whole buffer transferred
   1905	 */
   1906	transferred = scsi_bufflen(scmd) - scsi_get_resid(scmd);
   1907
   1908	/* This computation should always be done in terms of the
   1909	 * resolution of the device's medium.
   1910	 */
   1911	good_bytes = logical_to_bytes(sdev, bad_lba - start_lba);
   1912
   1913	return min(good_bytes, transferred);
   1914}
   1915
   1916/**
   1917 *	sd_done - bottom half handler: called when the lower level
   1918 *	driver has completed (successfully or otherwise) a scsi command.
   1919 *	@SCpnt: mid-level's per command structure.
   1920 *
   1921 *	Note: potentially run from within an ISR. Must not block.
   1922 **/
   1923static int sd_done(struct scsi_cmnd *SCpnt)
   1924{
   1925	int result = SCpnt->result;
   1926	unsigned int good_bytes = result ? 0 : scsi_bufflen(SCpnt);
   1927	unsigned int sector_size = SCpnt->device->sector_size;
   1928	unsigned int resid;
   1929	struct scsi_sense_hdr sshdr;
   1930	struct request *req = scsi_cmd_to_rq(SCpnt);
   1931	struct scsi_disk *sdkp = scsi_disk(req->q->disk);
   1932	int sense_valid = 0;
   1933	int sense_deferred = 0;
   1934
   1935	switch (req_op(req)) {
   1936	case REQ_OP_DISCARD:
   1937	case REQ_OP_WRITE_ZEROES:
   1938	case REQ_OP_ZONE_RESET:
   1939	case REQ_OP_ZONE_RESET_ALL:
   1940	case REQ_OP_ZONE_OPEN:
   1941	case REQ_OP_ZONE_CLOSE:
   1942	case REQ_OP_ZONE_FINISH:
   1943		if (!result) {
   1944			good_bytes = blk_rq_bytes(req);
   1945			scsi_set_resid(SCpnt, 0);
   1946		} else {
   1947			good_bytes = 0;
   1948			scsi_set_resid(SCpnt, blk_rq_bytes(req));
   1949		}
   1950		break;
   1951	default:
   1952		/*
   1953		 * In case of bogus fw or device, we could end up having
   1954		 * an unaligned partial completion. Check this here and force
   1955		 * alignment.
   1956		 */
   1957		resid = scsi_get_resid(SCpnt);
   1958		if (resid & (sector_size - 1)) {
   1959			sd_printk(KERN_INFO, sdkp,
   1960				"Unaligned partial completion (resid=%u, sector_sz=%u)\n",
   1961				resid, sector_size);
   1962			scsi_print_command(SCpnt);
   1963			resid = min(scsi_bufflen(SCpnt),
   1964				    round_up(resid, sector_size));
   1965			scsi_set_resid(SCpnt, resid);
   1966		}
   1967	}
   1968
   1969	if (result) {
   1970		sense_valid = scsi_command_normalize_sense(SCpnt, &sshdr);
   1971		if (sense_valid)
   1972			sense_deferred = scsi_sense_is_deferred(&sshdr);
   1973	}
   1974	sdkp->medium_access_timed_out = 0;
   1975
   1976	if (!scsi_status_is_check_condition(result) &&
   1977	    (!sense_valid || sense_deferred))
   1978		goto out;
   1979
   1980	switch (sshdr.sense_key) {
   1981	case HARDWARE_ERROR:
   1982	case MEDIUM_ERROR:
   1983		good_bytes = sd_completed_bytes(SCpnt);
   1984		break;
   1985	case RECOVERED_ERROR:
   1986		good_bytes = scsi_bufflen(SCpnt);
   1987		break;
   1988	case NO_SENSE:
   1989		/* This indicates a false check condition, so ignore it.  An
   1990		 * unknown amount of data was transferred so treat it as an
   1991		 * error.
   1992		 */
   1993		SCpnt->result = 0;
   1994		memset(SCpnt->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
   1995		break;
   1996	case ABORTED_COMMAND:
   1997		if (sshdr.asc == 0x10)  /* DIF: Target detected corruption */
   1998			good_bytes = sd_completed_bytes(SCpnt);
   1999		break;
   2000	case ILLEGAL_REQUEST:
   2001		switch (sshdr.asc) {
   2002		case 0x10:	/* DIX: Host detected corruption */
   2003			good_bytes = sd_completed_bytes(SCpnt);
   2004			break;
   2005		case 0x20:	/* INVALID COMMAND OPCODE */
   2006		case 0x24:	/* INVALID FIELD IN CDB */
   2007			switch (SCpnt->cmnd[0]) {
   2008			case UNMAP:
   2009				sd_config_discard(sdkp, SD_LBP_DISABLE);
   2010				break;
   2011			case WRITE_SAME_16:
   2012			case WRITE_SAME:
   2013				if (SCpnt->cmnd[1] & 8) { /* UNMAP */
   2014					sd_config_discard(sdkp, SD_LBP_DISABLE);
   2015				} else {
   2016					sdkp->device->no_write_same = 1;
   2017					sd_config_write_same(sdkp);
   2018					req->rq_flags |= RQF_QUIET;
   2019				}
   2020				break;
   2021			}
   2022		}
   2023		break;
   2024	default:
   2025		break;
   2026	}
   2027
   2028 out:
   2029	if (sd_is_zoned(sdkp))
   2030		good_bytes = sd_zbc_complete(SCpnt, good_bytes, &sshdr);
   2031
   2032	SCSI_LOG_HLCOMPLETE(1, scmd_printk(KERN_INFO, SCpnt,
   2033					   "sd_done: completed %d of %d bytes\n",
   2034					   good_bytes, scsi_bufflen(SCpnt)));
   2035
   2036	return good_bytes;
   2037}
   2038
   2039/*
   2040 * spinup disk - called only in sd_revalidate_disk()
   2041 */
   2042static void
   2043sd_spinup_disk(struct scsi_disk *sdkp)
   2044{
   2045	unsigned char cmd[10];
   2046	unsigned long spintime_expire = 0;
   2047	int retries, spintime;
   2048	unsigned int the_result;
   2049	struct scsi_sense_hdr sshdr;
   2050	int sense_valid = 0;
   2051
   2052	spintime = 0;
   2053
   2054	/* Spin up drives, as required.  Only do this at boot time */
   2055	/* Spinup needs to be done for module loads too. */
   2056	do {
   2057		retries = 0;
   2058
   2059		do {
   2060			bool media_was_present = sdkp->media_present;
   2061
   2062			cmd[0] = TEST_UNIT_READY;
   2063			memset((void *) &cmd[1], 0, 9);
   2064
   2065			the_result = scsi_execute_req(sdkp->device, cmd,
   2066						      DMA_NONE, NULL, 0,
   2067						      &sshdr, SD_TIMEOUT,
   2068						      sdkp->max_retries, NULL);
   2069
   2070			/*
   2071			 * If the drive has indicated to us that it
   2072			 * doesn't have any media in it, don't bother
   2073			 * with any more polling.
   2074			 */
   2075			if (media_not_present(sdkp, &sshdr)) {
   2076				if (media_was_present)
   2077					sd_printk(KERN_NOTICE, sdkp, "Media removed, stopped polling\n");
   2078				return;
   2079			}
   2080
   2081			if (the_result)
   2082				sense_valid = scsi_sense_valid(&sshdr);
   2083			retries++;
   2084		} while (retries < 3 &&
   2085			 (!scsi_status_is_good(the_result) ||
   2086			  (scsi_status_is_check_condition(the_result) &&
   2087			  sense_valid && sshdr.sense_key == UNIT_ATTENTION)));
   2088
   2089		if (!scsi_status_is_check_condition(the_result)) {
   2090			/* no sense, TUR either succeeded or failed
   2091			 * with a status error */
   2092			if(!spintime && !scsi_status_is_good(the_result)) {
   2093				sd_print_result(sdkp, "Test Unit Ready failed",
   2094						the_result);
   2095			}
   2096			break;
   2097		}
   2098
   2099		/*
   2100		 * The device does not want the automatic start to be issued.
   2101		 */
   2102		if (sdkp->device->no_start_on_add)
   2103			break;
   2104
   2105		if (sense_valid && sshdr.sense_key == NOT_READY) {
   2106			if (sshdr.asc == 4 && sshdr.ascq == 3)
   2107				break;	/* manual intervention required */
   2108			if (sshdr.asc == 4 && sshdr.ascq == 0xb)
   2109				break;	/* standby */
   2110			if (sshdr.asc == 4 && sshdr.ascq == 0xc)
   2111				break;	/* unavailable */
   2112			if (sshdr.asc == 4 && sshdr.ascq == 0x1b)
   2113				break;	/* sanitize in progress */
   2114			/*
   2115			 * Issue command to spin up drive when not ready
   2116			 */
   2117			if (!spintime) {
   2118				sd_printk(KERN_NOTICE, sdkp, "Spinning up disk...");
   2119				cmd[0] = START_STOP;
   2120				cmd[1] = 1;	/* Return immediately */
   2121				memset((void *) &cmd[2], 0, 8);
   2122				cmd[4] = 1;	/* Start spin cycle */
   2123				if (sdkp->device->start_stop_pwr_cond)
   2124					cmd[4] |= 1 << 4;
   2125				scsi_execute_req(sdkp->device, cmd, DMA_NONE,
   2126						 NULL, 0, &sshdr,
   2127						 SD_TIMEOUT, sdkp->max_retries,
   2128						 NULL);
   2129				spintime_expire = jiffies + 100 * HZ;
   2130				spintime = 1;
   2131			}
   2132			/* Wait 1 second for next try */
   2133			msleep(1000);
   2134			printk(KERN_CONT ".");
   2135
   2136		/*
   2137		 * Wait for USB flash devices with slow firmware.
   2138		 * Yes, this sense key/ASC combination shouldn't
   2139		 * occur here.  It's characteristic of these devices.
   2140		 */
   2141		} else if (sense_valid &&
   2142				sshdr.sense_key == UNIT_ATTENTION &&
   2143				sshdr.asc == 0x28) {
   2144			if (!spintime) {
   2145				spintime_expire = jiffies + 5 * HZ;
   2146				spintime = 1;
   2147			}
   2148			/* Wait 1 second for next try */
   2149			msleep(1000);
   2150		} else {
   2151			/* we don't understand the sense code, so it's
   2152			 * probably pointless to loop */
   2153			if(!spintime) {
   2154				sd_printk(KERN_NOTICE, sdkp, "Unit Not Ready\n");
   2155				sd_print_sense_hdr(sdkp, &sshdr);
   2156			}
   2157			break;
   2158		}
   2159				
   2160	} while (spintime && time_before_eq(jiffies, spintime_expire));
   2161
   2162	if (spintime) {
   2163		if (scsi_status_is_good(the_result))
   2164			printk(KERN_CONT "ready\n");
   2165		else
   2166			printk(KERN_CONT "not responding...\n");
   2167	}
   2168}
   2169
   2170/*
   2171 * Determine whether disk supports Data Integrity Field.
   2172 */
   2173static int sd_read_protection_type(struct scsi_disk *sdkp, unsigned char *buffer)
   2174{
   2175	struct scsi_device *sdp = sdkp->device;
   2176	u8 type;
   2177
   2178	if (scsi_device_protection(sdp) == 0 || (buffer[12] & 1) == 0) {
   2179		sdkp->protection_type = 0;
   2180		return 0;
   2181	}
   2182
   2183	type = ((buffer[12] >> 1) & 7) + 1; /* P_TYPE 0 = Type 1 */
   2184
   2185	if (type > T10_PI_TYPE3_PROTECTION) {
   2186		sd_printk(KERN_ERR, sdkp, "formatted with unsupported"	\
   2187			  " protection type %u. Disabling disk!\n",
   2188			  type);
   2189		sdkp->protection_type = 0;
   2190		return -ENODEV;
   2191	}
   2192
   2193	sdkp->protection_type = type;
   2194
   2195	return 0;
   2196}
   2197
   2198static void sd_config_protection(struct scsi_disk *sdkp)
   2199{
   2200	struct scsi_device *sdp = sdkp->device;
   2201
   2202	if (!sdkp->first_scan)
   2203		return;
   2204
   2205	sd_dif_config_host(sdkp);
   2206
   2207	if (!sdkp->protection_type)
   2208		return;
   2209
   2210	if (!scsi_host_dif_capable(sdp->host, sdkp->protection_type)) {
   2211		sd_printk(KERN_NOTICE, sdkp,
   2212			  "Disabling DIF Type %u protection\n",
   2213			  sdkp->protection_type);
   2214		sdkp->protection_type = 0;
   2215	}
   2216
   2217	sd_printk(KERN_NOTICE, sdkp, "Enabling DIF Type %u protection\n",
   2218		  sdkp->protection_type);
   2219}
   2220
   2221static void read_capacity_error(struct scsi_disk *sdkp, struct scsi_device *sdp,
   2222			struct scsi_sense_hdr *sshdr, int sense_valid,
   2223			int the_result)
   2224{
   2225	if (sense_valid)
   2226		sd_print_sense_hdr(sdkp, sshdr);
   2227	else
   2228		sd_printk(KERN_NOTICE, sdkp, "Sense not available.\n");
   2229
   2230	/*
   2231	 * Set dirty bit for removable devices if not ready -
   2232	 * sometimes drives will not report this properly.
   2233	 */
   2234	if (sdp->removable &&
   2235	    sense_valid && sshdr->sense_key == NOT_READY)
   2236		set_media_not_present(sdkp);
   2237
   2238	/*
   2239	 * We used to set media_present to 0 here to indicate no media
   2240	 * in the drive, but some drives fail read capacity even with
   2241	 * media present, so we can't do that.
   2242	 */
   2243	sdkp->capacity = 0; /* unknown mapped to zero - as usual */
   2244}
   2245
   2246#define RC16_LEN 32
   2247#if RC16_LEN > SD_BUF_SIZE
   2248#error RC16_LEN must not be more than SD_BUF_SIZE
   2249#endif
   2250
   2251#define READ_CAPACITY_RETRIES_ON_RESET	10
   2252
   2253static int read_capacity_16(struct scsi_disk *sdkp, struct scsi_device *sdp,
   2254						unsigned char *buffer)
   2255{
   2256	unsigned char cmd[16];
   2257	struct scsi_sense_hdr sshdr;
   2258	int sense_valid = 0;
   2259	int the_result;
   2260	int retries = 3, reset_retries = READ_CAPACITY_RETRIES_ON_RESET;
   2261	unsigned int alignment;
   2262	unsigned long long lba;
   2263	unsigned sector_size;
   2264
   2265	if (sdp->no_read_capacity_16)
   2266		return -EINVAL;
   2267
   2268	do {
   2269		memset(cmd, 0, 16);
   2270		cmd[0] = SERVICE_ACTION_IN_16;
   2271		cmd[1] = SAI_READ_CAPACITY_16;
   2272		cmd[13] = RC16_LEN;
   2273		memset(buffer, 0, RC16_LEN);
   2274
   2275		the_result = scsi_execute_req(sdp, cmd, DMA_FROM_DEVICE,
   2276					buffer, RC16_LEN, &sshdr,
   2277					SD_TIMEOUT, sdkp->max_retries, NULL);
   2278
   2279		if (media_not_present(sdkp, &sshdr))
   2280			return -ENODEV;
   2281
   2282		if (the_result > 0) {
   2283			sense_valid = scsi_sense_valid(&sshdr);
   2284			if (sense_valid &&
   2285			    sshdr.sense_key == ILLEGAL_REQUEST &&
   2286			    (sshdr.asc == 0x20 || sshdr.asc == 0x24) &&
   2287			    sshdr.ascq == 0x00)
   2288				/* Invalid Command Operation Code or
   2289				 * Invalid Field in CDB, just retry
   2290				 * silently with RC10 */
   2291				return -EINVAL;
   2292			if (sense_valid &&
   2293			    sshdr.sense_key == UNIT_ATTENTION &&
   2294			    sshdr.asc == 0x29 && sshdr.ascq == 0x00)
   2295				/* Device reset might occur several times,
   2296				 * give it one more chance */
   2297				if (--reset_retries > 0)
   2298					continue;
   2299		}
   2300		retries--;
   2301
   2302	} while (the_result && retries);
   2303
   2304	if (the_result) {
   2305		sd_print_result(sdkp, "Read Capacity(16) failed", the_result);
   2306		read_capacity_error(sdkp, sdp, &sshdr, sense_valid, the_result);
   2307		return -EINVAL;
   2308	}
   2309
   2310	sector_size = get_unaligned_be32(&buffer[8]);
   2311	lba = get_unaligned_be64(&buffer[0]);
   2312
   2313	if (sd_read_protection_type(sdkp, buffer) < 0) {
   2314		sdkp->capacity = 0;
   2315		return -ENODEV;
   2316	}
   2317
   2318	/* Logical blocks per physical block exponent */
   2319	sdkp->physical_block_size = (1 << (buffer[13] & 0xf)) * sector_size;
   2320
   2321	/* RC basis */
   2322	sdkp->rc_basis = (buffer[12] >> 4) & 0x3;
   2323
   2324	/* Lowest aligned logical block */
   2325	alignment = ((buffer[14] & 0x3f) << 8 | buffer[15]) * sector_size;
   2326	blk_queue_alignment_offset(sdp->request_queue, alignment);
   2327	if (alignment && sdkp->first_scan)
   2328		sd_printk(KERN_NOTICE, sdkp,
   2329			  "physical block alignment offset: %u\n", alignment);
   2330
   2331	if (buffer[14] & 0x80) { /* LBPME */
   2332		sdkp->lbpme = 1;
   2333
   2334		if (buffer[14] & 0x40) /* LBPRZ */
   2335			sdkp->lbprz = 1;
   2336
   2337		sd_config_discard(sdkp, SD_LBP_WS16);
   2338	}
   2339
   2340	sdkp->capacity = lba + 1;
   2341	return sector_size;
   2342}
   2343
   2344static int read_capacity_10(struct scsi_disk *sdkp, struct scsi_device *sdp,
   2345						unsigned char *buffer)
   2346{
   2347	unsigned char cmd[16];
   2348	struct scsi_sense_hdr sshdr;
   2349	int sense_valid = 0;
   2350	int the_result;
   2351	int retries = 3, reset_retries = READ_CAPACITY_RETRIES_ON_RESET;
   2352	sector_t lba;
   2353	unsigned sector_size;
   2354
   2355	do {
   2356		cmd[0] = READ_CAPACITY;
   2357		memset(&cmd[1], 0, 9);
   2358		memset(buffer, 0, 8);
   2359
   2360		the_result = scsi_execute_req(sdp, cmd, DMA_FROM_DEVICE,
   2361					buffer, 8, &sshdr,
   2362					SD_TIMEOUT, sdkp->max_retries, NULL);
   2363
   2364		if (media_not_present(sdkp, &sshdr))
   2365			return -ENODEV;
   2366
   2367		if (the_result > 0) {
   2368			sense_valid = scsi_sense_valid(&sshdr);
   2369			if (sense_valid &&
   2370			    sshdr.sense_key == UNIT_ATTENTION &&
   2371			    sshdr.asc == 0x29 && sshdr.ascq == 0x00)
   2372				/* Device reset might occur several times,
   2373				 * give it one more chance */
   2374				if (--reset_retries > 0)
   2375					continue;
   2376		}
   2377		retries--;
   2378
   2379	} while (the_result && retries);
   2380
   2381	if (the_result) {
   2382		sd_print_result(sdkp, "Read Capacity(10) failed", the_result);
   2383		read_capacity_error(sdkp, sdp, &sshdr, sense_valid, the_result);
   2384		return -EINVAL;
   2385	}
   2386
   2387	sector_size = get_unaligned_be32(&buffer[4]);
   2388	lba = get_unaligned_be32(&buffer[0]);
   2389
   2390	if (sdp->no_read_capacity_16 && (lba == 0xffffffff)) {
   2391		/* Some buggy (usb cardreader) devices return an lba of
   2392		   0xffffffff when the want to report a size of 0 (with
   2393		   which they really mean no media is present) */
   2394		sdkp->capacity = 0;
   2395		sdkp->physical_block_size = sector_size;
   2396		return sector_size;
   2397	}
   2398
   2399	sdkp->capacity = lba + 1;
   2400	sdkp->physical_block_size = sector_size;
   2401	return sector_size;
   2402}
   2403
   2404static int sd_try_rc16_first(struct scsi_device *sdp)
   2405{
   2406	if (sdp->host->max_cmd_len < 16)
   2407		return 0;
   2408	if (sdp->try_rc_10_first)
   2409		return 0;
   2410	if (sdp->scsi_level > SCSI_SPC_2)
   2411		return 1;
   2412	if (scsi_device_protection(sdp))
   2413		return 1;
   2414	return 0;
   2415}
   2416
   2417/*
   2418 * read disk capacity
   2419 */
   2420static void
   2421sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer)
   2422{
   2423	int sector_size;
   2424	struct scsi_device *sdp = sdkp->device;
   2425
   2426	if (sd_try_rc16_first(sdp)) {
   2427		sector_size = read_capacity_16(sdkp, sdp, buffer);
   2428		if (sector_size == -EOVERFLOW)
   2429			goto got_data;
   2430		if (sector_size == -ENODEV)
   2431			return;
   2432		if (sector_size < 0)
   2433			sector_size = read_capacity_10(sdkp, sdp, buffer);
   2434		if (sector_size < 0)
   2435			return;
   2436	} else {
   2437		sector_size = read_capacity_10(sdkp, sdp, buffer);
   2438		if (sector_size == -EOVERFLOW)
   2439			goto got_data;
   2440		if (sector_size < 0)
   2441			return;
   2442		if ((sizeof(sdkp->capacity) > 4) &&
   2443		    (sdkp->capacity > 0xffffffffULL)) {
   2444			int old_sector_size = sector_size;
   2445			sd_printk(KERN_NOTICE, sdkp, "Very big device. "
   2446					"Trying to use READ CAPACITY(16).\n");
   2447			sector_size = read_capacity_16(sdkp, sdp, buffer);
   2448			if (sector_size < 0) {
   2449				sd_printk(KERN_NOTICE, sdkp,
   2450					"Using 0xffffffff as device size\n");
   2451				sdkp->capacity = 1 + (sector_t) 0xffffffff;
   2452				sector_size = old_sector_size;
   2453				goto got_data;
   2454			}
   2455			/* Remember that READ CAPACITY(16) succeeded */
   2456			sdp->try_rc_10_first = 0;
   2457		}
   2458	}
   2459
   2460	/* Some devices are known to return the total number of blocks,
   2461	 * not the highest block number.  Some devices have versions
   2462	 * which do this and others which do not.  Some devices we might
   2463	 * suspect of doing this but we don't know for certain.
   2464	 *
   2465	 * If we know the reported capacity is wrong, decrement it.  If
   2466	 * we can only guess, then assume the number of blocks is even
   2467	 * (usually true but not always) and err on the side of lowering
   2468	 * the capacity.
   2469	 */
   2470	if (sdp->fix_capacity ||
   2471	    (sdp->guess_capacity && (sdkp->capacity & 0x01))) {
   2472		sd_printk(KERN_INFO, sdkp, "Adjusting the sector count "
   2473				"from its reported value: %llu\n",
   2474				(unsigned long long) sdkp->capacity);
   2475		--sdkp->capacity;
   2476	}
   2477
   2478got_data:
   2479	if (sector_size == 0) {
   2480		sector_size = 512;
   2481		sd_printk(KERN_NOTICE, sdkp, "Sector size 0 reported, "
   2482			  "assuming 512.\n");
   2483	}
   2484
   2485	if (sector_size != 512 &&
   2486	    sector_size != 1024 &&
   2487	    sector_size != 2048 &&
   2488	    sector_size != 4096) {
   2489		sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n",
   2490			  sector_size);
   2491		/*
   2492		 * The user might want to re-format the drive with
   2493		 * a supported sectorsize.  Once this happens, it
   2494		 * would be relatively trivial to set the thing up.
   2495		 * For this reason, we leave the thing in the table.
   2496		 */
   2497		sdkp->capacity = 0;
   2498		/*
   2499		 * set a bogus sector size so the normal read/write
   2500		 * logic in the block layer will eventually refuse any
   2501		 * request on this device without tripping over power
   2502		 * of two sector size assumptions
   2503		 */
   2504		sector_size = 512;
   2505	}
   2506	blk_queue_logical_block_size(sdp->request_queue, sector_size);
   2507	blk_queue_physical_block_size(sdp->request_queue,
   2508				      sdkp->physical_block_size);
   2509	sdkp->device->sector_size = sector_size;
   2510
   2511	if (sdkp->capacity > 0xffffffff)
   2512		sdp->use_16_for_rw = 1;
   2513
   2514}
   2515
   2516/*
   2517 * Print disk capacity
   2518 */
   2519static void
   2520sd_print_capacity(struct scsi_disk *sdkp,
   2521		  sector_t old_capacity)
   2522{
   2523	int sector_size = sdkp->device->sector_size;
   2524	char cap_str_2[10], cap_str_10[10];
   2525
   2526	if (!sdkp->first_scan && old_capacity == sdkp->capacity)
   2527		return;
   2528
   2529	string_get_size(sdkp->capacity, sector_size,
   2530			STRING_UNITS_2, cap_str_2, sizeof(cap_str_2));
   2531	string_get_size(sdkp->capacity, sector_size,
   2532			STRING_UNITS_10, cap_str_10, sizeof(cap_str_10));
   2533
   2534	sd_printk(KERN_NOTICE, sdkp,
   2535		  "%llu %d-byte logical blocks: (%s/%s)\n",
   2536		  (unsigned long long)sdkp->capacity,
   2537		  sector_size, cap_str_10, cap_str_2);
   2538
   2539	if (sdkp->physical_block_size != sector_size)
   2540		sd_printk(KERN_NOTICE, sdkp,
   2541			  "%u-byte physical blocks\n",
   2542			  sdkp->physical_block_size);
   2543}
   2544
   2545/* called with buffer of length 512 */
   2546static inline int
   2547sd_do_mode_sense(struct scsi_disk *sdkp, int dbd, int modepage,
   2548		 unsigned char *buffer, int len, struct scsi_mode_data *data,
   2549		 struct scsi_sense_hdr *sshdr)
   2550{
   2551	/*
   2552	 * If we must use MODE SENSE(10), make sure that the buffer length
   2553	 * is at least 8 bytes so that the mode sense header fits.
   2554	 */
   2555	if (sdkp->device->use_10_for_ms && len < 8)
   2556		len = 8;
   2557
   2558	return scsi_mode_sense(sdkp->device, dbd, modepage, buffer, len,
   2559			       SD_TIMEOUT, sdkp->max_retries, data,
   2560			       sshdr);
   2561}
   2562
   2563/*
   2564 * read write protect setting, if possible - called only in sd_revalidate_disk()
   2565 * called with buffer of length SD_BUF_SIZE
   2566 */
   2567static void
   2568sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
   2569{
   2570	int res;
   2571	struct scsi_device *sdp = sdkp->device;
   2572	struct scsi_mode_data data;
   2573	int old_wp = sdkp->write_prot;
   2574
   2575	set_disk_ro(sdkp->disk, 0);
   2576	if (sdp->skip_ms_page_3f) {
   2577		sd_first_printk(KERN_NOTICE, sdkp, "Assuming Write Enabled\n");
   2578		return;
   2579	}
   2580
   2581	if (sdp->use_192_bytes_for_3f) {
   2582		res = sd_do_mode_sense(sdkp, 0, 0x3F, buffer, 192, &data, NULL);
   2583	} else {
   2584		/*
   2585		 * First attempt: ask for all pages (0x3F), but only 4 bytes.
   2586		 * We have to start carefully: some devices hang if we ask
   2587		 * for more than is available.
   2588		 */
   2589		res = sd_do_mode_sense(sdkp, 0, 0x3F, buffer, 4, &data, NULL);
   2590
   2591		/*
   2592		 * Second attempt: ask for page 0 When only page 0 is
   2593		 * implemented, a request for page 3F may return Sense Key
   2594		 * 5: Illegal Request, Sense Code 24: Invalid field in
   2595		 * CDB.
   2596		 */
   2597		if (res < 0)
   2598			res = sd_do_mode_sense(sdkp, 0, 0, buffer, 4, &data, NULL);
   2599
   2600		/*
   2601		 * Third attempt: ask 255 bytes, as we did earlier.
   2602		 */
   2603		if (res < 0)
   2604			res = sd_do_mode_sense(sdkp, 0, 0x3F, buffer, 255,
   2605					       &data, NULL);
   2606	}
   2607
   2608	if (res < 0) {
   2609		sd_first_printk(KERN_WARNING, sdkp,
   2610			  "Test WP failed, assume Write Enabled\n");
   2611	} else {
   2612		sdkp->write_prot = ((data.device_specific & 0x80) != 0);
   2613		set_disk_ro(sdkp->disk, sdkp->write_prot);
   2614		if (sdkp->first_scan || old_wp != sdkp->write_prot) {
   2615			sd_printk(KERN_NOTICE, sdkp, "Write Protect is %s\n",
   2616				  sdkp->write_prot ? "on" : "off");
   2617			sd_printk(KERN_DEBUG, sdkp, "Mode Sense: %4ph\n", buffer);
   2618		}
   2619	}
   2620}
   2621
   2622/*
   2623 * sd_read_cache_type - called only from sd_revalidate_disk()
   2624 * called with buffer of length SD_BUF_SIZE
   2625 */
   2626static void
   2627sd_read_cache_type(struct scsi_disk *sdkp, unsigned char *buffer)
   2628{
   2629	int len = 0, res;
   2630	struct scsi_device *sdp = sdkp->device;
   2631
   2632	int dbd;
   2633	int modepage;
   2634	int first_len;
   2635	struct scsi_mode_data data;
   2636	struct scsi_sense_hdr sshdr;
   2637	int old_wce = sdkp->WCE;
   2638	int old_rcd = sdkp->RCD;
   2639	int old_dpofua = sdkp->DPOFUA;
   2640
   2641
   2642	if (sdkp->cache_override)
   2643		return;
   2644
   2645	first_len = 4;
   2646	if (sdp->skip_ms_page_8) {
   2647		if (sdp->type == TYPE_RBC)
   2648			goto defaults;
   2649		else {
   2650			if (sdp->skip_ms_page_3f)
   2651				goto defaults;
   2652			modepage = 0x3F;
   2653			if (sdp->use_192_bytes_for_3f)
   2654				first_len = 192;
   2655			dbd = 0;
   2656		}
   2657	} else if (sdp->type == TYPE_RBC) {
   2658		modepage = 6;
   2659		dbd = 8;
   2660	} else {
   2661		modepage = 8;
   2662		dbd = 0;
   2663	}
   2664
   2665	/* cautiously ask */
   2666	res = sd_do_mode_sense(sdkp, dbd, modepage, buffer, first_len,
   2667			&data, &sshdr);
   2668
   2669	if (res < 0)
   2670		goto bad_sense;
   2671
   2672	if (!data.header_length) {
   2673		modepage = 6;
   2674		first_len = 0;
   2675		sd_first_printk(KERN_ERR, sdkp,
   2676				"Missing header in MODE_SENSE response\n");
   2677	}
   2678
   2679	/* that went OK, now ask for the proper length */
   2680	len = data.length;
   2681
   2682	/*
   2683	 * We're only interested in the first three bytes, actually.
   2684	 * But the data cache page is defined for the first 20.
   2685	 */
   2686	if (len < 3)
   2687		goto bad_sense;
   2688	else if (len > SD_BUF_SIZE) {
   2689		sd_first_printk(KERN_NOTICE, sdkp, "Truncating mode parameter "
   2690			  "data from %d to %d bytes\n", len, SD_BUF_SIZE);
   2691		len = SD_BUF_SIZE;
   2692	}
   2693	if (modepage == 0x3F && sdp->use_192_bytes_for_3f)
   2694		len = 192;
   2695
   2696	/* Get the data */
   2697	if (len > first_len)
   2698		res = sd_do_mode_sense(sdkp, dbd, modepage, buffer, len,
   2699				&data, &sshdr);
   2700
   2701	if (!res) {
   2702		int offset = data.header_length + data.block_descriptor_length;
   2703
   2704		while (offset < len) {
   2705			u8 page_code = buffer[offset] & 0x3F;
   2706			u8 spf       = buffer[offset] & 0x40;
   2707
   2708			if (page_code == 8 || page_code == 6) {
   2709				/* We're interested only in the first 3 bytes.
   2710				 */
   2711				if (len - offset <= 2) {
   2712					sd_first_printk(KERN_ERR, sdkp,
   2713						"Incomplete mode parameter "
   2714							"data\n");
   2715					goto defaults;
   2716				} else {
   2717					modepage = page_code;
   2718					goto Page_found;
   2719				}
   2720			} else {
   2721				/* Go to the next page */
   2722				if (spf && len - offset > 3)
   2723					offset += 4 + (buffer[offset+2] << 8) +
   2724						buffer[offset+3];
   2725				else if (!spf && len - offset > 1)
   2726					offset += 2 + buffer[offset+1];
   2727				else {
   2728					sd_first_printk(KERN_ERR, sdkp,
   2729							"Incomplete mode "
   2730							"parameter data\n");
   2731					goto defaults;
   2732				}
   2733			}
   2734		}
   2735
   2736		sd_first_printk(KERN_WARNING, sdkp,
   2737				"No Caching mode page found\n");
   2738		goto defaults;
   2739
   2740	Page_found:
   2741		if (modepage == 8) {
   2742			sdkp->WCE = ((buffer[offset + 2] & 0x04) != 0);
   2743			sdkp->RCD = ((buffer[offset + 2] & 0x01) != 0);
   2744		} else {
   2745			sdkp->WCE = ((buffer[offset + 2] & 0x01) == 0);
   2746			sdkp->RCD = 0;
   2747		}
   2748
   2749		sdkp->DPOFUA = (data.device_specific & 0x10) != 0;
   2750		if (sdp->broken_fua) {
   2751			sd_first_printk(KERN_NOTICE, sdkp, "Disabling FUA\n");
   2752			sdkp->DPOFUA = 0;
   2753		} else if (sdkp->DPOFUA && !sdkp->device->use_10_for_rw &&
   2754			   !sdkp->device->use_16_for_rw) {
   2755			sd_first_printk(KERN_NOTICE, sdkp,
   2756				  "Uses READ/WRITE(6), disabling FUA\n");
   2757			sdkp->DPOFUA = 0;
   2758		}
   2759
   2760		/* No cache flush allowed for write protected devices */
   2761		if (sdkp->WCE && sdkp->write_prot)
   2762			sdkp->WCE = 0;
   2763
   2764		if (sdkp->first_scan || old_wce != sdkp->WCE ||
   2765		    old_rcd != sdkp->RCD || old_dpofua != sdkp->DPOFUA)
   2766			sd_printk(KERN_NOTICE, sdkp,
   2767				  "Write cache: %s, read cache: %s, %s\n",
   2768				  sdkp->WCE ? "enabled" : "disabled",
   2769				  sdkp->RCD ? "disabled" : "enabled",
   2770				  sdkp->DPOFUA ? "supports DPO and FUA"
   2771				  : "doesn't support DPO or FUA");
   2772
   2773		return;
   2774	}
   2775
   2776bad_sense:
   2777	if (scsi_sense_valid(&sshdr) &&
   2778	    sshdr.sense_key == ILLEGAL_REQUEST &&
   2779	    sshdr.asc == 0x24 && sshdr.ascq == 0x0)
   2780		/* Invalid field in CDB */
   2781		sd_first_printk(KERN_NOTICE, sdkp, "Cache data unavailable\n");
   2782	else
   2783		sd_first_printk(KERN_ERR, sdkp,
   2784				"Asking for cache data failed\n");
   2785
   2786defaults:
   2787	if (sdp->wce_default_on) {
   2788		sd_first_printk(KERN_NOTICE, sdkp,
   2789				"Assuming drive cache: write back\n");
   2790		sdkp->WCE = 1;
   2791	} else {
   2792		sd_first_printk(KERN_WARNING, sdkp,
   2793				"Assuming drive cache: write through\n");
   2794		sdkp->WCE = 0;
   2795	}
   2796	sdkp->RCD = 0;
   2797	sdkp->DPOFUA = 0;
   2798}
   2799
   2800/*
   2801 * The ATO bit indicates whether the DIF application tag is available
   2802 * for use by the operating system.
   2803 */
   2804static void sd_read_app_tag_own(struct scsi_disk *sdkp, unsigned char *buffer)
   2805{
   2806	int res, offset;
   2807	struct scsi_device *sdp = sdkp->device;
   2808	struct scsi_mode_data data;
   2809	struct scsi_sense_hdr sshdr;
   2810
   2811	if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
   2812		return;
   2813
   2814	if (sdkp->protection_type == 0)
   2815		return;
   2816
   2817	res = scsi_mode_sense(sdp, 1, 0x0a, buffer, 36, SD_TIMEOUT,
   2818			      sdkp->max_retries, &data, &sshdr);
   2819
   2820	if (res < 0 || !data.header_length ||
   2821	    data.length < 6) {
   2822		sd_first_printk(KERN_WARNING, sdkp,
   2823			  "getting Control mode page failed, assume no ATO\n");
   2824
   2825		if (scsi_sense_valid(&sshdr))
   2826			sd_print_sense_hdr(sdkp, &sshdr);
   2827
   2828		return;
   2829	}
   2830
   2831	offset = data.header_length + data.block_descriptor_length;
   2832
   2833	if ((buffer[offset] & 0x3f) != 0x0a) {
   2834		sd_first_printk(KERN_ERR, sdkp, "ATO Got wrong page\n");
   2835		return;
   2836	}
   2837
   2838	if ((buffer[offset + 5] & 0x80) == 0)
   2839		return;
   2840
   2841	sdkp->ATO = 1;
   2842
   2843	return;
   2844}
   2845
   2846/**
   2847 * sd_read_block_limits - Query disk device for preferred I/O sizes.
   2848 * @sdkp: disk to query
   2849 */
   2850static void sd_read_block_limits(struct scsi_disk *sdkp)
   2851{
   2852	struct scsi_vpd *vpd;
   2853
   2854	rcu_read_lock();
   2855
   2856	vpd = rcu_dereference(sdkp->device->vpd_pgb0);
   2857	if (!vpd || vpd->len < 16)
   2858		goto out;
   2859
   2860	sdkp->min_xfer_blocks = get_unaligned_be16(&vpd->data[6]);
   2861	sdkp->max_xfer_blocks = get_unaligned_be32(&vpd->data[8]);
   2862	sdkp->opt_xfer_blocks = get_unaligned_be32(&vpd->data[12]);
   2863
   2864	if (vpd->len >= 64) {
   2865		unsigned int lba_count, desc_count;
   2866
   2867		sdkp->max_ws_blocks = (u32)get_unaligned_be64(&vpd->data[36]);
   2868
   2869		if (!sdkp->lbpme)
   2870			goto out;
   2871
   2872		lba_count = get_unaligned_be32(&vpd->data[20]);
   2873		desc_count = get_unaligned_be32(&vpd->data[24]);
   2874
   2875		if (lba_count && desc_count)
   2876			sdkp->max_unmap_blocks = lba_count;
   2877
   2878		sdkp->unmap_granularity = get_unaligned_be32(&vpd->data[28]);
   2879
   2880		if (vpd->data[32] & 0x80)
   2881			sdkp->unmap_alignment =
   2882				get_unaligned_be32(&vpd->data[32]) & ~(1 << 31);
   2883
   2884		if (!sdkp->lbpvpd) { /* LBP VPD page not provided */
   2885
   2886			if (sdkp->max_unmap_blocks)
   2887				sd_config_discard(sdkp, SD_LBP_UNMAP);
   2888			else
   2889				sd_config_discard(sdkp, SD_LBP_WS16);
   2890
   2891		} else {	/* LBP VPD page tells us what to use */
   2892			if (sdkp->lbpu && sdkp->max_unmap_blocks)
   2893				sd_config_discard(sdkp, SD_LBP_UNMAP);
   2894			else if (sdkp->lbpws)
   2895				sd_config_discard(sdkp, SD_LBP_WS16);
   2896			else if (sdkp->lbpws10)
   2897				sd_config_discard(sdkp, SD_LBP_WS10);
   2898			else
   2899				sd_config_discard(sdkp, SD_LBP_DISABLE);
   2900		}
   2901	}
   2902
   2903 out:
   2904	rcu_read_unlock();
   2905}
   2906
   2907/**
   2908 * sd_read_block_characteristics - Query block dev. characteristics
   2909 * @sdkp: disk to query
   2910 */
   2911static void sd_read_block_characteristics(struct scsi_disk *sdkp)
   2912{
   2913	struct request_queue *q = sdkp->disk->queue;
   2914	struct scsi_vpd *vpd;
   2915	u16 rot;
   2916	u8 zoned;
   2917
   2918	rcu_read_lock();
   2919	vpd = rcu_dereference(sdkp->device->vpd_pgb1);
   2920
   2921	if (!vpd || vpd->len < 8) {
   2922		rcu_read_unlock();
   2923	        return;
   2924	}
   2925
   2926	rot = get_unaligned_be16(&vpd->data[4]);
   2927	zoned = (vpd->data[8] >> 4) & 3;
   2928	rcu_read_unlock();
   2929
   2930	if (rot == 1) {
   2931		blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
   2932		blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, q);
   2933	}
   2934
   2935	if (sdkp->device->type == TYPE_ZBC) {
   2936		/* Host-managed */
   2937		blk_queue_set_zoned(sdkp->disk, BLK_ZONED_HM);
   2938	} else {
   2939		sdkp->zoned = zoned;
   2940		if (sdkp->zoned == 1) {
   2941			/* Host-aware */
   2942			blk_queue_set_zoned(sdkp->disk, BLK_ZONED_HA);
   2943		} else {
   2944			/* Regular disk or drive managed disk */
   2945			blk_queue_set_zoned(sdkp->disk, BLK_ZONED_NONE);
   2946		}
   2947	}
   2948
   2949	if (!sdkp->first_scan)
   2950		return;
   2951
   2952	if (blk_queue_is_zoned(q)) {
   2953		sd_printk(KERN_NOTICE, sdkp, "Host-%s zoned block device\n",
   2954		      q->limits.zoned == BLK_ZONED_HM ? "managed" : "aware");
   2955	} else {
   2956		if (sdkp->zoned == 1)
   2957			sd_printk(KERN_NOTICE, sdkp,
   2958				  "Host-aware SMR disk used as regular disk\n");
   2959		else if (sdkp->zoned == 2)
   2960			sd_printk(KERN_NOTICE, sdkp,
   2961				  "Drive-managed SMR disk\n");
   2962	}
   2963}
   2964
   2965/**
   2966 * sd_read_block_provisioning - Query provisioning VPD page
   2967 * @sdkp: disk to query
   2968 */
   2969static void sd_read_block_provisioning(struct scsi_disk *sdkp)
   2970{
   2971	struct scsi_vpd *vpd;
   2972
   2973	if (sdkp->lbpme == 0)
   2974		return;
   2975
   2976	rcu_read_lock();
   2977	vpd = rcu_dereference(sdkp->device->vpd_pgb2);
   2978
   2979	if (!vpd || vpd->len < 8) {
   2980		rcu_read_unlock();
   2981		return;
   2982	}
   2983
   2984	sdkp->lbpvpd	= 1;
   2985	sdkp->lbpu	= (vpd->data[5] >> 7) & 1; /* UNMAP */
   2986	sdkp->lbpws	= (vpd->data[5] >> 6) & 1; /* WRITE SAME(16) w/ UNMAP */
   2987	sdkp->lbpws10	= (vpd->data[5] >> 5) & 1; /* WRITE SAME(10) w/ UNMAP */
   2988	rcu_read_unlock();
   2989}
   2990
   2991static void sd_read_write_same(struct scsi_disk *sdkp, unsigned char *buffer)
   2992{
   2993	struct scsi_device *sdev = sdkp->device;
   2994
   2995	if (sdev->host->no_write_same) {
   2996		sdev->no_write_same = 1;
   2997
   2998		return;
   2999	}
   3000
   3001	if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, INQUIRY) < 0) {
   3002		struct scsi_vpd *vpd;
   3003
   3004		sdev->no_report_opcodes = 1;
   3005
   3006		/* Disable WRITE SAME if REPORT SUPPORTED OPERATION
   3007		 * CODES is unsupported and the device has an ATA
   3008		 * Information VPD page (SAT).
   3009		 */
   3010		rcu_read_lock();
   3011		vpd = rcu_dereference(sdev->vpd_pg89);
   3012		if (vpd)
   3013			sdev->no_write_same = 1;
   3014		rcu_read_unlock();
   3015	}
   3016
   3017	if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, WRITE_SAME_16) == 1)
   3018		sdkp->ws16 = 1;
   3019
   3020	if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, WRITE_SAME) == 1)
   3021		sdkp->ws10 = 1;
   3022}
   3023
   3024static void sd_read_security(struct scsi_disk *sdkp, unsigned char *buffer)
   3025{
   3026	struct scsi_device *sdev = sdkp->device;
   3027
   3028	if (!sdev->security_supported)
   3029		return;
   3030
   3031	if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE,
   3032			SECURITY_PROTOCOL_IN) == 1 &&
   3033	    scsi_report_opcode(sdev, buffer, SD_BUF_SIZE,
   3034			SECURITY_PROTOCOL_OUT) == 1)
   3035		sdkp->security = 1;
   3036}
   3037
   3038static inline sector_t sd64_to_sectors(struct scsi_disk *sdkp, u8 *buf)
   3039{
   3040	return logical_to_sectors(sdkp->device, get_unaligned_be64(buf));
   3041}
   3042
   3043/**
   3044 * sd_read_cpr - Query concurrent positioning ranges
   3045 * @sdkp:	disk to query
   3046 */
   3047static void sd_read_cpr(struct scsi_disk *sdkp)
   3048{
   3049	struct blk_independent_access_ranges *iars = NULL;
   3050	unsigned char *buffer = NULL;
   3051	unsigned int nr_cpr = 0;
   3052	int i, vpd_len, buf_len = SD_BUF_SIZE;
   3053	u8 *desc;
   3054
   3055	/*
   3056	 * We need to have the capacity set first for the block layer to be
   3057	 * able to check the ranges.
   3058	 */
   3059	if (sdkp->first_scan)
   3060		return;
   3061
   3062	if (!sdkp->capacity)
   3063		goto out;
   3064
   3065	/*
   3066	 * Concurrent Positioning Ranges VPD: there can be at most 256 ranges,
   3067	 * leading to a maximum page size of 64 + 256*32 bytes.
   3068	 */
   3069	buf_len = 64 + 256*32;
   3070	buffer = kmalloc(buf_len, GFP_KERNEL);
   3071	if (!buffer || scsi_get_vpd_page(sdkp->device, 0xb9, buffer, buf_len))
   3072		goto out;
   3073
   3074	/* We must have at least a 64B header and one 32B range descriptor */
   3075	vpd_len = get_unaligned_be16(&buffer[2]) + 4;
   3076	if (vpd_len > buf_len || vpd_len < 64 + 32 || (vpd_len & 31)) {
   3077		sd_printk(KERN_ERR, sdkp,
   3078			  "Invalid Concurrent Positioning Ranges VPD page\n");
   3079		goto out;
   3080	}
   3081
   3082	nr_cpr = (vpd_len - 64) / 32;
   3083	if (nr_cpr == 1) {
   3084		nr_cpr = 0;
   3085		goto out;
   3086	}
   3087
   3088	iars = disk_alloc_independent_access_ranges(sdkp->disk, nr_cpr);
   3089	if (!iars) {
   3090		nr_cpr = 0;
   3091		goto out;
   3092	}
   3093
   3094	desc = &buffer[64];
   3095	for (i = 0; i < nr_cpr; i++, desc += 32) {
   3096		if (desc[0] != i) {
   3097			sd_printk(KERN_ERR, sdkp,
   3098				"Invalid Concurrent Positioning Range number\n");
   3099			nr_cpr = 0;
   3100			break;
   3101		}
   3102
   3103		iars->ia_range[i].sector = sd64_to_sectors(sdkp, desc + 8);
   3104		iars->ia_range[i].nr_sectors = sd64_to_sectors(sdkp, desc + 16);
   3105	}
   3106
   3107out:
   3108	disk_set_independent_access_ranges(sdkp->disk, iars);
   3109	if (nr_cpr && sdkp->nr_actuators != nr_cpr) {
   3110		sd_printk(KERN_NOTICE, sdkp,
   3111			  "%u concurrent positioning ranges\n", nr_cpr);
   3112		sdkp->nr_actuators = nr_cpr;
   3113	}
   3114
   3115	kfree(buffer);
   3116}
   3117
   3118static bool sd_validate_min_xfer_size(struct scsi_disk *sdkp)
   3119{
   3120	struct scsi_device *sdp = sdkp->device;
   3121	unsigned int min_xfer_bytes =
   3122		logical_to_bytes(sdp, sdkp->min_xfer_blocks);
   3123
   3124	if (sdkp->min_xfer_blocks == 0)
   3125		return false;
   3126
   3127	if (min_xfer_bytes & (sdkp->physical_block_size - 1)) {
   3128		sd_first_printk(KERN_WARNING, sdkp,
   3129				"Preferred minimum I/O size %u bytes not a " \
   3130				"multiple of physical block size (%u bytes)\n",
   3131				min_xfer_bytes, sdkp->physical_block_size);
   3132		sdkp->min_xfer_blocks = 0;
   3133		return false;
   3134	}
   3135
   3136	sd_first_printk(KERN_INFO, sdkp, "Preferred minimum I/O size %u bytes\n",
   3137			min_xfer_bytes);
   3138	return true;
   3139}
   3140
   3141/*
   3142 * Determine the device's preferred I/O size for reads and writes
   3143 * unless the reported value is unreasonably small, large, not a
   3144 * multiple of the physical block size, or simply garbage.
   3145 */
   3146static bool sd_validate_opt_xfer_size(struct scsi_disk *sdkp,
   3147				      unsigned int dev_max)
   3148{
   3149	struct scsi_device *sdp = sdkp->device;
   3150	unsigned int opt_xfer_bytes =
   3151		logical_to_bytes(sdp, sdkp->opt_xfer_blocks);
   3152	unsigned int min_xfer_bytes =
   3153		logical_to_bytes(sdp, sdkp->min_xfer_blocks);
   3154
   3155	if (sdkp->opt_xfer_blocks == 0)
   3156		return false;
   3157
   3158	if (sdkp->opt_xfer_blocks > dev_max) {
   3159		sd_first_printk(KERN_WARNING, sdkp,
   3160				"Optimal transfer size %u logical blocks " \
   3161				"> dev_max (%u logical blocks)\n",
   3162				sdkp->opt_xfer_blocks, dev_max);
   3163		return false;
   3164	}
   3165
   3166	if (sdkp->opt_xfer_blocks > SD_DEF_XFER_BLOCKS) {
   3167		sd_first_printk(KERN_WARNING, sdkp,
   3168				"Optimal transfer size %u logical blocks " \
   3169				"> sd driver limit (%u logical blocks)\n",
   3170				sdkp->opt_xfer_blocks, SD_DEF_XFER_BLOCKS);
   3171		return false;
   3172	}
   3173
   3174	if (opt_xfer_bytes < PAGE_SIZE) {
   3175		sd_first_printk(KERN_WARNING, sdkp,
   3176				"Optimal transfer size %u bytes < " \
   3177				"PAGE_SIZE (%u bytes)\n",
   3178				opt_xfer_bytes, (unsigned int)PAGE_SIZE);
   3179		return false;
   3180	}
   3181
   3182	if (min_xfer_bytes && opt_xfer_bytes % min_xfer_bytes) {
   3183		sd_first_printk(KERN_WARNING, sdkp,
   3184				"Optimal transfer size %u bytes not a " \
   3185				"multiple of preferred minimum block " \
   3186				"size (%u bytes)\n",
   3187				opt_xfer_bytes, min_xfer_bytes);
   3188		return false;
   3189	}
   3190
   3191	if (opt_xfer_bytes & (sdkp->physical_block_size - 1)) {
   3192		sd_first_printk(KERN_WARNING, sdkp,
   3193				"Optimal transfer size %u bytes not a " \
   3194				"multiple of physical block size (%u bytes)\n",
   3195				opt_xfer_bytes, sdkp->physical_block_size);
   3196		return false;
   3197	}
   3198
   3199	sd_first_printk(KERN_INFO, sdkp, "Optimal transfer size %u bytes\n",
   3200			opt_xfer_bytes);
   3201	return true;
   3202}
   3203
   3204/**
   3205 *	sd_revalidate_disk - called the first time a new disk is seen,
   3206 *	performs disk spin up, read_capacity, etc.
   3207 *	@disk: struct gendisk we care about
   3208 **/
   3209static int sd_revalidate_disk(struct gendisk *disk)
   3210{
   3211	struct scsi_disk *sdkp = scsi_disk(disk);
   3212	struct scsi_device *sdp = sdkp->device;
   3213	struct request_queue *q = sdkp->disk->queue;
   3214	sector_t old_capacity = sdkp->capacity;
   3215	unsigned char *buffer;
   3216	unsigned int dev_max, rw_max;
   3217
   3218	SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp,
   3219				      "sd_revalidate_disk\n"));
   3220
   3221	/*
   3222	 * If the device is offline, don't try and read capacity or any
   3223	 * of the other niceties.
   3224	 */
   3225	if (!scsi_device_online(sdp))
   3226		goto out;
   3227
   3228	buffer = kmalloc(SD_BUF_SIZE, GFP_KERNEL);
   3229	if (!buffer) {
   3230		sd_printk(KERN_WARNING, sdkp, "sd_revalidate_disk: Memory "
   3231			  "allocation failure.\n");
   3232		goto out;
   3233	}
   3234
   3235	sd_spinup_disk(sdkp);
   3236
   3237	/*
   3238	 * Without media there is no reason to ask; moreover, some devices
   3239	 * react badly if we do.
   3240	 */
   3241	if (sdkp->media_present) {
   3242		sd_read_capacity(sdkp, buffer);
   3243
   3244		/*
   3245		 * set the default to rotational.  All non-rotational devices
   3246		 * support the block characteristics VPD page, which will
   3247		 * cause this to be updated correctly and any device which
   3248		 * doesn't support it should be treated as rotational.
   3249		 */
   3250		blk_queue_flag_clear(QUEUE_FLAG_NONROT, q);
   3251		blk_queue_flag_set(QUEUE_FLAG_ADD_RANDOM, q);
   3252
   3253		if (scsi_device_supports_vpd(sdp)) {
   3254			sd_read_block_provisioning(sdkp);
   3255			sd_read_block_limits(sdkp);
   3256			sd_read_block_characteristics(sdkp);
   3257			sd_zbc_read_zones(sdkp, buffer);
   3258			sd_read_cpr(sdkp);
   3259		}
   3260
   3261		sd_print_capacity(sdkp, old_capacity);
   3262
   3263		sd_read_write_protect_flag(sdkp, buffer);
   3264		sd_read_cache_type(sdkp, buffer);
   3265		sd_read_app_tag_own(sdkp, buffer);
   3266		sd_read_write_same(sdkp, buffer);
   3267		sd_read_security(sdkp, buffer);
   3268		sd_config_protection(sdkp);
   3269	}
   3270
   3271	/*
   3272	 * We now have all cache related info, determine how we deal
   3273	 * with flush requests.
   3274	 */
   3275	sd_set_flush_flag(sdkp);
   3276
   3277	/* Initial block count limit based on CDB TRANSFER LENGTH field size. */
   3278	dev_max = sdp->use_16_for_rw ? SD_MAX_XFER_BLOCKS : SD_DEF_XFER_BLOCKS;
   3279
   3280	/* Some devices report a maximum block count for READ/WRITE requests. */
   3281	dev_max = min_not_zero(dev_max, sdkp->max_xfer_blocks);
   3282	q->limits.max_dev_sectors = logical_to_sectors(sdp, dev_max);
   3283
   3284	if (sd_validate_min_xfer_size(sdkp))
   3285		blk_queue_io_min(sdkp->disk->queue,
   3286				 logical_to_bytes(sdp, sdkp->min_xfer_blocks));
   3287	else
   3288		blk_queue_io_min(sdkp->disk->queue, 0);
   3289
   3290	if (sd_validate_opt_xfer_size(sdkp, dev_max)) {
   3291		q->limits.io_opt = logical_to_bytes(sdp, sdkp->opt_xfer_blocks);
   3292		rw_max = logical_to_sectors(sdp, sdkp->opt_xfer_blocks);
   3293	} else {
   3294		q->limits.io_opt = 0;
   3295		rw_max = min_not_zero(logical_to_sectors(sdp, dev_max),
   3296				      (sector_t)BLK_DEF_MAX_SECTORS);
   3297	}
   3298
   3299	/* Do not exceed controller limit */
   3300	rw_max = min(rw_max, queue_max_hw_sectors(q));
   3301
   3302	/*
   3303	 * Only update max_sectors if previously unset or if the current value
   3304	 * exceeds the capabilities of the hardware.
   3305	 */
   3306	if (sdkp->first_scan ||
   3307	    q->limits.max_sectors > q->limits.max_dev_sectors ||
   3308	    q->limits.max_sectors > q->limits.max_hw_sectors)
   3309		q->limits.max_sectors = rw_max;
   3310
   3311	sdkp->first_scan = 0;
   3312
   3313	set_capacity_and_notify(disk, logical_to_sectors(sdp, sdkp->capacity));
   3314	sd_config_write_same(sdkp);
   3315	kfree(buffer);
   3316
   3317	/*
   3318	 * For a zoned drive, revalidating the zones can be done only once
   3319	 * the gendisk capacity is set. So if this fails, set back the gendisk
   3320	 * capacity to 0.
   3321	 */
   3322	if (sd_zbc_revalidate_zones(sdkp))
   3323		set_capacity_and_notify(disk, 0);
   3324
   3325 out:
   3326	return 0;
   3327}
   3328
   3329/**
   3330 *	sd_unlock_native_capacity - unlock native capacity
   3331 *	@disk: struct gendisk to set capacity for
   3332 *
   3333 *	Block layer calls this function if it detects that partitions
   3334 *	on @disk reach beyond the end of the device.  If the SCSI host
   3335 *	implements ->unlock_native_capacity() method, it's invoked to
   3336 *	give it a chance to adjust the device capacity.
   3337 *
   3338 *	CONTEXT:
   3339 *	Defined by block layer.  Might sleep.
   3340 */
   3341static void sd_unlock_native_capacity(struct gendisk *disk)
   3342{
   3343	struct scsi_device *sdev = scsi_disk(disk)->device;
   3344
   3345	if (sdev->host->hostt->unlock_native_capacity)
   3346		sdev->host->hostt->unlock_native_capacity(sdev);
   3347}
   3348
   3349/**
   3350 *	sd_format_disk_name - format disk name
   3351 *	@prefix: name prefix - ie. "sd" for SCSI disks
   3352 *	@index: index of the disk to format name for
   3353 *	@buf: output buffer
   3354 *	@buflen: length of the output buffer
   3355 *
   3356 *	SCSI disk names starts at sda.  The 26th device is sdz and the
   3357 *	27th is sdaa.  The last one for two lettered suffix is sdzz
   3358 *	which is followed by sdaaa.
   3359 *
   3360 *	This is basically 26 base counting with one extra 'nil' entry
   3361 *	at the beginning from the second digit on and can be
   3362 *	determined using similar method as 26 base conversion with the
   3363 *	index shifted -1 after each digit is computed.
   3364 *
   3365 *	CONTEXT:
   3366 *	Don't care.
   3367 *
   3368 *	RETURNS:
   3369 *	0 on success, -errno on failure.
   3370 */
   3371static int sd_format_disk_name(char *prefix, int index, char *buf, int buflen)
   3372{
   3373	const int base = 'z' - 'a' + 1;
   3374	char *begin = buf + strlen(prefix);
   3375	char *end = buf + buflen;
   3376	char *p;
   3377	int unit;
   3378
   3379	p = end - 1;
   3380	*p = '\0';
   3381	unit = base;
   3382	do {
   3383		if (p == begin)
   3384			return -EINVAL;
   3385		*--p = 'a' + (index % unit);
   3386		index = (index / unit) - 1;
   3387	} while (index >= 0);
   3388
   3389	memmove(begin, p, end - p);
   3390	memcpy(buf, prefix, strlen(prefix));
   3391
   3392	return 0;
   3393}
   3394
   3395/**
   3396 *	sd_probe - called during driver initialization and whenever a
   3397 *	new scsi device is attached to the system. It is called once
   3398 *	for each scsi device (not just disks) present.
   3399 *	@dev: pointer to device object
   3400 *
   3401 *	Returns 0 if successful (or not interested in this scsi device 
   3402 *	(e.g. scanner)); 1 when there is an error.
   3403 *
   3404 *	Note: this function is invoked from the scsi mid-level.
   3405 *	This function sets up the mapping between a given 
   3406 *	<host,channel,id,lun> (found in sdp) and new device name 
   3407 *	(e.g. /dev/sda). More precisely it is the block device major 
   3408 *	and minor number that is chosen here.
   3409 *
   3410 *	Assume sd_probe is not re-entrant (for time being)
   3411 *	Also think about sd_probe() and sd_remove() running coincidentally.
   3412 **/
   3413static int sd_probe(struct device *dev)
   3414{
   3415	struct scsi_device *sdp = to_scsi_device(dev);
   3416	struct scsi_disk *sdkp;
   3417	struct gendisk *gd;
   3418	int index;
   3419	int error;
   3420
   3421	scsi_autopm_get_device(sdp);
   3422	error = -ENODEV;
   3423	if (sdp->type != TYPE_DISK &&
   3424	    sdp->type != TYPE_ZBC &&
   3425	    sdp->type != TYPE_MOD &&
   3426	    sdp->type != TYPE_RBC)
   3427		goto out;
   3428
   3429	if (!IS_ENABLED(CONFIG_BLK_DEV_ZONED) && sdp->type == TYPE_ZBC) {
   3430		sdev_printk(KERN_WARNING, sdp,
   3431			    "Unsupported ZBC host-managed device.\n");
   3432		goto out;
   3433	}
   3434
   3435	SCSI_LOG_HLQUEUE(3, sdev_printk(KERN_INFO, sdp,
   3436					"sd_probe\n"));
   3437
   3438	error = -ENOMEM;
   3439	sdkp = kzalloc(sizeof(*sdkp), GFP_KERNEL);
   3440	if (!sdkp)
   3441		goto out;
   3442
   3443	gd = __alloc_disk_node(sdp->request_queue, NUMA_NO_NODE,
   3444			       &sd_bio_compl_lkclass);
   3445	if (!gd)
   3446		goto out_free;
   3447
   3448	index = ida_alloc(&sd_index_ida, GFP_KERNEL);
   3449	if (index < 0) {
   3450		sdev_printk(KERN_WARNING, sdp, "sd_probe: memory exhausted.\n");
   3451		goto out_put;
   3452	}
   3453
   3454	error = sd_format_disk_name("sd", index, gd->disk_name, DISK_NAME_LEN);
   3455	if (error) {
   3456		sdev_printk(KERN_WARNING, sdp, "SCSI disk (sd) name length exceeded.\n");
   3457		goto out_free_index;
   3458	}
   3459
   3460	sdkp->device = sdp;
   3461	sdkp->disk = gd;
   3462	sdkp->index = index;
   3463	sdkp->max_retries = SD_MAX_RETRIES;
   3464	atomic_set(&sdkp->openers, 0);
   3465	atomic_set(&sdkp->device->ioerr_cnt, 0);
   3466
   3467	if (!sdp->request_queue->rq_timeout) {
   3468		if (sdp->type != TYPE_MOD)
   3469			blk_queue_rq_timeout(sdp->request_queue, SD_TIMEOUT);
   3470		else
   3471			blk_queue_rq_timeout(sdp->request_queue,
   3472					     SD_MOD_TIMEOUT);
   3473	}
   3474
   3475	device_initialize(&sdkp->disk_dev);
   3476	sdkp->disk_dev.parent = get_device(dev);
   3477	sdkp->disk_dev.class = &sd_disk_class;
   3478	dev_set_name(&sdkp->disk_dev, "%s", dev_name(dev));
   3479
   3480	error = device_add(&sdkp->disk_dev);
   3481	if (error) {
   3482		put_device(&sdkp->disk_dev);
   3483		goto out;
   3484	}
   3485
   3486	dev_set_drvdata(dev, sdkp);
   3487
   3488	gd->major = sd_major((index & 0xf0) >> 4);
   3489	gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00);
   3490	gd->minors = SD_MINORS;
   3491
   3492	gd->fops = &sd_fops;
   3493	gd->private_data = sdkp;
   3494
   3495	/* defaults, until the device tells us otherwise */
   3496	sdp->sector_size = 512;
   3497	sdkp->capacity = 0;
   3498	sdkp->media_present = 1;
   3499	sdkp->write_prot = 0;
   3500	sdkp->cache_override = 0;
   3501	sdkp->WCE = 0;
   3502	sdkp->RCD = 0;
   3503	sdkp->ATO = 0;
   3504	sdkp->first_scan = 1;
   3505	sdkp->max_medium_access_timeouts = SD_MAX_MEDIUM_TIMEOUTS;
   3506
   3507	sd_revalidate_disk(gd);
   3508
   3509	if (sdp->removable) {
   3510		gd->flags |= GENHD_FL_REMOVABLE;
   3511		gd->events |= DISK_EVENT_MEDIA_CHANGE;
   3512		gd->event_flags = DISK_EVENT_FLAG_POLL | DISK_EVENT_FLAG_UEVENT;
   3513	}
   3514
   3515	blk_pm_runtime_init(sdp->request_queue, dev);
   3516	if (sdp->rpm_autosuspend) {
   3517		pm_runtime_set_autosuspend_delay(dev,
   3518			sdp->host->hostt->rpm_autosuspend_delay);
   3519	}
   3520
   3521	error = device_add_disk(dev, gd, NULL);
   3522	if (error) {
   3523		put_device(&sdkp->disk_dev);
   3524		put_disk(gd);
   3525		goto out;
   3526	}
   3527
   3528	if (sdkp->security) {
   3529		sdkp->opal_dev = init_opal_dev(sdkp, &sd_sec_submit);
   3530		if (sdkp->opal_dev)
   3531			sd_printk(KERN_NOTICE, sdkp, "supports TCG Opal\n");
   3532	}
   3533
   3534	sd_printk(KERN_NOTICE, sdkp, "Attached SCSI %sdisk\n",
   3535		  sdp->removable ? "removable " : "");
   3536	scsi_autopm_put_device(sdp);
   3537
   3538	return 0;
   3539
   3540 out_free_index:
   3541	ida_free(&sd_index_ida, index);
   3542 out_put:
   3543	put_disk(gd);
   3544 out_free:
   3545	kfree(sdkp);
   3546 out:
   3547	scsi_autopm_put_device(sdp);
   3548	return error;
   3549}
   3550
   3551/**
   3552 *	sd_remove - called whenever a scsi disk (previously recognized by
   3553 *	sd_probe) is detached from the system. It is called (potentially
   3554 *	multiple times) during sd module unload.
   3555 *	@dev: pointer to device object
   3556 *
   3557 *	Note: this function is invoked from the scsi mid-level.
   3558 *	This function potentially frees up a device name (e.g. /dev/sdc)
   3559 *	that could be re-used by a subsequent sd_probe().
   3560 *	This function is not called when the built-in sd driver is "exit-ed".
   3561 **/
   3562static int sd_remove(struct device *dev)
   3563{
   3564	struct scsi_disk *sdkp = dev_get_drvdata(dev);
   3565
   3566	scsi_autopm_get_device(sdkp->device);
   3567
   3568	device_del(&sdkp->disk_dev);
   3569	del_gendisk(sdkp->disk);
   3570	sd_shutdown(dev);
   3571
   3572	put_disk(sdkp->disk);
   3573	return 0;
   3574}
   3575
   3576static void scsi_disk_release(struct device *dev)
   3577{
   3578	struct scsi_disk *sdkp = to_scsi_disk(dev);
   3579
   3580	ida_free(&sd_index_ida, sdkp->index);
   3581	sd_zbc_free_zone_info(sdkp);
   3582	put_device(&sdkp->device->sdev_gendev);
   3583	free_opal_dev(sdkp->opal_dev);
   3584
   3585	kfree(sdkp);
   3586}
   3587
   3588static int sd_start_stop_device(struct scsi_disk *sdkp, int start)
   3589{
   3590	unsigned char cmd[6] = { START_STOP };	/* START_VALID */
   3591	struct scsi_sense_hdr sshdr;
   3592	struct scsi_device *sdp = sdkp->device;
   3593	int res;
   3594
   3595	if (start)
   3596		cmd[4] |= 1;	/* START */
   3597
   3598	if (sdp->start_stop_pwr_cond)
   3599		cmd[4] |= start ? 1 << 4 : 3 << 4;	/* Active or Standby */
   3600
   3601	if (!scsi_device_online(sdp))
   3602		return -ENODEV;
   3603
   3604	res = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
   3605			SD_TIMEOUT, sdkp->max_retries, 0, RQF_PM, NULL);
   3606	if (res) {
   3607		sd_print_result(sdkp, "Start/Stop Unit failed", res);
   3608		if (res > 0 && scsi_sense_valid(&sshdr)) {
   3609			sd_print_sense_hdr(sdkp, &sshdr);
   3610			/* 0x3a is medium not present */
   3611			if (sshdr.asc == 0x3a)
   3612				res = 0;
   3613		}
   3614	}
   3615
   3616	/* SCSI error codes must not go to the generic layer */
   3617	if (res)
   3618		return -EIO;
   3619
   3620	return 0;
   3621}
   3622
   3623/*
   3624 * Send a SYNCHRONIZE CACHE instruction down to the device through
   3625 * the normal SCSI command structure.  Wait for the command to
   3626 * complete.
   3627 */
   3628static void sd_shutdown(struct device *dev)
   3629{
   3630	struct scsi_disk *sdkp = dev_get_drvdata(dev);
   3631
   3632	if (!sdkp)
   3633		return;         /* this can happen */
   3634
   3635	if (pm_runtime_suspended(dev))
   3636		return;
   3637
   3638	if (sdkp->WCE && sdkp->media_present) {
   3639		sd_printk(KERN_NOTICE, sdkp, "Synchronizing SCSI cache\n");
   3640		sd_sync_cache(sdkp, NULL);
   3641	}
   3642
   3643	if (system_state != SYSTEM_RESTART && sdkp->device->manage_start_stop) {
   3644		sd_printk(KERN_NOTICE, sdkp, "Stopping disk\n");
   3645		sd_start_stop_device(sdkp, 0);
   3646	}
   3647}
   3648
   3649static int sd_suspend_common(struct device *dev, bool ignore_stop_errors)
   3650{
   3651	struct scsi_disk *sdkp = dev_get_drvdata(dev);
   3652	struct scsi_sense_hdr sshdr;
   3653	int ret = 0;
   3654
   3655	if (!sdkp)	/* E.g.: runtime suspend following sd_remove() */
   3656		return 0;
   3657
   3658	if (sdkp->WCE && sdkp->media_present) {
   3659		if (!sdkp->device->silence_suspend)
   3660			sd_printk(KERN_NOTICE, sdkp, "Synchronizing SCSI cache\n");
   3661		ret = sd_sync_cache(sdkp, &sshdr);
   3662
   3663		if (ret) {
   3664			/* ignore OFFLINE device */
   3665			if (ret == -ENODEV)
   3666				return 0;
   3667
   3668			if (!scsi_sense_valid(&sshdr) ||
   3669			    sshdr.sense_key != ILLEGAL_REQUEST)
   3670				return ret;
   3671
   3672			/*
   3673			 * sshdr.sense_key == ILLEGAL_REQUEST means this drive
   3674			 * doesn't support sync. There's not much to do and
   3675			 * suspend shouldn't fail.
   3676			 */
   3677			ret = 0;
   3678		}
   3679	}
   3680
   3681	if (sdkp->device->manage_start_stop) {
   3682		if (!sdkp->device->silence_suspend)
   3683			sd_printk(KERN_NOTICE, sdkp, "Stopping disk\n");
   3684		/* an error is not worth aborting a system sleep */
   3685		ret = sd_start_stop_device(sdkp, 0);
   3686		if (ignore_stop_errors)
   3687			ret = 0;
   3688	}
   3689
   3690	return ret;
   3691}
   3692
   3693static int sd_suspend_system(struct device *dev)
   3694{
   3695	if (pm_runtime_suspended(dev))
   3696		return 0;
   3697
   3698	return sd_suspend_common(dev, true);
   3699}
   3700
   3701static int sd_suspend_runtime(struct device *dev)
   3702{
   3703	return sd_suspend_common(dev, false);
   3704}
   3705
   3706static int sd_resume(struct device *dev)
   3707{
   3708	struct scsi_disk *sdkp = dev_get_drvdata(dev);
   3709	int ret;
   3710
   3711	if (!sdkp)	/* E.g.: runtime resume at the start of sd_probe() */
   3712		return 0;
   3713
   3714	if (!sdkp->device->manage_start_stop)
   3715		return 0;
   3716
   3717	sd_printk(KERN_NOTICE, sdkp, "Starting disk\n");
   3718	ret = sd_start_stop_device(sdkp, 1);
   3719	if (!ret)
   3720		opal_unlock_from_suspend(sdkp->opal_dev);
   3721	return ret;
   3722}
   3723
   3724static int sd_resume_system(struct device *dev)
   3725{
   3726	if (pm_runtime_suspended(dev))
   3727		return 0;
   3728
   3729	return sd_resume(dev);
   3730}
   3731
   3732static int sd_resume_runtime(struct device *dev)
   3733{
   3734	struct scsi_disk *sdkp = dev_get_drvdata(dev);
   3735	struct scsi_device *sdp;
   3736
   3737	if (!sdkp)	/* E.g.: runtime resume at the start of sd_probe() */
   3738		return 0;
   3739
   3740	sdp = sdkp->device;
   3741
   3742	if (sdp->ignore_media_change) {
   3743		/* clear the device's sense data */
   3744		static const u8 cmd[10] = { REQUEST_SENSE };
   3745
   3746		if (scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL,
   3747				 NULL, sdp->request_queue->rq_timeout, 1, 0,
   3748				 RQF_PM, NULL))
   3749			sd_printk(KERN_NOTICE, sdkp,
   3750				  "Failed to clear sense data\n");
   3751	}
   3752
   3753	return sd_resume(dev);
   3754}
   3755
   3756/**
   3757 *	init_sd - entry point for this driver (both when built in or when
   3758 *	a module).
   3759 *
   3760 *	Note: this function registers this driver with the scsi mid-level.
   3761 **/
   3762static int __init init_sd(void)
   3763{
   3764	int majors = 0, i, err;
   3765
   3766	SCSI_LOG_HLQUEUE(3, printk("init_sd: sd driver entry point\n"));
   3767
   3768	for (i = 0; i < SD_MAJORS; i++) {
   3769		if (__register_blkdev(sd_major(i), "sd", sd_default_probe))
   3770			continue;
   3771		majors++;
   3772	}
   3773
   3774	if (!majors)
   3775		return -ENODEV;
   3776
   3777	err = class_register(&sd_disk_class);
   3778	if (err)
   3779		goto err_out;
   3780
   3781	sd_cdb_cache = kmem_cache_create("sd_ext_cdb", SD_EXT_CDB_SIZE,
   3782					 0, 0, NULL);
   3783	if (!sd_cdb_cache) {
   3784		printk(KERN_ERR "sd: can't init extended cdb cache\n");
   3785		err = -ENOMEM;
   3786		goto err_out_class;
   3787	}
   3788
   3789	sd_page_pool = mempool_create_page_pool(SD_MEMPOOL_SIZE, 0);
   3790	if (!sd_page_pool) {
   3791		printk(KERN_ERR "sd: can't init discard page pool\n");
   3792		err = -ENOMEM;
   3793		goto err_out_cache;
   3794	}
   3795
   3796	err = scsi_register_driver(&sd_template.gendrv);
   3797	if (err)
   3798		goto err_out_driver;
   3799
   3800	return 0;
   3801
   3802err_out_driver:
   3803	mempool_destroy(sd_page_pool);
   3804
   3805err_out_cache:
   3806	kmem_cache_destroy(sd_cdb_cache);
   3807
   3808err_out_class:
   3809	class_unregister(&sd_disk_class);
   3810err_out:
   3811	for (i = 0; i < SD_MAJORS; i++)
   3812		unregister_blkdev(sd_major(i), "sd");
   3813	return err;
   3814}
   3815
   3816/**
   3817 *	exit_sd - exit point for this driver (when it is a module).
   3818 *
   3819 *	Note: this function unregisters this driver from the scsi mid-level.
   3820 **/
   3821static void __exit exit_sd(void)
   3822{
   3823	int i;
   3824
   3825	SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver\n"));
   3826
   3827	scsi_unregister_driver(&sd_template.gendrv);
   3828	mempool_destroy(sd_page_pool);
   3829	kmem_cache_destroy(sd_cdb_cache);
   3830
   3831	class_unregister(&sd_disk_class);
   3832
   3833	for (i = 0; i < SD_MAJORS; i++)
   3834		unregister_blkdev(sd_major(i), "sd");
   3835}
   3836
   3837module_init(init_sd);
   3838module_exit(exit_sd);
   3839
   3840void sd_print_sense_hdr(struct scsi_disk *sdkp, struct scsi_sense_hdr *sshdr)
   3841{
   3842	scsi_print_sense_hdr(sdkp->device,
   3843			     sdkp->disk ? sdkp->disk->disk_name : NULL, sshdr);
   3844}
   3845
   3846void sd_print_result(const struct scsi_disk *sdkp, const char *msg, int result)
   3847{
   3848	const char *hb_string = scsi_hostbyte_string(result);
   3849
   3850	if (hb_string)
   3851		sd_printk(KERN_INFO, sdkp,
   3852			  "%s: Result: hostbyte=%s driverbyte=%s\n", msg,
   3853			  hb_string ? hb_string : "invalid",
   3854			  "DRIVER_OK");
   3855	else
   3856		sd_printk(KERN_INFO, sdkp,
   3857			  "%s: Result: hostbyte=0x%02x driverbyte=%s\n",
   3858			  msg, host_byte(result), "DRIVER_OK");
   3859}