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])
})
// each volume gets a turn to be first. Used by PutBlock to distribute
// new data across available volumes.
func (vm *RRVolumeManager) NextWritable() []*VolumeMount {
// each volume gets a turn to be first. Used by PutBlock to distribute
// new data across available volumes.
func (vm *RRVolumeManager) NextWritable() []*VolumeMount {
offset := (int(atomic.AddUint32(&vm.counter, 1)) - 1) % len(vm.writables)
return append(append([]*VolumeMount(nil), vm.writables[offset:]...), vm.writables[:offset]...)
}
offset := (int(atomic.AddUint32(&vm.counter, 1)) - 1) % len(vm.writables)
return append(append([]*VolumeMount(nil), vm.writables[offset:]...), vm.writables[:offset]...)
}