On 07/08/21 10:40, Stijn Tintel wrote:
On 7/08/2021 10:05, Alberto Bursi wrote:
On 07/08/21 02:46, Stijn Tintel wrote:
On 7/08/2021 02:56, Alberto Bursi wrote:
On 06/08/21 21:27, Stijn Tintel wrote:
In OpenWrt, /var is symlinked to /tmp by default. This is done to
reduce
the amount of writes to the flash chip, which often don't have the
greatest durability. As a result, things like DHCP or UPnP lease
files,
are not persistent across reboots.
Since OpenWrt can run on devices with more durable storage, it makes
sense to have an option for a persistent /var. Add an option to make
/var persistent. When enabled, /var will no longer be symlinked to
/tmp,
but /var/run will be symlink to /tmp/run, as it should contain only
files that should not be kept during reboot. The option is off by
default, to maintain the current behaviour.
Since it does not really need to recompile anything, I think it
can/should be handled as a package, not as a compile option.
When you install the package these operations are executed, if you
remove the package they are undone.
Removing /var at runtime, which basically happens when you remove the
symlink, is very ugly and has a huge potential for breakage. Having it
as a build option also avoids users from accidentally installing it as a
package. If you disagree, please elaborate further, including measures
to avoid random breakage caused by removing /var at runtime.
My focus was more on "not using a compile option", I don't think it's
necessary to do this at runtime.
A simple measure to avoid breakage would be to add something that runs
on boot (either initscript or preinitscript) to do these changes
before any other service that needs that folder is started.
So you install the package and then reboot.
This approach also allows to make this a permanent change (not an
optional package) and control this function with UCI config, just
change the setting and reboot.
IMHO this is good enough for most users, and much better than having
to recompile or do the change manually.
For the sake of completeness, (also shameless plug about my project):
A more complex way to do it at runtime that avoids breakage is bind
mounting the original folder somewhere else so you can sync the
contents with the new/empty folder, then restarting all services that
need it.
See
https://github.com/bobafetthotmail/folder2ram/blob/master/debian_package/sbin/folder2ram#L658
(the service restart is not included in that script since it has no
way of knowing what services need the folders, this operation is left
to the user or for OpenMediaVault it's handled by the plugin that also
writes the configuration)
Appreciate the input. It still sounds overly complex compared to my
suggestion, especially for something that most users will probably not
use. I don't feel comfortable implementing something like that. I'll
just keep using my patch locally then, as I have done for almost five
years.
I'm not stopping you, I'm just voicing my opinion.
Having this as a compile option is still better than nothing, please
don't drop this just because of my feedback.
-Alberto
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel