summaryrefslogtreecommitdiff
path: root/fs/btrfs/tree-log.c
diff options
context:
space:
mode:
authorKonstantin Khlebnikov <khlebnikov@yandex-team.ru>2016-11-27 19:32:32 +0300
committerSasha Levin <alexander.levin@verizon.com>2017-01-15 09:49:50 -0500
commite8b963dd533d52658b1213e2115b0bf22b98e491 (patch)
treeb09c1dee3c3ddba376e005c8563f7e39edbfdc9a /fs/btrfs/tree-log.c
parentb24ae852ddfe3de29604ec64acf59c822b7e7712 (diff)
md/raid5: limit request size according to implementation limits
[ Upstream commit e8d7c33232e5fdfa761c3416539bc5b4acd12db5 ] Current implementation employ 16bit counter of active stripes in lower bits of bio->bi_phys_segments. If request is big enough to overflow this counter bio will be completed and freed too early. Fortunately this not happens in default configuration because several other limits prevent that: stripe_cache_size * nr_disks effectively limits count of active stripes. And small max_sectors_kb at lower disks prevent that during normal read/write operations. Overflow easily happens in discard if it's enabled by module parameter "devices_handle_discard_safely" and stripe_cache_size is set big enough. This patch limits requests size with 256Mb - 8Kb to prevent overflows. Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> Cc: Shaohua Li <shli@kernel.org> Cc: Neil Brown <neilb@suse.com> Cc: stable@vger.kernel.org Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Diffstat (limited to 'fs/btrfs/tree-log.c')
0 files changed, 0 insertions, 0 deletions