mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
Merge branch 'for-4.12/block' of git://git.kernel.dk/linux-block
Pull block layer updates from Jens Axboe: - Add BFQ IO scheduler under the new blk-mq scheduling framework. BFQ was initially a fork of CFQ, but subsequently changed to implement fairness based on B-WF2Q+, a modified variant of WF2Q. BFQ is meant to be used on desktop type single drives, providing good fairness. From Paolo. - Add Kyber IO scheduler. This is a full multiqueue aware scheduler, using a scalable token based algorithm that throttles IO based on live completion IO stats, similary to blk-wbt. From Omar. - A series from Jan, moving users to separately allocated backing devices. This continues the work of separating backing device life times, solving various problems with hot removal. - A series of updates for lightnvm, mostly from Javier. Includes a 'pblk' target that exposes an open channel SSD as a physical block device. - A series of fixes and improvements for nbd from Josef. - A series from Omar, removing queue sharing between devices on mostly legacy drivers. This helps us clean up other bits, if we know that a queue only has a single device backing. This has been overdue for more than a decade. - Fixes for the blk-stats, and improvements to unify the stats and user windows. This both improves blk-wbt, and enables other users to register a need to receive IO stats for a device. From Omar. - blk-throttle improvements from Shaohua. This provides a scalable framework for implementing scalable priotization - particularly for blk-mq, but applicable to any type of block device. The interface is marked experimental for now. - Bucketized IO stats for IO polling from Stephen Bates. This improves efficiency of polled workloads in the presence of mixed block size IO. - A few fixes for opal, from Scott. - A few pulls for NVMe, including a lot of fixes for NVMe-over-fabrics. From a variety of folks, mostly Sagi and James Smart. - A series from Bart, improving our exposed info and capabilities from the blk-mq debugfs support. - A series from Christoph, cleaning up how handle WRITE_ZEROES. - A series from Christoph, cleaning up the block layer handling of how we track errors in a request. On top of being a nice cleanup, it also shrinks the size of struct request a bit. - Removal of mg_disk and hd (sorry Linus) by Christoph. The former was never used by platforms, and the latter has outlived it's usefulness. - Various little bug fixes and cleanups from a wide variety of folks. * 'for-4.12/block' of git://git.kernel.dk/linux-block: (329 commits) block: hide badblocks attribute by default blk-mq: unify hctx delay_work and run_work block: add kblock_mod_delayed_work_on() blk-mq: unify hctx delayed_run_work and run_work nbd: fix use after free on module unload MAINTAINERS: bfq: Add Paolo as maintainer for the BFQ I/O scheduler blk-mq-sched: alloate reserved tags out of normal pool mtip32xx: use runtime tag to initialize command header scsi: Implement blk_mq_ops.show_rq() blk-mq: Add blk_mq_ops.show_rq() blk-mq: Show operation, cmd_flags and rq_flags names blk-mq: Make blk_flags_show() callers append a newline character blk-mq: Move the "state" debugfs attribute one level down blk-mq: Unregister debugfs attributes earlier blk-mq: Only unregister hctxs for which registration succeeded blk-mq-debugfs: Rename functions for registering and unregistering the mq directory blk-mq: Let blk_mq_debugfs_register() look up the queue name blk-mq: Register <dev>/queue/mq after having registered <dev>/queue ide-pm: always pass 0 error to ide_complete_rq in ide_do_devset ide-pm: always pass 0 error to __blk_end_request_all ..
This commit is contained in:
commit
694752922b
255 changed files with 24643 additions and 6152 deletions
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
#include "mtdcore.h"
|
||||
|
||||
static struct backing_dev_info *mtd_bdi;
|
||||
struct backing_dev_info *mtd_bdi;
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
|
||||
|
|
@ -496,11 +496,9 @@ int add_mtd_device(struct mtd_info *mtd)
|
|||
* mtd_device_parse_register() multiple times on the same master MTD,
|
||||
* especially with CONFIG_MTD_PARTITIONED_MASTER=y.
|
||||
*/
|
||||
if (WARN_ONCE(mtd->backing_dev_info, "MTD already registered\n"))
|
||||
if (WARN_ONCE(mtd->dev.type, "MTD already registered\n"))
|
||||
return -EEXIST;
|
||||
|
||||
mtd->backing_dev_info = mtd_bdi;
|
||||
|
||||
BUG_ON(mtd->writesize == 0);
|
||||
mutex_lock(&mtd_table_mutex);
|
||||
|
||||
|
|
@ -1775,13 +1773,18 @@ static struct backing_dev_info * __init mtd_bdi_init(char *name)
|
|||
struct backing_dev_info *bdi;
|
||||
int ret;
|
||||
|
||||
bdi = kzalloc(sizeof(*bdi), GFP_KERNEL);
|
||||
bdi = bdi_alloc(GFP_KERNEL);
|
||||
if (!bdi)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
ret = bdi_setup_and_register(bdi, name);
|
||||
bdi->name = name;
|
||||
/*
|
||||
* We put '-0' suffix to the name to get the same name format as we
|
||||
* used to get. Since this is called only once, we get a unique name.
|
||||
*/
|
||||
ret = bdi_register(bdi, "%.28s-0", name);
|
||||
if (ret)
|
||||
kfree(bdi);
|
||||
bdi_put(bdi);
|
||||
|
||||
return ret ? ERR_PTR(ret) : bdi;
|
||||
}
|
||||
|
|
@ -1813,8 +1816,7 @@ static int __init init_mtd(void)
|
|||
out_procfs:
|
||||
if (proc_mtd)
|
||||
remove_proc_entry("mtd", NULL);
|
||||
bdi_destroy(mtd_bdi);
|
||||
kfree(mtd_bdi);
|
||||
bdi_put(mtd_bdi);
|
||||
err_bdi:
|
||||
class_unregister(&mtd_class);
|
||||
err_reg:
|
||||
|
|
@ -1828,8 +1830,7 @@ static void __exit cleanup_mtd(void)
|
|||
if (proc_mtd)
|
||||
remove_proc_entry("mtd", NULL);
|
||||
class_unregister(&mtd_class);
|
||||
bdi_destroy(mtd_bdi);
|
||||
kfree(mtd_bdi);
|
||||
bdi_put(mtd_bdi);
|
||||
idr_destroy(&mtd_idr);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include <linux/ctype.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/major.h>
|
||||
#include <linux/backing-dev.h>
|
||||
|
||||
/*
|
||||
* compare superblocks to see if they're equivalent
|
||||
|
|
@ -38,6 +39,8 @@ static int get_sb_mtd_compare(struct super_block *sb, void *_mtd)
|
|||
return 0;
|
||||
}
|
||||
|
||||
extern struct backing_dev_info *mtd_bdi;
|
||||
|
||||
/*
|
||||
* mark the superblock by the MTD device it is using
|
||||
* - set the device number to be the correct MTD block device for pesuperstence
|
||||
|
|
@ -49,7 +52,8 @@ static int get_sb_mtd_set(struct super_block *sb, void *_mtd)
|
|||
|
||||
sb->s_mtd = mtd;
|
||||
sb->s_dev = MKDEV(MTD_BLOCK_MAJOR, mtd->index);
|
||||
sb->s_bdi = mtd->backing_dev_info;
|
||||
sb->s_bdi = bdi_get(mtd_bdi);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -347,7 +347,7 @@ static int ubiblock_init_request(void *data, struct request *req,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct blk_mq_ops ubiblock_mq_ops = {
|
||||
static const struct blk_mq_ops ubiblock_mq_ops = {
|
||||
.queue_rq = ubiblock_queue_rq,
|
||||
.init_request = ubiblock_init_request,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue