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

  • From: pdziepak-github.nfs4 <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 2 Jul 2012 20:49:07 +0200 (CEST)

added 3 changesets to branch 'refs/remotes/pdziepak-github/nfs4'
old head: 87d2aacd8b5fc30e4cabf8eb886eb8305f9e8a87
new head: 17c2a4858524df47bb37136ec3f1320bafe11430

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

62167cc: nfs4: vfs makes sure that l_start + l_len <= OFF_MAX

0f4dcd8: nfs4: OpenConfirm used wrong filehandle

17c2a48: nfs4: Do not get_vnode() if Inode::Create() failed

                                    [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ]

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

4 files changed, 10 insertions(+), 7 deletions(-)
src/add-ons/kernel/file_systems/nfs4/Inode.cpp     |    2 +-
src/add-ons/kernel/file_systems/nfs4/Inode.h       |    3 ++-
.../kernel/file_systems/nfs4/InodeRegular.cpp      |    8 ++++----
.../kernel/file_systems/nfs4/kernel_interface.cpp  |    4 +++-

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

Commit:      62167cc0dafd86a0bdbf888d010140f6d1cf2370

Author:      Pawel Dziepak <pdziepak@xxxxxxxxxxx>
Date:        Mon Jul  2 18:01:42 2012 UTC

nfs4: vfs makes sure that l_start + l_len <= OFF_MAX

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

diff --git a/src/add-ons/kernel/file_systems/nfs4/Inode.cpp 
b/src/add-ons/kernel/file_systems/nfs4/Inode.cpp
index 7014a84..53a76a4 100644
--- a/src/add-ons/kernel/file_systems/nfs4/Inode.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/Inode.cpp
@@ -739,7 +739,7 @@ Inode::AcquireLock(OpenFileCookie* cookie, const struct 
flock* lock,
 
        linfo->fSequence = 0;
        linfo->fStart = lock->l_start;
-       if (lock->l_len == OFF_MAX)
+       if (lock->l_len + lock->l_start == OFF_MAX)
                linfo->fLength = UINT64_MAX;
        else
                linfo->fLength = lock->l_len;

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

Commit:      0f4dcd8bb3017dc29db8bf6de88ebe65c3167ed7

Author:      Pawel Dziepak <pdziepak@xxxxxxxxxxx>
Date:        Mon Jul  2 18:09:57 2012 UTC

nfs4: OpenConfirm used wrong filehandle

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

diff --git a/src/add-ons/kernel/file_systems/nfs4/Inode.h 
b/src/add-ons/kernel/file_systems/nfs4/Inode.h
index f7f6646..22a6f02 100644
--- a/src/add-ons/kernel/file_systems/nfs4/Inode.h
+++ b/src/add-ons/kernel/file_systems/nfs4/Inode.h
@@ -76,7 +76,8 @@ protected:
                                                                        
OpenFileCookie* cookie = NULL);
                                        status_t        _LookUpFilehandle();
 
-                                       status_t        
_ConfirmOpen(OpenFileCookie* cookie);
+                                       status_t        _ConfirmOpen(const 
Filehandle& fh,
+                                                                       
OpenFileCookie* cookie);
 
                                        status_t        _ReadDirOnce(DirEntry** 
dirents, uint32* count,
                                                                        
OpenDirCookie* cookie, bool* eof);
diff --git a/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp 
b/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp
index 3e95ec1..362db47 100644
--- a/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp
@@ -17,7 +17,7 @@
 
 
 status_t
-Inode::_ConfirmOpen(OpenFileCookie* cookie)
+Inode::_ConfirmOpen(const Filehandle& fh, OpenFileCookie* cookie)
 {
        do {
                RPC::Server* serv = fFilesystem->Server();
@@ -25,7 +25,7 @@ Inode::_ConfirmOpen(OpenFileCookie* cookie)
 
                RequestBuilder& req = request.Builder();
 
-               req.PutFH(fHandle);
+               req.PutFH(fh);
                req.OpenConfirm(cookie->fSequence++, cookie->fStateId,
                        cookie->fStateSeq);
 
@@ -152,7 +152,7 @@ Inode::Create(const char* name, int mode, int perms, 
OpenFileCookie* cookie,
        fFilesystem->AddOpenFile(cookie);
 
        if (confirm)
-               return _ConfirmOpen(cookie);
+               return _ConfirmOpen(fh, cookie);
        else
                return B_OK;
 }
@@ -248,7 +248,7 @@ Inode::Open(int mode, OpenFileCookie* cookie)
        fFilesystem->AddOpenFile(cookie);
 
        if (confirm)
-               return _ConfirmOpen(cookie);
+               return _ConfirmOpen(fHandle, cookie);
        else
                return B_OK;
 }

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

Commit:      17c2a4858524df47bb37136ec3f1320bafe11430

Author:      Pawel Dziepak <pdziepak@xxxxxxxxxxx>
Date:        Mon Jul  2 18:22:41 2012 UTC

nfs4: Do not get_vnode() if Inode::Create() failed

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

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 b8519ff..e2b40f9 100644
--- a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp
+++ b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp
@@ -327,8 +327,10 @@ nfs4_create(fs_volume* volume, fs_vnode* dir, const char* 
name, int openMode,
 
        Inode* inode = reinterpret_cast<Inode*>(dir->private_node);
        status_t result = inode->Create(name, openMode, perms, cookie, 
_newVnodeID);
-       if (result != B_OK)
+       if (result != B_OK) {
                delete cookie;
+               return result;
+       }
 
        void* ptr;
        result = get_vnode(volume, *_newVnodeID, &ptr);


Other related posts: