git: kernel - Major MPSAFE Infrastructure 2

看板DFBSD_commit作者時間15年前 (2010/08/28 08:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit c57248528eb11d4c5d4fadfdac323e3d4eb3d424 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Fri Aug 27 01:55:46 2010 -0700 kernel - Major MPSAFE Infrastructure 2 * Refactor buffer cache code which assumes content-stable data across a non-blocking BUF_LOCK(). This is no longer true. The content must be reverified after the BUF_LOCK() succeeds. * Make setting and clearing B_DELWRI atomic with buffer reassignment. * Release cached mplock when looping in the scheduler and run check_splz() to avoid livelocking cpus. * Refactor the mplock contention handling code to handle both the mplock and token contention. Generate a 2uS delay for all but one cpu to try to avoid livelocks. * Do not splz() from inside a spinlock, it will just panic. * Fix the token description field for 'systat -pv 1'. * Optimize MP_LOCK macros a bit. Summary of changes: sys/kern/kern_mplock.c | 8 +- sys/kern/kern_spinlock.c | 1 - sys/kern/kern_umtx.c | 2 + sys/kern/lwkt_thread.c | 77 ++++++++++--- sys/kern/lwkt_token.c | 1 + sys/kern/vfs_bio.c | 126 ++++++++++++---------- sys/kern/vfs_subr.c | 176 +++++++++++++++++++---------- sys/kern/vfs_vm.c | 87 +++++++++------ sys/platform/pc32/i386/machdep.c | 18 ++- sys/platform/pc32/isa/clock.c | 1 + sys/platform/pc64/isa/clock.c | 1 + sys/platform/pc64/x86_64/machdep.c | 9 +- sys/platform/vkernel/i386/cpu_regs.c | 38 +++++-- sys/platform/vkernel64/x86_64/cpu_regs.c | 23 +++- sys/sys/mplock2.h | 28 +++-- 15 files changed, 387 insertions(+), 209 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/c57248528eb11d4c5d4fadfdac323e3d4eb3d424 -- DragonFly BSD source repository
文章代碼(AID): #1CU5a7wL (DFBSD_commit)