diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-10 12:26:55 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-10 12:26:55 -0400 |
| commit | dd76a786af1f09e9122e150d30156e094e2a94b4 (patch) | |
| tree | 97ff3d0d45d8df3294d3ec913eec728eb1c2ab57 /drivers/block | |
| parent | e7990d45bb88c2f0565b5ee4c32eefe81653faff (diff) | |
| parent | 360f92c2443073143467a0088daffec96a17910b (diff) | |
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
Pull block layer fixes from Jens Axboe:
"A small collection of fixes that should go in before -rc1. The pull
request contains:
- A two patch fix for a regression with block enabled tagging caused
by a commit in the initial pull request. One patch is from Martin
and ensures that SCSI doesn't truncate 64-bit block flags, the
other one is from me and prevents us from double using struct
request queuelist for both completion and busy tags. This caused
anything from a boot crash for some, to crashes under load.
- A blk-mq fix for a potential soft stall when hot unplugging CPUs
with busy IO.
- percpu_counter fix is listed in here, that caused a suspend issue
with virtio-blk due to percpu counters having an inconsistent state
during CPU removal. Andrew sent this in separately a few days ago,
but it's here. JFYI.
- A few fixes for block integrity from Martin.
- A ratelimit fix for loop from Mike Galbraith, to avoid spewing too
much in error cases"
* 'for-linus' of git://git.kernel.dk/linux-block:
block: fix regression with block enabled tagging
scsi: Make sure cmd_flags are 64-bit
block: Ensure we only enable integrity metadata for reads and writes
block: Fix integrity verification
block: Fix for_each_bvec()
drivers/block/loop.c: ratelimit error messages
blk-mq: fix potential stall during CPU unplug with IO pending
percpu_counter: fix bad counter state during suspend
Diffstat (limited to 'drivers/block')
| -rw-r--r-- | drivers/block/loop.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 66e8c3b94ef3..f70a230a2945 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c | |||
| @@ -237,7 +237,7 @@ static int __do_lo_send_write(struct file *file, | |||
| 237 | file_end_write(file); | 237 | file_end_write(file); |
| 238 | if (likely(bw == len)) | 238 | if (likely(bw == len)) |
| 239 | return 0; | 239 | return 0; |
| 240 | printk(KERN_ERR "loop: Write error at byte offset %llu, length %i.\n", | 240 | printk_ratelimited(KERN_ERR "loop: Write error at byte offset %llu, length %i.\n", |
| 241 | (unsigned long long)pos, len); | 241 | (unsigned long long)pos, len); |
| 242 | if (bw >= 0) | 242 | if (bw >= 0) |
| 243 | bw = -EIO; | 243 | bw = -EIO; |
| @@ -277,7 +277,7 @@ static int do_lo_send_write(struct loop_device *lo, struct bio_vec *bvec, | |||
| 277 | return __do_lo_send_write(lo->lo_backing_file, | 277 | return __do_lo_send_write(lo->lo_backing_file, |
| 278 | page_address(page), bvec->bv_len, | 278 | page_address(page), bvec->bv_len, |
| 279 | pos); | 279 | pos); |
| 280 | printk(KERN_ERR "loop: Transfer error at byte offset %llu, " | 280 | printk_ratelimited(KERN_ERR "loop: Transfer error at byte offset %llu, " |
| 281 | "length %i.\n", (unsigned long long)pos, bvec->bv_len); | 281 | "length %i.\n", (unsigned long long)pos, bvec->bv_len); |
| 282 | if (ret > 0) | 282 | if (ret > 0) |
| 283 | ret = -EIO; | 283 | ret = -EIO; |
| @@ -316,7 +316,7 @@ static int lo_send(struct loop_device *lo, struct bio *bio, loff_t pos) | |||
| 316 | out: | 316 | out: |
| 317 | return ret; | 317 | return ret; |
| 318 | fail: | 318 | fail: |
| 319 | printk(KERN_ERR "loop: Failed to allocate temporary page for write.\n"); | 319 | printk_ratelimited(KERN_ERR "loop: Failed to allocate temporary page for write.\n"); |
| 320 | ret = -ENOMEM; | 320 | ret = -ENOMEM; |
| 321 | goto out; | 321 | goto out; |
| 322 | } | 322 | } |
| @@ -345,7 +345,7 @@ lo_splice_actor(struct pipe_inode_info *pipe, struct pipe_buffer *buf, | |||
| 345 | size = p->bsize; | 345 | size = p->bsize; |
| 346 | 346 | ||
| 347 | if (lo_do_transfer(lo, READ, page, buf->offset, p->page, p->offset, size, IV)) { | 347 | if (lo_do_transfer(lo, READ, page, buf->offset, p->page, p->offset, size, IV)) { |
| 348 | printk(KERN_ERR "loop: transfer error block %ld\n", | 348 | printk_ratelimited(KERN_ERR "loop: transfer error block %ld\n", |
| 349 | page->index); | 349 | page->index); |
| 350 | size = -EINVAL; | 350 | size = -EINVAL; |
| 351 | } | 351 | } |
