On 07/09/2020 22:32, Douglas Gilbert wrote:
Hi Doug,
# insmod scsi_debug.ko
Gave errors like this:
[ 140.115244] debugfs: Directory 'sde' with parent 'block' already
present!
As an aside, I thought that this issue was fixed...
[ 140.376426] debugfs: Directory 'sde' with parent 'block' already
present!
[ 140.420613] sd 3:0:0:0: [sde] tag#40 access beyond end of device
[ 140.426655] blk_update_request: I/O error, dev sde, sector 15984 op
0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[ 140.437319] sd 3:0:0:0: [sde] tag#41 access beyond end of device
[ 140.443368] blk_update_request: I/O error, dev sde, sector 15984 op
0x0:(READ) flags 0x0 phys_seg 1 prio class 0
...
Which wasn't the scsi_debug driver directly as it doesn't use debugfs. So
I suspect something is rotten in the mid-level.
When I tried to replicate John's config I couldn't even boot my Ubuntu
20.04 based system (with a MKP kernel). Seemed to fail/lockup before any
kernel prints came out to the serial port (yes, still useful), perhaps in
initrd. I'm guessing another, non-SCSI module caused the lockup. So I
gave up and turned off that config setting.
You can also try this hack locally (without enabling that config), if
you like:
--->8---
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -496,6 +496,12 @@ static int really_probe(struct device *dev, struct
device_driver *drv)
int local_trigger_count = atomic_read(&deferred_trigger_count);
bool test_remove = IS_ENABLED(CONFIG_DEBUG_TEST_DRIVER_REMOVE) &&
!drv->suppress_bind_attrs;
+ if (strcmp(drv->name, "sd") == 0)
+ test_remove = 1;
+ else if (strcmp(drv->name, "scsi_debug") == 0)
+ test_remove = 1;
---8<---
Cheers,
john