Merge tag 'for-5.9/block-20200802' of git://git.kernel.dk/linux-block
Pull core block updates from Jens Axboe: "Good amount of cleanups and tech debt removals in here, and as a result, the diffstat shows a nice net reduction in code. - Softirq completion cleanups (Christoph) - Stop using ->queuedata (Christoph) - Cleanup bd claiming (Christoph) - Use check_events, moving away from the legacy media change (Christoph) - Use inode i_blkbits consistently (Christoph) - Remove old unused writeback congestion bits (Christoph) - Cleanup/unify submission path (Christoph) - Use bio_uninit consistently, instead of bio_disassociate_blkg (Christoph) - sbitmap cleared bits handling (John) - Request merging blktrace event addition (Jan) - sysfs add/remove race fixes (Luis) - blk-mq tag fixes/optimizations (Ming) - Duplicate words in comments (Randy) - Flush deferral cleanup (Yufen) - IO context locking/retry fixes (John) - struct_size() usage (Gustavo) - blk-iocost fixes (Chengming) - blk-cgroup IO stats fixes (Boris) - Various little fixes" * tag 'for-5.9/block-20200802' of git://git.kernel.dk/linux-block: (135 commits) block: blk-timeout: delete duplicated word block: blk-mq-sched: delete duplicated word block: blk-mq: delete duplicated word block: genhd: delete duplicated words block: elevator: delete duplicated word and fix typos block: bio: delete duplicated words block: bfq-iosched: fix duplicated word iocost_monitor: start from the oldest usage index iocost: Fix check condition of iocg abs_vdebt block: Remove callback typedefs for blk_mq_ops block: Use non _rcu version of list functions for tag_set_list 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 ...
This commit is contained in:
@@ -471,45 +471,6 @@ struct address_space {
|
||||
* must be enforced here for CRIS, to let the least significant bit
|
||||
* of struct page's "mapping" pointer be used for PAGE_MAPPING_ANON.
|
||||
*/
|
||||
struct request_queue;
|
||||
|
||||
struct block_device {
|
||||
dev_t bd_dev; /* not a kdev_t - it's a search key */
|
||||
int bd_openers;
|
||||
struct inode * bd_inode; /* will die */
|
||||
struct super_block * bd_super;
|
||||
struct mutex bd_mutex; /* open/close mutex */
|
||||
void * bd_claiming;
|
||||
void * bd_holder;
|
||||
int bd_holders;
|
||||
bool bd_write_holder;
|
||||
#ifdef CONFIG_SYSFS
|
||||
struct list_head bd_holder_disks;
|
||||
#endif
|
||||
struct block_device * bd_contains;
|
||||
unsigned bd_block_size;
|
||||
u8 bd_partno;
|
||||
struct hd_struct * bd_part;
|
||||
/* number of times partitions within this device have been opened. */
|
||||
unsigned bd_part_count;
|
||||
int bd_invalidated;
|
||||
struct gendisk * bd_disk;
|
||||
struct request_queue * bd_queue;
|
||||
struct backing_dev_info *bd_bdi;
|
||||
struct list_head bd_list;
|
||||
/*
|
||||
* Private data. You must have bd_claim'ed the block_device
|
||||
* to use this. NOTE: bd_claim allows an owner to claim
|
||||
* the same device multiple times, the owner must take special
|
||||
* care to not mess up bd_private for that case.
|
||||
*/
|
||||
unsigned long bd_private;
|
||||
|
||||
/* The counter of freeze processes */
|
||||
int bd_fsfreeze_count;
|
||||
/* Mutex for freeze */
|
||||
struct mutex bd_fsfreeze_mutex;
|
||||
} __randomize_layout;
|
||||
|
||||
/* XArray tags, for tagging dirty and writeback pages in the pagecache. */
|
||||
#define PAGECACHE_TAG_DIRTY XA_MARK_0
|
||||
@@ -908,8 +869,6 @@ static inline unsigned imajor(const struct inode *inode)
|
||||
return MAJOR(inode->i_rdev);
|
||||
}
|
||||
|
||||
extern struct block_device *I_BDEV(struct inode *inode);
|
||||
|
||||
struct fown_struct {
|
||||
rwlock_t lock; /* protects pid, uid, euid fields */
|
||||
struct pid *pid; /* pid or -pgrp where SIGIO should be sent */
|
||||
@@ -1776,14 +1735,6 @@ struct dir_context {
|
||||
loff_t pos;
|
||||
};
|
||||
|
||||
struct block_device_operations;
|
||||
|
||||
/* These macros are for out of kernel modules to test that
|
||||
* the kernel supports the unlocked_ioctl and compat_ioctl
|
||||
* fields in struct file_operations. */
|
||||
#define HAVE_COMPAT_IOCTL 1
|
||||
#define HAVE_UNLOCKED_IOCTL 1
|
||||
|
||||
/*
|
||||
* These flags let !MMU mmap() govern direct device mapping vs immediate
|
||||
* copying more easily for MAP_PRIVATE, especially for ROM filesystems.
|
||||
@@ -2265,18 +2216,9 @@ struct file_system_type {
|
||||
|
||||
#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern struct dentry *mount_bdev(struct file_system_type *fs_type,
|
||||
int flags, const char *dev_name, void *data,
|
||||
int (*fill_super)(struct super_block *, void *, int));
|
||||
#else
|
||||
static inline struct dentry *mount_bdev(struct file_system_type *fs_type,
|
||||
int flags, const char *dev_name, void *data,
|
||||
int (*fill_super)(struct super_block *, void *, int))
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
#endif
|
||||
extern struct dentry *mount_single(struct file_system_type *fs_type,
|
||||
int flags, void *data,
|
||||
int (*fill_super)(struct super_block *, void *, int));
|
||||
@@ -2285,14 +2227,7 @@ extern struct dentry *mount_nodev(struct file_system_type *fs_type,
|
||||
int (*fill_super)(struct super_block *, void *, int));
|
||||
extern struct dentry *mount_subtree(struct vfsmount *mnt, const char *path);
|
||||
void generic_shutdown_super(struct super_block *sb);
|
||||
#ifdef CONFIG_BLOCK
|
||||
void kill_block_super(struct super_block *sb);
|
||||
#else
|
||||
static inline void kill_block_super(struct super_block *sb)
|
||||
{
|
||||
BUG();
|
||||
}
|
||||
#endif
|
||||
void kill_anon_super(struct super_block *sb);
|
||||
void kill_litter_super(struct super_block *sb);
|
||||
void deactivate_super(struct super_block *sb);
|
||||
@@ -2582,93 +2517,16 @@ extern struct kmem_cache *names_cachep;
|
||||
#define __getname() kmem_cache_alloc(names_cachep, GFP_KERNEL)
|
||||
#define __putname(name) kmem_cache_free(names_cachep, (void *)(name))
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern int register_blkdev(unsigned int, const char *);
|
||||
extern void unregister_blkdev(unsigned int, const char *);
|
||||
extern struct block_device *bdget(dev_t);
|
||||
extern struct block_device *bdgrab(struct block_device *bdev);
|
||||
extern void bd_set_size(struct block_device *, loff_t size);
|
||||
extern void bd_forget(struct inode *inode);
|
||||
extern void bdput(struct block_device *);
|
||||
extern void invalidate_bdev(struct block_device *);
|
||||
extern void iterate_bdevs(void (*)(struct block_device *, void *), void *);
|
||||
extern int sync_blockdev(struct block_device *bdev);
|
||||
extern struct super_block *freeze_bdev(struct block_device *);
|
||||
extern void emergency_thaw_all(void);
|
||||
extern void emergency_thaw_bdev(struct super_block *sb);
|
||||
extern int thaw_bdev(struct block_device *bdev, struct super_block *sb);
|
||||
extern int fsync_bdev(struct block_device *);
|
||||
|
||||
extern struct super_block *blockdev_superblock;
|
||||
|
||||
static inline bool sb_is_blkdev_sb(struct super_block *sb)
|
||||
{
|
||||
return sb == blockdev_superblock;
|
||||
}
|
||||
#else
|
||||
static inline void bd_forget(struct inode *inode) {}
|
||||
static inline int sync_blockdev(struct block_device *bdev) { return 0; }
|
||||
static inline void invalidate_bdev(struct block_device *bdev) {}
|
||||
|
||||
static inline struct super_block *freeze_bdev(struct block_device *sb)
|
||||
{
|
||||
return NULL;
|
||||
return IS_ENABLED(CONFIG_BLOCK) && sb == blockdev_superblock;
|
||||
}
|
||||
|
||||
static inline int thaw_bdev(struct block_device *bdev, struct super_block *sb)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int emergency_thaw_bdev(struct super_block *sb)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void iterate_bdevs(void (*f)(struct block_device *, void *), void *arg)
|
||||
{
|
||||
}
|
||||
|
||||
static inline bool sb_is_blkdev_sb(struct super_block *sb)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
void emergency_thaw_all(void);
|
||||
extern int sync_filesystem(struct super_block *);
|
||||
extern const struct file_operations def_blk_fops;
|
||||
extern const struct file_operations def_chr_fops;
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern int blkdev_ioctl(struct block_device *, fmode_t, unsigned, unsigned long);
|
||||
extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long);
|
||||
extern int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder);
|
||||
extern struct block_device *blkdev_get_by_path(const char *path, fmode_t mode,
|
||||
void *holder);
|
||||
extern struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode,
|
||||
void *holder);
|
||||
extern struct block_device *bd_start_claiming(struct block_device *bdev,
|
||||
void *holder);
|
||||
extern void bd_finish_claiming(struct block_device *bdev,
|
||||
struct block_device *whole, void *holder);
|
||||
extern void bd_abort_claiming(struct block_device *bdev,
|
||||
struct block_device *whole, void *holder);
|
||||
extern void blkdev_put(struct block_device *bdev, fmode_t mode);
|
||||
|
||||
#ifdef CONFIG_SYSFS
|
||||
extern int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk);
|
||||
extern void bd_unlink_disk_holder(struct block_device *bdev,
|
||||
struct gendisk *disk);
|
||||
#else
|
||||
static inline int bd_link_disk_holder(struct block_device *bdev,
|
||||
struct gendisk *disk)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline void bd_unlink_disk_holder(struct block_device *bdev,
|
||||
struct gendisk *disk)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* fs/char_dev.c */
|
||||
#define CHRDEV_MAJOR_MAX 512
|
||||
@@ -2699,31 +2557,12 @@ static inline void unregister_chrdev(unsigned int major, const char *name)
|
||||
__unregister_chrdev(major, 0, 256, name);
|
||||
}
|
||||
|
||||
/* fs/block_dev.c */
|
||||
#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
|
||||
extern const char *bdevname(struct block_device *bdev, char *buffer);
|
||||
extern struct block_device *lookup_bdev(const char *);
|
||||
extern void blkdev_show(struct seq_file *,off_t);
|
||||
|
||||
#else
|
||||
#define BLKDEV_MAJOR_MAX 0
|
||||
#endif
|
||||
|
||||
extern void init_special_inode(struct inode *, umode_t, dev_t);
|
||||
|
||||
/* Invalid inode operations -- fs/bad_inode.c */
|
||||
extern void make_bad_inode(struct inode *);
|
||||
extern bool is_bad_inode(struct inode *);
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern int revalidate_disk(struct gendisk *);
|
||||
extern int check_disk_change(struct block_device *);
|
||||
extern int __invalidate_device(struct block_device *, bool);
|
||||
#endif
|
||||
unsigned long invalidate_mapping_pages(struct address_space *mapping,
|
||||
pgoff_t start, pgoff_t end);
|
||||
|
||||
@@ -3124,10 +2963,6 @@ static inline void remove_inode_hash(struct inode *inode)
|
||||
|
||||
extern void inode_sb_list_add(struct inode *inode);
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern int bdev_read_only(struct block_device *);
|
||||
#endif
|
||||
extern int set_blocksize(struct block_device *, int);
|
||||
extern int sb_set_blocksize(struct super_block *, int);
|
||||
extern int sb_min_blocksize(struct super_block *, int);
|
||||
|
||||
|
Reference in New Issue
Block a user