Re: Re: How to access "upper" directory of overlayfs programatically

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 13, 2018 at 10:03 PM Jonathan Busby <jdb2@xxxxxxxxx> wrote:
>
>
>
> -------- Forwarded Message --------
> Subject: Re: How to access "upper" directory of overlayfs programatically
> Date: Thu, 13 Sep 2018 13:01:16 -0500
> From: Jonathan Busby <jdb2@xxxxxxxxx>
> To: Amir Goldstein <amir73il@xxxxxxxxx>
>
>
>
> On 09/13/2018 12:33 PM, Jonathan Busby wrote:
> >
> >
> > On 09/12/2018 02:48 PM, Amir Goldstein wrote:
> >> [changing over to overlayfs list]
> >
> > Thanks for this! :D I had been searching for an overlayfs mailing list
> > but it seems I overlooked unionfs.
> >
> >>
> >> On Wed, Sep 12, 2018 at 8:52 PM Jonathan Busby <jdb2@xxxxxxxxx> wrote:
> >>>
> >>> Hello. I'm new to this list and I don't know if this is the right forum
> >>> for my question, but, I've asked this same question on many forums and
> >>> never received an answer -- please don't flame me.
> >>>
> >>> I have a Debian based Linux live system which is running out of RAM and
> >>> was booted without the "persistent" boot option, so the capser-rw
> >>> filesystem was never created.
> >>>
> >>> I wish to gain access to the "upper" directory of the overlayfs
> >>> filesystem in the casper init scripts initramfs "/cow/upper" filesystem
> >>> so that I may programatically save the filesystem, hopefully without
> >>> having to re-implement cp.
> >>>
> >>> I know how to commit the changes of a Debian based live CD session to a
> >>> storage device, but only if the live session in question was booted with
> >>> the "persistent" option.
> >>>
> >>> I've looked at the overlayfs source code but I still can't figure out
> >>> how to accomplish what I want.
> >>>
> >>> I'm sorry if this is  stupid question -- hopefully it's not.
> >>>
> >>
> >> I don't think the programmable API you think of exists, but maybe
> >> you can get access to upper dir as admin user.
> >>
> >> Please share the init scripts responsible for the mounts at live CD boot
> >> and the content of /proc/self/mountinfo
> >
> > The contents of /proc/self/mountinfo are can be found here :
> >
> > https://pastebin.com/raw/9uQdJ66w
> >
> > The init scripts responsible for the live CD mounts can be found here :
> >
> > https://www.dropbox.com/s/j4zqsn8avxrv6zf/initrd-scripts.tar.gz?dl=0
> >
> > Thanks,
> >
> > Jonathan
> >
> >>
> >> Thanks,
> >> Amir.
> >>
>
> I forgot to mention that the init scripts that handle mounting the
> overlayfs chroot are located in the /scripts/casper directory, and the
> main script is just called "casper".
>

Jonathan,

Not sure this is what you were looking for, but one thing you could try is
to iterate the directories of root fs (similar to find / -xdev) executing stat()
on files inside directories.

Depending on your kernel version, the findings might vary, but I would
expect all values of st_dev to be identical (this is what makes find -xdev
stop on fs boundary).

For non directories, the value of st_dev is an indication to the layer (at
least in your specific non-same-fs combination of upper/lower).

If you create a new file, it will be in upper, so you can use its st_dev as
the identifier of the upper layer. All files with the same st_dev are either
newly created files or modified files, so you can copy them to backup.

Directories will not carry a similar indication if they are modified or new.
This method will not give you the list of deleted files (whiteout in upper).

Thanks,
Amir.



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux