You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package mount
import ( "context" "fmt" "github.com/hanwen/go-fuse/v2/fuse" "github.com/seaweedfs/seaweedfs/weed/filer" "github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" "github.com/seaweedfs/seaweedfs/weed/util" "syscall" )
func (wfs *WFS) saveEntry(path util.FullPath, entry *filer_pb.Entry) (code fuse.Status) {
parentDir, _ := path.DirAndName()
err := wfs.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error {
wfs.mapPbIdFromLocalToFiler(entry) defer wfs.mapPbIdFromFilerToLocal(entry)
request := &filer_pb.UpdateEntryRequest{ Directory: parentDir, Entry: entry, Signatures: []int32{wfs.signature}, }
glog.V(1).Infof("save entry: %v", request) _, err := client.UpdateEntry(context.Background(), request) if err != nil { return fmt.Errorf("UpdateEntry dir %s: %v", path, err) }
if err := wfs.metaCache.UpdateEntry(context.Background(), filer.FromPbEntry(request.Directory, request.Entry)); err != nil { return fmt.Errorf("UpdateEntry dir %s: %v", path, err) }
return nil }) if err != nil { glog.Errorf("saveEntry %s: %v", path, err) return fuse.EIO }
return fuse.OK }
func (wfs *WFS) mapPbIdFromFilerToLocal(entry *filer_pb.Entry) { if entry.Attributes == nil { return } entry.Attributes.Uid, entry.Attributes.Gid = wfs.option.UidGidMapper.FilerToLocal(entry.Attributes.Uid, entry.Attributes.Gid) } func (wfs *WFS) mapPbIdFromLocalToFiler(entry *filer_pb.Entry) { if entry.Attributes == nil { return } entry.Attributes.Uid, entry.Attributes.Gid = wfs.option.UidGidMapper.LocalToFiler(entry.Attributes.Uid, entry.Attributes.Gid) }
func checkName(name string) fuse.Status { if len(name) >= 4096 { return fuse.Status(syscall.ENAMETOOLONG) } return fuse.OK }
|