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