Re: [PATCH 00/23] per device dirty throttling -v8

Alan Cox
2007-08-05T19:28:15Z

> change relatime updates to be performed once per day. This makes
> relatime a compatible solution for HSM, mailer-notification and
> tmpwatch applications too.

Sweet
>

> also add the CONFIG_DEFAULT_RELATIME kernel option, which makes
> "norelatime" the default for all mounts without an extra kernel
> boot option.

Should be a mount option.

> + relatime [FS] default to enabled relatime updates on all
> + filesystems.
> +
> + relatime= [FS] default to enabled/disabled relatime updates on
> + all filesystems.
> +

Double patch

> atkbd.extra= [HW] Enable extra LEDs and keys on IBM RapidAccess,
> EzKey and similar keyboards
>
> @@ -1100,6 +1106,12 @@ and is between 256 and 4096 characters.
> noasync [HW,M68K] Disables async and sync negotiation for
> all devices.
>
> + norelatime [FS] default to disabled relatime updates on all
> + filesystems.
> +
> + norelatime= [FS] default to disabled/enabled relatime updates
> + on all filesystems.
> +

Double patch

> +config DEFAULT_RELATIME
> + bool "Mount all filesystems with relatime by default"
> + default y

Changes behaviour so probably should default n. Better yet it should be
the mount option so its flexible and strongly encouraged for vendors.

> /*
> + * Allow users to disable (or enable) atime updates via a .config
> + * option or via the boot line, or via /proc/sys/fs/mount_with_relatime:
> + */
> +int mount_with_relatime __read_mostly =
> +#ifdef CONFIG_DEFAULT_RELATIME
> +1
> +#else
> +0
> +#endif
> +;

This ifdef mess would go away for a mount option

> +/*
> + * The "norelatime=", "atime=", "norelatime" and "relatime" boot parameters:
> + */
> +static int toggle_relatime_updates(int val)
> +{
> + mount_with_relatime = val;
> +
> + printk("Relative atime updates are: %s\n", val ? "on" : "off");
> +
> + return 1;
> +}
> +
> +static int __init set_relatime_setup(char *str)
> +{
> + int val;
> +
> + get_option(&str, &val);
> + return toggle_relatime_updates(val);
> +}
> +__setup("relatime=", set_relatime_setup);
> +
> +static int __init set_norelatime_setup(char *str)
> +{
> + int val;
> +
> + get_option(&str, &val);
> + return toggle_relatime_updates(!val);
> +}
> +__setup("norelatime=", set_norelatime_setup);
> +
> +static int __init set_relatime(char *str)
> +{
> + return toggle_relatime_updates(1);
> +}
> +__setup("relatime", set_relatime);
> +
> +static int __init set_norelatime(char *str)
> +{
> + return toggle_relatime_updates(0);
> +}
> +__setup("norelatime", set_norelatime);

All the above chunk is unneccessary as it can be a mount option. That
avoids tons of messy extra code and complication. Users are far safer
editing fstab than grub.conf.

> + {
> + .ctl_name = CTL_UNNUMBERED,
> + .procname = "mount_with_relatime",
> + .data = &mount_with_relatime,
> + .maxlen = sizeof(int),
> + .mode = 0644,
> + .proc_handler = &proc_dointvec,
> + },

More code you don't need if you just leave it as a mount option.

I'd much rather see the small clean patch for this as a mount option.
Leave the rest to users/distros/lwn and it'll just happen now you've
sorted the compabitility problems.