mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-17 02:02:53 -04:00
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Allow noflush suspend/resume of device-mapper device only for the case
where the device size is unchanged.
Otherwise, dm-multipath devices can stall when resumed if noflush was used
when suspending them, all paths have failed and queue_if_no_path is set.
Explanation:
1. Something is doing fsync() on the block dev,
holding inode->i_sem
2. The fsync write is blocked by all-paths-down and queue_if_no_path
3. Someone requests to suspend the dm device with noflush.
Pending writes are left in queue.
4. In the middle of dm_resume(), __bind() tries to get
inode->i_sem to do __set_size() and waits forever.
'noflush suspend' is a new device-mapper feature introduced in
early 2.6.20. So I hope the fix being included before 2.6.20 is
released.
Example of reproducer:
1. Create a multipath device by dmsetup
2. Fail all paths during mkfs
3. Do dmsetup suspend --noflush and load new map with healthy paths
4. Do dmsetup resume
Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
Acked-by: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||
| .. | ||
| raid6test | ||
| .gitignore | ||
| bitmap.c | ||
| dm-bio-list.h | ||
| dm-bio-record.h | ||
| dm-crypt.c | ||
| dm-emc.c | ||
| dm-exception-store.c | ||
| dm-hw-handler.c | ||
| dm-hw-handler.h | ||
| dm-io.c | ||
| dm-io.h | ||
| dm-ioctl.c | ||
| dm-linear.c | ||
| dm-log.c | ||
| dm-log.h | ||
| dm-mpath.c | ||
| dm-mpath.h | ||
| dm-path-selector.c | ||
| dm-path-selector.h | ||
| dm-raid1.c | ||
| dm-round-robin.c | ||
| dm-snap.c | ||
| dm-snap.h | ||
| dm-stripe.c | ||
| dm-table.c | ||
| dm-target.c | ||
| dm-zero.c | ||
| dm.c | ||
| dm.h | ||
| faulty.c | ||
| Kconfig | ||
| kcopyd.c | ||
| kcopyd.h | ||
| linear.c | ||
| Makefile | ||
| md.c | ||
| mktables.c | ||
| multipath.c | ||
| raid0.c | ||
| raid1.c | ||
| raid5.c | ||
| raid6.h | ||
| raid6algos.c | ||
| raid6altivec.uc | ||
| raid6int.uc | ||
| raid6mmx.c | ||
| raid6recov.c | ||
| raid6sse1.c | ||
| raid6sse2.c | ||
| raid6x86.h | ||
| raid10.c | ||
| unroll.pl | ||
| xor.c | ||