-
David Woodhouse authored
Various bugfixes -- deadlock in prepare_write() on extension of file fixed. -- corruption when reading a page where a multi-page hole ends fixed. -- oops on unlink of bad inodes fixed. -- allow bi-endian operation; mounting of non-host-endian file system is now possible. Optimisations -- switch to rbtrees for the inode fragment list. O(log n) insertion and lookup now. -- avoid checking all data crcs and building fragment trees at scan time. Do it later in GC. -- use 'point' method if available to use a pointer directly into the flash chip during scan, rather than always using memcpy into RAM first. -- start to track node 'pristine' status, for later use in GC optimisation -- we'll be able to copy those nodes intact without having to read them, decompress and recompress their payload, etc. Or indeed having to read_inode() their inode. -- fix ordering of work done from kupdated. We now erase a block, mark it free and stick it on the appropriate list, and go on to the next one. Before, we erased _all_ the pending blocks before marking any of them free, while everyone waited for us.
f662cf7a