added 2 changesets to branch 'refs/remotes/pdziepak-github/nfs4' old head: 3d064796c7e4765e62811d3d17f94c015d9af85b new head: 46bffd5839fc9a1cc8a2277ca5dea4664d082ec9 overview: https://github.com/pdziepak/Haiku/compare/3d06479...46bffd5 ---------------------------------------------------------------------------- 5f0e4e4: nfs4: make sure we have inode names required to get file handle 46bffd5: nfs4: minor improvements in VnodeToInode code * removal of now unnecessary NULL check * Clear() is Replace(NULL) [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ] ---------------------------------------------------------------------------- 3 files changed, 8 insertions(+), 7 deletions(-) src/add-ons/kernel/file_systems/nfs4/FileInfo.cpp | 6 +++++- src/add-ons/kernel/file_systems/nfs4/VnodeToInode.cpp | 2 +- src/add-ons/kernel/file_systems/nfs4/VnodeToInode.h | 7 ++----- ############################################################################ Commit: 5f0e4e4a8128c4f9556ab1fdde928d73a6225c4b Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Tue Mar 26 23:19:17 2013 UTC nfs4: make sure we have inode names required to get file handle ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/FileInfo.cpp b/src/add-ons/kernel/file_systems/nfs4/FileInfo.cpp index d620481..45f002d 100644 --- a/src/add-ons/kernel/file_systems/nfs4/FileInfo.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/FileInfo.cpp @@ -148,8 +148,12 @@ FileInfo::UpdateFileHandles(FileSystem* fs) uint32 i; InodeNames* names = fNames; - for (i = 0; names != NULL; i++) + for (i = 0; names != NULL; i++) { + if (names->fNames.IsEmpty()) + return B_ENTRY_NOT_FOUND; + names = names->fNames.Head()->fParent; + } if (i > 0) { names = fNames; ############################################################################ Commit: 46bffd5839fc9a1cc8a2277ca5dea4664d082ec9 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Tue Mar 26 23:25:12 2013 UTC nfs4: minor improvements in VnodeToInode code * removal of now unnecessary NULL check * Clear() is Replace(NULL) ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.cpp b/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.cpp index 2e20cfc..6e260bc 100644 --- a/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.cpp @@ -27,7 +27,7 @@ void VnodeToInode::Replace(Inode* newInode) { WriteLocker _(fLock); - if (fInode != NULL && !IsRoot()) + if (!IsRoot()) delete fInode; fInode = newInode; diff --git a/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.h b/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.h index b75528a..ee04a45 100644 --- a/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.h +++ b/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.h @@ -72,7 +72,7 @@ VnodeToInode::VnodeToInode(ino_t id, FileSystem* fileSystem) inline VnodeToInode::~VnodeToInode() { - Replace(NULL); + Clear(); if (fFileSystem != NULL && !IsRoot()) fFileSystem->InoIdMap()->RemoveEntry(fID); rw_lock_destroy(&fLock); @@ -96,10 +96,7 @@ VnodeToInode::Unlock() inline void VnodeToInode::Clear() { - WriteLocker _(fLock); - if (!IsRoot()) - delete fInode; - fInode = NULL; + Replace(NULL); }