The manual page of btrfsck clearly states 'btrfs check --repair' is a
dangerous operation.

Although this warning is in place users do not read the manual page and/or
are used to the behaviour of fsck utilities which repair the filesystem,
and thus potentially cause harm.

Similar to 'btrfs balance' without any filters, add a warning and a
countdown, so users can bail out before eventual corrupting the filesystem
more than it already is.

Signed-off-by: Johannes Thumshirn <[email protected]>
---
 check/main.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/check/main.c b/check/main.c
index fd05430c1f51..acded927281a 100644
--- a/check/main.c
+++ b/check/main.c
@@ -9970,6 +9970,23 @@ static int cmd_check(const struct cmd_struct *cmd, int 
argc, char **argv)
                exit(1);
        }
 
+       if (repair) {
+               int delay = 10;
+               printf("WARNING:\n\n");
+               printf("\tDo not use --repair unless you are advised to do so 
by a developer\n");
+               printf("\tor an experienced user, and then only after having 
accepted that no\n");
+               printf("\tfsck successfully repair all types of filesystem 
corruption. Eg.\n");
+               printf("\tsome other software or hardware bugs can fatally 
damage a volume.\n");
+               printf("\tThe operation will start in %d seconds.\n", delay);
+               printf("\tUse Ctrl-C to stop it.\n");
+               while (delay) {
+                       printf("%2d", delay--);
+                       fflush(stdout);
+                       sleep(1);
+               }
+               printf("\nStarting repair.\n");
+       }
+
        /*
         * experimental and dangerous
         */
-- 
2.16.4

Reply via email to