git: HAMMER VFS - REDO implementation base code part 4/many

看板DFBSD_commit作者時間16年前 (2010/01/15 12:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit eddadaee1e95dc7f038f9847210734017a7d08a3 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Tue Jan 12 16:01:00 2010 -0800 HAMMER VFS - REDO implementation base code part 4/many * Wait for BIOs to finish before issuing the media sync. Previously we were issuing the media sync concurrently which worked only because the operation was serialized by the disk driver. This change has no effect on performance. * For fsync mode 3 wait for BIOs to finish so the data is guaranteed to at least be in the drive cache. * Collapse hammer_io_wait_firm() into hammer_io_wait_all() * Pipeline hammer_io_wait_all(). Instead of waiting for the running_io count to hit 0, which can cause us to wait longer then necessary when multiple entities are dirtying buffers, we now place all running I/Os on a list along with a dummy entry for the waiter. When the dummy entry becomes the head of the list the waiter returns. This way new I/O's initiated during the wait do not contribute to the wait. In particular this will improve fsync() operations which can flush the UNDO/REDO FIFO in parallel with a full meta-data flush. Summary of changes: sys/vfs/hammer/hammer.h | 7 +++- sys/vfs/hammer/hammer_flusher.c | 13 +++++-- sys/vfs/hammer/hammer_io.c | 67 +++++++++++++++++++++++++++++++++----- sys/vfs/hammer/hammer_recover.c | 8 ++--- sys/vfs/hammer/hammer_vfsops.c | 1 + 5 files changed, 76 insertions(+), 20 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/eddadaee1e95dc7f038f9847210734017a7d08a3 -- DragonFly BSD source repository
文章代碼(AID): #1BJ-_Bnb (DFBSD_commit)