Strange performance drop with reconnected external drives

From: markus reichelt
Date: Tue Apr 03 2007 - 15:25:31 EST


Hi,

I'm encountered the following scenario:

Several encrypted external USB HDDs were mounted (via a hub) when
Something Bad happened: Accidentially the cable connecting the hub to
the laptop was disconnected. The devices used at that time were
/dev/sda and /dev/sdb.

Logfiles showed the usual USB stuff: disconnections, nothing really
worrysome, no oops, no bugs.

So I almost immediately replugged one drive and mounted it again, the
device used was /dev/sdc and performance was as usual. A few minutes
later I replugged the other drive and the device it was associated
with was /dev/sda. There were no error messages, the mount operation
proceeded normally, filesystem recovery went smoothly. The filesystem
was not corrupted during normal use afterwards.

I don't think the hub is the issue, but the recycling of used
/dev/sd* devices:

The really strange thing was the considerable loss in performance.
Writing files at ~ 1,5 MB/s was about a 10th of the normal
throughput. Reading was also slow. I noticed that the drive's LED was
blinking slower than usual during drive access, as if there was a
delay of ~ 100 ms during write operations.

The kernel used was 2.6.21-rc3 with recent loop-aes v 3.1f.

I strongly suspect the code of handling SCSI-compatible devices (or
whatever the code handling external USB HDDs is called exactly ;-).
Earlier kernels (2.6.16.x) just used the next available devices e.g.
/dev/sdc & /dev/sdd and did not recycle ones that had been in use
already.

Is there a way (apart from going back to earlier kernels) to get the
old behaviour back? I'd very much like that. A .config option, boot
parameter, patch, anything?

--
left blank, right bald

Attachment: pgp00000.pgp
Description: PGP signature