Folks, unfortunately patch in 9.0/updates (or supermount/2.4.20) is buggy;
it has the same bug as in 9.0.
> 
> >> BTW, I just integrated all your patches in kernel for updates (will
> >> be in next cooker kernel).  I just didn't delete put_inode() as
> >> your patch does.
> 
> andrey> Strange. For all I can tell it was the exact reason for
> "disappearing
> andrey> files".
> 
> Nope, you need it to have a working: extract cd, change cd, make it
> working.
> 

Nope, it is just an accidental side effect. Put_inode (as it was) is buggy
and not needed.

ESTALE was my fault, I did not expect that the same superblock is reused on
remount with busy files. The attached patch plugs the hole (reinitialize
s_media_changed) until I find a proper fix. 

Also patch does

- "mode" parameter was forgotten for ext2

- move setting of s_media_changed to where it belongs - check_disk_change

- add MS_SUPERMOUNTED flag for future use

- use MS_SUPERMOUNTED to properly respect reference count on CD eject
instead of blindly disabling it

- "self destroying" message is back, it is fixed for supermount and we
should not hide errors for other cases.

> >> Now I am able to eject the cd in the middle of one
> >> operation, insert again the cd, and the operation continues
> >> with only some I/O Errors (as expected).
> 

Please, test it with this patch. Your version gives "no such file or
directory" error again :(
 
> That now it never shows -ESTALE errors :p
>

It still does with my patch in one case:

cd /mnt/cdrom/foo
eject
ls /mnt/cdrom

will show /mnt/cdrom/foo as ESTALE. It is because d_invalidate never
invalidates busy directory. I think I know how to fix it.

TODO

- really fix ejecting with busy files
- fix the last case of improper ESTALE
- some more vague ideas

cheers

-andrey


Attachment: 2.4.21-0.pre3.1mdk.supermount.patch
Description: Binary data

Reply via email to