linux/drivers
Lars Ellenberg 7df41c6b0e drbd: reject attach of unsuitable uuids even if connected
[ Upstream commit fe43ed97bb ]

Multiple failure scenario:
a) all good
   Connected Primary/Secondary UpToDate/UpToDate
b) lose disk on Primary,
   Connected Primary/Secondary Diskless/UpToDate
c) continue to write to the device,
   changes only make it to the Secondary storage.
d) lose disk on Secondary,
   Connected Primary/Secondary Diskless/Diskless
e) now try to re-attach on Primary

This would have succeeded before, even though that is clearly the
wrong data set to attach to (missing the modifications from c).
Because we only compared our "effective" and the "to-be-attached"
data generation uuid tags if (device->state.conn < C_CONNECTED).

Fix: change that constraint to (device->state.pdsk != D_UP_TO_DATE)
compare the uuids, and reject the attach.

This patch also tries to improve the reverse scenario:
first lose Secondary, then Primary disk,
then try to attach the disk on Secondary.

Before this patch, the attach on the Secondary succeeds, but since commit
drbd: disconnect, if the wrong UUIDs are attached on a connected peer
the Primary will notice unsuitable data, and drop the connection hard.

Though unfortunately at a point in time during the handshake where
we cannot easily abort the attach on the peer without more
refactoring of the handshake.

We now reject any attach to "unsuitable" uuids,
as long as we can see a Primary role,
unless we already have access to "good" data.

Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-12-05 09:20:44 +01:00
..
accessibility
acpi ACPI / LPSS: Ignore acpi_device_fix_up_power() return value 2019-12-05 09:20:02 +01:00
amba
android android: binder: no outgoing transaction when thread todo has transaction 2019-11-20 18:46:42 +01:00
ata ata: ep93xx: Use proper enums for directions 2019-11-24 08:20:10 +01:00
atm atm: zatm: Fix empty body Clang warnings 2019-12-01 09:16:41 +01:00
auxdisplay auxdisplay: panel: need to delete scan_timer when misc_register fails in panel_attach 2019-09-06 10:21:56 +02:00
base mm/memory_hotplug: Do not unlock when fails to take the device_hotplug_lock 2019-12-01 09:17:34 +01:00
bcma
block drbd: reject attach of unsuitable uuids even if connected 2019-12-05 09:20:44 +01:00
bluetooth Bluetooth: hci_bcm: Handle specific unknown packets after firmware loading 2019-12-05 09:20:39 +01:00
bus bus: ti-sysc: Check for no-reset and no-idle flags at the child level 2019-12-05 09:20:00 +01:00
cdrom cdrom: don't attempt to fiddle with cdo->capability 2019-12-01 09:16:20 +01:00
char virtio_console: allocate inbufs in add_port() only if it is needed 2019-12-01 09:16:10 +01:00
clk clk: ti: clkctrl: Fix failed to enable error with double udelay timeout 2019-12-05 09:19:40 +01:00
clocksource clocksource/drivers/fttmr010: Fix invalid interrupt register access 2019-12-05 09:20:38 +01:00
connector connector: fix unsafe usage of ->real_parent 2019-03-19 13:12:38 +01:00
cpufreq cpufreq: Add NULL checks to show() and store() methods of cpufreq 2019-12-01 09:17:39 +01:00
cpuidle cpuidle: menu: Fix wakeup statistics updates for polling state 2019-11-24 08:20:07 +01:00
crypto crypto/chelsio/chtls: listen fails with multiadapt 2019-12-05 09:20:18 +01:00
dax mm/huge_memory: fix vmf_insert_pfn_{pmd, pud}() crash, handle unaligned addresses 2019-05-22 07:37:40 +02:00
dca
devfreq PM / devfreq: Fix kernel oops on governor module load 2019-12-01 09:17:46 +01:00
dio
dma dmaengine: rcar-dmac: set scatter/gather max segment size 2019-11-24 08:20:30 +01:00
dma-buf dma-buf/sw_sync: Synchronize signal vs syncpt free 2019-10-07 18:57:04 +02:00
edac EDAC, thunderx: Fix memory leak in thunderx_l2c_threaded_isr() 2019-12-01 09:16:18 +01:00
eisa
extcon extcon: cht-wc: Return from default case to avoid warnings 2019-11-20 18:45:26 +01:00
firewire
firmware gsmi: Fix bug in append_to_eventlog sysfs handler 2019-12-01 09:16:22 +01:00
fmc
fpga fpga: altera-ps-spi: Fix getting of optional confd gpio 2019-09-21 07:16:53 +02:00
fsi fsi: scom: Don't abort operations for minor errors 2019-09-06 10:22:19 +02:00
gnss gnss: sirf: fix premature wakeup interrupt enable 2019-03-10 07:17:21 +01:00
gpio gpio: raspberrypi-exp: decrease refcount on firmware dt node 2019-12-05 09:20:24 +01:00
gpu drm/i915/userptr: Try to acquire the page lock around set_page_dirty() 2019-12-01 09:16:12 +01:00
hid HID: intel-ish-hid: fixes incorrect error handling 2019-12-05 09:20:24 +01:00
hsi
hv vmbus: keep pointer to ring buffer page 2019-11-20 18:47:31 +01:00
hwmon hwmon: (npcm-750-pwm-fan) Change initial pwm target to 255 2019-11-24 08:21:01 +01:00
hwspinlock
hwtracing coresight: dynamic-replicator: Handle multiple connections 2019-11-20 18:47:29 +01:00
i2c i2c: uniphier-f: fix timeout error after reading 8 bytes 2019-12-01 09:17:34 +01:00
ide
idle x86/cpu: Sanitize FAM6_ATOM naming 2019-05-14 19:17:53 +02:00
iio iio: dac: mcp4922: fix error handling in mcp4922_write_raw 2019-11-20 18:45:21 +01:00
infiniband RDMA/srp: Propagate ib_post_send() failures to the SCSI mid-layer 2019-12-05 09:20:40 +01:00
input parisc: Fix HP SDC hpa address output 2019-12-05 09:19:57 +01:00
iommu iommu/arm-smmu-v3: Fix unexpected CMD_SYNC timeout 2019-11-24 08:19:30 +01:00
ipack
irqchip irqchip/irq-mvebu-icu: Fix wrong private data retrieval 2019-11-24 08:19:40 +01:00
isdn mISDN: Fix type of switch control variable in ctrl_teimanager 2019-12-01 09:16:55 +01:00
leds led: triggers: Fix a memory leak bug 2019-10-05 13:09:45 +02:00
lightnvm lightnvm: pblk: consider max hw sectors supported for max_write_pgs 2019-11-24 08:20:52 +01:00
macintosh macintosh/windfarm_smu_sat: Fix debug output 2019-12-01 09:16:37 +01:00
mailbox mbox: qcom: add APCS child device for QCS404 2019-10-07 18:57:02 +02:00
mcb
md dm raid: fix false -EBUSY when handling check/repair message 2019-12-05 09:20:37 +01:00
media media: imon: invalid dereference in imon_touch_event 2019-12-01 09:17:40 +01:00
memory memory: omap-gpmc: Get the header of the enum 2019-12-05 09:20:29 +01:00
memstick memstick: jmb38x_ms: Fix an error handling path in 'jmb38x_ms_probe()' 2019-10-29 09:20:07 +01:00
message
mfd mfd: max8997: Enale irq-wakeup unconditionally 2019-12-01 09:16:57 +01:00
misc misc: mic: fix a DMA pool free failure 2019-12-01 09:16:22 +01:00
mmc mmc: meson-gx: make sure the descriptor is stopped on errors 2019-12-05 09:20:19 +01:00
mtd mtd: rawnand: sunxi: Write pageprog related opcodes to WCMD_SET 2019-12-05 09:20:20 +01:00
mux
net ath6kl: Fix off by one error in scan completion 2019-12-05 09:20:41 +01:00
nfc nfc: port100: handle command failure cleanly 2019-12-01 09:17:38 +01:00
ntb ntb: intel: fix return value for ndev_vec_mask() 2019-12-01 09:17:13 +01:00
nubus
nvdimm libnvdimm/region: Initialize bad block for volatile namespaces 2019-10-11 18:21:20 +02:00
nvme nvme: fix kernel paging oops 2019-12-05 09:20:08 +01:00
nvmem nvmem: core: return error code instead of NULL from nvmem_device_get 2019-11-20 18:46:31 +01:00
of of: unittest: initialize args before calling of_*parse_*() 2019-12-01 09:17:30 +01:00
opp OPP: Return error on error from dev_pm_opp_get_opp_count() 2019-11-24 08:20:06 +01:00
oprofile
parisc parisc: Disable HP HSC-PCI Cards to prevent kernel crash 2019-10-05 13:10:04 +02:00
parport parport: Fix mem leak in parport_register_dev_model 2019-06-25 11:35:55 +08:00
pci PCI: keystone: Use quirk to limit MRRS for K2G 2019-12-01 09:17:33 +01:00
pcmcia
perf drivers/perf: arm_pmu: Fix failure path in PM notifier 2019-08-06 19:06:55 +02:00
phy phy: lantiq: Fix compile warning 2019-11-20 18:47:35 +01:00
pinctrl pinctrl: sh-pfc: sh7734: Fix shifted values in IPSR10 2019-12-05 09:20:35 +01:00
platform platform/x86: mlx-platform: Fix LED configuration 2019-12-05 09:20:00 +01:00
pnp
power PM / AVS: SmartReflex: NULL check before some freeing functions is not needed 2019-12-05 09:20:02 +01:00
powercap x86/cpu: Sanitize FAM6_ATOM naming 2019-05-14 19:17:53 +02:00
pps drivers/pps/pps.c: clear offset flags in PPS_SETPARAMS ioctl 2019-08-04 09:30:56 +02:00
ps3
ptp
pwm pwm: bcm-iproc: Prevent unloading the driver module while in use 2019-12-05 09:19:47 +01:00
rapidio drivers/rapidio/devices/rio_mport_cdev.c: NUL terminate some strings 2019-08-06 19:06:52 +02:00
ras RAS/CEC: Fix pfn insertion 2019-07-26 09:14:05 +02:00
regulator drivers/regulator: fix a missing check of return value 2019-12-05 09:20:39 +01:00
remoteproc remoteproc: qcom: q6v5: Fix a race condition on fatal crash 2019-11-24 08:20:29 +01:00
reset reset: Fix memory leak in reset_control_array_put() 2019-12-05 09:19:36 +01:00
rpmsg rpmsg: glink: smem: Support rx peak for size less than 4 bytes 2019-11-24 08:20:05 +01:00
rtc rtc: s35390a: Change buf's type to u8 in s35390a_init 2019-12-01 09:16:52 +01:00
s390 s390/zcrypt: make sysfs reset attribute trigger queue reset 2019-12-05 09:20:04 +01:00
sbus
scsi scsi: csiostor: fix incorrect dma device in case of vport 2019-12-05 09:20:40 +01:00
sfi
sh
siox
slimbus silmbus: ngd: register controller after power up. 2019-11-20 18:47:30 +01:00
sn
soc soc: bcm: brcmstb: Fix re-entry point with a THUMB2_KERNEL 2019-12-01 09:17:17 +01:00
soundwire soundwire: intel: Fix uninitialized adev deref 2019-11-20 18:45:22 +01:00
spi spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch 2019-12-01 09:17:33 +01:00
spmi
ssb ssb: Fix possible NULL pointer dereference in ssb_host_pcmcia_exit 2019-05-31 06:46:04 -07:00
staging staging: comedi: usbduxfast: usbduxfast_ai_cmdtest rounding error 2019-12-01 09:17:45 +01:00
target scsi: target/tcmu: Fix queue_cmd_ring() declaration 2019-12-05 09:19:47 +01:00
tc
tee tee: optee: add missing of_node_put after of_device_is_available 2019-11-24 08:19:08 +01:00
thermal thermal: rcar_thermal: Prevent hardware access during system suspend 2019-12-01 09:17:00 +01:00
thunderbolt thunderbolt: Use 32-bit writes when writing ring producer/consumer 2019-11-06 13:06:12 +01:00
tty serial: max310x: Fix tx_empty() callback 2019-12-05 09:20:40 +01:00
uio vmbus: keep pointer to ring buffer page 2019-11-20 18:47:31 +01:00
usb usb: ehci-omap: Fix deferred probe for phy handling 2019-12-05 09:20:20 +01:00
uwb
vfio vfio/spapr_tce: Get rid of possible infinite loop 2019-12-05 09:20:43 +01:00
vhost vhost/vsock: split packets to send using multiple buffers 2019-12-01 09:16:08 +01:00
video backlight: lm3639: Unconditionally call led_classdev_unregister 2019-11-24 08:20:45 +01:00
virt virt: vbox: fix memory leak in hgcm_call_preprocess_linaddr 2019-11-06 13:06:04 +01:00
virtio virtio_ring: fix return code on DMA mapping fails 2019-12-01 09:17:40 +01:00
visorbus
vlynq
vme
w1 w1: IAD Register is yet readable trough iad sys file. Fix snprintf (%u for unsigned, count for max size). 2019-12-01 09:16:22 +01:00
watchdog watchdog: meson: Fix the wrong value of left time 2019-12-05 09:19:44 +01:00
xen xen/pciback: Check dev_data before using it 2019-12-05 09:20:26 +01:00
zorro
Kconfig
Makefile