@@ -574,7 +574,29 @@ func diskPartitionCreate(
574574 }
575575
576576 if partitionInfo .FsType == "fat32" || partitionInfo .FsType == "fat16" || partitionInfo .FsType == "vfat" {
577- cmdStr = fmt .Sprintf ("mkfs -t vfat %s" , diskPartDev )
577+ var fatTypeFlag string
578+ switch partitionInfo .FsType {
579+ case "fat32" :
580+ fatTypeFlag = "-F 32"
581+ case "fat16" :
582+ fatTypeFlag = "-F 16"
583+ default : // "vfat"
584+ fatTypeFlag = "" // Let mkfs.vfat auto-decide
585+ }
586+
587+ if partitionInfo .FsLabel != "" {
588+ if fatTypeFlag != "" {
589+ cmdStr = fmt .Sprintf ("mkfs -t vfat %s -n %s %s" , fatTypeFlag , partitionInfo .FsLabel , diskPartDev )
590+ } else {
591+ cmdStr = fmt .Sprintf ("mkfs -t vfat -n %s %s" , partitionInfo .FsLabel , diskPartDev )
592+ }
593+ } else {
594+ if fatTypeFlag != "" {
595+ cmdStr = fmt .Sprintf ("mkfs -t vfat %s %s" , fatTypeFlag , diskPartDev )
596+ } else {
597+ cmdStr = fmt .Sprintf ("mkfs -t vfat %s" , diskPartDev )
598+ }
599+ }
578600 _ , err := shell .ExecCmd (cmdStr , true , shell .HostPath , nil )
579601 if err != nil {
580602 log .Errorf ("Failed to format partition %d with fs type %s: %v" , partitionNum , partitionInfo .FsType , err )
@@ -590,8 +612,16 @@ func diskPartitionCreate(
590612 case "ext4" :
591613 additionalFlags = "-b 4096 -O none,sparse_super,large_file,filetype,resize_inode,dir_index,ext_attr,has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize"
592614 }
593- if additionalFlags != "" {
615+ var labelFlag string
616+ if partitionInfo .FsLabel != "" {
617+ labelFlag = fmt .Sprintf ("-L %s" , partitionInfo .FsLabel )
618+ }
619+ if additionalFlags != "" && labelFlag != "" {
620+ cmdStr = fmt .Sprintf ("mkfs -t %s %s %s %s" , partitionInfo .FsType , labelFlag , additionalFlags , diskPartDev )
621+ } else if additionalFlags != "" {
594622 cmdStr = fmt .Sprintf ("mkfs -t %s %s %s" , partitionInfo .FsType , additionalFlags , diskPartDev )
623+ } else if labelFlag != "" {
624+ cmdStr = fmt .Sprintf ("mkfs -t %s %s %s" , partitionInfo .FsType , labelFlag , diskPartDev )
595625 } else {
596626 cmdStr = fmt .Sprintf ("mkfs -t %s %s" , partitionInfo .FsType , diskPartDev )
597627 }
@@ -601,7 +631,11 @@ func diskPartitionCreate(
601631 return "" , fmt .Errorf ("failed to format partition %d with fs type %s: %w" , partitionNum , partitionInfo .FsType , err )
602632 }
603633 } else if partitionInfo .FsType == "linux-swap" {
604- cmdStr = fmt .Sprintf ("mkswap %s" , diskPartDev )
634+ if partitionInfo .FsLabel != "" {
635+ cmdStr = fmt .Sprintf ("mkswap -L %s %s" , partitionInfo .FsLabel , diskPartDev )
636+ } else {
637+ cmdStr = fmt .Sprintf ("mkswap %s" , diskPartDev )
638+ }
605639 _ , err := shell .ExecCmd (cmdStr , true , shell .HostPath , nil )
606640 if err != nil {
607641 log .Errorf ("Failed to format partition %d with fs type %s: %v" , partitionNum , partitionInfo .FsType , err )
0 commit comments