mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-13 10:33:35 +00:00
Format RBD volumes with nodiscard
formatting options.
Currently rbd CSI plugin uses formatAndMount of
mount.SafeFormatAndMount. This does not allow to pass or use
specific formatting arguments with it. This patch introduce
RBD specific formatting options with both xfs and ext4,
for example: -E no-discard with ext4 and -k option with
XFS to boost formatting performance of RBD device.
Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
(cherry picked from commit 0e6617e1ff
)
This commit is contained in:
@ -313,9 +313,27 @@ func (ns *NodeServer) mountVolumeToStagePath(ctx context.Context, req *csi.NodeS
|
||||
// Publish Path
|
||||
fsType := req.GetVolumeCapability().GetMount().GetFsType()
|
||||
diskMounter := &mount.SafeFormatAndMount{Interface: ns.mounter, Exec: mount.NewOsExec()}
|
||||
existingFormat, err := diskMounter.GetDiskFormat(devicePath)
|
||||
if err != nil {
|
||||
klog.Errorf(util.Log(ctx, "failed to get disk format for path %s, error: %v"), devicePath, err)
|
||||
return err
|
||||
}
|
||||
if existingFormat == "" && (fsType == "ext4" || fsType == "xfs") {
|
||||
args := []string{}
|
||||
if fsType == "ext4" {
|
||||
args = []string{"-m0", "-Enodiscard", devicePath}
|
||||
} else if fsType == "xfs" {
|
||||
args = []string{"-K", devicePath}
|
||||
}
|
||||
_, err = diskMounter.Exec.Run("mkfs."+fsType, args...)
|
||||
if err != nil {
|
||||
klog.Errorf(util.Log(ctx, "failed to run mkfs, error: %v"), err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
opt := []string{}
|
||||
isBlock := req.GetVolumeCapability().GetBlock() != nil
|
||||
var err error
|
||||
|
||||
if isBlock {
|
||||
opt = append(opt, "bind")
|
||||
|
Reference in New Issue
Block a user