From c4b6b7949716d13eec856baffc7b7941ae21778c Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sun, 10 Jan 2016 22:48:27 +0100 Subject: [PATCH] Make returnRequest actually return the read buffer to readPool Due to a typo, returnRequest never actually returned the read buffer to readPool. Also, we want to put the complete buffer back into the pool - this caused errors later on. loopback "tar xzf ../linux-3.0.tar.gz" timings: before: 35 seconds after: 10 seconds --- fuse/request.go | 2 +- fuse/server.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fuse/request.go b/fuse/request.go index b9bb22331..9bb99acae 100644 --- a/fuse/request.go +++ b/fuse/request.go @@ -126,7 +126,7 @@ func (r *request) setInput(input []byte) bool { return false } r.inputBuf = input - r.bufferPoolInputBuf = input + r.bufferPoolInputBuf = input[:cap(input)] return true } diff --git a/fuse/server.go b/fuse/server.go index 6d26b05e5..8b50a0239 100644 --- a/fuse/server.go +++ b/fuse/server.go @@ -283,7 +283,7 @@ func (ms *Server) returnRequest(req *request) { req.clear() ms.reqMu.Lock() - if req.bufferPoolOutputBuf != nil { + if req.bufferPoolInputBuf != nil { ms.readPool.Put(req.bufferPoolInputBuf) req.bufferPoolInputBuf = nil ms.outstandingReadBufs--