1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Portions Copyright (C) 1992 Drew Eckhardt 4 */ 5 #ifndef _LINUX_BLKDEV_H 6 #define _LINUX_BLKDEV_H 7 8 #include <linux/types.h> 9 #include <linux/blk_types.h> 10 #include <linux/device.h> 11 #include <linux/list.h> 12 #include <linux/llist.h> 13 #include <linux/minmax.h> 14 #include <linux/timer.h> 15 #include <linux/workqueue.h> 16 #include <linux/wait.h> 17 #include <linux/bio.h> 18 #include <linux/gfp.h> 19 #include <linux/kdev_t.h> 20 #include <linux/rcupdate.h> 21 #include <linux/percpu-refcount.h> 22 #include <linux/blkzoned.h> 23 #include <linux/sched.h> 24 #include <linux/sbitmap.h> 25 #include <linux/uuid.h> 26 #include <linux/xarray.h> 27 28 struct module; 29 struct request_queue; 30 struct elevator_queue; 31 struct blk_trace; 32 struct request; 33 struct sg_io_hdr; 34 struct blkcg_gq; 35 struct blk_flush_queue; 36 struct kiocb; 37 struct pr_ops; 38 struct rq_qos; 39 struct blk_queue_stats; 40 struct blk_stat_callback; 41 struct blk_crypto_profile; 42 43 extern const struct device_type disk_type; 44 extern const struct device_type part_type; 45 extern struct class block_class; 46 47 /* 48 * Maximum number of blkcg policies allowed to be registered concurrently. 49 * Defined here to simplify include dependency. 50 */ 51 #define BLKCG_MAX_POLS 6 52 53 #define DISK_MAX_PARTS 256 54 #define DISK_NAME_LEN 32 55 56 #define PARTITION_META_INFO_VOLNAMELTH 64 57 /* 58 * Enough for the string representation of any kind of UUID plus NULL. 59 * EFI UUID is 36 characters. MSDOS UUID is 11 characters. 60 */ 61 #define PARTITION_META_INFO_UUIDLTH (UUID_STRING_LEN + 1) 62 63 struct partition_meta_info { 64 char uuid[PARTITION_META_INFO_UUIDLTH]; 65 u8 volname[PARTITION_META_INFO_VOLNAMELTH]; 66 }; 67 68 /** 69 * DOC: genhd capability flags 70 * 71 * ``GENHD_FL_REMOVABLE``: indicates that the block device gives access to 72 * removable media. When set, the device remains present even when media is not 73 * inserted. Shall not be set for devices which are removed entirely when the 74 * media is removed. 75 * 76 * ``GENHD_FL_HIDDEN``: the block device is hidden; it doesn't produce events, 77 * doesn't appear in sysfs, and can't be opened from userspace or using 78 * blkdev_get*. Used for the underlying components of multipath devices. 79 * 80 * ``GENHD_FL_NO_PART``: partition support is disabled. The kernel will not 81 * scan for partitions from add_disk, and users can't add partitions manually. 82 * 83 */ 84 enum { 85 GENHD_FL_REMOVABLE = 1 << 0, 86 GENHD_FL_HIDDEN = 1 << 1, 87 GENHD_FL_NO_PART = 1 << 2, 88 }; 89 90 enum { 91 DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */ 92 DISK_EVENT_EJECT_REQUEST = 1 << 1, /* eject requested */ 93 }; 94 95 enum { 96 /* Poll even if events_poll_msecs is unset */ 97 DISK_EVENT_FLAG_POLL = 1 << 0, 98 /* Forward events to udev */ 99 DISK_EVENT_FLAG_UEVENT = 1 << 1, 100 /* Block event polling when open for exclusive write */ 101 DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE = 1 << 2, 102 }; 103 104 struct disk_events; 105 struct badblocks; 106 107 struct blk_integrity { 108 const struct blk_integrity_profile *profile; 109 unsigned char flags; 110 unsigned char tuple_size; 111 unsigned char interval_exp; 112 unsigned char tag_size; 113 }; 114 115 typedef unsigned int __bitwise blk_mode_t; 116 117 /* open for reading */ 118 #define BLK_OPEN_READ ((__force blk_mode_t)(1 << 0)) 119 /* open for writing */ 120 #define BLK_OPEN_WRITE ((__force blk_mode_t)(1 << 1)) 121 /* open exclusively (vs other exclusive openers */ 122 #define BLK_OPEN_EXCL ((__force blk_mode_t)(1 << 2)) 123 /* opened with O_NDELAY */ 124 #define BLK_OPEN_NDELAY ((__force blk_mode_t)(1 << 3)) 125 /* open for "writes" only for ioctls (specialy hack for floppy.c) */ 126 #define BLK_OPEN_WRITE_IOCTL ((__force blk_mode_t)(1 << 4)) 127 /* open is exclusive wrt all other BLK_OPEN_WRITE opens to the device */ 128 #define BLK_OPEN_RESTRICT_WRITES ((__force blk_mode_t)(1 << 5)) 129 130 struct gendisk { 131 /* 132 * major/first_minor/minors should not be set by any new driver, the 133 * block core will take care of allocating them automatically. 134 */ 135 int major; 136 int first_minor; 137 int minors; 138 139 char disk_name[DISK_NAME_LEN]; /* name of major driver */ 140 141 unsigned short events; /* supported events */ 142 unsigned short event_flags; /* flags related to event processing */ 143 144 struct xarray part_tbl; 145 struct block_device *part0; 146 147 const struct block_device_operations *fops; 148 struct request_queue *queue; 149 void *private_data; 150 151 struct bio_set bio_split; 152 153 int flags; 154 unsigned long state; 155 #define GD_NEED_PART_SCAN 0 156 #define GD_READ_ONLY 1 157 #define GD_DEAD 2 158 #define GD_NATIVE_CAPACITY 3 159 #define GD_ADDED 4 160 #define GD_SUPPRESS_PART_SCAN 5 161 #define GD_OWNS_QUEUE 6 162 163 struct mutex open_mutex; /* open/close mutex */ 164 unsigned open_partitions; /* number of open partitions */ 165 166 struct backing_dev_info *bdi; 167 struct kobject queue_kobj; /* the queue/ directory */ 168 struct kobject *slave_dir; 169 #ifdef CONFIG_BLOCK_HOLDER_DEPRECATED 170 struct list_head slave_bdevs; 171 #endif 172 struct timer_rand_state *random; 173 atomic_t sync_io; /* RAID */ 174 struct disk_events *ev; 175 176 #ifdef CONFIG_BLK_DEV_ZONED 177 /* 178 * Zoned block device information for request dispatch control. 179 * nr_zones is the total number of zones of the device. This is always 180 * 0 for regular block devices. conv_zones_bitmap is a bitmap of nr_zones 181 * bits which indicates if a zone is conventional (bit set) or 182 * sequential (bit clear). seq_zones_wlock is a bitmap of nr_zones 183 * bits which indicates if a zone is write locked, that is, if a write 184 * request targeting the zone was dispatched. 185 * 186 * Reads of this information must be protected with blk_queue_enter() / 187 * blk_queue_exit(). Modifying this information is only allowed while 188 * no requests are being processed. See also blk_mq_freeze_queue() and 189 * blk_mq_unfreeze_queue(). 190 */ 191 unsigned int nr_zones; 192 unsigned int max_open_zones; 193 unsigned int max_active_zones; 194 unsigned long *conv_zones_bitmap; 195 unsigned long *seq_zones_wlock; 196 #endif /* CONFIG_BLK_DEV_ZONED */ 197 198 #if IS_ENABLED(CONFIG_CDROM) 199 struct cdrom_device_info *cdi; 200 #endif 201 int node_id; 202 struct badblocks *bb; 203 struct lockdep_map lockdep_map; 204 u64 diskseq; 205 blk_mode_t open_mode; 206 207 /* 208 * Independent sector access ranges. This is always NULL for 209 * devices that do not have multiple independent access ranges. 210 */ 211 struct blk_independent_access_ranges *ia_ranges; 212 }; 213 214 static inline bool disk_live(struct gendisk *disk) 215 { 216 return !inode_unhashed(disk->part0->bd_inode); 217 } 218 219 /** 220 * disk_openers - returns how many openers are there for a disk 221 * @disk: disk to check 222 * 223 * This returns the number of openers for a disk. Note that this value is only 224 * stable if disk->open_mutex is held. 225 * 226 * Note: Due to a quirk in the block layer open code, each open partition is 227 * only counted once even if there are multiple openers. 228 */ 229 static inline unsigned int disk_openers(struct gendisk *disk) 230 { 231 return atomic_read(&disk->part0->bd_openers); 232 } 233 234 /* 235 * The gendisk is refcounted by the part0 block_device, and the bd_device 236 * therein is also used for device model presentation in sysfs. 237 */ 238 #define dev_to_disk(device) \ 239 (dev_to_bdev(device)->bd_disk) 240 #define disk_to_dev(disk) \ 241 (&((disk)->part0->bd_device)) 242 243 #if IS_REACHABLE(CONFIG_CDROM) 244 #define disk_to_cdi(disk) ((disk)->cdi) 245 #else 246 #define disk_to_cdi(disk) NULL 247 #endif 248 249 static inline dev_t disk_devt(struct gendisk *disk) 250 { 251 return MKDEV(disk->major, disk->first_minor); 252 } 253 254 static inline int blk_validate_block_size(unsigned long bsize) 255 { 256 if (bsize < 512 || bsize > PAGE_SIZE || !is_power_of_2(bsize)) 257 return -EINVAL; 258 259 return 0; 260 } 261 262 static inline bool blk_op_is_passthrough(blk_opf_t op) 263 { 264 op &= REQ_OP_MASK; 265 return op == REQ_OP_DRV_IN || op == REQ_OP_DRV_OUT; 266 } 267 268 /* 269 * BLK_BOUNCE_NONE: never bounce (default) 270 * BLK_BOUNCE_HIGH: bounce all highmem pages 271 */ 272 enum blk_bounce { 273 BLK_BOUNCE_NONE, 274 BLK_BOUNCE_HIGH, 275 }; 276 277 struct queue_limits { 278 enum blk_bounce bounce; 279 unsigned long seg_boundary_mask; 280 unsigned long virt_boundary_mask; 281 282 unsigned int max_hw_sectors; 283 unsigned int max_dev_sectors; 284 unsigned int chunk_sectors; 285 unsigned int max_sectors; 286 unsigned int max_user_sectors; 287 unsigned int max_segment_size; 288 unsigned int physical_block_size; 289 unsigned int logical_block_size; 290 unsigned int alignment_offset; 291 unsigned int io_min; 292 unsigned int io_opt; 293 unsigned int max_discard_sectors; 294 unsigned int max_hw_discard_sectors; 295 unsigned int max_secure_erase_sectors; 296 unsigned int max_write_zeroes_sectors; 297 unsigned int max_zone_append_sectors; 298 unsigned int discard_granularity; 299 unsigned int discard_alignment; 300 unsigned int zone_write_granularity; 301 302 unsigned short max_segments; 303 unsigned short max_integrity_segments; 304 unsigned short max_discard_segments; 305 306 unsigned char misaligned; 307 unsigned char discard_misaligned; 308 unsigned char raid_partial_stripes_expensive; 309 bool zoned; 310 311 /* 312 * Drivers that set dma_alignment to less than 511 must be prepared to 313 * handle individual bvec's that are not a multiple of a SECTOR_SIZE 314 * due to possible offsets. 315 */ 316 unsigned int dma_alignment; 317 }; 318 319 typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx, 320 void *data); 321 322 void disk_set_zoned(struct gendisk *disk); 323 324 #define BLK_ALL_ZONES ((unsigned int)-1) 325 int blkdev_report_zones(struct block_device *bdev, sector_t sector, 326 unsigned int nr_zones, report_zones_cb cb, void *data); 327 int blkdev_zone_mgmt(struct block_device *bdev, enum req_op op, 328 sector_t sectors, sector_t nr_sectors, gfp_t gfp_mask); 329 int blk_revalidate_disk_zones(struct gendisk *disk, 330 void (*update_driver_data)(struct gendisk *disk)); 331 332 /* 333 * Independent access ranges: struct blk_independent_access_range describes 334 * a range of contiguous sectors that can be accessed using device command 335 * execution resources that are independent from the resources used for 336 * other access ranges. This is typically found with single-LUN multi-actuator 337 * HDDs where each access range is served by a different set of heads. 338 * The set of independent ranges supported by the device is defined using 339 * struct blk_independent_access_ranges. The independent ranges must not overlap 340 * and must include all sectors within the disk capacity (no sector holes 341 * allowed). 342 * For a device with multiple ranges, requests targeting sectors in different 343 * ranges can be executed in parallel. A request can straddle an access range 344 * boundary. 345 */ 346 struct blk_independent_access_range { 347 struct kobject kobj; 348 sector_t sector; 349 sector_t nr_sectors; 350 }; 351 352 struct blk_independent_access_ranges { 353 struct kobject kobj; 354 bool sysfs_registered; 355 unsigned int nr_ia_ranges; 356 struct blk_independent_access_range ia_range[]; 357 }; 358 359 struct request_queue { 360 /* 361 * The queue owner gets to use this for whatever they like. 362 * ll_rw_blk doesn't touch it. 363 */ 364 void *queuedata; 365 366 struct elevator_queue *elevator; 367 368 const struct blk_mq_ops *mq_ops; 369 370 /* sw queues */ 371 struct blk_mq_ctx __percpu *queue_ctx; 372 373 /* 374 * various queue flags, see QUEUE_* below 375 */ 376 unsigned long queue_flags; 377 378 unsigned int rq_timeout; 379 380 unsigned int queue_depth; 381 382 refcount_t refs; 383 384 /* hw dispatch queues */ 385 unsigned int nr_hw_queues; 386 struct xarray hctx_table; 387 388 struct percpu_ref q_usage_counter; 389 390 struct request *last_merge; 391 392 spinlock_t queue_lock; 393 394 int quiesce_depth; 395 396 struct gendisk *disk; 397 398 /* 399 * mq queue kobject 400 */ 401 struct kobject *mq_kobj; 402 403 struct queue_limits limits; 404 405 #ifdef CONFIG_BLK_DEV_INTEGRITY 406 struct blk_integrity integrity; 407 #endif /* CONFIG_BLK_DEV_INTEGRITY */ 408 409 #ifdef CONFIG_PM 410 struct device *dev; 411 enum rpm_status rpm_status; 412 #endif 413 414 /* 415 * Number of contexts that have called blk_set_pm_only(). If this 416 * counter is above zero then only RQF_PM requests are processed. 417 */ 418 atomic_t pm_only; 419 420 struct blk_queue_stats *stats; 421 struct rq_qos *rq_qos; 422 struct mutex rq_qos_mutex; 423 424 /* 425 * ida allocated id for this queue. Used to index queues from 426 * ioctx. 427 */ 428 int id; 429 430 unsigned int dma_pad_mask; 431 432 /* 433 * queue settings 434 */ 435 unsigned long nr_requests; /* Max # of requests */ 436 437 #ifdef CONFIG_BLK_INLINE_ENCRYPTION 438 struct blk_crypto_profile *crypto_profile; 439 struct kobject *crypto_kobject; 440 #endif 441 442 struct timer_list timeout; 443 struct work_struct timeout_work; 444 445 atomic_t nr_active_requests_shared_tags; 446 447 unsigned int required_elevator_features; 448 449 struct blk_mq_tags *sched_shared_tags; 450 451 struct list_head icq_list; 452 #ifdef CONFIG_BLK_CGROUP 453 DECLARE_BITMAP (blkcg_pols, BLKCG_MAX_POLS); 454 struct blkcg_gq *root_blkg; 455 struct list_head blkg_list; 456 struct mutex blkcg_mutex; 457 #endif 458 459 int node; 460 461 spinlock_t requeue_lock; 462 struct list_head requeue_list; 463 struct delayed_work requeue_work; 464 465 #ifdef CONFIG_BLK_DEV_IO_TRACE 466 struct blk_trace __rcu *blk_trace; 467 #endif 468 /* 469 * for flush operations 470 */ 471 struct blk_flush_queue *fq; 472 struct list_head flush_list; 473 474 struct mutex sysfs_lock; 475 struct mutex sysfs_dir_lock; 476 477 /* 478 * for reusing dead hctx instance in case of updating 479 * nr_hw_queues 480 */ 481 struct list_head unused_hctx_list; 482 spinlock_t unused_hctx_lock; 483 484 int mq_freeze_depth; 485 486 #ifdef CONFIG_BLK_DEV_THROTTLING 487 /* Throttle data */ 488 struct throtl_data *td; 489 #endif 490 struct rcu_head rcu_head; 491 wait_queue_head_t mq_freeze_wq; 492 /* 493 * Protect concurrent access to q_usage_counter by 494 * percpu_ref_kill() and percpu_ref_reinit(). 495 */ 496 struct mutex mq_freeze_lock; 497 498 struct blk_mq_tag_set *tag_set; 499 struct list_head tag_set_list; 500 501 struct dentry *debugfs_dir; 502 struct dentry *sched_debugfs_dir; 503 struct dentry *rqos_debugfs_dir; 504 /* 505 * Serializes all debugfs metadata operations using the above dentries. 506 */ 507 struct mutex debugfs_mutex; 508 509 bool mq_sysfs_init_done; 510 }; 511 512 /* Keep blk_queue_flag_name[] in sync with the definitions below */ 513 #define QUEUE_FLAG_STOPPED 0 /* queue is stopped */ 514 #define QUEUE_FLAG_DYING 1 /* queue being torn down */ 515 #define QUEUE_FLAG_NOMERGES 3 /* disable merge attempts */ 516 #define QUEUE_FLAG_SAME_COMP 4 /* complete on same CPU-group */ 517 #define QUEUE_FLAG_FAIL_IO 5 /* fake timeout */ 518 #define QUEUE_FLAG_NONROT 6 /* non-rotational device (SSD) */ 519 #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ 520 #define QUEUE_FLAG_IO_STAT 7 /* do disk/partitions IO accounting */ 521 #define QUEUE_FLAG_NOXMERGES 9 /* No extended merges */ 522 #define QUEUE_FLAG_ADD_RANDOM 10 /* Contributes to random pool */ 523 #define QUEUE_FLAG_SYNCHRONOUS 11 /* always completes in submit context */ 524 #define QUEUE_FLAG_SAME_FORCE 12 /* force complete on same CPU */ 525 #define QUEUE_FLAG_HW_WC 13 /* Write back caching supported */ 526 #define QUEUE_FLAG_INIT_DONE 14 /* queue is initialized */ 527 #define QUEUE_FLAG_STABLE_WRITES 15 /* don't modify blks until WB is done */ 528 #define QUEUE_FLAG_POLL 16 /* IO polling enabled if set */ 529 #define QUEUE_FLAG_WC 17 /* Write back caching */ 530 #define QUEUE_FLAG_FUA 18 /* device supports FUA writes */ 531 #define QUEUE_FLAG_DAX 19 /* device supports DAX */ 532 #define QUEUE_FLAG_STATS 20 /* track IO start and completion times */ 533 #define QUEUE_FLAG_REGISTERED 22 /* queue has been registered to a disk */ 534 #define QUEUE_FLAG_QUIESCED 24 /* queue has been quiesced */ 535 #define QUEUE_FLAG_PCI_P2PDMA 25 /* device supports PCI p2p requests */ 536 #define QUEUE_FLAG_ZONE_RESETALL 26 /* supports Zone Reset All */ 537 #define QUEUE_FLAG_RQ_ALLOC_TIME 27 /* record rq->alloc_time_ns */ 538 #define QUEUE_FLAG_HCTX_ACTIVE 28 /* at least one blk-mq hctx is active */ 539 #define QUEUE_FLAG_NOWAIT 29 /* device supports NOWAIT */ 540 #define QUEUE_FLAG_SQ_SCHED 30 /* single queue style io dispatch */ 541 #define QUEUE_FLAG_SKIP_TAGSET_QUIESCE 31 /* quiesce_tagset skip the queue*/ 542 543 #define QUEUE_FLAG_MQ_DEFAULT ((1UL << QUEUE_FLAG_IO_STAT) | \ 544 (1UL << QUEUE_FLAG_SAME_COMP) | \ 545 (1UL << QUEUE_FLAG_NOWAIT)) 546 547 void blk_queue_flag_set(unsigned int flag, struct request_queue *q); 548 void blk_queue_flag_clear(unsigned int flag, struct request_queue *q); 549 bool blk_queue_flag_test_and_set(unsigned int flag, struct request_queue *q); 550 551 #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) 552 #define blk_queue_dying(q) test_bit(QUEUE_FLAG_DYING, &(q)->queue_flags) 553 #define blk_queue_init_done(q) test_bit(QUEUE_FLAG_INIT_DONE, &(q)->queue_flags) 554 #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) 555 #define blk_queue_noxmerges(q) \ 556 test_bit(QUEUE_FLAG_NOXMERGES, &(q)->queue_flags) 557 #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags) 558 #define blk_queue_stable_writes(q) \ 559 test_bit(QUEUE_FLAG_STABLE_WRITES, &(q)->queue_flags) 560 #define blk_queue_io_stat(q) test_bit(QUEUE_FLAG_IO_STAT, &(q)->queue_flags) 561 #define blk_queue_add_random(q) test_bit(QUEUE_FLAG_ADD_RANDOM, &(q)->queue_flags) 562 #define blk_queue_zone_resetall(q) \ 563 test_bit(QUEUE_FLAG_ZONE_RESETALL, &(q)->queue_flags) 564 #define blk_queue_dax(q) test_bit(QUEUE_FLAG_DAX, &(q)->queue_flags) 565 #define blk_queue_pci_p2pdma(q) \ 566 test_bit(QUEUE_FLAG_PCI_P2PDMA, &(q)->queue_flags) 567 #ifdef CONFIG_BLK_RQ_ALLOC_TIME 568 #define blk_queue_rq_alloc_time(q) \ 569 test_bit(QUEUE_FLAG_RQ_ALLOC_TIME, &(q)->queue_flags) 570 #else 571 #define blk_queue_rq_alloc_time(q) false 572 #endif 573 574 #define blk_noretry_request(rq) \ 575 ((rq)->cmd_flags & (REQ_FAILFAST_DEV|REQ_FAILFAST_TRANSPORT| \ 576 REQ_FAILFAST_DRIVER)) 577 #define blk_queue_quiesced(q) test_bit(QUEUE_FLAG_QUIESCED, &(q)->queue_flags) 578 #define blk_queue_pm_only(q) atomic_read(&(q)->pm_only) 579 #define blk_queue_registered(q) test_bit(QUEUE_FLAG_REGISTERED, &(q)->queue_flags) 580 #define blk_queue_sq_sched(q) test_bit(QUEUE_FLAG_SQ_SCHED, &(q)->queue_flags) 581 #define blk_queue_skip_tagset_quiesce(q) \ 582 test_bit(QUEUE_FLAG_SKIP_TAGSET_QUIESCE, &(q)->queue_flags) 583 584 extern void blk_set_pm_only(struct request_queue *q); 585 extern void blk_clear_pm_only(struct request_queue *q); 586 587 #define list_entry_rq(ptr) list_entry((ptr), struct request, queuelist) 588 589 #define dma_map_bvec(dev, bv, dir, attrs) \ 590 dma_map_page_attrs(dev, (bv)->bv_page, (bv)->bv_offset, (bv)->bv_len, \ 591 (dir), (attrs)) 592 593 static inline bool queue_is_mq(struct request_queue *q) 594 { 595 return q->mq_ops; 596 } 597 598 #ifdef CONFIG_PM 599 static inline enum rpm_status queue_rpm_status(struct request_queue *q) 600 { 601 return q->rpm_status; 602 } 603 #else 604 static inline enum rpm_status queue_rpm_status(struct request_queue *q) 605 { 606 return RPM_ACTIVE; 607 } 608 #endif 609 610 static inline bool blk_queue_is_zoned(struct request_queue *q) 611 { 612 return IS_ENABLED(CONFIG_BLK_DEV_ZONED) && q->limits.zoned; 613 } 614 615 #ifdef CONFIG_BLK_DEV_ZONED 616 unsigned int bdev_nr_zones(struct block_device *bdev); 617 618 static inline unsigned int disk_nr_zones(struct gendisk *disk) 619 { 620 return blk_queue_is_zoned(disk->queue) ? disk->nr_zones : 0; 621 } 622 623 static inline unsigned int disk_zone_no(struct gendisk *disk, sector_t sector) 624 { 625 if (!blk_queue_is_zoned(disk->queue)) 626 return 0; 627 return sector >> ilog2(disk->queue->limits.chunk_sectors); 628 } 629 630 static inline bool disk_zone_is_seq(struct gendisk *disk, sector_t sector) 631 { 632 if (!blk_queue_is_zoned(disk->queue)) 633 return false; 634 if (!disk->conv_zones_bitmap) 635 return true; 636 return !test_bit(disk_zone_no(disk, sector), disk->conv_zones_bitmap); 637 } 638 639 static inline void disk_set_max_open_zones(struct gendisk *disk, 640 unsigned int max_open_zones) 641 { 642 disk->max_open_zones = max_open_zones; 643 } 644 645 static inline void disk_set_max_active_zones(struct gendisk *disk, 646 unsigned int max_active_zones) 647 { 648 disk->max_active_zones = max_active_zones; 649 } 650 651 static inline unsigned int bdev_max_open_zones(struct block_device *bdev) 652 { 653 return bdev->bd_disk->max_open_zones; 654 } 655 656 static inline unsigned int bdev_max_active_zones(struct block_device *bdev) 657 { 658 return bdev->bd_disk->max_active_zones; 659 } 660 661 #else /* CONFIG_BLK_DEV_ZONED */ 662 static inline unsigned int bdev_nr_zones(struct block_device *bdev) 663 { 664 return 0; 665 } 666 667 static inline unsigned int disk_nr_zones(struct gendisk *disk) 668 { 669 return 0; 670 } 671 static inline bool disk_zone_is_seq(struct gendisk *disk, sector_t sector) 672 { 673 return false; 674 } 675 static inline unsigned int disk_zone_no(struct gendisk *disk, sector_t sector) 676 { 677 return 0; 678 } 679 static inline unsigned int bdev_max_open_zones(struct block_device *bdev) 680 { 681 return 0; 682 } 683 684 static inline unsigned int bdev_max_active_zones(struct block_device *bdev) 685 { 686 return 0; 687 } 688 #endif /* CONFIG_BLK_DEV_ZONED */ 689 690 static inline unsigned int blk_queue_depth(struct request_queue *q) 691 { 692 if (q->queue_depth) 693 return q->queue_depth; 694 695 return q->nr_requests; 696 } 697 698 /* 699 * default timeout for SG_IO if none specified 700 */ 701 #define BLK_DEFAULT_SG_TIMEOUT (60 * HZ) 702 #define BLK_MIN_SG_TIMEOUT (7 * HZ) 703 704 /* This should not be used directly - use rq_for_each_segment */ 705 #define for_each_bio(_bio) \ 706 for (; _bio; _bio = _bio->bi_next) 707 708 int __must_check device_add_disk(struct device *parent, struct gendisk *disk, 709 const struct attribute_group **groups); 710 static inline int __must_check add_disk(struct gendisk *disk) 711 { 712 return device_add_disk(NULL, disk, NULL); 713 } 714 void del_gendisk(struct gendisk *gp); 715 void invalidate_disk(struct gendisk *disk); 716 void set_disk_ro(struct gendisk *disk, bool read_only); 717 void disk_uevent(struct gendisk *disk, enum kobject_action action); 718 719 static inline int get_disk_ro(struct gendisk *disk) 720 { 721 return disk->part0->bd_read_only || 722 test_bit(GD_READ_ONLY, &disk->state); 723 } 724 725 static inline int bdev_read_only(struct block_device *bdev) 726 { 727 return bdev->bd_read_only || get_disk_ro(bdev->bd_disk); 728 } 729 730 bool set_capacity_and_notify(struct gendisk *disk, sector_t size); 731 void disk_force_media_change(struct gendisk *disk); 732 void bdev_mark_dead(struct block_device *bdev, bool surprise); 733 734 void add_disk_randomness(struct gendisk *disk) __latent_entropy; 735 void rand_initialize_disk(struct gendisk *disk); 736 737 static inline sector_t get_start_sect(struct block_device *bdev) 738 { 739 return bdev->bd_start_sect; 740 } 741 742 static inline sector_t bdev_nr_sectors(struct block_device *bdev) 743 { 744 return bdev->bd_nr_sectors; 745 } 746 747 static inline loff_t bdev_nr_bytes(struct block_device *bdev) 748 { 749 return (loff_t)bdev_nr_sectors(bdev) << SECTOR_SHIFT; 750 } 751 752 static inline sector_t get_capacity(struct gendisk *disk) 753 { 754 return bdev_nr_sectors(disk->part0); 755 } 756 757 static inline u64 sb_bdev_nr_blocks(struct super_block *sb) 758 { 759 return bdev_nr_sectors(sb->s_bdev) >> 760 (sb->s_blocksize_bits - SECTOR_SHIFT); 761 } 762 763 int bdev_disk_changed(struct gendisk *disk, bool invalidate); 764 765 void put_disk(struct gendisk *disk); 766 struct gendisk *__blk_alloc_disk(int node, struct lock_class_key *lkclass); 767 768 /** 769 * blk_alloc_disk - allocate a gendisk structure 770 * @node_id: numa node to allocate on 771 * 772 * Allocate and pre-initialize a gendisk structure for use with BIO based 773 * drivers. 774 * 775 * Context: can sleep 776 */ 777 #define blk_alloc_disk(node_id) \ 778 ({ \ 779 static struct lock_class_key __key; \ 780 \ 781 __blk_alloc_disk(node_id, &__key); \ 782 }) 783 784 int __register_blkdev(unsigned int major, const char *name, 785 void (*probe)(dev_t devt)); 786 #define register_blkdev(major, name) \ 787 __register_blkdev(major, name, NULL) 788 void unregister_blkdev(unsigned int major, const char *name); 789 790 bool disk_check_media_change(struct gendisk *disk); 791 void set_capacity(struct gendisk *disk, sector_t size); 792 793 #ifdef CONFIG_BLOCK_HOLDER_DEPRECATED 794 int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk); 795 void bd_unlink_disk_holder(struct block_device *bdev, struct gendisk *disk); 796 #else 797 static inline int bd_link_disk_holder(struct block_device *bdev, 798 struct gendisk *disk) 799 { 800 return 0; 801 } 802 static inline void bd_unlink_disk_holder(struct block_device *bdev, 803 struct gendisk *disk) 804 { 805 } 806 #endif /* CONFIG_BLOCK_HOLDER_DEPRECATED */ 807 808 dev_t part_devt(struct gendisk *disk, u8 partno); 809 void inc_diskseq(struct gendisk *disk); 810 void blk_request_module(dev_t devt); 811 812 extern int blk_register_queue(struct gendisk *disk); 813 extern void blk_unregister_queue(struct gendisk *disk); 814 void submit_bio_noacct(struct bio *bio); 815 struct bio *bio_split_to_limits(struct bio *bio); 816 817 extern int blk_lld_busy(struct request_queue *q); 818 extern int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags); 819 extern void blk_queue_exit(struct request_queue *q); 820 extern void blk_sync_queue(struct request_queue *q); 821 822 /* Helper to convert REQ_OP_XXX to its string format XXX */ 823 extern const char *blk_op_str(enum req_op op); 824 825 int blk_status_to_errno(blk_status_t status); 826 blk_status_t errno_to_blk_status(int errno); 827 const char *blk_status_to_str(blk_status_t status); 828 829 /* only poll the hardware once, don't continue until a completion was found */ 830 #define BLK_POLL_ONESHOT (1 << 0) 831 int bio_poll(struct bio *bio, struct io_comp_batch *iob, unsigned int flags); 832 int iocb_bio_iopoll(struct kiocb *kiocb, struct io_comp_batch *iob, 833 unsigned int flags); 834 835 static inline struct request_queue *bdev_get_queue(struct block_device *bdev) 836 { 837 return bdev->bd_queue; /* this is never NULL */ 838 } 839 840 /* Helper to convert BLK_ZONE_ZONE_XXX to its string format XXX */ 841 const char *blk_zone_cond_str(enum blk_zone_cond zone_cond); 842 843 static inline unsigned int bio_zone_no(struct bio *bio) 844 { 845 return disk_zone_no(bio->bi_bdev->bd_disk, bio->bi_iter.bi_sector); 846 } 847 848 static inline unsigned int bio_zone_is_seq(struct bio *bio) 849 { 850 return disk_zone_is_seq(bio->bi_bdev->bd_disk, bio->bi_iter.bi_sector); 851 } 852 853 /* 854 * Return how much of the chunk is left to be used for I/O at a given offset. 855 */ 856 static inline unsigned int blk_chunk_sectors_left(sector_t offset, 857 unsigned int chunk_sectors) 858 { 859 if (unlikely(!is_power_of_2(chunk_sectors))) 860 return chunk_sectors - sector_div(offset, chunk_sectors); 861 return chunk_sectors - (offset & (chunk_sectors - 1)); 862 } 863 864 /* 865 * Access functions for manipulating queue properties 866 */ 867 void blk_queue_bounce_limit(struct request_queue *q, enum blk_bounce limit); 868 extern void blk_queue_max_hw_sectors(struct request_queue *, unsigned int); 869 extern void blk_queue_chunk_sectors(struct request_queue *, unsigned int); 870 extern void blk_queue_max_segments(struct request_queue *, unsigned short); 871 extern void blk_queue_max_discard_segments(struct request_queue *, 872 unsigned short); 873 void blk_queue_max_secure_erase_sectors(struct request_queue *q, 874 unsigned int max_sectors); 875 extern void blk_queue_max_segment_size(struct request_queue *, unsigned int); 876 extern void blk_queue_max_discard_sectors(struct request_queue *q, 877 unsigned int max_discard_sectors); 878 extern void blk_queue_max_write_zeroes_sectors(struct request_queue *q, 879 unsigned int max_write_same_sectors); 880 extern void blk_queue_logical_block_size(struct request_queue *, unsigned int); 881 extern void blk_queue_max_zone_append_sectors(struct request_queue *q, 882 unsigned int max_zone_append_sectors); 883 extern void blk_queue_physical_block_size(struct request_queue *, unsigned int); 884 void blk_queue_zone_write_granularity(struct request_queue *q, 885 unsigned int size); 886 extern void blk_queue_alignment_offset(struct request_queue *q, 887 unsigned int alignment); 888 void disk_update_readahead(struct gendisk *disk); 889 extern void blk_limits_io_min(struct queue_limits *limits, unsigned int min); 890 extern void blk_queue_io_min(struct request_queue *q, unsigned int min); 891 extern void blk_limits_io_opt(struct queue_limits *limits, unsigned int opt); 892 extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); 893 extern void blk_set_queue_depth(struct request_queue *q, unsigned int depth); 894 extern void blk_set_stacking_limits(struct queue_limits *lim); 895 extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, 896 sector_t offset); 897 extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, 898 sector_t offset); 899 extern void blk_queue_update_dma_pad(struct request_queue *, unsigned int); 900 extern void blk_queue_segment_boundary(struct request_queue *, unsigned long); 901 extern void blk_queue_virt_boundary(struct request_queue *, unsigned long); 902 extern void blk_queue_dma_alignment(struct request_queue *, int); 903 extern void blk_queue_update_dma_alignment(struct request_queue *, int); 904 extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); 905 extern void blk_queue_write_cache(struct request_queue *q, bool enabled, bool fua); 906 907 struct blk_independent_access_ranges * 908 disk_alloc_independent_access_ranges(struct gendisk *disk, int nr_ia_ranges); 909 void disk_set_independent_access_ranges(struct gendisk *disk, 910 struct blk_independent_access_ranges *iars); 911 912 /* 913 * Elevator features for blk_queue_required_elevator_features: 914 */ 915 /* Supports zoned block devices sequential write constraint */ 916 #define ELEVATOR_F_ZBD_SEQ_WRITE (1U << 0) 917 918 extern void blk_queue_required_elevator_features(struct request_queue *q, 919 unsigned int features); 920 extern bool blk_queue_can_use_dma_map_merging(struct request_queue *q, 921 struct device *dev); 922 923 bool __must_check blk_get_queue(struct request_queue *); 924 extern void blk_put_queue(struct request_queue *); 925 926 void blk_mark_disk_dead(struct gendisk *disk); 927 928 #ifdef CONFIG_BLOCK 929 /* 930 * blk_plug permits building a queue of related requests by holding the I/O 931 * fragments for a short period. This allows merging of sequential requests 932 * into single larger request. As the requests are moved from a per-task list to 933 * the device's request_queue in a batch, this results in improved scalability 934 * as the lock contention for request_queue lock is reduced. 935 * 936 * It is ok not to disable preemption when adding the request to the plug list 937 * or when attempting a merge. For details, please see schedule() where 938 * blk_flush_plug() is called. 939 */ 940 struct blk_plug { 941 struct request *mq_list; /* blk-mq requests */ 942 943 /* if ios_left is > 1, we can batch tag/rq allocations */ 944 struct request *cached_rq; 945 unsigned short nr_ios; 946 947 unsigned short rq_count; 948 949 bool multiple_queues; 950 bool has_elevator; 951 952 struct list_head cb_list; /* md requires an unplug callback */ 953 }; 954 955 struct blk_plug_cb; 956 typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool); 957 struct blk_plug_cb { 958 struct list_head list; 959 blk_plug_cb_fn callback; 960 void *data; 961 }; 962 extern struct blk_plug_cb *blk_check_plugged(blk_plug_cb_fn unplug, 963 void *data, int size); 964 extern void blk_start_plug(struct blk_plug *); 965 extern void blk_start_plug_nr_ios(struct blk_plug *, unsigned short); 966 extern void blk_finish_plug(struct blk_plug *); 967 968 void __blk_flush_plug(struct blk_plug *plug, bool from_schedule); 969 static inline void blk_flush_plug(struct blk_plug *plug, bool async) 970 { 971 if (plug) 972 __blk_flush_plug(plug, async); 973 } 974 975 int blkdev_issue_flush(struct block_device *bdev); 976 long nr_blockdev_pages(void); 977 #else /* CONFIG_BLOCK */ 978 struct blk_plug { 979 }; 980 981 static inline void blk_start_plug_nr_ios(struct blk_plug *plug, 982 unsigned short nr_ios) 983 { 984 } 985 986 static inline void blk_start_plug(struct blk_plug *plug) 987 { 988 } 989 990 static inline void blk_finish_plug(struct blk_plug *plug) 991 { 992 } 993 994 static inline void blk_flush_plug(struct blk_plug *plug, bool async) 995 { 996 } 997 998 static inline int blkdev_issue_flush(struct block_device *bdev) 999 { 1000 return 0; 1001 } 1002 1003 static inline long nr_blockdev_pages(void) 1004 { 1005 return 0; 1006 } 1007 #endif /* CONFIG_BLOCK */ 1008 1009 extern void blk_io_schedule(void); 1010 1011 int blkdev_issue_discard(struct block_device *bdev, sector_t sector, 1012 sector_t nr_sects, gfp_t gfp_mask); 1013 int __blkdev_issue_discard(struct block_device *bdev, sector_t sector, 1014 sector_t nr_sects, gfp_t gfp_mask, struct bio **biop); 1015 int blkdev_issue_secure_erase(struct block_device *bdev, sector_t sector, 1016 sector_t nr_sects, gfp_t gfp); 1017 1018 #define BLKDEV_ZERO_NOUNMAP (1 << 0) /* do not free blocks */ 1019 #define BLKDEV_ZERO_NOFALLBACK (1 << 1) /* don't write explicit zeroes */ 1020 1021 extern int __blkdev_issue_zeroout(struct block_device *bdev, sector_t sector, 1022 sector_t nr_sects, gfp_t gfp_mask, struct bio **biop, 1023 unsigned flags); 1024 extern int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector, 1025 sector_t nr_sects, gfp_t gfp_mask, unsigned flags); 1026 1027 static inline int sb_issue_discard(struct super_block *sb, sector_t block, 1028 sector_t nr_blocks, gfp_t gfp_mask, unsigned long flags) 1029 { 1030 return blkdev_issue_discard(sb->s_bdev, 1031 block << (sb->s_blocksize_bits - 1032 SECTOR_SHIFT), 1033 nr_blocks << (sb->s_blocksize_bits - 1034 SECTOR_SHIFT), 1035 gfp_mask); 1036 } 1037 static inline int sb_issue_zeroout(struct super_block *sb, sector_t block, 1038 sector_t nr_blocks, gfp_t gfp_mask) 1039 { 1040 return blkdev_issue_zeroout(sb->s_bdev, 1041 block << (sb->s_blocksize_bits - 1042 SECTOR_SHIFT), 1043 nr_blocks << (sb->s_blocksize_bits - 1044 SECTOR_SHIFT), 1045 gfp_mask, 0); 1046 } 1047 1048 static inline bool bdev_is_partition(struct block_device *bdev) 1049 { 1050 return bdev->bd_partno; 1051 } 1052 1053 enum blk_default_limits { 1054 BLK_MAX_SEGMENTS = 128, 1055 BLK_SAFE_MAX_SECTORS = 255, 1056 BLK_MAX_SEGMENT_SIZE = 65536, 1057 BLK_SEG_BOUNDARY_MASK = 0xFFFFFFFFUL, 1058 }; 1059 1060 /* 1061 * Default upper limit for the software max_sectors limit used for 1062 * regular file system I/O. This can be increased through sysfs. 1063 * 1064 * Not to be confused with the max_hw_sector limit that is entirely 1065 * controlled by the driver, usually based on hardware limits. 1066 */ 1067 #define BLK_DEF_MAX_SECTORS_CAP 2560u 1068 1069 static inline unsigned long queue_segment_boundary(const struct request_queue *q) 1070 { 1071 return q->limits.seg_boundary_mask; 1072 } 1073 1074 static inline unsigned long queue_virt_boundary(const struct request_queue *q) 1075 { 1076 return q->limits.virt_boundary_mask; 1077 } 1078 1079 static inline unsigned int queue_max_sectors(const struct request_queue *q) 1080 { 1081 return q->limits.max_sectors; 1082 } 1083 1084 static inline unsigned int queue_max_bytes(struct request_queue *q) 1085 { 1086 return min_t(unsigned int, queue_max_sectors(q), INT_MAX >> 9) << 9; 1087 } 1088 1089 static inline unsigned int queue_max_hw_sectors(const struct request_queue *q) 1090 { 1091 return q->limits.max_hw_sectors; 1092 } 1093 1094 static inline unsigned short queue_max_segments(const struct request_queue *q) 1095 { 1096 return q->limits.max_segments; 1097 } 1098 1099 static inline unsigned short queue_max_discard_segments(const struct request_queue *q) 1100 { 1101 return q->limits.max_discard_segments; 1102 } 1103 1104 static inline unsigned int queue_max_segment_size(const struct request_queue *q) 1105 { 1106 return q->limits.max_segment_size; 1107 } 1108 1109 static inline unsigned int queue_max_zone_append_sectors(const struct request_queue *q) 1110 { 1111 1112 const struct queue_limits *l = &q->limits; 1113 1114 return min(l->max_zone_append_sectors, l->max_sectors); 1115 } 1116 1117 static inline unsigned int 1118 bdev_max_zone_append_sectors(struct block_device *bdev) 1119 { 1120 return queue_max_zone_append_sectors(bdev_get_queue(bdev)); 1121 } 1122 1123 static inline unsigned int bdev_max_segments(struct block_device *bdev) 1124 { 1125 return queue_max_segments(bdev_get_queue(bdev)); 1126 } 1127 1128 static inline unsigned queue_logical_block_size(const struct request_queue *q) 1129 { 1130 int retval = 512; 1131 1132 if (q && q->limits.logical_block_size) 1133 retval = q->limits.logical_block_size; 1134 1135 return retval; 1136 } 1137 1138 static inline unsigned int bdev_logical_block_size(struct block_device *bdev) 1139 { 1140 return queue_logical_block_size(bdev_get_queue(bdev)); 1141 } 1142 1143 static inline unsigned int queue_physical_block_size(const struct request_queue *q) 1144 { 1145 return q->limits.physical_block_size; 1146 } 1147 1148 static inline unsigned int bdev_physical_block_size(struct block_device *bdev) 1149 { 1150 return queue_physical_block_size(bdev_get_queue(bdev)); 1151 } 1152 1153 static inline unsigned int queue_io_min(const struct request_queue *q) 1154 { 1155 return q->limits.io_min; 1156 } 1157 1158 static inline int bdev_io_min(struct block_device *bdev) 1159 { 1160 return queue_io_min(bdev_get_queue(bdev)); 1161 } 1162 1163 static inline unsigned int queue_io_opt(const struct request_queue *q) 1164 { 1165 return q->limits.io_opt; 1166 } 1167 1168 static inline int bdev_io_opt(struct block_device *bdev) 1169 { 1170 return queue_io_opt(bdev_get_queue(bdev)); 1171 } 1172 1173 static inline unsigned int 1174 queue_zone_write_granularity(const struct request_queue *q) 1175 { 1176 return q->limits.zone_write_granularity; 1177 } 1178 1179 static inline unsigned int 1180 bdev_zone_write_granularity(struct block_device *bdev) 1181 { 1182 return queue_zone_write_granularity(bdev_get_queue(bdev)); 1183 } 1184 1185 int bdev_alignment_offset(struct block_device *bdev); 1186 unsigned int bdev_discard_alignment(struct block_device *bdev); 1187 1188 static inline unsigned int bdev_max_discard_sectors(struct block_device *bdev) 1189 { 1190 return bdev_get_queue(bdev)->limits.max_discard_sectors; 1191 } 1192 1193 static inline unsigned int bdev_discard_granularity(struct block_device *bdev) 1194 { 1195 return bdev_get_queue(bdev)->limits.discard_granularity; 1196 } 1197 1198 static inline unsigned int 1199 bdev_max_secure_erase_sectors(struct block_device *bdev) 1200 { 1201 return bdev_get_queue(bdev)->limits.max_secure_erase_sectors; 1202 } 1203 1204 static inline unsigned int bdev_write_zeroes_sectors(struct block_device *bdev) 1205 { 1206 struct request_queue *q = bdev_get_queue(bdev); 1207 1208 if (q) 1209 return q->limits.max_write_zeroes_sectors; 1210 1211 return 0; 1212 } 1213 1214 static inline bool bdev_nonrot(struct block_device *bdev) 1215 { 1216 return blk_queue_nonrot(bdev_get_queue(bdev)); 1217 } 1218 1219 static inline bool bdev_synchronous(struct block_device *bdev) 1220 { 1221 return test_bit(QUEUE_FLAG_SYNCHRONOUS, 1222 &bdev_get_queue(bdev)->queue_flags); 1223 } 1224 1225 static inline bool bdev_stable_writes(struct block_device *bdev) 1226 { 1227 return test_bit(QUEUE_FLAG_STABLE_WRITES, 1228 &bdev_get_queue(bdev)->queue_flags); 1229 } 1230 1231 static inline bool bdev_write_cache(struct block_device *bdev) 1232 { 1233 return test_bit(QUEUE_FLAG_WC, &bdev_get_queue(bdev)->queue_flags); 1234 } 1235 1236 static inline bool bdev_fua(struct block_device *bdev) 1237 { 1238 return test_bit(QUEUE_FLAG_FUA, &bdev_get_queue(bdev)->queue_flags); 1239 } 1240 1241 static inline bool bdev_nowait(struct block_device *bdev) 1242 { 1243 return test_bit(QUEUE_FLAG_NOWAIT, &bdev_get_queue(bdev)->queue_flags); 1244 } 1245 1246 static inline bool bdev_is_zoned(struct block_device *bdev) 1247 { 1248 return blk_queue_is_zoned(bdev_get_queue(bdev)); 1249 } 1250 1251 static inline unsigned int bdev_zone_no(struct block_device *bdev, sector_t sec) 1252 { 1253 return disk_zone_no(bdev->bd_disk, sec); 1254 } 1255 1256 /* Whether write serialization is required for @op on zoned devices. */ 1257 static inline bool op_needs_zoned_write_locking(enum req_op op) 1258 { 1259 return op == REQ_OP_WRITE || op == REQ_OP_WRITE_ZEROES; 1260 } 1261 1262 static inline bool bdev_op_is_zoned_write(struct block_device *bdev, 1263 enum req_op op) 1264 { 1265 return bdev_is_zoned(bdev) && op_needs_zoned_write_locking(op); 1266 } 1267 1268 static inline sector_t bdev_zone_sectors(struct block_device *bdev) 1269 { 1270 struct request_queue *q = bdev_get_queue(bdev); 1271 1272 if (!blk_queue_is_zoned(q)) 1273 return 0; 1274 return q->limits.chunk_sectors; 1275 } 1276 1277 static inline sector_t bdev_offset_from_zone_start(struct block_device *bdev, 1278 sector_t sector) 1279 { 1280 return sector & (bdev_zone_sectors(bdev) - 1); 1281 } 1282 1283 static inline bool bdev_is_zone_start(struct block_device *bdev, 1284 sector_t sector) 1285 { 1286 return bdev_offset_from_zone_start(bdev, sector) == 0; 1287 } 1288 1289 static inline int queue_dma_alignment(const struct request_queue *q) 1290 { 1291 return q ? q->limits.dma_alignment : 511; 1292 } 1293 1294 static inline unsigned int bdev_dma_alignment(struct block_device *bdev) 1295 { 1296 return queue_dma_alignment(bdev_get_queue(bdev)); 1297 } 1298 1299 static inline bool bdev_iter_is_aligned(struct block_device *bdev, 1300 struct iov_iter *iter) 1301 { 1302 return iov_iter_is_aligned(iter, bdev_dma_alignment(bdev), 1303 bdev_logical_block_size(bdev) - 1); 1304 } 1305 1306 static inline int blk_rq_aligned(struct request_queue *q, unsigned long addr, 1307 unsigned int len) 1308 { 1309 unsigned int alignment = queue_dma_alignment(q) | q->dma_pad_mask; 1310 return !(addr & alignment) && !(len & alignment); 1311 } 1312 1313 /* assumes size > 256 */ 1314 static inline unsigned int blksize_bits(unsigned int size) 1315 { 1316 return order_base_2(size >> SECTOR_SHIFT) + SECTOR_SHIFT; 1317 } 1318 1319 static inline unsigned int block_size(struct block_device *bdev) 1320 { 1321 return 1 << bdev->bd_inode->i_blkbits; 1322 } 1323 1324 int kblockd_schedule_work(struct work_struct *work); 1325 int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay); 1326 1327 #define MODULE_ALIAS_BLOCKDEV(major,minor) \ 1328 MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor)) 1329 #define MODULE_ALIAS_BLOCKDEV_MAJOR(major) \ 1330 MODULE_ALIAS("block-major-" __stringify(major) "-*") 1331 1332 #ifdef CONFIG_BLK_INLINE_ENCRYPTION 1333 1334 bool blk_crypto_register(struct blk_crypto_profile *profile, 1335 struct request_queue *q); 1336 1337 #else /* CONFIG_BLK_INLINE_ENCRYPTION */ 1338 1339 static inline bool blk_crypto_register(struct blk_crypto_profile *profile, 1340 struct request_queue *q) 1341 { 1342 return true; 1343 } 1344 1345 #endif /* CONFIG_BLK_INLINE_ENCRYPTION */ 1346 1347 enum blk_unique_id { 1348 /* these match the Designator Types specified in SPC */ 1349 BLK_UID_T10 = 1, 1350 BLK_UID_EUI64 = 2, 1351 BLK_UID_NAA = 3, 1352 }; 1353 1354 struct block_device_operations { 1355 void (*submit_bio)(struct bio *bio); 1356 int (*poll_bio)(struct bio *bio, struct io_comp_batch *iob, 1357 unsigned int flags); 1358 int (*open)(struct gendisk *disk, blk_mode_t mode); 1359 void (*release)(struct gendisk *disk); 1360 int (*ioctl)(struct block_device *bdev, blk_mode_t mode, 1361 unsigned cmd, unsigned long arg); 1362 int (*compat_ioctl)(struct block_device *bdev, blk_mode_t mode, 1363 unsigned cmd, unsigned long arg); 1364 unsigned int (*check_events) (struct gendisk *disk, 1365 unsigned int clearing); 1366 void (*unlock_native_capacity) (struct gendisk *); 1367 int (*getgeo)(struct block_device *, struct hd_geometry *); 1368 int (*set_read_only)(struct block_device *bdev, bool ro); 1369 void (*free_disk)(struct gendisk *disk); 1370 /* this callback is with swap_lock and sometimes page table lock held */ 1371 void (*swap_slot_free_notify) (struct block_device *, unsigned long); 1372 int (*report_zones)(struct gendisk *, sector_t sector, 1373 unsigned int nr_zones, report_zones_cb cb, void *data); 1374 char *(*devnode)(struct gendisk *disk, umode_t *mode); 1375 /* returns the length of the identifier or a negative errno: */ 1376 int (*get_unique_id)(struct gendisk *disk, u8 id[16], 1377 enum blk_unique_id id_type); 1378 struct module *owner; 1379 const struct pr_ops *pr_ops; 1380 1381 /* 1382 * Special callback for probing GPT entry at a given sector. 1383 * Needed by Android devices, used by GPT scanner and MMC blk 1384 * driver. 1385 */ 1386 int (*alternative_gpt_sector)(struct gendisk *disk, sector_t *sector); 1387 }; 1388 1389 #ifdef CONFIG_COMPAT 1390 extern int blkdev_compat_ptr_ioctl(struct block_device *, blk_mode_t, 1391 unsigned int, unsigned long); 1392 #else 1393 #define blkdev_compat_ptr_ioctl NULL 1394 #endif 1395 1396 static inline void blk_wake_io_task(struct task_struct *waiter) 1397 { 1398 /* 1399 * If we're polling, the task itself is doing the completions. For 1400 * that case, we don't need to signal a wakeup, it's enough to just 1401 * mark us as RUNNING. 1402 */ 1403 if (waiter == current) 1404 __set_current_state(TASK_RUNNING); 1405 else 1406 wake_up_process(waiter); 1407 } 1408 1409 unsigned long bdev_start_io_acct(struct block_device *bdev, enum req_op op, 1410 unsigned long start_time); 1411 void bdev_end_io_acct(struct block_device *bdev, enum req_op op, 1412 unsigned int sectors, unsigned long start_time); 1413 1414 unsigned long bio_start_io_acct(struct bio *bio); 1415 void bio_end_io_acct_remapped(struct bio *bio, unsigned long start_time, 1416 struct block_device *orig_bdev); 1417 1418 /** 1419 * bio_end_io_acct - end I/O accounting for bio based drivers 1420 * @bio: bio to end account for 1421 * @start_time: start time returned by bio_start_io_acct() 1422 */ 1423 static inline void bio_end_io_acct(struct bio *bio, unsigned long start_time) 1424 { 1425 return bio_end_io_acct_remapped(bio, start_time, bio->bi_bdev); 1426 } 1427 1428 int bdev_read_only(struct block_device *bdev); 1429 int set_blocksize(struct block_device *bdev, int size); 1430 1431 int lookup_bdev(const char *pathname, dev_t *dev); 1432 1433 void blkdev_show(struct seq_file *seqf, off_t offset); 1434 1435 #define BDEVNAME_SIZE 32 /* Largest string for a blockdev identifier */ 1436 #define BDEVT_SIZE 10 /* Largest string for MAJ:MIN for blkdev */ 1437 #ifdef CONFIG_BLOCK 1438 #define BLKDEV_MAJOR_MAX 512 1439 #else 1440 #define BLKDEV_MAJOR_MAX 0 1441 #endif 1442 1443 struct blk_holder_ops { 1444 void (*mark_dead)(struct block_device *bdev, bool surprise); 1445 1446 /* 1447 * Sync the file system mounted on the block device. 1448 */ 1449 void (*sync)(struct block_device *bdev); 1450 1451 /* 1452 * Freeze the file system mounted on the block device. 1453 */ 1454 int (*freeze)(struct block_device *bdev); 1455 1456 /* 1457 * Thaw the file system mounted on the block device. 1458 */ 1459 int (*thaw)(struct block_device *bdev); 1460 }; 1461 1462 /* 1463 * For filesystems using @fs_holder_ops, the @holder argument passed to 1464 * helpers used to open and claim block devices via 1465 * bd_prepare_to_claim() must point to a superblock. 1466 */ 1467 extern const struct blk_holder_ops fs_holder_ops; 1468 1469 /* 1470 * Return the correct open flags for blkdev_get_by_* for super block flags 1471 * as stored in sb->s_flags. 1472 */ 1473 #define sb_open_mode(flags) \ 1474 (BLK_OPEN_READ | BLK_OPEN_RESTRICT_WRITES | \ 1475 (((flags) & SB_RDONLY) ? 0 : BLK_OPEN_WRITE)) 1476 1477 struct bdev_handle { 1478 struct block_device *bdev; 1479 void *holder; 1480 blk_mode_t mode; 1481 }; 1482 1483 struct bdev_handle *bdev_open_by_dev(dev_t dev, blk_mode_t mode, void *holder, 1484 const struct blk_holder_ops *hops); 1485 struct bdev_handle *bdev_open_by_path(const char *path, blk_mode_t mode, 1486 void *holder, const struct blk_holder_ops *hops); 1487 int bd_prepare_to_claim(struct block_device *bdev, void *holder, 1488 const struct blk_holder_ops *hops); 1489 void bd_abort_claiming(struct block_device *bdev, void *holder); 1490 void bdev_release(struct bdev_handle *handle); 1491 1492 /* just for blk-cgroup, don't use elsewhere */ 1493 struct block_device *blkdev_get_no_open(dev_t dev); 1494 void blkdev_put_no_open(struct block_device *bdev); 1495 1496 struct block_device *I_BDEV(struct inode *inode); 1497 1498 #ifdef CONFIG_BLOCK 1499 void invalidate_bdev(struct block_device *bdev); 1500 int sync_blockdev(struct block_device *bdev); 1501 int sync_blockdev_range(struct block_device *bdev, loff_t lstart, loff_t lend); 1502 int sync_blockdev_nowait(struct block_device *bdev); 1503 void sync_bdevs(bool wait); 1504 void bdev_statx_dioalign(struct inode *inode, struct kstat *stat); 1505 void printk_all_partitions(void); 1506 int __init early_lookup_bdev(const char *pathname, dev_t *dev); 1507 #else 1508 static inline void invalidate_bdev(struct block_device *bdev) 1509 { 1510 } 1511 static inline int sync_blockdev(struct block_device *bdev) 1512 { 1513 return 0; 1514 } 1515 static inline int sync_blockdev_nowait(struct block_device *bdev) 1516 { 1517 return 0; 1518 } 1519 static inline void sync_bdevs(bool wait) 1520 { 1521 } 1522 static inline void bdev_statx_dioalign(struct inode *inode, struct kstat *stat) 1523 { 1524 } 1525 static inline void printk_all_partitions(void) 1526 { 1527 } 1528 static inline int early_lookup_bdev(const char *pathname, dev_t *dev) 1529 { 1530 return -EINVAL; 1531 } 1532 #endif /* CONFIG_BLOCK */ 1533 1534 int bdev_freeze(struct block_device *bdev); 1535 int bdev_thaw(struct block_device *bdev); 1536 1537 struct io_comp_batch { 1538 struct request *req_list; 1539 bool need_ts; 1540 void (*complete)(struct io_comp_batch *); 1541 }; 1542 1543 #define DEFINE_IO_COMP_BATCH(name) struct io_comp_batch name = { } 1544 1545 #endif /* _LINUX_BLKDEV_H */ 1546