at v6.8-rc4 46 kB view raw
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 28struct module; 29struct request_queue; 30struct elevator_queue; 31struct blk_trace; 32struct request; 33struct sg_io_hdr; 34struct blkcg_gq; 35struct blk_flush_queue; 36struct kiocb; 37struct pr_ops; 38struct rq_qos; 39struct blk_queue_stats; 40struct blk_stat_callback; 41struct blk_crypto_profile; 42 43extern const struct device_type disk_type; 44extern const struct device_type part_type; 45extern 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 63struct 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 */ 84enum { 85 GENHD_FL_REMOVABLE = 1 << 0, 86 GENHD_FL_HIDDEN = 1 << 1, 87 GENHD_FL_NO_PART = 1 << 2, 88}; 89 90enum { 91 DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */ 92 DISK_EVENT_EJECT_REQUEST = 1 << 1, /* eject requested */ 93}; 94 95enum { 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 104struct disk_events; 105struct badblocks; 106 107struct 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 115typedef 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 130struct 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 214static 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 */ 229static 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 249static inline dev_t disk_devt(struct gendisk *disk) 250{ 251 return MKDEV(disk->major, disk->first_minor); 252} 253 254static 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 262static 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 */ 272enum blk_bounce { 273 BLK_BOUNCE_NONE, 274 BLK_BOUNCE_HIGH, 275}; 276 277struct 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 319typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx, 320 void *data); 321 322void disk_set_zoned(struct gendisk *disk); 323 324#define BLK_ALL_ZONES ((unsigned int)-1) 325int blkdev_report_zones(struct block_device *bdev, sector_t sector, 326 unsigned int nr_zones, report_zones_cb cb, void *data); 327int blkdev_zone_mgmt(struct block_device *bdev, enum req_op op, 328 sector_t sectors, sector_t nr_sectors, gfp_t gfp_mask); 329int 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 */ 346struct blk_independent_access_range { 347 struct kobject kobj; 348 sector_t sector; 349 sector_t nr_sectors; 350}; 351 352struct 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 359struct 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 547void blk_queue_flag_set(unsigned int flag, struct request_queue *q); 548void blk_queue_flag_clear(unsigned int flag, struct request_queue *q); 549bool 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 584extern void blk_set_pm_only(struct request_queue *q); 585extern 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 593static inline bool queue_is_mq(struct request_queue *q) 594{ 595 return q->mq_ops; 596} 597 598#ifdef CONFIG_PM 599static inline enum rpm_status queue_rpm_status(struct request_queue *q) 600{ 601 return q->rpm_status; 602} 603#else 604static inline enum rpm_status queue_rpm_status(struct request_queue *q) 605{ 606 return RPM_ACTIVE; 607} 608#endif 609 610static 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 616unsigned int bdev_nr_zones(struct block_device *bdev); 617 618static inline unsigned int disk_nr_zones(struct gendisk *disk) 619{ 620 return blk_queue_is_zoned(disk->queue) ? disk->nr_zones : 0; 621} 622 623static 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 630static 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 639static 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 645static 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 651static inline unsigned int bdev_max_open_zones(struct block_device *bdev) 652{ 653 return bdev->bd_disk->max_open_zones; 654} 655 656static 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 */ 662static inline unsigned int bdev_nr_zones(struct block_device *bdev) 663{ 664 return 0; 665} 666 667static inline unsigned int disk_nr_zones(struct gendisk *disk) 668{ 669 return 0; 670} 671static inline bool disk_zone_is_seq(struct gendisk *disk, sector_t sector) 672{ 673 return false; 674} 675static inline unsigned int disk_zone_no(struct gendisk *disk, sector_t sector) 676{ 677 return 0; 678} 679static inline unsigned int bdev_max_open_zones(struct block_device *bdev) 680{ 681 return 0; 682} 683 684static inline unsigned int bdev_max_active_zones(struct block_device *bdev) 685{ 686 return 0; 687} 688#endif /* CONFIG_BLK_DEV_ZONED */ 689 690static 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 708int __must_check device_add_disk(struct device *parent, struct gendisk *disk, 709 const struct attribute_group **groups); 710static inline int __must_check add_disk(struct gendisk *disk) 711{ 712 return device_add_disk(NULL, disk, NULL); 713} 714void del_gendisk(struct gendisk *gp); 715void invalidate_disk(struct gendisk *disk); 716void set_disk_ro(struct gendisk *disk, bool read_only); 717void disk_uevent(struct gendisk *disk, enum kobject_action action); 718 719static 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 725static inline int bdev_read_only(struct block_device *bdev) 726{ 727 return bdev->bd_read_only || get_disk_ro(bdev->bd_disk); 728} 729 730bool set_capacity_and_notify(struct gendisk *disk, sector_t size); 731void disk_force_media_change(struct gendisk *disk); 732void bdev_mark_dead(struct block_device *bdev, bool surprise); 733 734void add_disk_randomness(struct gendisk *disk) __latent_entropy; 735void rand_initialize_disk(struct gendisk *disk); 736 737static inline sector_t get_start_sect(struct block_device *bdev) 738{ 739 return bdev->bd_start_sect; 740} 741 742static inline sector_t bdev_nr_sectors(struct block_device *bdev) 743{ 744 return bdev->bd_nr_sectors; 745} 746 747static inline loff_t bdev_nr_bytes(struct block_device *bdev) 748{ 749 return (loff_t)bdev_nr_sectors(bdev) << SECTOR_SHIFT; 750} 751 752static inline sector_t get_capacity(struct gendisk *disk) 753{ 754 return bdev_nr_sectors(disk->part0); 755} 756 757static 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 763int bdev_disk_changed(struct gendisk *disk, bool invalidate); 764 765void put_disk(struct gendisk *disk); 766struct 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 784int __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) 788void unregister_blkdev(unsigned int major, const char *name); 789 790bool disk_check_media_change(struct gendisk *disk); 791void set_capacity(struct gendisk *disk, sector_t size); 792 793#ifdef CONFIG_BLOCK_HOLDER_DEPRECATED 794int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk); 795void bd_unlink_disk_holder(struct block_device *bdev, struct gendisk *disk); 796#else 797static inline int bd_link_disk_holder(struct block_device *bdev, 798 struct gendisk *disk) 799{ 800 return 0; 801} 802static inline void bd_unlink_disk_holder(struct block_device *bdev, 803 struct gendisk *disk) 804{ 805} 806#endif /* CONFIG_BLOCK_HOLDER_DEPRECATED */ 807 808dev_t part_devt(struct gendisk *disk, u8 partno); 809void inc_diskseq(struct gendisk *disk); 810void blk_request_module(dev_t devt); 811 812extern int blk_register_queue(struct gendisk *disk); 813extern void blk_unregister_queue(struct gendisk *disk); 814void submit_bio_noacct(struct bio *bio); 815struct bio *bio_split_to_limits(struct bio *bio); 816 817extern int blk_lld_busy(struct request_queue *q); 818extern int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags); 819extern void blk_queue_exit(struct request_queue *q); 820extern void blk_sync_queue(struct request_queue *q); 821 822/* Helper to convert REQ_OP_XXX to its string format XXX */ 823extern const char *blk_op_str(enum req_op op); 824 825int blk_status_to_errno(blk_status_t status); 826blk_status_t errno_to_blk_status(int errno); 827const 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) 831int bio_poll(struct bio *bio, struct io_comp_batch *iob, unsigned int flags); 832int iocb_bio_iopoll(struct kiocb *kiocb, struct io_comp_batch *iob, 833 unsigned int flags); 834 835static 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 */ 841const char *blk_zone_cond_str(enum blk_zone_cond zone_cond); 842 843static 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 848static 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 */ 856static 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 */ 867void blk_queue_bounce_limit(struct request_queue *q, enum blk_bounce limit); 868extern void blk_queue_max_hw_sectors(struct request_queue *, unsigned int); 869extern void blk_queue_chunk_sectors(struct request_queue *, unsigned int); 870extern void blk_queue_max_segments(struct request_queue *, unsigned short); 871extern void blk_queue_max_discard_segments(struct request_queue *, 872 unsigned short); 873void blk_queue_max_secure_erase_sectors(struct request_queue *q, 874 unsigned int max_sectors); 875extern void blk_queue_max_segment_size(struct request_queue *, unsigned int); 876extern void blk_queue_max_discard_sectors(struct request_queue *q, 877 unsigned int max_discard_sectors); 878extern void blk_queue_max_write_zeroes_sectors(struct request_queue *q, 879 unsigned int max_write_same_sectors); 880extern void blk_queue_logical_block_size(struct request_queue *, unsigned int); 881extern void blk_queue_max_zone_append_sectors(struct request_queue *q, 882 unsigned int max_zone_append_sectors); 883extern void blk_queue_physical_block_size(struct request_queue *, unsigned int); 884void blk_queue_zone_write_granularity(struct request_queue *q, 885 unsigned int size); 886extern void blk_queue_alignment_offset(struct request_queue *q, 887 unsigned int alignment); 888void disk_update_readahead(struct gendisk *disk); 889extern void blk_limits_io_min(struct queue_limits *limits, unsigned int min); 890extern void blk_queue_io_min(struct request_queue *q, unsigned int min); 891extern void blk_limits_io_opt(struct queue_limits *limits, unsigned int opt); 892extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); 893extern void blk_set_queue_depth(struct request_queue *q, unsigned int depth); 894extern void blk_set_stacking_limits(struct queue_limits *lim); 895extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, 896 sector_t offset); 897extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, 898 sector_t offset); 899extern void blk_queue_update_dma_pad(struct request_queue *, unsigned int); 900extern void blk_queue_segment_boundary(struct request_queue *, unsigned long); 901extern void blk_queue_virt_boundary(struct request_queue *, unsigned long); 902extern void blk_queue_dma_alignment(struct request_queue *, int); 903extern void blk_queue_update_dma_alignment(struct request_queue *, int); 904extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); 905extern void blk_queue_write_cache(struct request_queue *q, bool enabled, bool fua); 906 907struct blk_independent_access_ranges * 908disk_alloc_independent_access_ranges(struct gendisk *disk, int nr_ia_ranges); 909void 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 918extern void blk_queue_required_elevator_features(struct request_queue *q, 919 unsigned int features); 920extern bool blk_queue_can_use_dma_map_merging(struct request_queue *q, 921 struct device *dev); 922 923bool __must_check blk_get_queue(struct request_queue *); 924extern void blk_put_queue(struct request_queue *); 925 926void 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 */ 940struct 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 955struct blk_plug_cb; 956typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool); 957struct blk_plug_cb { 958 struct list_head list; 959 blk_plug_cb_fn callback; 960 void *data; 961}; 962extern struct blk_plug_cb *blk_check_plugged(blk_plug_cb_fn unplug, 963 void *data, int size); 964extern void blk_start_plug(struct blk_plug *); 965extern void blk_start_plug_nr_ios(struct blk_plug *, unsigned short); 966extern void blk_finish_plug(struct blk_plug *); 967 968void __blk_flush_plug(struct blk_plug *plug, bool from_schedule); 969static inline void blk_flush_plug(struct blk_plug *plug, bool async) 970{ 971 if (plug) 972 __blk_flush_plug(plug, async); 973} 974 975int blkdev_issue_flush(struct block_device *bdev); 976long nr_blockdev_pages(void); 977#else /* CONFIG_BLOCK */ 978struct blk_plug { 979}; 980 981static inline void blk_start_plug_nr_ios(struct blk_plug *plug, 982 unsigned short nr_ios) 983{ 984} 985 986static inline void blk_start_plug(struct blk_plug *plug) 987{ 988} 989 990static inline void blk_finish_plug(struct blk_plug *plug) 991{ 992} 993 994static inline void blk_flush_plug(struct blk_plug *plug, bool async) 995{ 996} 997 998static inline int blkdev_issue_flush(struct block_device *bdev) 999{ 1000 return 0; 1001} 1002 1003static inline long nr_blockdev_pages(void) 1004{ 1005 return 0; 1006} 1007#endif /* CONFIG_BLOCK */ 1008 1009extern void blk_io_schedule(void); 1010 1011int blkdev_issue_discard(struct block_device *bdev, sector_t sector, 1012 sector_t nr_sects, gfp_t gfp_mask); 1013int __blkdev_issue_discard(struct block_device *bdev, sector_t sector, 1014 sector_t nr_sects, gfp_t gfp_mask, struct bio **biop); 1015int 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 1021extern 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); 1024extern int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector, 1025 sector_t nr_sects, gfp_t gfp_mask, unsigned flags); 1026 1027static 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} 1037static 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 1048static inline bool bdev_is_partition(struct block_device *bdev) 1049{ 1050 return bdev->bd_partno; 1051} 1052 1053enum 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 1069static inline unsigned long queue_segment_boundary(const struct request_queue *q) 1070{ 1071 return q->limits.seg_boundary_mask; 1072} 1073 1074static inline unsigned long queue_virt_boundary(const struct request_queue *q) 1075{ 1076 return q->limits.virt_boundary_mask; 1077} 1078 1079static inline unsigned int queue_max_sectors(const struct request_queue *q) 1080{ 1081 return q->limits.max_sectors; 1082} 1083 1084static 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 1089static inline unsigned int queue_max_hw_sectors(const struct request_queue *q) 1090{ 1091 return q->limits.max_hw_sectors; 1092} 1093 1094static inline unsigned short queue_max_segments(const struct request_queue *q) 1095{ 1096 return q->limits.max_segments; 1097} 1098 1099static inline unsigned short queue_max_discard_segments(const struct request_queue *q) 1100{ 1101 return q->limits.max_discard_segments; 1102} 1103 1104static inline unsigned int queue_max_segment_size(const struct request_queue *q) 1105{ 1106 return q->limits.max_segment_size; 1107} 1108 1109static 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 1117static inline unsigned int 1118bdev_max_zone_append_sectors(struct block_device *bdev) 1119{ 1120 return queue_max_zone_append_sectors(bdev_get_queue(bdev)); 1121} 1122 1123static inline unsigned int bdev_max_segments(struct block_device *bdev) 1124{ 1125 return queue_max_segments(bdev_get_queue(bdev)); 1126} 1127 1128static 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 1138static inline unsigned int bdev_logical_block_size(struct block_device *bdev) 1139{ 1140 return queue_logical_block_size(bdev_get_queue(bdev)); 1141} 1142 1143static inline unsigned int queue_physical_block_size(const struct request_queue *q) 1144{ 1145 return q->limits.physical_block_size; 1146} 1147 1148static inline unsigned int bdev_physical_block_size(struct block_device *bdev) 1149{ 1150 return queue_physical_block_size(bdev_get_queue(bdev)); 1151} 1152 1153static inline unsigned int queue_io_min(const struct request_queue *q) 1154{ 1155 return q->limits.io_min; 1156} 1157 1158static inline int bdev_io_min(struct block_device *bdev) 1159{ 1160 return queue_io_min(bdev_get_queue(bdev)); 1161} 1162 1163static inline unsigned int queue_io_opt(const struct request_queue *q) 1164{ 1165 return q->limits.io_opt; 1166} 1167 1168static inline int bdev_io_opt(struct block_device *bdev) 1169{ 1170 return queue_io_opt(bdev_get_queue(bdev)); 1171} 1172 1173static inline unsigned int 1174queue_zone_write_granularity(const struct request_queue *q) 1175{ 1176 return q->limits.zone_write_granularity; 1177} 1178 1179static inline unsigned int 1180bdev_zone_write_granularity(struct block_device *bdev) 1181{ 1182 return queue_zone_write_granularity(bdev_get_queue(bdev)); 1183} 1184 1185int bdev_alignment_offset(struct block_device *bdev); 1186unsigned int bdev_discard_alignment(struct block_device *bdev); 1187 1188static inline unsigned int bdev_max_discard_sectors(struct block_device *bdev) 1189{ 1190 return bdev_get_queue(bdev)->limits.max_discard_sectors; 1191} 1192 1193static inline unsigned int bdev_discard_granularity(struct block_device *bdev) 1194{ 1195 return bdev_get_queue(bdev)->limits.discard_granularity; 1196} 1197 1198static inline unsigned int 1199bdev_max_secure_erase_sectors(struct block_device *bdev) 1200{ 1201 return bdev_get_queue(bdev)->limits.max_secure_erase_sectors; 1202} 1203 1204static 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 1214static inline bool bdev_nonrot(struct block_device *bdev) 1215{ 1216 return blk_queue_nonrot(bdev_get_queue(bdev)); 1217} 1218 1219static 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 1225static 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 1231static 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 1236static inline bool bdev_fua(struct block_device *bdev) 1237{ 1238 return test_bit(QUEUE_FLAG_FUA, &bdev_get_queue(bdev)->queue_flags); 1239} 1240 1241static inline bool bdev_nowait(struct block_device *bdev) 1242{ 1243 return test_bit(QUEUE_FLAG_NOWAIT, &bdev_get_queue(bdev)->queue_flags); 1244} 1245 1246static inline bool bdev_is_zoned(struct block_device *bdev) 1247{ 1248 return blk_queue_is_zoned(bdev_get_queue(bdev)); 1249} 1250 1251static 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. */ 1257static 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 1262static 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 1268static 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 1277static 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 1283static 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 1289static inline int queue_dma_alignment(const struct request_queue *q) 1290{ 1291 return q ? q->limits.dma_alignment : 511; 1292} 1293 1294static inline unsigned int bdev_dma_alignment(struct block_device *bdev) 1295{ 1296 return queue_dma_alignment(bdev_get_queue(bdev)); 1297} 1298 1299static 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 1306static 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 */ 1314static inline unsigned int blksize_bits(unsigned int size) 1315{ 1316 return order_base_2(size >> SECTOR_SHIFT) + SECTOR_SHIFT; 1317} 1318 1319static inline unsigned int block_size(struct block_device *bdev) 1320{ 1321 return 1 << bdev->bd_inode->i_blkbits; 1322} 1323 1324int kblockd_schedule_work(struct work_struct *work); 1325int 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 1334bool blk_crypto_register(struct blk_crypto_profile *profile, 1335 struct request_queue *q); 1336 1337#else /* CONFIG_BLK_INLINE_ENCRYPTION */ 1338 1339static 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 1347enum 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 1354struct 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 1390extern 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 1396static 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 1409unsigned long bdev_start_io_acct(struct block_device *bdev, enum req_op op, 1410 unsigned long start_time); 1411void bdev_end_io_acct(struct block_device *bdev, enum req_op op, 1412 unsigned int sectors, unsigned long start_time); 1413 1414unsigned long bio_start_io_acct(struct bio *bio); 1415void 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 */ 1423static 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 1428int bdev_read_only(struct block_device *bdev); 1429int set_blocksize(struct block_device *bdev, int size); 1430 1431int lookup_bdev(const char *pathname, dev_t *dev); 1432 1433void 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 1443struct 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 */ 1467extern 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 1477struct bdev_handle { 1478 struct block_device *bdev; 1479 void *holder; 1480 blk_mode_t mode; 1481}; 1482 1483struct bdev_handle *bdev_open_by_dev(dev_t dev, blk_mode_t mode, void *holder, 1484 const struct blk_holder_ops *hops); 1485struct bdev_handle *bdev_open_by_path(const char *path, blk_mode_t mode, 1486 void *holder, const struct blk_holder_ops *hops); 1487int bd_prepare_to_claim(struct block_device *bdev, void *holder, 1488 const struct blk_holder_ops *hops); 1489void bd_abort_claiming(struct block_device *bdev, void *holder); 1490void bdev_release(struct bdev_handle *handle); 1491 1492/* just for blk-cgroup, don't use elsewhere */ 1493struct block_device *blkdev_get_no_open(dev_t dev); 1494void blkdev_put_no_open(struct block_device *bdev); 1495 1496struct block_device *I_BDEV(struct inode *inode); 1497 1498#ifdef CONFIG_BLOCK 1499void invalidate_bdev(struct block_device *bdev); 1500int sync_blockdev(struct block_device *bdev); 1501int sync_blockdev_range(struct block_device *bdev, loff_t lstart, loff_t lend); 1502int sync_blockdev_nowait(struct block_device *bdev); 1503void sync_bdevs(bool wait); 1504void bdev_statx_dioalign(struct inode *inode, struct kstat *stat); 1505void printk_all_partitions(void); 1506int __init early_lookup_bdev(const char *pathname, dev_t *dev); 1507#else 1508static inline void invalidate_bdev(struct block_device *bdev) 1509{ 1510} 1511static inline int sync_blockdev(struct block_device *bdev) 1512{ 1513 return 0; 1514} 1515static inline int sync_blockdev_nowait(struct block_device *bdev) 1516{ 1517 return 0; 1518} 1519static inline void sync_bdevs(bool wait) 1520{ 1521} 1522static inline void bdev_statx_dioalign(struct inode *inode, struct kstat *stat) 1523{ 1524} 1525static inline void printk_all_partitions(void) 1526{ 1527} 1528static inline int early_lookup_bdev(const char *pathname, dev_t *dev) 1529{ 1530 return -EINVAL; 1531} 1532#endif /* CONFIG_BLOCK */ 1533 1534int bdev_freeze(struct block_device *bdev); 1535int bdev_thaw(struct block_device *bdev); 1536 1537struct 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 */