public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrei Borzenkov <arvidjaar@gmail.com>
To: Clemens Eisserer <linuxhippy@gmail.com>, linux-btrfs@vger.kernel.org
Subject: Re: Using send/receive to keep two rootfs-partitions in sync fails with "ERROR: snapshot: cannot find parent subvolume"
Date: Sun, 7 Jan 2024 10:19:53 +0300	[thread overview]
Message-ID: <de1e4749-c265-496b-956d-6ab8e56af7d0@gmail.com> (raw)
In-Reply-To: <CAFvQSYQvUQXabM4XDNH34y=CsbCHmonmwRh_sS=DkxhJWC2oxA@mail.gmail.com>

On 07.01.2024 10:06, Clemens Eisserer wrote:
> Hi,
> 
> I would like to use send/receive to keep two root-filesystems in sync,
> as I've been using it for years now for backups where it really does
> wonders (thanks a lot!).
> 
> Both disks contain a read-only snapshot which is kept in-sync between
> the filesystems (int and ext are the mountpoints of the two disks,
> original_disk is just used for initial data):
>     btrfs send original_disk/root-ro | btrfs receive int/ #send
> snapshot of the original disk to the first of the two filesystens
> (disk "int")
>     btrfs send int/root-ro | btrfs receive ext/ #now replicate the same
> to disk "ext"
> so both disks start with a snapshot "root-ro" with equal content.
> 
> in case I would like to work with one of the two disks, I create a rw
> snapshot based no root-ro:
>    btrfs sub snap ext/root-ro ext/root-rw
> 
>    touch ext/root-wr/create-a-new-file # perform some modifications
> 

There was no "root-wr" before.

> once modifications in root-rw are done, the following steps are
> performed to sync the filesystems:
>    btrfs sub snap -r ext/root-rw ext/root-ro-new #create a root-ro-new
> read-only snapshot based on the rw-snapshot with modfications (so it
> can be used with btrfs send)
>    btrfs send -p ext/root-ro extern/root-ro-new | btrfs receive int/
> #send root-ro-new to "int" filesystem

There was no "extern" before.

Never describe computer commands. Copy and paste them in full with 
complete output.

>    btrfs sub del ext/root-ro # delete the original root-ro snapshot, as
> it is no longer needed for differential btrfs send
>    mv ext/root-ro-new ext/root-ro #rename root-ro-new to root-ro, as
> this is the current state of the other (int) filesystem
>    btrfs sub del int/root-ro # delete root-ro in "int" too, as it is no
> longer needed for differential btrfs receive
>    mv int/root-ro-new int/root-ro #rename root-ro-new to root-ro
>    btrfs sub snap int/root-ro int/root-rw # create a working copy of
> root-ro which is writeable
> 
> this works great - i can add/modify files in one root-rw folder, call
> the synchronization script and everything is found on the other
> filesystem.
> When exchanging int and ext in the script above it actually works in
> both directions, so this is exactly what I was hoping to achieve.
> Even when executing the script multiple times int->ext, ext->int,
> int->ext ... with modifications in between, everything works as
> expected.
> Awesome :)
> 
> However, when actually using the file-systems as rootfs, this seem to
> break when performing the following steps:
> - create rw snapshot of root-ro on disk "ext": btrfs sub snap
> ext/root-ro ext/root-rw
> - boot the system with rootfs=ext-uuid and rootflags=subvol=/root-rw
> (etc/fstab was adapted accordingly)
> - use the system, modify file system etc and shutdown again
> - start separate system to synchronize disks (not based on int or ext
> rootfs) and call sync script ext->int (shown above)
> 

It is absolutely unclear what it means. As mentioned, provide full 
transcript of your actions as well as the output of

btrfs subvolume list -pqu /mount-point

for all filesystems involved in these commands.

> it now suddenly fails at btrfs receive with:
> btrfs send -p ext/root-ro ext/root-ro-new | btrfs receive intern/
> ERROR: snapshot: cannot find parent subvolume
> 4ed11491-7563-fb49-99e7-86cb47cfb510
> 
> which I, to be honest, don't understand.
> Exactly the same sequence of commands worked multiple times when the
> root-rw snapshot was not booted from but modified directly on the sync
> system, even with umounts between modification & send/receive.
> Does it make a difference for btrfs if it is used as rootfs vs normal
> writeable mount?
> Or does it just work in the non-boot case because of some side-effects?
> 
> Thanks & best regards, Clemens
> 


  reply	other threads:[~2024-01-07  7:19 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-07  7:06 Using send/receive to keep two rootfs-partitions in sync fails with "ERROR: snapshot: cannot find parent subvolume" Clemens Eisserer
2024-01-07  7:19 ` Andrei Borzenkov [this message]
2024-01-07  8:10   ` Clemens Eisserer
2024-01-07  8:21     ` Andrei Borzenkov
2024-01-07  8:29       ` Clemens Eisserer
2024-01-07 11:42         ` Clemens Eisserer
2024-01-08  8:21     ` Andrei Borzenkov
2024-01-08 19:36       ` Clemens Eisserer
2024-01-11 18:41         ` Andrei Borzenkov
2024-01-12  8:44           ` Clemens Eisserer
2024-01-13  8:42             ` Andrei Borzenkov
2024-01-07 12:37 ` Hugo Mills
2024-01-07 20:29   ` Clemens Eisserer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=de1e4749-c265-496b-956d-6ab8e56af7d0@gmail.com \
    --to=arvidjaar@gmail.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linuxhippy@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox