diff options
author | Jens Axboe <axboe@kernel.dk> | 2019-02-15 10:43:59 -0500 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-02-15 10:43:59 -0500 |
commit | 6fb845f0e78de19eaaf6a2d351702474e44b6a9e (patch) | |
tree | 94c6474b38d8f59d8f0de0151053283812e456c6 /fs/buffer.c | |
parent | 56d18f62f556b80105e38e7975975cf7465aae3e (diff) | |
parent | d13937116f1e82bf508a6325111b322c30c85eb9 (diff) |
Merge tag 'v5.0-rc6' into for-5.1/block
Pull in 5.0-rc6 to avoid a dumb merge conflict with fs/iomap.c.
This is needed since io_uring is now based on the block branch,
to avoid a conflict between the multi-page bvecs and the bits
of io_uring that touch the core block parts.
* tag 'v5.0-rc6': (525 commits)
Linux 5.0-rc6
x86/mm: Make set_pmd_at() paravirt aware
MAINTAINERS: Update the ocores i2c bus driver maintainer, etc
blk-mq: remove duplicated definition of blk_mq_freeze_queue
Blk-iolatency: warn on negative inflight IO counter
blk-iolatency: fix IO hang due to negative inflight counter
MAINTAINERS: unify reference to xen-devel list
x86/mm/cpa: Fix set_mce_nospec()
futex: Handle early deadlock return correctly
futex: Fix barrier comment
net: dsa: b53: Fix for failure when irq is not defined in dt
blktrace: Show requests without sector
mips: cm: reprime error cause
mips: loongson64: remove unreachable(), fix loongson_poweroff().
sit: check if IPv6 enabled before calling ip6_err_gen_icmpv6_unreach()
geneve: should not call rt6_lookup() when ipv6 was disabled
KVM: nVMX: unconditionally cancel preemption timer in free_nested (CVE-2019-7221)
KVM: x86: work around leak of uninitialized stack contents (CVE-2019-7222)
kvm: fix kvm_ioctl_create_device() reference counting (CVE-2019-6974)
signal: Better detection of synchronous signals
...
Diffstat (limited to 'fs/buffer.c')
-rw-r--r-- | fs/buffer.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index 817871274c77..89a4e42b9aad 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
@@ -200,6 +200,7 @@ __find_get_block_slow(struct block_device *bdev, sector_t block) | |||
200 | struct buffer_head *head; | 200 | struct buffer_head *head; |
201 | struct page *page; | 201 | struct page *page; |
202 | int all_mapped = 1; | 202 | int all_mapped = 1; |
203 | static DEFINE_RATELIMIT_STATE(last_warned, HZ, 1); | ||
203 | 204 | ||
204 | index = block >> (PAGE_SHIFT - bd_inode->i_blkbits); | 205 | index = block >> (PAGE_SHIFT - bd_inode->i_blkbits); |
205 | page = find_get_page_flags(bd_mapping, index, FGP_ACCESSED); | 206 | page = find_get_page_flags(bd_mapping, index, FGP_ACCESSED); |
@@ -227,15 +228,15 @@ __find_get_block_slow(struct block_device *bdev, sector_t block) | |||
227 | * file io on the block device and getblk. It gets dealt with | 228 | * file io on the block device and getblk. It gets dealt with |
228 | * elsewhere, don't buffer_error if we had some unmapped buffers | 229 | * elsewhere, don't buffer_error if we had some unmapped buffers |
229 | */ | 230 | */ |
230 | if (all_mapped) { | 231 | ratelimit_set_flags(&last_warned, RATELIMIT_MSG_ON_RELEASE); |
231 | printk("__find_get_block_slow() failed. " | 232 | if (all_mapped && __ratelimit(&last_warned)) { |
232 | "block=%llu, b_blocknr=%llu\n", | 233 | printk("__find_get_block_slow() failed. block=%llu, " |
233 | (unsigned long long)block, | 234 | "b_blocknr=%llu, b_state=0x%08lx, b_size=%zu, " |
234 | (unsigned long long)bh->b_blocknr); | 235 | "device %pg blocksize: %d\n", |
235 | printk("b_state=0x%08lx, b_size=%zu\n", | 236 | (unsigned long long)block, |
236 | bh->b_state, bh->b_size); | 237 | (unsigned long long)bh->b_blocknr, |
237 | printk("device %pg blocksize: %d\n", bdev, | 238 | bh->b_state, bh->b_size, bdev, |
238 | 1 << bd_inode->i_blkbits); | 239 | 1 << bd_inode->i_blkbits); |
239 | } | 240 | } |
240 | out_unlock: | 241 | out_unlock: |
241 | spin_unlock(&bd_mapping->private_lock); | 242 | spin_unlock(&bd_mapping->private_lock); |