added 2 changesets to branch 'refs/remotes/pdziepak-github/nfs4' old head: d710e73de5d2f71b51133bb0e2e36113595d7945 new head: bd19f23cecd6d1d73affbcd0c71fa1275eb17b73 overview: https://github.com/pdziepak/Haiku/compare/d710e73...bd19f23 ---------------------------------------------------------------------------- fea92e7: nfs4: Save open mode in case of open reclaimation bd19f23: nfs4: Fix connection recovery code [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ] ---------------------------------------------------------------------------- 3 files changed, 6 insertions(+), 4 deletions(-) src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp | 2 ++ src/add-ons/kernel/file_systems/nfs4/NFS4Server.cpp | 2 +- src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp | 6 +++--- ############################################################################ Commit: fea92e7bb3529b87f2cdce45448892644b1fa2fc Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Tue Jan 8 17:57:14 2013 UTC nfs4: Save open mode in case of open reclaimation ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp b/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp index 7533b86..6c9d0a7 100644 --- a/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp @@ -59,6 +59,7 @@ Inode::CreateState(const char* name, int mode, int perms, OpenState* state, state->fFileSystem = fFileSystem; state->fInfo = fi; + state->fMode = mode & O_RWMASK; return B_OK; } @@ -117,6 +118,7 @@ Inode::Open(int mode, OpenFileCookie* cookie) state->fInfo = fInfo; state->fFileSystem = fFileSystem; + state->fMode = mode & O_RWMASK; status_t result = OpenFile(state, mode, &data); if (result != B_OK) return result; ############################################################################ Commit: bd19f23cecd6d1d73affbcd0c71fa1275eb17b73 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Tue Jan 8 19:07:56 2013 UTC nfs4: Fix connection recovery code ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/NFS4Server.cpp b/src/add-ons/kernel/file_systems/nfs4/NFS4Server.cpp index c9b0867..e92ede7 100644 --- a/src/add-ons/kernel/file_systems/nfs4/NFS4Server.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/NFS4Server.cpp @@ -243,7 +243,7 @@ NFS4Server::_Renewal() } Request request(fServer, NULL); - request.Builder().Renew(fClientId); + request.Builder().Renew(clientId); request.Send(); switch (request.Reply().NFS4Error()) { diff --git a/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp b/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp index 1b7ac54..f80633e 100644 --- a/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp @@ -141,7 +141,7 @@ Server::SendCallAsync(Call* call, Reply** reply, Request** request) ASSERT(reply != NULL); ASSERT(request != NULL); - if (fThreadError != B_OK) + if (fThreadError != B_OK && Repair() != B_OK) return fThreadError; Request* req = new(std::nothrow) Request; @@ -170,7 +170,7 @@ Server::ResendCallAsync(Call* call, Request* request) ASSERT(call != NULL); ASSERT(request != NULL); - if (fThreadError != B_OK) { + if (fThreadError != B_OK && Repair() != B_OK) { fRequests.FindRequest(request->fXID); delete request; return fThreadError; @@ -212,7 +212,7 @@ Server::Repair() uint32 thisRepair = fRepairCount; MutexLocker _(fRepairLock); - if (fRepairCount == thisRepair) + if (fRepairCount != thisRepair) return B_OK; fThreadCancel = true;