drbd: prevent NULL pointer deref when resuming diskless primary
authorLars Ellenberg <lars.ellenberg@linbit.com>
Wed, 18 Mar 2015 16:13:26 +0000 (17:13 +0100)
committerJens Axboe <axboe@fb.com>
Wed, 25 Nov 2015 16:22:02 +0000 (09:22 -0700)
commit9fa48269197f7fcb8ccfbef03c3f3a8616872579
tree7b8062af32ffd98faf1113894b5eba1a7c121e01
parent668700b40a7c8727bbd2b3fd4fd22e0ce3f1aeb6
drbd: prevent NULL pointer deref when resuming diskless primary

In a multiple error scenario, we may end up with a "frozen" Primary,
that has no access to any data (no local disk, no replication link).

If we then resume-io, we try to generate a new data generation id,
which will fail if there is no longer a local disk.

Double check for available local data,
which prevents the NULL pointer deref.

If we are diskless, turn the resume-io in this situation
into the first stage of a "force down", by bumping the "effective" data
gen id, which will prevent later attach or connect to the former data
set without first being demoted (deconfigured).

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/block/drbd/drbd_nl.c