diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2023-05-01 15:20:08 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2023-05-01 15:20:08 -0700 | 
| commit | 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e (patch) | |
| tree | d57f3a63479a07b4e0cece029886e76e04feb984 /include/linux/blkdev.h | |
| parent | 5dc63e56a9cf8df0b59c234a505a1653f1bdf885 (diff) | |
| parent | 53bea86b5712c7491bb3dae12e271666df0a308c (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.4 merge window.
Diffstat (limited to 'include/linux/blkdev.h')
| -rw-r--r-- | include/linux/blkdev.h | 46 | 
1 files changed, 29 insertions, 17 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 43d4e073b111..d1aee08f8c18 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -288,6 +288,7 @@ struct queue_limits {  	unsigned int		max_dev_sectors;  	unsigned int		chunk_sectors;  	unsigned int		max_sectors; +	unsigned int		max_user_sectors;  	unsigned int		max_segment_size;  	unsigned int		physical_block_size;  	unsigned int		logical_block_size; @@ -484,6 +485,7 @@ struct request_queue {  	DECLARE_BITMAP		(blkcg_pols, BLKCG_MAX_POLS);  	struct blkcg_gq		*root_blkg;  	struct list_head	blkg_list; +	struct mutex		blkcg_mutex;  #endif  	struct queue_limits	limits; @@ -554,6 +556,7 @@ struct request_queue {  #define QUEUE_FLAG_IO_STAT	7	/* do disk/partitions IO accounting */  #define QUEUE_FLAG_NOXMERGES	9	/* No extended merges */  #define QUEUE_FLAG_ADD_RANDOM	10	/* Contributes to random pool */ +#define QUEUE_FLAG_SYNCHRONOUS	11	/* always completes in submit context */  #define QUEUE_FLAG_SAME_FORCE	12	/* force complete on same CPU */  #define QUEUE_FLAG_INIT_DONE	14	/* queue is initialized */  #define QUEUE_FLAG_STABLE_WRITES 15	/* don't modify blks until WB is done */ @@ -1095,11 +1098,12 @@ static inline bool bdev_is_partition(struct block_device *bdev)  enum blk_default_limits {  	BLK_MAX_SEGMENTS	= 128,  	BLK_SAFE_MAX_SECTORS	= 255, -	BLK_DEF_MAX_SECTORS	= 2560,  	BLK_MAX_SEGMENT_SIZE	= 65536,  	BLK_SEG_BOUNDARY_MASK	= 0xFFFFFFFFUL,  }; +#define BLK_DEF_MAX_SECTORS 2560u +  static inline unsigned long queue_segment_boundary(const struct request_queue *q)  {  	return q->limits.seg_boundary_mask; @@ -1250,6 +1254,12 @@ static inline bool bdev_nonrot(struct block_device *bdev)  	return blk_queue_nonrot(bdev_get_queue(bdev));  } +static inline bool bdev_synchronous(struct block_device *bdev) +{ +	return test_bit(QUEUE_FLAG_SYNCHRONOUS, +			&bdev_get_queue(bdev)->queue_flags); +} +  static inline bool bdev_stable_writes(struct block_device *bdev)  {  	return test_bit(QUEUE_FLAG_STABLE_WRITES, @@ -1273,22 +1283,17 @@ static inline bool bdev_nowait(struct block_device *bdev)  static inline enum blk_zoned_model bdev_zoned_model(struct block_device *bdev)  { -	struct request_queue *q = bdev_get_queue(bdev); - -	if (q) -		return blk_queue_zoned_model(q); - -	return BLK_ZONED_NONE; +	return blk_queue_zoned_model(bdev_get_queue(bdev));  }  static inline bool bdev_is_zoned(struct block_device *bdev)  { -	struct request_queue *q = bdev_get_queue(bdev); - -	if (q) -		return blk_queue_is_zoned(q); +	return blk_queue_is_zoned(bdev_get_queue(bdev)); +} -	return false; +static inline unsigned int bdev_zone_no(struct block_device *bdev, sector_t sec) +{ +	return disk_zone_no(bdev->bd_disk, sec);  }  static inline bool bdev_op_is_zoned_write(struct block_device *bdev, @@ -1309,6 +1314,18 @@ static inline sector_t bdev_zone_sectors(struct block_device *bdev)  	return q->limits.chunk_sectors;  } +static inline sector_t bdev_offset_from_zone_start(struct block_device *bdev, +						   sector_t sector) +{ +	return sector & (bdev_zone_sectors(bdev) - 1); +} + +static inline bool bdev_is_zone_start(struct block_device *bdev, +				      sector_t sector) +{ +	return bdev_offset_from_zone_start(bdev, sector) == 0; +} +  static inline int queue_dma_alignment(const struct request_queue *q)  {  	return q ? q->limits.dma_alignment : 511; @@ -1382,7 +1399,6 @@ struct block_device_operations {  			unsigned int flags);  	int (*open) (struct block_device *, fmode_t);  	void (*release) (struct gendisk *, fmode_t); -	int (*rw_page)(struct block_device *, sector_t, struct page *, enum req_op);  	int (*ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);  	int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);  	unsigned int (*check_events) (struct gendisk *disk, @@ -1417,10 +1433,6 @@ extern int blkdev_compat_ptr_ioctl(struct block_device *, fmode_t,  #define blkdev_compat_ptr_ioctl NULL  #endif -extern int bdev_read_page(struct block_device *, sector_t, struct page *); -extern int bdev_write_page(struct block_device *, sector_t, struct page *, -						struct writeback_control *); -  static inline void blk_wake_io_task(struct task_struct *waiter)  {  	/*  | 
