diff options
| author | Guang Jiong Lou <7991675+27149chen@users.noreply.github.com> | 2024-09-17 12:02:21 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-16 21:02:21 -0700 |
| commit | 6c986e9d70098404832d11d81faf7605b9c742a6 (patch) | |
| tree | cffcf609c9a316f86a680660ec71c6e041a52996 /weed/mount/weedfs_filehandle.go | |
| parent | e73ab5c0c49dfbd1870bccbd1e6d694d46fc8d73 (diff) | |
| download | seaweedfs-6c986e9d70098404832d11d81faf7605b9c742a6.tar.xz seaweedfs-6c986e9d70098404832d11d81faf7605b9c742a6.zip | |
improve worm support (#5983)
* improve worm support
Signed-off-by: lou <alex1988@outlook.com>
* worm mode in filer
Signed-off-by: lou <alex1988@outlook.com>
* update after review
Signed-off-by: lou <alex1988@outlook.com>
* update after review
Signed-off-by: lou <alex1988@outlook.com>
* move to fs configure
Signed-off-by: lou <alex1988@outlook.com>
* remove flag
Signed-off-by: lou <alex1988@outlook.com>
* update after review
Signed-off-by: lou <alex1988@outlook.com>
* support worm hardlink
Signed-off-by: lou <alex1988@outlook.com>
* update after review
Signed-off-by: lou <alex1988@outlook.com>
* typo
Signed-off-by: lou <alex1988@outlook.com>
* sync filer conf
Signed-off-by: lou <alex1988@outlook.com>
---------
Signed-off-by: lou <alex1988@outlook.com>
Diffstat (limited to 'weed/mount/weedfs_filehandle.go')
| -rw-r--r-- | weed/mount/weedfs_filehandle.go | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/weed/mount/weedfs_filehandle.go b/weed/mount/weedfs_filehandle.go index e0149aee9..bfc129240 100644 --- a/weed/mount/weedfs_filehandle.go +++ b/weed/mount/weedfs_filehandle.go @@ -3,19 +3,16 @@ package mount import ( "github.com/hanwen/go-fuse/v2/fuse" "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" - "time" + "github.com/seaweedfs/seaweedfs/weed/util" ) func (wfs *WFS) AcquireHandle(inode uint64, flags, uid, gid uint32) (fileHandle *FileHandle, status fuse.Status) { var entry *filer_pb.Entry - _, _, entry, status = wfs.maybeReadEntry(inode) + var path util.FullPath + path, _, entry, status = wfs.maybeReadEntry(inode) if status == fuse.OK { - if entry != nil && wfs.option.WriteOnceReadMany { - if entry.Attributes.Mtime+10 < time.Now().Unix() { - if flags&fuse.O_ANYWRITE != 0 { - return nil, fuse.EPERM - } - } + if wfs.wormEnabledForEntry(path, entry) && flags&fuse.O_ANYWRITE != 0 { + return nil, fuse.EPERM } // need to AcquireFileHandle again to ensure correct handle counter fileHandle = wfs.fhMap.AcquireFileHandle(wfs, inode, entry) |
