On Sun, 18 Sep 2022 16:15:28 +0200 Helmut Grohne <[email protected]> wrote:
[usrmerge on overlayfs]
>
> I recommend turning the check around. First actually attempt to perform
> the conversion. If that happens to fails, check for overlayfs and
> conditionally emit the helpful message. That way, conversion actually is
> performed when it can be performed. When it cannot be performed, we
> cannot do anything about it anyway.
What fails in the rename in `convert_directory`; see section "renaming
directories" in linux' Documentation/filesystems/overlayfs.rst. That
happens after some conversion steps are already performed. So I don't
think we should drop the check entirely.
As a compromise one could:
a) Require an environment variable to be set to disable the check.
b) If overlayfs is detected, try calling rename in the check, e.g.,
perl -e '
rename("/sbin", "/sbin~usrmerge~");
rename("/sbin~usrmerge~", "/sbin");
'
Plus some error handling for:
- overlayfs specific problem when this fails with EXDEV
(i.e., what the check is supposed to catch)
- any other reason this fails.
Maybe also use some other directory instead of /sbin, but
it has to exist on the underlaying filesystem, not the overlay to
catch the problem we want to catch.
Ansgar