git: kernel - NFS - fix another B_CLUSTEROK / B_NEEDCOMMIT races

看板DFBSD_commit作者時間16年前 (2010/01/22 13:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit 8ae5c7e01448df9bc6797560538ae7b4b16be6f4 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Thu Jan 21 21:09:51 2010 -0800 kernel - NFS - fix another B_CLUSTEROK / B_NEEDCOMMIT races * nfs_flush_docommit() was not handling the case where B_NEEDCOMMIT might get cleared by vfs_busy_pages() due to late detection of a modified VM page. This appears to be responsible for at least one fsx issue. * Catch an edge case when clearing the PMAP modify bit in vfs_busy_pages(). * NFS no longer tries to cluster commit operations via the buffer cache's cluster code. nfs_flush_docommit() will still do its own manual clustering of commit ops. The problem with using B_CLUSTEROK is that the cluster code will collect bufs together but vfs_busy_pages() might have to clear B_NEEDCOMMIT when a late detection of a modified VM pages occurs. This doesn't propagate back to the underlying bufs making up the cluster. This appears to be responsible for at least one fsx issue too. Summary of changes: sys/kern/vfs_bio.c | 23 ++++++++++++++++++++--- sys/vfs/nfs/nfs_bio.c | 37 ++++++++++++++++--------------------- sys/vfs/nfs/nfs_vnops.c | 14 ++++++++++---- 3 files changed, 46 insertions(+), 28 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/8ae5c7e01448df9bc6797560538ae7b4b16be6f4 -- DragonFly BSD source repository
文章代碼(AID): #1BMJXNuR (DFBSD_commit)