Hi Gordon,
It's good that you've tracked down the source of the hang, but there's a
good reason for keeping the superblock locked at that point -- The
locking is supposed to keep others from seeing the sb in an inconsistent
state. Even though the sb is technically correct at the time of the
check_disk_change(), a disk change will result in the releasing the sb
resources and returning a fail for the mount. So I'd prefer to not
unlock until we're certain that the mount will succeed.
Let me look at the check_disk_change code and see if something can be
done there ...
> It should fix the problem. It would seem to me there is something a
> bit wrong in check_disk_change(). If it gets an error as it appears
> to in this case, it assumes the disk has been changed. Should the
> check be instead:
>
> if (fops->check_media_change(dev) <= 0)
> return 0;
Apparently check_disk_change is being conservative; if it can't be sure
the disk didn't change, then assume that it has.
> Erik, the ide-cd code is completely clear of any blame.
Well, not exactly -- we still don't know why (1) the drive got a DMA
error and turned off DMA, and (2) why the subsequent check_disk_change
then returns an error. Apart from the question of why DMA gets turned
off, it appears that there may be some problems with the transition into
using PIO.
Regards,
Bill
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/