aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/volume.go
diff options
context:
space:
mode:
authorBruce <half-life@jibudata.com>2024-09-05 22:58:24 +0800
committerGitHub <noreply@github.com>2024-09-05 07:58:24 -0700
commitf9e141a4126c3e243edb46b84bc3649a7e790bc8 (patch)
treec093eb3d7a5b016cad90e44e3f116d78ae09a386 /weed/storage/volume.go
parent310d41998d0292654f8d05e02fea2a5fd90d8bc3 (diff)
downloadseaweedfs-f9e141a4126c3e243edb46b84bc3649a7e790bc8.tar.xz
seaweedfs-f9e141a4126c3e243edb46b84bc3649a7e790bc8.zip
persist readonly state to volume info (#5977)
Diffstat (limited to 'weed/storage/volume.go')
-rw-r--r--weed/storage/volume.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/weed/storage/volume.go b/weed/storage/volume.go
index 94d1f9a4e..e55564652 100644
--- a/weed/storage/volume.go
+++ b/weed/storage/volume.go
@@ -48,8 +48,9 @@ type Volume struct {
isCompacting bool
isCommitCompacting bool
- volumeInfo *volume_server_pb.VolumeInfo
- location *DiskLocation
+ volumeInfoRWLock sync.RWMutex
+ volumeInfo *volume_server_pb.VolumeInfo
+ location *DiskLocation
lastIoError error
}
@@ -358,3 +359,10 @@ func (v *Volume) IsReadOnly() bool {
defer v.noWriteLock.RUnlock()
return v.noWriteOrDelete || v.noWriteCanDelete || v.location.isDiskSpaceLow
}
+
+func (v *Volume) PersistReadOnly(readOnly bool) {
+ v.volumeInfoRWLock.RLock()
+ defer v.volumeInfoRWLock.RUnlock()
+ v.volumeInfo.ReadOnly = readOnly
+ v.SaveVolumeInfo()
+}