bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: reused inodes don't get i_translator cleared


From: Roland McGrath
Subject: Re: reused inodes don't get i_translator cleared
Date: Tue, 8 Oct 2002 19:14:08 -0400 (EDT)

> I did delete the filesystem under GNU/Linux, but I am not sure if that
> wouldn't happen on GNU/Hurd as well, as we deliberately don't delete the
> i_translator info when the inode is deleted (to make "undeletion" possible,
> see comment in the code of write_node).

However, it doesn't happen because diskfs_drop_node clears it with
diskfs_set_translator.  I think it would be better for diskfs to leave it
to the filesystem to clear it as part of deletion, as for data blocks.  A
filesystem could be more efficient deleting all the blocks together rather
than deleting the one translator block in the normal way done when the file
is surviving and then immediately deleting all its data blocks.  (The
efficiency difference here is marginal the filesystems we have, but could
be more in other formats that are more different.)  It also makes it
possible to do things like leave the translator block set for possible
undeletion, or anything else that might make sense in a particular
filesystem to distinguish the "translator cleared on existing file" case
from the "file with translator removed altogether" case.

> Where should this happen?  diskfs_alloc_node in ialloc.c?

Yes.  I think that more or less all the handling of i_translator should 
be directly analogous to the handling of i_data.

I just put in an untested change that is slightly more hairy to stay
analogous to i_data handling and avoid using diskfs_catch_exception in
directly in diskfs_alloc_node.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]