diff --git a/selfdrive/ui/qt/setup/reset.cc b/selfdrive/ui/qt/setup/reset.cc index 7355a9338d..84b7773314 100644 --- a/selfdrive/ui/qt/setup/reset.cc +++ b/selfdrive/ui/qt/setup/reset.cc @@ -12,22 +12,22 @@ #define USERDATA "/dev/disk/by-partlabel/userdata" void Reset::doReset() { - std::vector cmds = { - "sudo umount " NVME " || true", - "yes | sudo mkfs.ext4 " NVME " || true", - "sudo umount " USERDATA " || true", - "yes | sudo mkfs.ext4 " USERDATA, - "sudo reboot", - }; - - for (auto &cmd : cmds) { - int ret = std::system(cmd); - if (ret != 0) { - body->setText("Reset failed. Reboot to try again."); - rebootBtn->show(); - return; - } + // best effort to wipe nvme + std::system("sudo umount " NVME); + std::system("yes | sudo mkfs.ext4 " NVME); + + // we handle two cases here + // * user-prompted factory reset + // * recovering from a corrupt userdata by formatting + int rm = std::system("sudo rm -rf /data/*"); + std::system("sudo umount " USERDATA); + int fmt = std::system("yes | sudo mkfs.ext4 " USERDATA); + + if (rm == 0 || fmt == 0) { + std::system("sudo reboot"); } + body->setText("Reset failed. Reboot to try again."); + rebootBtn->show(); } void Reset::confirm() {