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
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
/* 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);