mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Revert xfs_repair fix
This commit is contained in:
parent
d37a1749ed
commit
5f0ba4923c
@ -314,33 +314,6 @@ func (mounter *SafeFormatAndMount) checkAndRepairFilesystem(source string) error
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// checkAndRepairXfsFilesystem checks and repairs xfs filesystem using command xfs_repair.
|
|
||||||
func (mounter *SafeFormatAndMount) checkAndRepairXfsFilesystem(source string) error {
|
|
||||||
klog.V(4).Infof("Checking for issues with xfs_repair on disk: %s", source)
|
|
||||||
|
|
||||||
args := []string{source}
|
|
||||||
checkArgs := []string{"-n", source}
|
|
||||||
|
|
||||||
// check-only using "xfs_repair -n", if the exit status is not 0, perform a "xfs_repair"
|
|
||||||
_, err := mounter.Exec.Command("xfs_repair", checkArgs...).CombinedOutput()
|
|
||||||
if err != nil {
|
|
||||||
if err == utilexec.ErrExecutableNotFound {
|
|
||||||
klog.Warningf("'xfs_repair' not found on system; continuing mount without running 'xfs_repair'.")
|
|
||||||
return nil
|
|
||||||
} else {
|
|
||||||
klog.Warningf("Filesystem corruption was detected for %s, running xfs_repair to repair", source)
|
|
||||||
out, err := mounter.Exec.Command("xfs_repair", args...).CombinedOutput()
|
|
||||||
if err != nil {
|
|
||||||
return NewMountError(HasFilesystemErrors, "'xfs_repair' found errors on device %s but could not correct them: %s\n", source, out)
|
|
||||||
} else {
|
|
||||||
klog.Infof("Device %s has errors which were corrected by xfs_repair.", source)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// formatAndMount uses unix utils to format and mount the given disk
|
// formatAndMount uses unix utils to format and mount the given disk
|
||||||
func (mounter *SafeFormatAndMount) formatAndMountSensitive(source string, target string, fstype string, options []string, sensitiveOptions []string) error {
|
func (mounter *SafeFormatAndMount) formatAndMountSensitive(source string, target string, fstype string, options []string, sensitiveOptions []string) error {
|
||||||
readOnly := false
|
readOnly := false
|
||||||
@ -410,14 +383,7 @@ func (mounter *SafeFormatAndMount) formatAndMountSensitive(source string, target
|
|||||||
|
|
||||||
if !readOnly {
|
if !readOnly {
|
||||||
// Run check tools on the disk to fix repairable issues, only do this for formatted volumes requested as rw.
|
// Run check tools on the disk to fix repairable issues, only do this for formatted volumes requested as rw.
|
||||||
var err error
|
err := mounter.checkAndRepairFilesystem(source)
|
||||||
switch existingFormat {
|
|
||||||
case "xfs":
|
|
||||||
err = mounter.checkAndRepairXfsFilesystem(source)
|
|
||||||
default:
|
|
||||||
err = mounter.checkAndRepairFilesystem(source)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -202,44 +202,6 @@ func TestSafeFormatAndMount(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expErrorType: GetDiskFormatFailed,
|
expErrorType: GetDiskFormatFailed,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
description: "Test that 'xfs_repair' is called only once, no need to repair the filesystem",
|
|
||||||
fstype: "xfs",
|
|
||||||
execScripts: []ExecArgs{
|
|
||||||
{"blkid", []string{"-p", "-s", "TYPE", "-s", "PTTYPE", "-o", "export", "/dev/foo"}, "DEVNAME=/dev/foo\nTYPE=xfs\n", nil},
|
|
||||||
{"xfs_repair", []string{"-n", "/dev/foo"}, "", nil},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description: "Test that 'xfs_repair' is called twice and repair the filesystem",
|
|
||||||
fstype: "xfs",
|
|
||||||
execScripts: []ExecArgs{
|
|
||||||
{"blkid", []string{"-p", "-s", "TYPE", "-s", "PTTYPE", "-o", "export", "/dev/foo"}, "DEVNAME=/dev/foo\nTYPE=xfs\n", nil},
|
|
||||||
{"xfs_repair", []string{"-n", "/dev/foo"}, "", &testingexec.FakeExitError{Status: 1}},
|
|
||||||
{"xfs_repair", []string{"/dev/foo"}, "\ndone\n", nil},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description: "Test that 'xfs_repair' is called twice and repair the filesystem, but mount failed",
|
|
||||||
fstype: "xfs",
|
|
||||||
mountErrs: []error{fmt.Errorf("unknown filesystem type '(null)'")},
|
|
||||||
execScripts: []ExecArgs{
|
|
||||||
{"blkid", []string{"-p", "-s", "TYPE", "-s", "PTTYPE", "-o", "export", "/dev/foo"}, "DEVNAME=/dev/foo\nTYPE=xfs\n", nil},
|
|
||||||
{"xfs_repair", []string{"-n", "/dev/foo"}, "", &testingexec.FakeExitError{Status: 1}},
|
|
||||||
{"xfs_repair", []string{"/dev/foo"}, "\ndone\n", nil},
|
|
||||||
},
|
|
||||||
expErrorType: UnknownMountError,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description: "Test that 'xfs_repair' is called twice but could not repair the filesystem",
|
|
||||||
fstype: "xfs",
|
|
||||||
execScripts: []ExecArgs{
|
|
||||||
{"blkid", []string{"-p", "-s", "TYPE", "-s", "PTTYPE", "-o", "export", "/dev/foo"}, "DEVNAME=/dev/foo\nTYPE=xfs\n", nil},
|
|
||||||
{"xfs_repair", []string{"-n", "/dev/foo"}, "", &testingexec.FakeExitError{Status: 1}},
|
|
||||||
{"xfs_repair", []string{"/dev/foo"}, "\nAn error occurred\n", &testingexec.FakeExitError{Status: 1}},
|
|
||||||
},
|
|
||||||
expErrorType: HasFilesystemErrors,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
description: "Test that 'blkid' is called and confirms unformatted disk, format fails with sensitive options",
|
description: "Test that 'blkid' is called and confirms unformatted disk, format fails with sensitive options",
|
||||||
fstype: "ext4",
|
fstype: "ext4",
|
||||||
|
Loading…
Reference in New Issue
Block a user