All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] falloc on blockdevice:  what possibly can go whong?
@ 2017-04-06 12:02 Dmitry Monakhov
  2017-04-06 12:02 ` [PATCH 1/5] bh: Prevent panic on invalid BHs Dmitry Monakhov
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Dmitry Monakhov @ 2017-04-06 12:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: darrick.wong, axboe, tytso, jack, hch, Dmitry Monakhov

If you saw a command "fallocate -k -l 1G /dev/vda" you probably think
that user want to preallocate space on thin-provision blkdev. Right?
What possibly can go wrong? Unfortunately you may destroy your filesystem
and kernel panic. The reason is the bug in blkdev_fallocate() which
unconditionally truncate bdev cache. But even if we fix this particular bug
there are other places where we still have to truncate blkdev cache even
if FS is mounted and holds some bh's

1) nbd: If server disconnected we call kill_bdev() which destroy bdev cache
2) bdev falloc{ FALLOC_FL_ZERO_RANGE, FALLOC_FL_PUNCH_HOLE } definitely
   expect bdev cache to be truncated.
3) ioctl: BLKDISCARD also must truncate bdev cache

There is a discussion whenever we have to permit (2) and (3) on bdev with
active filesytem, why shouldn't we force bd_claim for this? But this is
advisory user-space interface, because by historical reasons we allow
direct_io to blkdev while fs is mounted.

I prefer to treat all three cases while FS is mounted as runtime errors.
Fs may be corrupted, but we should not panic.
This patchset guard fs/blk layer from panic in case of such runtime errors.
0001-bh-Prevent-panic-on-invalid-BHs
0002-block-protect-bdevname-from-null-pointer-bdev
0003-bio-Protect-submit_bio-from-bdevless-bio-s
0004-jbd2-use-stable-bdev-pointer
# Finally fix the bug with unconditional cache truncate on bdev
0005-block-truncate-page-cache-only-when-necessary-on-falloc

Testcases:
  xfstests: ./check blockdev/004 blockdev/005
  https://github.com/dmonakhov/xfstests/tree/blkdev-falloc-tests-v1

TODO: Prepare patch for util-linux fallocate(2) should claim bdev.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-04-06 16:01 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-06 12:02 [PATCH 0/5] falloc on blockdevice: what possibly can go whong? Dmitry Monakhov
2017-04-06 12:02 ` [PATCH 1/5] bh: Prevent panic on invalid BHs Dmitry Monakhov
2017-04-06 15:42   ` Christoph Hellwig
2017-04-06 16:01     ` Dmitry Monakhov
2017-04-06 12:02 ` [PATCH 2/5] block: protect bdevname from null pointer bdev Dmitry Monakhov
2017-04-06 12:02 ` [PATCH 3/5] bio: Protect submit_bio from bdevless bio-s Dmitry Monakhov
2017-04-06 12:02 ` [PATCH 4/5] jbd2: use stable bdev pointer Dmitry Monakhov
2017-04-06 12:02 ` [PATCH 5/5] block: truncate page cache only when necessary on fallocate Dmitry Monakhov
2017-04-06 15:43   ` Christoph Hellwig
2017-04-06 15:51     ` Dmitry Monakhov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.