aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwusong <75450248+wusongANKANG@users.noreply.github.com>2023-07-17 22:52:14 +0800
committerGitHub <noreply@github.com>2023-07-17 07:52:14 -0700
commit33b9192536ceb65015430f89054d6fe67d51c415 (patch)
treefe6ef0e8a565846d9ef594af5ed1ea5190d29e0c
parent358b3a489475333e503886513080b815ce45a4a5 (diff)
downloadseaweedfs-33b9192536ceb65015430f89054d6fe67d51c415.tar.xz
seaweedfs-33b9192536ceb65015430f89054d6fe67d51c415.zip
Fix large file chunks deleted by mistake (#4678)
-rw-r--r--weed/mount/weedfs_xattr.go10
-rw-r--r--weed/server/filer_grpc_server.go7
2 files changed, 12 insertions, 5 deletions
diff --git a/weed/mount/weedfs_xattr.go b/weed/mount/weedfs_xattr.go
index b03fa01f1..e1d6d4351 100644
--- a/weed/mount/weedfs_xattr.go
+++ b/weed/mount/weedfs_xattr.go
@@ -1,11 +1,12 @@
package mount
import (
- "github.com/hanwen/go-fuse/v2/fuse"
- sys "golang.org/x/sys/unix"
"runtime"
"strings"
"syscall"
+
+ "github.com/hanwen/go-fuse/v2/fuse"
+ sys "golang.org/x/sys/unix"
)
const (
@@ -131,6 +132,11 @@ func (wfs *WFS) SetXAttr(cancel <-chan struct{}, input *fuse.SetXAttrIn, attr st
entry.Extended[XATTR_PREFIX+attr] = data
}
+ if fh != nil {
+ fh.dirtyMetadata = true
+ return fuse.OK
+ }
+
return wfs.saveEntry(path, entry)
}
diff --git a/weed/server/filer_grpc_server.go b/weed/server/filer_grpc_server.go
index d67bd425e..7607af664 100644
--- a/weed/server/filer_grpc_server.go
+++ b/weed/server/filer_grpc_server.go
@@ -3,12 +3,13 @@ package weed_server
import (
"context"
"fmt"
- "github.com/seaweedfs/seaweedfs/weed/cluster"
"os"
"path/filepath"
"strconv"
"time"
+ "github.com/seaweedfs/seaweedfs/weed/cluster"
+
"github.com/seaweedfs/seaweedfs/weed/filer"
"github.com/seaweedfs/seaweedfs/weed/glog"
"github.com/seaweedfs/seaweedfs/weed/operation"
@@ -157,7 +158,7 @@ func (fs *FilerServer) CreateEntry(ctx context.Context, req *filer_pb.CreateEntr
createErr := fs.filer.CreateEntry(ctx, newEntry, req.OExcl, req.IsFromOtherCluster, req.Signatures, req.SkipCheckParentDirectory)
if createErr == nil {
- fs.filer.DeleteChunks(garbage)
+ fs.filer.DeleteChunksNotRecursive(garbage)
} else {
glog.V(3).Infof("CreateEntry %s: %v", filepath.Join(req.Directory, req.Entry.Name), createErr)
resp.Error = createErr.Error()
@@ -189,7 +190,7 @@ func (fs *FilerServer) UpdateEntry(ctx context.Context, req *filer_pb.UpdateEntr
}
if err = fs.filer.UpdateEntry(ctx, entry, newEntry); err == nil {
- fs.filer.DeleteChunks(garbage)
+ fs.filer.DeleteChunksNotRecursive(garbage)
fs.filer.NotifyUpdateEvent(ctx, entry, newEntry, true, req.IsFromOtherCluster, req.Signatures)