mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block
Pull core block IO changes from Jens Axboe:
"The major piece in here is the immutable bio_ve series from Kent, the
rest is fairly minor. It was supposed to go in last round, but
various issues pushed it to this release instead. The pull request
contains:
- Various smaller blk-mq fixes from different folks. Nothing major
here, just minor fixes and cleanups.
- Fix for a memory leak in the error path in the block ioctl code
from Christian Engelmayer.
- Header export fix from CaiZhiyong.
- Finally the immutable biovec changes from Kent Overstreet. This
enables some nice future work on making arbitrarily sized bios
possible, and splitting more efficient. Related fixes to immutable
bio_vecs:
- dm-cache immutable fixup from Mike Snitzer.
- btrfs immutable fixup from Muthu Kumar.
- bio-integrity fix from Nic Bellinger, which is also going to stable"
* 'for-3.14/core' of git://git.kernel.dk/linux-block: (44 commits)
xtensa: fixup simdisk driver to work with immutable bio_vecs
block/blk-mq-cpu.c: use hotcpu_notifier()
blk-mq: for_each_* macro correctness
block: Fix memory leak in rw_copy_check_uvector() handling
bio-integrity: Fix bio_integrity_verify segment start bug
block: remove unrelated header files and export symbol
blk-mq: uses page->list incorrectly
blk-mq: use __smp_call_function_single directly
btrfs: fix missing increment of bi_remaining
Revert "block: Warn and free bio if bi_end_io is not set"
block: Warn and free bio if bi_end_io is not set
blk-mq: fix initializing request's start time
block: blk-mq: don't export blk_mq_free_queue()
block: blk-mq: make blk_sync_queue support mq
block: blk-mq: support draining mq queue
dm cache: increment bi_remaining when bi_end_io is restored
block: fixup for generic bio chaining
block: Really silence spurious compiler warnings
block: Silence spurious compiler warnings
block: Kill bio_pair_split()
...
This commit is contained in:
commit
f568849eda
139 changed files with 2144 additions and 2683 deletions
40
mm/bounce.c
40
mm/bounce.c
|
|
@ -98,27 +98,24 @@ int init_emergency_isa_pool(void)
|
|||
static void copy_to_high_bio_irq(struct bio *to, struct bio *from)
|
||||
{
|
||||
unsigned char *vfrom;
|
||||
struct bio_vec *tovec, *fromvec;
|
||||
int i;
|
||||
struct bio_vec tovec, *fromvec = from->bi_io_vec;
|
||||
struct bvec_iter iter;
|
||||
|
||||
bio_for_each_segment(tovec, to, i) {
|
||||
fromvec = from->bi_io_vec + i;
|
||||
bio_for_each_segment(tovec, to, iter) {
|
||||
if (tovec.bv_page != fromvec->bv_page) {
|
||||
/*
|
||||
* fromvec->bv_offset and fromvec->bv_len might have
|
||||
* been modified by the block layer, so use the original
|
||||
* copy, bounce_copy_vec already uses tovec->bv_len
|
||||
*/
|
||||
vfrom = page_address(fromvec->bv_page) +
|
||||
tovec.bv_offset;
|
||||
|
||||
/*
|
||||
* not bounced
|
||||
*/
|
||||
if (tovec->bv_page == fromvec->bv_page)
|
||||
continue;
|
||||
bounce_copy_vec(&tovec, vfrom);
|
||||
flush_dcache_page(tovec.bv_page);
|
||||
}
|
||||
|
||||
/*
|
||||
* fromvec->bv_offset and fromvec->bv_len might have been
|
||||
* modified by the block layer, so use the original copy,
|
||||
* bounce_copy_vec already uses tovec->bv_len
|
||||
*/
|
||||
vfrom = page_address(fromvec->bv_page) + tovec->bv_offset;
|
||||
|
||||
bounce_copy_vec(tovec, vfrom);
|
||||
flush_dcache_page(tovec->bv_page);
|
||||
fromvec++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -201,13 +198,14 @@ static void __blk_queue_bounce(struct request_queue *q, struct bio **bio_orig,
|
|||
{
|
||||
struct bio *bio;
|
||||
int rw = bio_data_dir(*bio_orig);
|
||||
struct bio_vec *to, *from;
|
||||
struct bio_vec *to, from;
|
||||
struct bvec_iter iter;
|
||||
unsigned i;
|
||||
|
||||
if (force)
|
||||
goto bounce;
|
||||
bio_for_each_segment(from, *bio_orig, i)
|
||||
if (page_to_pfn(from->bv_page) > queue_bounce_pfn(q))
|
||||
bio_for_each_segment(from, *bio_orig, iter)
|
||||
if (page_to_pfn(from.bv_page) > queue_bounce_pfn(q))
|
||||
goto bounce;
|
||||
|
||||
return;
|
||||
|
|
|
|||
10
mm/page_io.c
10
mm/page_io.c
|
|
@ -31,13 +31,13 @@ static struct bio *get_swap_bio(gfp_t gfp_flags,
|
|||
|
||||
bio = bio_alloc(gfp_flags, 1);
|
||||
if (bio) {
|
||||
bio->bi_sector = map_swap_page(page, &bio->bi_bdev);
|
||||
bio->bi_sector <<= PAGE_SHIFT - 9;
|
||||
bio->bi_iter.bi_sector = map_swap_page(page, &bio->bi_bdev);
|
||||
bio->bi_iter.bi_sector <<= PAGE_SHIFT - 9;
|
||||
bio->bi_io_vec[0].bv_page = page;
|
||||
bio->bi_io_vec[0].bv_len = PAGE_SIZE;
|
||||
bio->bi_io_vec[0].bv_offset = 0;
|
||||
bio->bi_vcnt = 1;
|
||||
bio->bi_size = PAGE_SIZE;
|
||||
bio->bi_iter.bi_size = PAGE_SIZE;
|
||||
bio->bi_end_io = end_io;
|
||||
}
|
||||
return bio;
|
||||
|
|
@ -62,7 +62,7 @@ void end_swap_bio_write(struct bio *bio, int err)
|
|||
printk(KERN_ALERT "Write-error on swap-device (%u:%u:%Lu)\n",
|
||||
imajor(bio->bi_bdev->bd_inode),
|
||||
iminor(bio->bi_bdev->bd_inode),
|
||||
(unsigned long long)bio->bi_sector);
|
||||
(unsigned long long)bio->bi_iter.bi_sector);
|
||||
ClearPageReclaim(page);
|
||||
}
|
||||
end_page_writeback(page);
|
||||
|
|
@ -80,7 +80,7 @@ void end_swap_bio_read(struct bio *bio, int err)
|
|||
printk(KERN_ALERT "Read-error on swap-device (%u:%u:%Lu)\n",
|
||||
imajor(bio->bi_bdev->bd_inode),
|
||||
iminor(bio->bi_bdev->bd_inode),
|
||||
(unsigned long long)bio->bi_sector);
|
||||
(unsigned long long)bio->bi_iter.bi_sector);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue