Re: [MAINTAINERS/KERNEL SUMMIT] Trust and maintenance of file systems

Dan Carpenter
2023-09-07T09:48:31Z

On Wed, Sep 06, 2023 at 09:53:27PM -0400, Steven Rostedt wrote:
> On Thu, 7 Sep 2023 08:54:38 +1000
> Dave Chinner <david@fromorbit.com> wrote:
>
> > And let's not forget: removing a filesystem from the kernel is not
> > removing end user support for extracting data from old filesystems.
> > We have VMs for that - we can run pretty much any kernel ever built
> > inside a VM, so users that need to extract data from a really old
> > filesystem we no longer support in a modern kernel can simply boot
> > up an old distro that did support it and extract the data that way.
>
> Of course there's the case of trying to recreate a OS that can run on a
> very old kernel. Just building an old kernel is difficult today because
> today's compilers will refuse to build them (I've hit issues in bisections
> because of that!)

Yeah. I can't run Smatch on obsolete kernels because I can't build the
tools/ directory etc. For example, it would be interesting to look at
really ancient kernels to see how buggy they are. I started to hunt
down all the Makefile which add a -Werror but there are a lot and
eventually I got bored and gave up.

Someone should patch GCC so there it checks an environment variable to
ignore -Werror. Somethine like this?

diff --git a/gcc/opts.cc b/gcc/opts.cc
index ac81d4e42944..2de69300d4fe 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -2598,6 +2598,17 @@ print_help (struct gcc_options *opts, unsigned int lang_mask,
lang_mask);
}

+static bool
+ignore_w_error(void)
+{
+ char *str;
+
+ str = getenv("IGNORE_WERROR");
+ if (str && strcmp(str, "1") == 0)
+ return true;
+ return false;
+}
+
/* Handle target- and language-independent options. Return zero to
generate an "unknown option" message. Only options that need
extra handling need to be listed here; if you simply want
@@ -2773,11 +2784,15 @@ common_handle_option (struct gcc_options *opts,
break;

case OPT_Werror:
+ if (ignore_w_error())
+ break;
dc->warning_as_error_requested = value;
break;

case OPT_Werror_:
- if (lang_mask == CL_DRIVER)
+ if (ignore_w_error())
+ break;
+ if (lang_mask == CL_DRIVER)
break;

enable_warning_as_error (arg, value, lang_mask, handlers,