[haiku-commits] BRANCH pdziepak-github.nfs4 - src/add-ons/kernel/file_systems/nfs4

  • From: pdziepak-github.nfs4 <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 4 Jan 2013 22:45:49 +0100 (CET)

added 2 changesets to branch 'refs/remotes/pdziepak-github/nfs4'
old head: 4d120407378d6ec21783c076cdbb753e81a62eba
new head: ad1a84af93a14af86a18703657150e59da5dffdc
overview: https://github.com/pdziepak/Haiku/compare/4d12040...ad1a84a

----------------------------------------------------------------------------

dadd844: nfs4: Multiple style fixes

ad1a84a: nfs4: Make request time limit adjustable

                                    [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ]

----------------------------------------------------------------------------

9 files changed, 24 insertions(+), 40 deletions(-)
.../kernel/file_systems/nfs4/Connection.cpp      |  4 ++--
.../kernel/file_systems/nfs4/FileInfo.cpp        |  4 ++--
.../kernel/file_systems/nfs4/FileSystem.h        |  9 ++++----
src/add-ons/kernel/file_systems/nfs4/IdMap.h     |  1 +
.../kernel/file_systems/nfs4/OpenState.cpp       |  2 +-
.../kernel/file_systems/nfs4/RPCServer.cpp       | 23 --------------------
src/add-ons/kernel/file_systems/nfs4/RPCServer.h |  5 +----
src/add-ons/kernel/file_systems/nfs4/Request.cpp |  9 +++++---
.../file_systems/nfs4/kernel_interface.cpp       |  7 +++++-

############################################################################

Commit:      dadd844f360f3c3b1d055177106c69324024acbd
Author:      Pawel Dziepak <pdziepak@xxxxxxxxxxx>
Date:        Fri Jan  4 21:25:21 2013 UTC

nfs4: Multiple style fixes

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/file_systems/nfs4/Connection.cpp 
b/src/add-ons/kernel/file_systems/nfs4/Connection.cpp
index 7191a8d..e38953a 100644
--- a/src/add-ons/kernel/file_systems/nfs4/Connection.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/Connection.cpp
@@ -563,8 +563,8 @@ Connection::SetTo(Connection **_connection, int socket,
 status_t
 Connection::Connect()
 {
-       const sockaddr& address =
-               *reinterpret_cast<const sockaddr*>(&fPeerAddress);
+       const sockaddr& address
+               = *reinterpret_cast<const sockaddr*>(&fPeerAddress);
 
        switch (fPeerAddress.fProtocol) {
                case IPPROTO_TCP:
diff --git a/src/add-ons/kernel/file_systems/nfs4/FileInfo.cpp 
b/src/add-ons/kernel/file_systems/nfs4/FileInfo.cpp
index ec4b073..1a1edf3 100644
--- a/src/add-ons/kernel/file_systems/nfs4/FileInfo.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/FileInfo.cpp
@@ -59,8 +59,8 @@ FileInfo::CreateName(const char* dirPath, const char* name)
                return B_NO_MEMORY;
 
        if (dirPath != NULL) {
-               char* path = reinterpret_cast<char*>(malloc(strlen(name) + 2 +
-                       strlen(dirPath)));
+               char* path = reinterpret_cast<char*>(malloc(strlen(name) + 2
+                       + strlen(dirPath)));
                if (path == NULL)
                        return B_NO_MEMORY;
 
diff --git a/src/add-ons/kernel/file_systems/nfs4/IdMap.h 
b/src/add-ons/kernel/file_systems/nfs4/IdMap.h
index fd89682..daf6644 100644
--- a/src/add-ons/kernel/file_systems/nfs4/IdMap.h
+++ b/src/add-ons/kernel/file_systems/nfs4/IdMap.h
@@ -51,6 +51,7 @@ IdMap::InitStatus()
        return fInitStatus;
 }
 
+
 extern IdMap*  gIdMapper;
 extern mutex   gIdMapperLock;
 
diff --git a/src/add-ons/kernel/file_systems/nfs4/OpenState.cpp 
b/src/add-ons/kernel/file_systems/nfs4/OpenState.cpp
index 446503d..13e2d50 100644
--- a/src/add-ons/kernel/file_systems/nfs4/OpenState.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/OpenState.cpp
@@ -294,7 +294,7 @@ OpenState::Close()
                // recognize retried CLOSE requests so we just assume that 
BAD_STATEID
                // on CLOSE request is just a result of retransmission.
                if (reply.NFS4Error() == NFS4ERR_BAD_STATEID) {
-                       fFileSystem->OpenOwnerSequenceUnlock(sequence);
+                       fFileSystem->OpenOwnerSequenceUnlock(sequence);
                        return B_OK;
                }
 
diff --git a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp 
b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp
index 2933d2a..abc4607 100644
--- a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp
@@ -716,7 +716,7 @@ get_new_vnode(fs_volume* volume, ino_t id, VnodeToInode** 
_vti)
                return B_OK;
        }
 
-       return get_vnode(volume, id, reinterpret_cast<void**>(_vti)); //_OK;
+       return get_vnode(volume, id, reinterpret_cast<void**>(_vti));
 }
 
 

############################################################################

Commit:      ad1a84af93a14af86a18703657150e59da5dffdc
Author:      Pawel Dziepak <pdziepak@xxxxxxxxxxx>
Date:        Fri Jan  4 21:39:40 2013 UTC

nfs4: Make request time limit adjustable

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/file_systems/nfs4/FileSystem.h 
b/src/add-ons/kernel/file_systems/nfs4/FileSystem.h
index 67e3996..87fa4b9 100644
--- a/src/add-ons/kernel/file_systems/nfs4/FileSystem.h
+++ b/src/add-ons/kernel/file_systems/nfs4/FileSystem.h
@@ -19,11 +19,12 @@ class Inode;
 class RootInode;
 
 struct MountConfiguration {
-       bool    fHard;
-       int             fRetryLimit;
+       bool            fHard;
+       int                     fRetryLimit;
+       bigtime_t       fRequestTimeout;
 
-       bool    fEmulateNamedAttrs;
-       bool    fCacheMetadata;
+       bool            fEmulateNamedAttrs;
+       bool            fCacheMetadata;
 };
 
 class FileSystem : public DoublyLinkedListLinkImpl<FileSystem> {
diff --git a/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp 
b/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp
index 7ce3145..1b7ac54 100644
--- a/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp
@@ -135,29 +135,6 @@ Server::_StartListening()
 
 
 status_t
-Server::SendCall(Call* call, Reply** reply)
-{
-       ASSERT(call != NULL);
-       ASSERT(reply != NULL);
-
-       Request* req;
-       status_t result = SendCallAsync(call, reply, &req);
-       if (result != B_OK)
-               return result;
-
-       result = WaitCall(req);
-       if (result != B_OK) {
-               CancelCall(req);
-               delete req;
-               return result;
-       }
-
-       delete req;
-       return B_OK;
-}
-
-
-status_t
 Server::SendCallAsync(Call* call, Reply** reply, Request** request)
 {
        ASSERT(call != NULL);
diff --git a/src/add-ons/kernel/file_systems/nfs4/RPCServer.h 
b/src/add-ons/kernel/file_systems/nfs4/RPCServer.h
index 8a6369b..738162d 100644
--- a/src/add-ons/kernel/file_systems/nfs4/RPCServer.h
+++ b/src/add-ons/kernel/file_systems/nfs4/RPCServer.h
@@ -60,15 +60,13 @@ public:
                                                                                
PeerAddress* address);
        virtual                                                 ~Server();
 
-                       status_t                                SendCall(Call* 
call, Reply** reply);
-
                        status_t                                
SendCallAsync(Call* call, Reply** reply,
                                                                                
Request** request);
                        status_t                                
ResendCallAsync(Call* call,
                                                                                
Request* request);
 
        inline  status_t                                WaitCall(Request* 
request,
-                                                                               
bigtime_t time = kWaitTime);
+                                                                               
bigtime_t time);
        inline  status_t                                CancelCall(Request* 
request);
                        status_t                                
WakeCall(Request* request);
 
@@ -107,7 +105,6 @@ private:
                        mutex                                   fRepairLock;
 
                        vint32                                  fXID;
-       static  const bigtime_t                 kWaitTime       = 1000000;
 };
 
 
diff --git a/src/add-ons/kernel/file_systems/nfs4/Request.cpp 
b/src/add-ons/kernel/file_systems/nfs4/Request.cpp
index b4c4e43..b92d528 100644
--- a/src/add-ons/kernel/file_systems/nfs4/Request.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/Request.cpp
@@ -45,7 +45,8 @@ Request::_SendUDP(Cookie* cookie)
                hard = fFileSystem->GetConfiguration().fHard;
        }
 
-       result = fServer->WaitCall(rpc);
+       result = fServer->WaitCall(rpc,
+               fFileSystem->GetConfiguration().fRequestTimeout);
        if (result != B_OK) {
                int attempts = 1;
                while (result != B_OK && (hard || attempts++ < retryLimit)) {
@@ -56,7 +57,8 @@ Request::_SendUDP(Cookie* cookie)
                                return result;
                        }
 
-                       result = fServer->WaitCall(rpc);
+                       result = fServer->WaitCall(rpc,
+                               
fFileSystem->GetConfiguration().fRequestTimeout);
                }
 
                if (result != B_OK) {
@@ -113,7 +115,8 @@ Request::_SendTCP(Cookie* cookie)
                if (cookie != NULL)
                        cookie->RegisterRequest(rpc);
 
-               result = fServer->WaitCall(rpc);
+               result = fServer->WaitCall(rpc,
+                       fFileSystem->GetConfiguration().fRequestTimeout);
                if (result != B_OK) {
                        if (cookie != NULL)
                                cookie->UnregisterRequest(rpc);
diff --git a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp 
b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp
index abc4607..af25fde 100644
--- a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp
@@ -63,6 +63,7 @@ CreateNFS4Server(RPC::Server* serv)
 // Available options:
 //     hard            - retry requests until success
 //     soft            - retry requests no more than retrans times (default)
+//  timeo=X            - request time limit before next retransmission 
(default: 60s)
 //     retrans=X       - retry requests X times (default: 5)
 //     ac                      - use metadata cache (default)
 //     noac            - do not use metadata cache
@@ -101,6 +102,7 @@ ParseArguments(const char* _args, PeerAddress* address, 
char** _path,
 
        conf->fHard = false;
        conf->fRetryLimit = 5;
+       conf->fRequestTimeout = sSecToBigTime(60);
        conf->fEmulateNamedAttrs = false;
        conf->fCacheMetadata = true;
 
@@ -116,6 +118,9 @@ ParseArguments(const char* _args, PeerAddress* address, 
char** _path,
                else if (strncmp(options, "retrans=", 8) == 0) {
                        options += strlen("retrans=");
                        conf->fRetryLimit = atoi(options);
+               } else if (strncmp(options, "timeo=", 6) == 0) {
+                       options += strlen("timeo=");
+                       conf->fRequestTimeout = atoi(options);
                } else if (strcmp(options, "noac") == 0)
                        conf->fCacheMetadata = false;
                else if (strcmp(options, "xattr-emu") == 0)


Other related posts: