ut-osa / strata

Strata: A Cross Media File System
69 stars 42 forks source link

various bugfix without pr #26

Open Alkaid-Benetnash opened 5 years ago

Alkaid-Benetnash commented 5 years ago

should use function parameter instead of file descriptor's offset field please see this commit

Alkaid-Benetnash commented 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

iangneal commented 5 years ago

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

iangneal commented 5 years ago

unlink bug fix

Alkaid-Benetnash commented 5 years ago

root inode->i_sb not initialized inode->fcache_hash used after free x86_64 calling convention of syscall are different from function call (workaround) sigaction put struct on callee's stack

Alkaid-Benetnash commented 5 years ago

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