git: kernel - Fix NFS client & server bugs

看板DFBSD_commit作者時間15年前 (2010/11/20 09:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit 5e6f1ca5638786e461bf6ef12bbce88f52fdabb1 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Sun Oct 17 21:48:47 2010 -0700 kernel - Fix NFS client & server bugs * A very long standing bug in the server cache was finally whacked. The write-gather code was improperly returning the wrong mbuf for the server to reply with, causing client stalls. This behavior depends on the client doing burst asynchronous writes. Newer releases of DragonFly do burst asynchronous writes but older ones tended not to. * The server cache was not MPSAFE. Add a MP token to fix that. * Remove critical sectons from the server cache which are no longer needed. * Fix a potential client-side rpc request race where a request's NEEDSXMIT flag is not set until after the request possibly blocks, which can lead to issues if another thread picks up the request and then believes that it has already been transmitted when it has not. * Document a big problem with NFSv2 and HAMMER-served directories. NFSv2 only has 32-bit directory cookies. It is possible to work around the problem by using rdirplus (which is the default now). However, some servers may not be able to handle rdirplus with a NFSv2 mount. Users who need to serve out NFSv2 cannot serve HAMMER directories with NFSv2 unless the clients support rdirplus. Our defaults are NFSv3 and rdirplus and NFSv3 does NOT have this problem. Reported-by: Thomas Nikolajsen <thomas.nikolajsen@mail.dk> Summary of changes: sys/vfs/nfs/nfs_bio.c | 3 +-- sys/vfs/nfs/nfs_serv.c | 29 ++++++++++++----------------- sys/vfs/nfs/nfs_socket.c | 16 +++++++--------- sys/vfs/nfs/nfs_srvcache.c | 18 +++++++++++++++--- sys/vfs/nfs/nfs_vfsops.c | 21 ++++++++++++++++++--- sys/vfs/nfs/nfs_vnops.c | 9 ++++++++- 6 files changed, 61 insertions(+), 35 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/5e6f1ca5638786e461bf6ef12bbce88f52fdabb1 -- DragonFly BSD source repository
文章代碼(AID): #1CvoKS7o (DFBSD_commit)