diff options
Diffstat (limited to 'internal/fusefrontend')
| -rw-r--r-- | internal/fusefrontend/fs.go | 8 | 
1 files changed, 7 insertions, 1 deletions
| diff --git a/internal/fusefrontend/fs.go b/internal/fusefrontend/fs.go index 3c442a5..b4819fd 100644 --- a/internal/fusefrontend/fs.go +++ b/internal/fusefrontend/fs.go @@ -517,7 +517,13 @@ func (fs *FS) Rename(oldPath string, newPath string, context *fuse.Context) (cod  		finalNewPath = cNewName  		// Create destination .name file  		err = fs.nameTransform.WriteLongName(newDirFd, cNewName, newPath) -		if err != nil { +		// Failure to write the .name file is expected when the target path already +		// exists. Since hashes are pretty unique, there is no need to modify the +		// file anyway. We still set newDirFd to nil to ensure that we do not delete +		// the file on error. +		if err == syscall.EEXIST { +			newDirFd = nil +		} else if err != nil {  			return fuse.ToStatus(err)  		}  	} | 
