bcachefs: fix for building in userspace
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 16 Mar 2024 23:36:11 +0000 (19:36 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 18 Mar 2024 00:53:12 +0000 (20:53 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/super.c

index 233f864ed8b07ff321b64993a821d08137b70ecd..1cabdd47e88d5195b183b8f8fcb2a4eaa195f952 100644 (file)
@@ -87,20 +87,27 @@ const char * const bch2_fs_flag_strs[] = {
        NULL
 };
 
-void bch2_print_opts(struct bch_opts *opts, const char *fmt, ...)
+static void bch2_print_maybe_redirect(struct stdio_redirect *stdio, const char *fmt, va_list args)
 {
-       struct stdio_redirect *stdio = (void *)(unsigned long)opts->stdio;
-
-       va_list args;
-       va_start(args, fmt);
-       if (likely(!stdio)) {
-               vprintk(fmt, args);
-       } else {
+#ifdef __KERNEL__
+       if (unlikely(stdio)) {
                if (fmt[0] == KERN_SOH[0])
                        fmt += 2;
 
                bch2_stdio_redirect_vprintf(stdio, true, fmt, args);
+               return;
        }
+#endif
+       vprintk(fmt, args);
+}
+
+void bch2_print_opts(struct bch_opts *opts, const char *fmt, ...)
+{
+       struct stdio_redirect *stdio = (void *)(unsigned long)opts->stdio;
+
+       va_list args;
+       va_start(args, fmt);
+       bch2_print_maybe_redirect(stdio, fmt, args);
        va_end(args);
 }
 
@@ -110,14 +117,7 @@ void __bch2_print(struct bch_fs *c, const char *fmt, ...)
 
        va_list args;
        va_start(args, fmt);
-       if (likely(!stdio)) {
-               vprintk(fmt, args);
-       } else {
-               if (fmt[0] == KERN_SOH[0])
-                       fmt += 2;
-
-               bch2_stdio_redirect_vprintf(stdio, true, fmt, args);
-       }
+       bch2_print_maybe_redirect(stdio, fmt, args);
        va_end(args);
 }