aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/volume.go
diff options
context:
space:
mode:
authorEvgenii Kozlov <e.kozlov@searchinform.ru>2020-06-05 18:18:15 +0300
committerEvgenii Kozlov <e.kozlov@searchinform.ru>2020-06-05 18:18:15 +0300
commit0e0db70f5537d5325f6f4d1b0de4a301207e3620 (patch)
tree8103d793cd5e4a1ebced2d5a61b571c9b8c201b2 /weed/storage/volume.go
parent393ab07c7c27d68021e7b3831be23a8a17d0479e (diff)
downloadseaweedfs-0e0db70f5537d5325f6f4d1b0de4a301207e3620.tar.xz
seaweedfs-0e0db70f5537d5325f6f4d1b0de4a301207e3620.zip
Set volumes ReadOnly if low free disk space
Diffstat (limited to 'weed/storage/volume.go')
-rw-r--r--weed/storage/volume.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/weed/storage/volume.go b/weed/storage/volume.go
index df63360a1..e10f5afaa 100644
--- a/weed/storage/volume.go
+++ b/weed/storage/volume.go
@@ -27,6 +27,7 @@ type Volume struct {
needleMapKind NeedleMapType
noWriteOrDelete bool // if readonly, either noWriteOrDelete or noWriteCanDelete
noWriteCanDelete bool // if readonly, either noWriteOrDelete or noWriteCanDelete
+ lowDiskSpace bool
hasRemoteFile bool // if the volume has a remote file
MemoryMapMaxSizeMb uint32
@@ -45,6 +46,11 @@ type Volume struct {
volumeInfo *volume_server_pb.VolumeInfo
}
+func (v *Volume) SetLowDiskSpace(lowDiskSpace bool) {
+ glog.V(0).Infof("SetLowDiskSpace id %d value %t", v.Id, lowDiskSpace)
+ v.lowDiskSpace = lowDiskSpace
+}
+
func NewVolume(dirname string, collection string, id needle.VolumeId, needleMapKind NeedleMapType, replicaPlacement *super_block.ReplicaPlacement, ttl *needle.TTL, preallocate int64, memoryMapMaxSizeMb uint32) (v *Volume, e error) {
// if replicaPlacement is nil, the superblock will be loaded from disk
v = &Volume{dir: dirname, Collection: collection, Id: id, MemoryMapMaxSizeMb: memoryMapMaxSizeMb,
@@ -244,5 +250,5 @@ func (v *Volume) RemoteStorageNameKey() (storageName, storageKey string) {
}
func (v *Volume) IsReadOnly() bool {
- return v.noWriteOrDelete || v.noWriteCanDelete
+ return v.noWriteOrDelete || v.noWriteCanDelete || v.lowDiskSpace
}