Patch the CreatePool function
Some checks failed
CI / test-build (push) Has been cancelled

The CreatePool function have some bug when creating an pool it mounting an vdev properties but in the reality it show that the option is the dataset properties
This commit is contained in:
2025-12-18 10:29:24 +00:00
parent 4e8fb66e25
commit e36c855bf4

View File

@@ -213,12 +213,20 @@ func (s *Service) CreatePool(name string, vdevs []string, options map[string]str
log.Printf("warning: failed to pre-create mountpoint %s: %v (continuing anyway)", mountpoint, err)
}
}
// handle canmount as DATASET property not the vdev property
canmount := "noauto"
if v, ok := options["canmount"]; ok && v != "" {
canmount = v
}
delete(options, "canmount")
// Set canmount=noauto to prevent automatic mounting during creation
// This allows pool creation to succeed even if mountpoint can't be created
if _, hasCanmount := options["canmount"]; !hasCanmount {
options["canmount"] = "noauto"
}
// if _, hasCanmount := options["canmount"]; !hasCanmount {
// options["canmount"] = "noauto"
// }
// IMPORTANT: Don't set mountpoint during pool creation
// ZFS tries to mount immediately during creation, which can fail
@@ -231,6 +239,8 @@ func (s *Service) CreatePool(name string, vdevs []string, options map[string]str
args = append(args, "-o", fmt.Sprintf("%s=%s", k, v))
}
args = append(args, "-O", fmt.Sprintf("canmount=%s", canmount))
args = append(args, name)
// Normalize vdev paths - ensure they start with /dev/ if they don't already