]> git.neil.brown.name Git - LaFS.git/commitdiff
README/comment update
authorNeilBrown <neilb@suse.de>
Sat, 2 Oct 2010 11:23:41 +0000 (21:23 +1000)
committerNeilBrown <neilb@suse.de>
Sun, 10 Oct 2010 23:33:56 +0000 (10:33 +1100)
Signed-off-by: NeilBrown <neilb@suse.de>
README
orphan.c

diff --git a/README b/README
index 9c86195f831e2f177f631444d6c781e826551fbd..ff465a8e400547d535577e8021db2ccd0d26355c 100644 (file)
--- 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
index 50648200c9f2cd3ddbab14734ea546aa6c6015d2..0ba1f3539d475f3b72caa770755405e5e190904c 100644 (file)
--- 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);