projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
21126: Add AllowTrashWhenReadOnly flag.
[arvados.git]
/
services
/
keepstore
/
volume.go
diff --git
a/services/keepstore/volume.go
b/services/keepstore/volume.go
index 3f7c9cb79b4b24b71c3c441e49235fd657d77e69..f597ff578106544c54763c9847a3190b53154130 100644
(file)
--- a/
services/keepstore/volume.go
+++ b/
services/keepstore/volume.go
@@
-2,7
+2,7
@@
//
// SPDX-License-Identifier: AGPL-3.0
//
// SPDX-License-Identifier: AGPL-3.0
-package
main
+package
keepstore
import (
"context"
import (
"context"
@@
-316,8
+316,6
@@
func makeRRVolumeManager(logger logrus.FieldLogger, cluster *arvados.Cluster, my
if err != nil {
return nil, fmt.Errorf("error initializing volume %s: %s", uuid, err)
}
if err != nil {
return nil, fmt.Errorf("error initializing volume %s: %s", uuid, err)
}
- logger.Printf("started volume %s (%s), ReadOnly=%v", uuid, vol, cfgvol.ReadOnly || va.ReadOnly)
-
sc := cfgvol.StorageClasses
if len(sc) == 0 {
sc = map[string]bool{"default": true}
sc := cfgvol.StorageClasses
if len(sc) == 0 {
sc = map[string]bool{"default": true}
@@
-330,7
+328,8
@@
func makeRRVolumeManager(logger logrus.FieldLogger, cluster *arvados.Cluster, my
KeepMount: arvados.KeepMount{
UUID: uuid,
DeviceID: vol.GetDeviceID(),
KeepMount: arvados.KeepMount{
UUID: uuid,
DeviceID: vol.GetDeviceID(),
- ReadOnly: cfgvol.ReadOnly || va.ReadOnly,
+ AllowWrite: !va.ReadOnly && !cfgvol.ReadOnly,
+ AllowTrash: !va.ReadOnly && (!cfgvol.ReadOnly || cfgvol.AllowTrashWhenReadOnly),
Replication: repl,
StorageClasses: sc,
},
Replication: repl,
StorageClasses: sc,
},
@@
-340,9
+339,10
@@
func makeRRVolumeManager(logger logrus.FieldLogger, cluster *arvados.Cluster, my
vm.mounts = append(vm.mounts, mnt)
vm.mountMap[uuid] = mnt
vm.readables = append(vm.readables, mnt)
vm.mounts = append(vm.mounts, mnt)
vm.mountMap[uuid] = mnt
vm.readables = append(vm.readables, mnt)
- if
!mnt.KeepMount.ReadOnly
{
+ if
mnt.KeepMount.AllowWrite
{
vm.writables = append(vm.writables, mnt)
}
vm.writables = append(vm.writables, mnt)
}
+ logger.Printf("started volume %s (%s), AllowWrite=%v, AllowTrash=%v", uuid, vol, mnt.AllowWrite, mnt.AllowTrash)
}
// pri(mnt): return highest priority of any storage class
// offered by mnt
}
// pri(mnt): return highest priority of any storage class
// offered by mnt
@@
-371,6
+371,9
@@
func makeRRVolumeManager(logger logrus.FieldLogger, cluster *arvados.Cluster, my
sort.Slice(vm.writables, func(i, j int) bool {
return less(vm.writables[i], vm.writables[j])
})
sort.Slice(vm.writables, func(i, j int) bool {
return less(vm.writables[i], vm.writables[j])
})
+ sort.Slice(vm.mounts, func(i, j int) bool {
+ return less(vm.mounts[i], vm.mounts[j])
+ })
return vm, nil
}
return vm, nil
}
@@
-379,7
+382,7
@@
func (vm *RRVolumeManager) Mounts() []*VolumeMount {
}
func (vm *RRVolumeManager) Lookup(uuid string, needWrite bool) *VolumeMount {
}
func (vm *RRVolumeManager) Lookup(uuid string, needWrite bool) *VolumeMount {
- if mnt, ok := vm.mountMap[uuid]; ok && (!needWrite ||
!mnt.ReadOnly
) {
+ if mnt, ok := vm.mountMap[uuid]; ok && (!needWrite ||
mnt.AllowWrite
) {
return mnt
}
return nil
return mnt
}
return nil