>>>>> "andrey" == Andrey Borzenkov <[EMAIL PROTECTED]> writes:
andrey> Danny, one more for your collection :) Should be the really last andrey> problem known to me. andrey> It fixes ridiculously slow read from IDE devices in some cases. The andrey> reason was as usual very simple and is not supermount bug. andrey> File read-ahead code never explicitly unplugs device queue after andrey> submitting requests. Supermount checks for media change on every andrey> operation (except read/write) and query_disk_change blocked until andrey> queue was unplugged, i.e. tq_disk was run. This happened either andrey> on next non-readahead IO request (not neccessarily for the same device, andrey> it explains why supermount appeared to work normally during high andrey> disk IO activity) or during next kupdated run that by default happens andrey> every 5 seconds. This gives you those 4-5 second delays for every file. andrey> The worst case was read-ahead of many files immediately followed by andrey> close. In this case every close blocked for several seconds. And andrey> this is exactly what happens when you run rpm - it scans all package andrey> headers and waits several seconds between each file :) andrey> The fix is to ensure that device IO is enabled before we are going andrey> to sleep waiting for request. It should not break anything as far as andrey> I can tell, SCSI layer does the same (so SCSI devices should not suffer andrey> from this problem at all). Arguably this should happen in file read-ahead andrey> code and comments there even suggest that it was intended but I do andrey> not feel myself confident enough to touch the very heart of IO subsystem. andrey> cheers andrey> -andrey integrated. -- In theory, practice and theory are the same, but in practice they are different -- Larry McVoy
