51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package zfs
|
|
|
|
import (
|
|
"strconv"
|
|
)
|
|
|
|
type clonesCreateDesc []Dataset
|
|
|
|
func (list clonesCreateDesc) Less(i, j int) bool {
|
|
_, oki := list[i].Properties[DatasetNumProps+1000]
|
|
_, okj := list[i].Properties[DatasetNumProps+1000]
|
|
if oki && okj {
|
|
unixti, err := strconv.ParseInt(
|
|
list[i].Properties[DatasetNumProps+1000].Value, 10, 64)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
unixtj, err := strconv.ParseInt(
|
|
list[j].Properties[DatasetNumProps+1000].Value, 10, 64)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
if unixti != unixtj {
|
|
return unixti > unixtj
|
|
}
|
|
}
|
|
|
|
// if we have two datasets created from same snapshot
|
|
// any of them will do, but we will go for most recent
|
|
unixti, err := strconv.ParseInt(
|
|
list[i].Properties[DatasetPropCreateTXG].Value, 10, 64)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
unixtj, err := strconv.ParseInt(
|
|
list[j].Properties[DatasetPropCreateTXG].Value, 10, 64)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return unixti > unixtj
|
|
}
|
|
|
|
func (list clonesCreateDesc) Swap(i, j int) {
|
|
list[i], list[j] = list[j], list[i]
|
|
}
|
|
|
|
func (list clonesCreateDesc) Len() int {
|
|
return len(list)
|
|
}
|