aboutsummaryrefslogtreecommitdiff
path: root/weed/mount/weedfs_file_copy_range.go
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2023-09-22 21:38:25 -0700
committerGitHub <noreply@github.com>2023-09-22 21:38:25 -0700
commit9fc79bebf97be1c52b824fea03a431320ca097c1 (patch)
tree9cc17ea8305abda04023e2ba32421e37ebe408a3 /weed/mount/weedfs_file_copy_range.go
parent48cd33ca68dd411cbf0cf9cdaeb2a05fe19e9d9a (diff)
parent248b16bc099267eb76e02f6fe45d7009942325a9 (diff)
downloadseaweedfs-9fc79bebf97be1c52b824fea03a431320ca097c1.tar.xz
seaweedfs-9fc79bebf97be1c52b824fea03a431320ca097c1.zip
Merge branch 'master' into track-mount-e2e
Diffstat (limited to 'weed/mount/weedfs_file_copy_range.go')
-rw-r--r--weed/mount/weedfs_file_copy_range.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/weed/mount/weedfs_file_copy_range.go b/weed/mount/weedfs_file_copy_range.go
index 49bab17f3..50a2d5a95 100644
--- a/weed/mount/weedfs_file_copy_range.go
+++ b/weed/mount/weedfs_file_copy_range.go
@@ -1,6 +1,7 @@
package mount
import (
+ "github.com/seaweedfs/seaweedfs/weed/util"
"net/http"
"time"
@@ -44,16 +45,16 @@ func (wfs *WFS) CopyFileRange(cancel <-chan struct{}, in *fuse.CopyFileRangeIn)
}
// lock source and target file handles
- fhOut.Lock()
- defer fhOut.Unlock()
+ fhOutActiveLock := fhOut.wfs.fhLockTable.AcquireLock("CopyFileRange", fhOut.fh, util.ExclusiveLock)
+ defer fhOut.wfs.fhLockTable.ReleaseLock(fhOut.fh, fhOutActiveLock)
if fhOut.entry == nil {
return 0, fuse.ENOENT
}
if fhIn.fh != fhOut.fh {
- fhIn.RLock()
- defer fhIn.RUnlock()
+ fhInActiveLock := fhIn.wfs.fhLockTable.AcquireLock("CopyFileRange", fhIn.fh, util.ExclusiveLock)
+ defer fhIn.wfs.fhLockTable.ReleaseLock(fhIn.fh, fhInActiveLock)
}
// directories are not supported