git: HAMMER VFS - Fix deadlock during read-only HAMMER mount

看板DFBSD_commit作者時間15年前 (2010/10/06 03:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit 6494bbf55217ae4f3167d3242590ee4136819602 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Tue Oct 5 09:36:42 2010 -0700 HAMMER VFS - Fix deadlock during read-only HAMMER mount * HAMMER UNDOs are addressed using zone-1 (HAMMER_ZONE_RAW_VOLUME) and zone-2 (HAMMER_ZONE_RAW_BUFFER) data offsets. Normal filesystem operations may use zone references which are incompatible with the UNDO data references. That is, they may use a different zone accessing the same physical disk offset. Normally when the UNDO is run the modified buffers are flushed to disk and the buffers are destroyed before normal filesystem operations begin. Thus it isn't a problem for normal R+W mounts. * Read-only mounts are a different story. The modified buffers from the undo are left in core memory (they cannot be flushed yet because the mount is read-only). The incompatible zones cause the HAMMER buffer system to lose track of related locked buffer cache buffers and can lead to a deadlock. * Fix this by explicitly checking for a read-only mount and doing a secondary lookup using the RAW zone for certain selected zones. Reported-by: Matthias Schmidt <matthias@dragonflybsd.org> Summary of changes: sys/vfs/hammer/hammer_ondisk.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/6494bbf55217ae4f3167d3242590ee4136819602 -- DragonFly BSD source repository
文章代碼(AID): #1CgtOAxx (DFBSD_commit)