[Yaffs] [Yaffs-archive] RE: What if background deletions are interrupted?

Charles Manning Charles.Manning@trimble.co.nz
Tue, 2 Mar 2004 10:20:36 +1300


In YAFFS, 'background' is a not real 'background' - it does not happen
in a separate thread but instead happens parasitically. Operations that
write/modify (eg: write, rename, flush...) also cause garbage collection
checking. [Sidenote: It would be trivial to add a background thread to
do GC to do background clean-up]

Background deletion (=3D=3Dsoft deletion) is done by the garbage =
collection
mechanism. That is, when we delete a file instead of immediately
deleting the file chunks (which involves programming of the deletion
markers on each chunk) - which takes time- we just note that these
chunks are free to be collected. Thus if the block containing these
chunks is collected then they are not copied and the space is recovered.

We only delete the file header once all its data chunks have been
deleted in this way. Thus if the system is rebooted/power lost/ other
random ActsOfEvil the file will be rebuilt by the boot scanning
mechanism, though the file will now be sparse since it is missing some
chunks. We remember that the file itself was marked for deletion so we
soft delete the file again, and the data chunks will ready for further
collection. Ie we have recovered the state of these chunks without
"leaking".

Thus, to answer your question. Yes, there is 'half a file', but we
remembered that it was deleted so we do not make it available to the
system and we know to clean up 'the other half'.

Does that explain the situation?

-- Charles



-----Original Message-----
From: Wookey [mailto:wookey@aleph1.co.uk]=20
Sent: Tuesday, 2 March 2004 5:08 a.m.
To: YAFFS list
Cc: trini@mvista.com
Subject: What if background deletions are interrupted?


One question someone asked at FOSDEM that I wasn't sure of the answer
was:

When YAFFS background deletion is enabled, what happens if the power
dies before all the portions of the deletion/write are completed?

What is the state when the power comes back up? Presumably the initial
scan will ensure that we don't get 'half a file', but to get consistency
does the file reappear in full or does the background deletion complete
or effectively complete so that it's no longer there?

Thought I'd post this here, on the assumption that I'm not the only one
who would like to know the answer :-)

Wookey
--=20
Aleph One Ltd, Bottisham, CAMBRIDGE, CB5 9BA, UK  Tel +44 (0) 1223
811679
work: http://www.aleph1.co.uk/     play:
http://www.chaos.org.uk/~wookey/

------------------------------------------------------------------------
---------------
This mailing list is hosted by Toby Churchill open software
(www.toby-churchill.org). If mailing list membership is no longer wanted
you can remove yourself from the list by=20
sending an email to yaffs-request@toby-churchill.org with the text
"unsubscribe"=20
(without the quotes) as the subject.=20


---------------------------------------------------------------------------------------
This mailing list is hosted by Toby Churchill open software (www.toby-churchill.org).
If mailing list membership is no longer wanted you can remove yourself from the list by 
sending an email to yaffs-request@toby-churchill.org with the text "unsubscribe" 
(without the quotes) as the subject.