diff --git a/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp b/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp index cc53d1d070..f132762264 100644 --- a/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp @@ -138,6 +138,13 @@ Inode::Open(int mode, OpenFileCookie* cookie) } } + if ((mode & O_TRUNC) == O_TRUNC) { + struct stat st; + st.st_size = 0; + WriteStat(&st, B_STAT_SIZE); + file_cache_set_size(fFileCache, 0); + } + cookie->fOpenState = fOpenState; cookie->fFileSystem = fFileSystem; diff --git a/src/add-ons/kernel/file_systems/nfs4/NFS4Inode.cpp b/src/add-ons/kernel/file_systems/nfs4/NFS4Inode.cpp index 67649d998a..a424350b29 100644 --- a/src/add-ons/kernel/file_systems/nfs4/NFS4Inode.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/NFS4Inode.cpp @@ -526,15 +526,6 @@ NFS4Inode::OpenFile(OpenState* state, int mode, OpenDelegationData* delegation) } req.PutFH(fInfo.fParent); - if ((mode & O_TRUNC) == O_TRUNC) { - AttrValue attr; - attr.fAttribute = FATTR4_SIZE; - attr.fFreePointer = false; - attr.fData.fValue64 = 0; - req.Open(CLAIM_NULL, sequence, sModeToAccess(mode), - state->fClientID, OPEN4_CREATE, fFileSystem->OpenOwner(), - fInfo.fName, &attr, 1, false); - } else req.Open(CLAIM_NULL, sequence, sModeToAccess(mode), state->fClientID, OPEN4_NOCREATE, fFileSystem->OpenOwner(), fInfo.fName); req.GetFH();