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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user