From 30d184e0aed98a0f8e938899bbf9157accc69a84 Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Sat, 16 May 2020 22:19:35 +0200 Subject: [PATCH] if: lock defective device against re-creating --- kernel/mars_if.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/mars_if.c b/kernel/mars_if.c index c613ccc9..fe75070d 100644 --- a/kernel/mars_if.c +++ b/kernel/mars_if.c @@ -1064,7 +1064,9 @@ static int if_switch(struct if_brick *brick) mars_power_led_off((void*)brick, false); } } - if (brick->power.button && !brick->power.led_on && !brick->power.led_off) { + if (brick->power.button && + !brick->power.led_off && + !input->disk) { #ifdef MARS_HAS_BDI_GET struct backing_dev_info *bdi; #endif @@ -1216,7 +1218,8 @@ static int if_switch(struct if_brick *brick) #else set_device_ro(input->bdev, 0); // TODO: implement modes #endif - + } + if (input->disk) { /* Avoid IO races with block IO daemons / udev / etc. * They may access the new disk immediately after * add_disk(). However, the setup was not yet fully