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
2.4.21-0.pre3.1mdk.supermount.patch
Description: Binary data
