linux_dsm_epyc7002/drivers
Joe Thornber a9d45396f5 dm transaction manager: fix corruption due to non-atomic transaction commit
The persistent-data library used by dm-thin, dm-cache, etc is
transactional.  If anything goes wrong, such as an io error when writing
new metadata or a power failure, then we roll back to the last
transaction.

Atomicity when committing a transaction is achieved by:

a) Never overwriting data from the previous transaction.
b) Writing the superblock last, after all other metadata has hit the
   disk.

This commit and the following commit ("dm: take care to copy the space
map roots before locking the superblock") fix a bug associated with (b).
When committing it was possible for the superblock to still be written
in spite of an io error occurring during the preceeding metadata flush.
With these commits we're careful not to take the write lock out on the
superblock until after the metadata flush has completed.

Change the transaction manager's semantics for dm_tm_commit() to assume
all data has been flushed _before_ the single superblock that is passed
in.

As a prerequisite, split the block manager's block unlocking and
flushing by simplifying dm_bm_flush_and_unlock() to dm_bm_flush().  Now
the unlocking must be done separately.

This issue was discovered by forcing io errors at the crucial time
using dm-flakey.

Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org
2014-03-27 16:56:23 -04:00
..
accessibility
acpi ACPI / sleep: Add extra checks for HW Reduced ACPI mode sleep states 2014-03-13 22:11:39 +01:00
amba
ata Merge branch 'for-3.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2014-03-10 12:56:24 -07:00
atm
auxdisplay
base PM / hibernate: Fix restore hang in freeze_processes() 2014-02-26 01:13:15 +01:00
bcma
block mtip32xx: fix bad use of smp_processor_id() 2014-03-10 14:32:47 -06:00
bluetooth
bus
cdrom
char
clk Single fix for a clock driver merged in 3.14-rc1. Without this fix the 2014-03-08 10:51:30 -08:00
clocksource clocksource: vf_pit_timer: use complement for sched_clock reading 2014-03-06 11:34:14 +01:00
connector
cpufreq cpufreq: Skip current frequency initialization for ->setpolicy drivers 2014-03-13 00:37:16 +01:00
cpuidle
crypto
dca
devfreq
dio
dma Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma 2014-03-01 21:30:43 -06:00
edac i7300_edac: Fix device reference count 2014-02-25 09:43:13 +01:00
eisa
extcon
firewire Merge branch 'for-3.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2014-03-08 11:51:13 -08:00
firmware
fmc drivers/fmc/fmc-write-eeprom.c: fix decimal permissions 2014-02-25 15:25:43 -08:00
gpio
gpu Merge branch 'exynos-drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-fixes 2014-03-20 13:20:00 +10:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2014-03-17 08:00:50 -07:00
hsi
hv
hwmon
hwspinlock
i2c i2c: Remove usage of orphaned symbol OF_I2C 2014-03-13 22:33:44 +01:00
ide
idle
iio
infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2014-03-09 13:50:14 -07:00
input
iommu drivers/iommu/omap-iommu-debug.c: fix decimal permissions 2014-02-25 15:25:42 -08:00
ipack
irqchip irq-metag*: stop set_affinity vectoring to offline cpus 2014-02-25 22:35:06 +00:00
isdn isdn/capi: Make Middleware depend on CAPI2.0 2014-03-18 15:02:57 -04:00
leds
lguest
macintosh
mailbox
md dm transaction manager: fix corruption due to non-atomic transaction commit 2014-03-27 16:56:23 -04:00
media
memory
memstick
message
mfd
misc mm: fix GFP_THISNODE callers and clarify 2014-03-10 17:26:19 -07:00
mmc
mtd Just a single fix for the UBI module unload path which makes sure we do not 2014-02-27 10:36:50 -08:00
net vxlan: fix nonfunctional neigh_reduce() 2014-03-24 15:35:10 -04:00
nfc
ntb
nubus
of
oprofile
parisc
parport
pci PCI: Don't check resource_size() in pci_bus_alloc_resource() 2014-03-12 11:19:20 -06:00
pcmcia
phy
pinctrl ARM: SoC fixes for 3.14-rc 2014-03-09 19:27:31 -07:00
platform
pnp PNP / ACPI: proper handling of ACPI IO/Memory resource parsing failures 2014-03-11 21:22:10 +01:00
power
powercap
pps
ps3
ptp
pwm pwm: lp3943: Fix potential memory leak during request 2014-02-26 15:45:12 +01:00
rapidio rapidio/tsi721: fix tasklet termination in dma channel release 2014-03-04 07:55:49 -08:00
regulator regulator: Fixes for v3.14-rc5 2014-03-04 08:41:42 -08:00
remoteproc
reset
rpmsg
rtc drivers/rtc/rtc-s3c.c: fix incorrect way of save/restore of S3C2410_TICNT for TYPE_S3C64XX 2014-03-04 07:55:48 -08:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-04 08:44:32 -08:00
sbus
scsi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-24 17:07:24 -07:00
sfi
sh
sn
spi Merge remote-tracking branches 'spi/fix/ath79', 'spi/fix/atmel', 'spi/fix/coldfire', 'spi/fix/fsl-dspi', 'spi/fix/imx' and 'spi/fix/topcliff-pch' into spi-linus 2014-03-07 11:08:13 +08:00
ssb
staging staging/cxt1e1/linux.c: Correct arbitrary memory write in c4_ioctl() 2014-03-04 16:20:01 -08:00
target Target/sbc: Fix sbc_copy_prot for offset scatters 2014-03-06 20:52:11 -08:00
tc
thermal Thermal: thermal zone governor fix 2014-03-03 23:15:57 +08:00
tty sparc: serial: Clean up the locking for -rt 2014-03-06 16:32:25 -05:00
uio
usb Revert "xhci 1.0: Limit arbitrarily-aligned scatter gather." 2014-03-07 11:48:13 -08:00
uwb
vfio mm: close PageTail race 2014-03-04 07:55:47 -08:00
vhost Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2014-03-01 21:33:09 -06:00
video
virt
virtio
vlynq
vme
w1
watchdog
xen
zorro
Kconfig
Makefile