From: NeilBrown Date: Sat, 2 Oct 2010 11:23:41 +0000 (+1000) Subject: README/comment update X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=a39857a2e71780c896e03f22b6c5ed759cef223c;p=LaFS.git README/comment update Signed-off-by: NeilBrown --- diff --git a/README b/README index 9c86195..ff465a8 100644 --- a/README +++ b/README @@ -5105,15 +5105,20 @@ DONE 15au/ How should iocheck_block set the page error? 15av/ ditto for write errors? -15aw/ when lafs_incorporate makes a new block where the +DONE 15aw/ when lafs_incorporate makes a new block where the old is Realloc, the new should be Realloc too. -15ax/ Think about what happens when we relocate a block +DONE 15ax/ Think about what happens when we relocate a block in the orphan list (lafs_orphan_release), particularly if the block isn't actually loaded. + FIXME still need to make sure errors will loading the orphan + file are handled correctly - I guess we mark all bad orphans as + type==0 and when we find those during release, reduce the size + of the orphan file. -15ay/ Wonder if there is any way for orphan_run to get a wakeup +DONE 15ay/ Wonder if there is any way for run_orphans to get a wakeup when an inode or dir mutex is released. + No, there isn't. 15az/ Sanity check all values in cluster head during roll-forward i.e. in roll_valid. If the head isn't complete, we can still @@ -6830,3 +6835,13 @@ WritePhase - what is that all about? So the name is pointless in subordinate filesets. So I could just shrink the metadata. The primary metadata needs to be big enough to get a name easily though. + + 15aw.. + When cleaning we have a separate credit bit 'B_Realloc' from 'B_Dirty'. + But we have the same B_UnincCredit bit for both. Is that safe? + Processing the cleaner could absorb the UnincCredit while the blocks is + reserved but not dirty. Then when it gets dirtied, there may be not + enough credits to split. + We set Dirty from Credit, and use ICredit for UnincCredit. + But when only Realloc (not dirty) we don't use those bits. We allocate + fresh credits or set Dirty if that fails. \ No newline at end of file diff --git a/orphan.c b/orphan.c index 5064820..0ba1f35 100644 --- a/orphan.c +++ b/orphan.c @@ -508,8 +508,7 @@ long lafs_run_orphans(struct fs *fs) /* OK not to have an inode */; else if (!ino || !mutex_trylock(&ino->i_mutex)) { /* we cannot get a wakeup when mutex - * is unlocked, so we need timeout - * FIXME this is unfortunate + * is unlocked, so we need timeout. */ orphan_iput(ino); timeout = msecs_to_jiffies(500);