Merge branch 'for-5.9/block' into for-5.9/block-merge
* for-5.9/block: (124 commits) blk-cgroup: show global disk stats in root cgroup io.stat blk-cgroup: make iostat functions visible to stat printing block: improve discard bio alignment in __blkdev_issue_discard() block: change REQ_OP_ZONE_RESET and REQ_OP_ZONE_RESET_ALL to be odd numbers block: defer flush request no matter whether we have elevator block: make blk_timeout_init() static block: remove retry loop in ioc_release_fn() block: remove unnecessary ioc nested locking block: integrate bd_start_claiming into __blkdev_get block: use bd_prepare_to_claim directly in the loop driver block: refactor bd_start_claiming block: simplify the restart case in __blkdev_get Revert "blk-rq-qos: remove redundant finish_wait to rq_qos_wait." block: always remove partitions from blk_drop_partitions() block: relax jiffies rounding for timeouts blk-mq: remove redundant validation in __blk_mq_end_request() blk-mq: Remove unnecessary local variable writeback: remove bdi->congested_fn writeback: remove struct bdi_writeback_congested writeback: remove {set,clear}_wb_congested ...
This commit is contained in:
@@ -4,9 +4,6 @@
|
||||
|
||||
#include <linux/sched.h>
|
||||
#include <linux/sched/clock.h>
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
|
||||
#include <linux/major.h>
|
||||
#include <linux/genhd.h>
|
||||
#include <linux/list.h>
|
||||
@@ -289,8 +286,6 @@ static inline unsigned short req_get_ioprio(struct request *req)
|
||||
|
||||
struct blk_queue_ctx;
|
||||
|
||||
typedef blk_qc_t (make_request_fn) (struct request_queue *q, struct bio *bio);
|
||||
|
||||
struct bio_vec;
|
||||
|
||||
enum blk_eh_timer_return {
|
||||
@@ -401,8 +396,6 @@ struct request_queue {
|
||||
struct blk_queue_stats *stats;
|
||||
struct rq_qos *rq_qos;
|
||||
|
||||
make_request_fn *make_request_fn;
|
||||
|
||||
const struct blk_mq_ops *mq_ops;
|
||||
|
||||
/* sw queues */
|
||||
@@ -528,9 +521,9 @@ struct request_queue {
|
||||
unsigned int sg_timeout;
|
||||
unsigned int sg_reserved_size;
|
||||
int node;
|
||||
struct mutex debugfs_mutex;
|
||||
#ifdef CONFIG_BLK_DEV_IO_TRACE
|
||||
struct blk_trace __rcu *blk_trace;
|
||||
struct mutex blk_trace_mutex;
|
||||
#endif
|
||||
/*
|
||||
* for flush operations
|
||||
@@ -574,8 +567,9 @@ struct request_queue {
|
||||
struct list_head tag_set_list;
|
||||
struct bio_set bio_split;
|
||||
|
||||
#ifdef CONFIG_BLK_DEBUG_FS
|
||||
struct dentry *debugfs_dir;
|
||||
|
||||
#ifdef CONFIG_BLK_DEBUG_FS
|
||||
struct dentry *sched_debugfs_dir;
|
||||
struct dentry *rqos_debugfs_dir;
|
||||
#endif
|
||||
@@ -584,8 +578,6 @@ struct request_queue {
|
||||
|
||||
size_t cmd_size;
|
||||
|
||||
struct work_struct release_work;
|
||||
|
||||
#define BLK_MAX_WRITE_HINTS 5
|
||||
u64 write_hints[BLK_MAX_WRITE_HINTS];
|
||||
};
|
||||
@@ -861,8 +853,7 @@ static inline void rq_flush_dcache_pages(struct request *rq)
|
||||
|
||||
extern int blk_register_queue(struct gendisk *disk);
|
||||
extern void blk_unregister_queue(struct gendisk *disk);
|
||||
extern blk_qc_t generic_make_request(struct bio *bio);
|
||||
extern blk_qc_t direct_make_request(struct bio *bio);
|
||||
blk_qc_t submit_bio_noacct(struct bio *bio);
|
||||
extern void blk_rq_init(struct request_queue *q, struct request *rq);
|
||||
extern void blk_put_request(struct request *);
|
||||
extern struct request *blk_get_request(struct request_queue *, unsigned int op,
|
||||
@@ -876,7 +867,7 @@ extern void blk_rq_unprep_clone(struct request *rq);
|
||||
extern blk_status_t blk_insert_cloned_request(struct request_queue *q,
|
||||
struct request *rq);
|
||||
extern int blk_rq_append_bio(struct request *rq, struct bio **bio);
|
||||
extern void blk_queue_split(struct request_queue *, struct bio **);
|
||||
extern void blk_queue_split(struct bio **);
|
||||
extern int scsi_verify_blk_ioctl(struct block_device *, unsigned int);
|
||||
extern int scsi_cmd_blk_ioctl(struct block_device *, fmode_t,
|
||||
unsigned int, void __user *);
|
||||
@@ -1079,7 +1070,6 @@ void blk_steal_bios(struct bio_list *list, struct request *rq);
|
||||
extern bool blk_update_request(struct request *rq, blk_status_t error,
|
||||
unsigned int nr_bytes);
|
||||
|
||||
extern void __blk_complete_request(struct request *);
|
||||
extern void blk_abort_request(struct request *);
|
||||
|
||||
/*
|
||||
@@ -1166,13 +1156,13 @@ static inline int blk_rq_map_sg(struct request_queue *q, struct request *rq,
|
||||
return __blk_rq_map_sg(q, rq, sglist, &last_sg);
|
||||
}
|
||||
extern void blk_dump_rq_flags(struct request *, char *);
|
||||
extern long nr_blockdev_pages(void);
|
||||
|
||||
bool __must_check blk_get_queue(struct request_queue *);
|
||||
struct request_queue *blk_alloc_queue(make_request_fn make_request, int node_id);
|
||||
struct request_queue *blk_alloc_queue(int node_id);
|
||||
extern void blk_put_queue(struct request_queue *);
|
||||
extern void blk_set_queue_dying(struct request_queue *);
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
/*
|
||||
* blk_plug permits building a queue of related requests by holding the I/O
|
||||
* fragments for a short period. This allows merging of sequential requests
|
||||
@@ -1232,9 +1222,47 @@ static inline bool blk_needs_flush_plug(struct task_struct *tsk)
|
||||
!list_empty(&plug->cb_list));
|
||||
}
|
||||
|
||||
int blkdev_issue_flush(struct block_device *, gfp_t);
|
||||
long nr_blockdev_pages(void);
|
||||
#else /* CONFIG_BLOCK */
|
||||
struct blk_plug {
|
||||
};
|
||||
|
||||
static inline void blk_start_plug(struct blk_plug *plug)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void blk_finish_plug(struct blk_plug *plug)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void blk_flush_plug(struct task_struct *task)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void blk_schedule_flush_plug(struct task_struct *task)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static inline bool blk_needs_flush_plug(struct task_struct *tsk)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline long nr_blockdev_pages(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_BLOCK */
|
||||
|
||||
extern void blk_io_schedule(void);
|
||||
|
||||
int blkdev_issue_flush(struct block_device *, gfp_t);
|
||||
extern int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,
|
||||
sector_t nr_sects, gfp_t gfp_mask, struct page *page);
|
||||
|
||||
@@ -1516,7 +1544,7 @@ static inline unsigned int blksize_bits(unsigned int size)
|
||||
|
||||
static inline unsigned int block_size(struct block_device *bdev)
|
||||
{
|
||||
return bdev->bd_block_size;
|
||||
return 1 << bdev->bd_inode->i_blkbits;
|
||||
}
|
||||
|
||||
int kblockd_schedule_work(struct work_struct *work);
|
||||
@@ -1746,6 +1774,7 @@ static inline void blk_ksm_unregister(struct request_queue *q) { }
|
||||
|
||||
|
||||
struct block_device_operations {
|
||||
blk_qc_t (*submit_bio) (struct bio *bio);
|
||||
int (*open) (struct block_device *, fmode_t);
|
||||
void (*release) (struct gendisk *, fmode_t);
|
||||
int (*rw_page)(struct block_device *, sector_t, struct page *, unsigned int);
|
||||
@@ -1753,8 +1782,6 @@ struct block_device_operations {
|
||||
int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);
|
||||
unsigned int (*check_events) (struct gendisk *disk,
|
||||
unsigned int clearing);
|
||||
/* ->media_changed() is DEPRECATED, use ->check_events() instead */
|
||||
int (*media_changed) (struct gendisk *);
|
||||
void (*unlock_native_capacity) (struct gendisk *);
|
||||
int (*revalidate_disk) (struct gendisk *);
|
||||
int (*getgeo)(struct block_device *, struct hd_geometry *);
|
||||
@@ -1834,52 +1861,6 @@ static inline bool blk_req_can_dispatch_to_zone(struct request *rq)
|
||||
}
|
||||
#endif /* CONFIG_BLK_DEV_ZONED */
|
||||
|
||||
#else /* CONFIG_BLOCK */
|
||||
|
||||
struct block_device;
|
||||
|
||||
/*
|
||||
* stubs for when the block layer is configured out
|
||||
*/
|
||||
#define buffer_heads_over_limit 0
|
||||
|
||||
static inline long nr_blockdev_pages(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct blk_plug {
|
||||
};
|
||||
|
||||
static inline void blk_start_plug(struct blk_plug *plug)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void blk_finish_plug(struct blk_plug *plug)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void blk_flush_plug(struct task_struct *task)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void blk_schedule_flush_plug(struct task_struct *task)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static inline bool blk_needs_flush_plug(struct task_struct *tsk)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_BLOCK */
|
||||
|
||||
static inline void blk_wake_io_task(struct task_struct *waiter)
|
||||
{
|
||||
/*
|
||||
@@ -1893,7 +1874,6 @@ static inline void blk_wake_io_task(struct task_struct *waiter)
|
||||
wake_up_process(waiter);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
unsigned long disk_start_io_acct(struct gendisk *disk, unsigned int sectors,
|
||||
unsigned int op);
|
||||
void disk_end_io_acct(struct gendisk *disk, unsigned int op,
|
||||
@@ -1919,6 +1899,53 @@ static inline void bio_end_io_acct(struct bio *bio, unsigned long start_time)
|
||||
{
|
||||
return disk_end_io_acct(bio->bi_disk, bio_op(bio), start_time);
|
||||
}
|
||||
#endif /* CONFIG_BLOCK */
|
||||
|
||||
int bdev_read_only(struct block_device *bdev);
|
||||
int set_blocksize(struct block_device *bdev, int size);
|
||||
|
||||
const char *bdevname(struct block_device *bdev, char *buffer);
|
||||
struct block_device *lookup_bdev(const char *);
|
||||
|
||||
void blkdev_show(struct seq_file *seqf, off_t offset);
|
||||
|
||||
#define BDEVNAME_SIZE 32 /* Largest string for a blockdev identifier */
|
||||
#define BDEVT_SIZE 10 /* Largest string for MAJ:MIN for blkdev */
|
||||
#ifdef CONFIG_BLOCK
|
||||
#define BLKDEV_MAJOR_MAX 512
|
||||
#else
|
||||
#define BLKDEV_MAJOR_MAX 0
|
||||
#endif
|
||||
|
||||
int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder);
|
||||
struct block_device *blkdev_get_by_path(const char *path, fmode_t mode,
|
||||
void *holder);
|
||||
struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder);
|
||||
int bd_prepare_to_claim(struct block_device *bdev, struct block_device *whole,
|
||||
void *holder);
|
||||
void bd_abort_claiming(struct block_device *bdev, struct block_device *whole,
|
||||
void *holder);
|
||||
void blkdev_put(struct block_device *bdev, fmode_t mode);
|
||||
|
||||
struct block_device *I_BDEV(struct inode *inode);
|
||||
struct block_device *bdget(dev_t);
|
||||
struct block_device *bdgrab(struct block_device *bdev);
|
||||
void bdput(struct block_device *);
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
void invalidate_bdev(struct block_device *bdev);
|
||||
int sync_blockdev(struct block_device *bdev);
|
||||
#else
|
||||
static inline void invalidate_bdev(struct block_device *bdev)
|
||||
{
|
||||
}
|
||||
static inline int sync_blockdev(struct block_device *bdev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
int fsync_bdev(struct block_device *bdev);
|
||||
|
||||
struct super_block *freeze_bdev(struct block_device *bdev);
|
||||
int thaw_bdev(struct block_device *bdev, struct super_block *sb);
|
||||
|
||||
#endif /* _LINUX_BLKDEV_H */
|
||||
|
Reference in New Issue
Block a user