From 14c06b9b24e10f6f4a2845041a5e740e0cae664f Mon Sep 17 00:00:00 2001 From: wph95 Date: Mon, 7 Sep 2020 19:42:39 +0800 Subject: [PATCH 1/2] fix ForgetInode func inode.parent sometimes nil, cause runtime error --- internal/goofys.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/internal/goofys.go b/internal/goofys.go index 9070fb54..7e0dfff6 100644 --- a/internal/goofys.go +++ b/internal/goofys.go @@ -758,9 +758,10 @@ func (fs *Goofys) ForgetInode( inode := fs.getInodeOrDie(op.Inode) fs.mu.RUnlock() - if inode.Parent != nil { - inode.Parent.mu.Lock() - defer inode.Parent.mu.Unlock() + var parent = inode.Parent + if parent != nil { + parent.mu.Lock() + defer parent.mu.Unlock() } stale := inode.DeRef(op.N) @@ -771,8 +772,8 @@ func (fs *Goofys) ForgetInode( delete(fs.inodes, op.Inode) fs.forgotCnt += 1 - if inode.Parent != nil { - inode.Parent.removeChildUnlocked(inode) + if parent != nil { + parent.removeChildUnlocked(inode) } } From 7bc615e8492ede5a6ca19a4d20286e887d412439 Mon Sep 17 00:00:00 2001 From: wph95 Date: Mon, 7 Sep 2020 22:08:28 +0800 Subject: [PATCH 2/2] fix type problem --- internal/goofys.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/goofys.go b/internal/goofys.go index 7e0dfff6..f99442da 100644 --- a/internal/goofys.go +++ b/internal/goofys.go @@ -758,7 +758,7 @@ func (fs *Goofys) ForgetInode( inode := fs.getInodeOrDie(op.Inode) fs.mu.RUnlock() - var parent = inode.Parent + parent := inode.Parent if parent != nil { parent.mu.Lock() defer parent.mu.Unlock()