summaryrefslogtreecommitdiffstats
path: root/fs/buffer.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2019-02-15 10:43:59 -0500
committerJens Axboe <axboe@kernel.dk>2019-02-15 10:43:59 -0500
commit6fb845f0e78de19eaaf6a2d351702474e44b6a9e (patch)
tree94c6474b38d8f59d8f0de0151053283812e456c6 /fs/buffer.c
parent56d18f62f556b80105e38e7975975cf7465aae3e (diff)
parentd13937116f1e82bf508a6325111b322c30c85eb9 (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.c19
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 }
240out_unlock: 241out_unlock:
241 spin_unlock(&bd_mapping->private_lock); 242 spin_unlock(&bd_mapping->private_lock);