This appears correct to me.  In fact, the first item on the "To-Do" list at 
www.nilfs.org is to implement the garbage collector.

Also, note that they reference http://en.wikipedia.org/wiki/Log_File_System .

Jon



<snip>
What it appears, at first glance, to do is
to never update a disk allocation "in place". Each file consists of
"segments". I don't know exactly how the segments are linked together.
Now, when data in a segment is updated, the segment is not rewritten "in
place". Instead, the filesystem will allocate a new, unused, "segment"
(as they call it) and write the updated "segment" data there. It will
then update the pointers which pointed to the old segment to point to
the new segment, in the appropriate order (possibly causing more
segments to be updated and so written to a new, unused, location). What
this means is if an operation is interrupted (like a power failure),
then it is as if the update were never even attempted. I.e. the update
does not appear until the data plus metadata is comitted. The last block
to be updated is the superblock. It appears that the superblock stays in
one place (which makes sense to me). 

The filesystem must be periodically "garbage collected" to find where
the previous used and now unused segments are located.
</snip>

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390

Reply via email to