Open Alkaid-Benetnash opened 5 years ago
and more bugs, just paste patches here since maybe no one really look at this issue. log invalidation bug related to log_version incomplete log block bug log invalidation bug related to digesting and RO/RW log libfs outdated extents block buffer bug (ugly workaround, correctness first as time limiting) kernfs dirty buffer writeback and refcount bug directory block out of range access potential deadloop with compiler optimization, since shared variable accessed without protection
ftruncate bug due to bad end block calculation. Can be tested in libfs/tests/ftrunc_test. Notably, the old way had a bug if the file size was less than 4k and a truncate to 0 was specified. This fixes that
Should persist log data before updating fcache_block metadata Should atomically update log version related variable The time really read from app log isn't the same as checking if log is valid, maintain a safe distance to prevent concurrency bugs Didn't add each kernfs dirty buffer to writeback list, previous fix "kernfs dirty buffer writeback and refcount bug" was incomplete
should use function parameter instead of file descriptor's offset field please see this commit