diff --git a/cmds-receive.c b/cmds-receive.c index ed441076..cce37a7a 100644 --- a/cmds-receive.c +++ b/cmds-receive.c @@ -257,8 +257,15 @@ static int process_snapshot(const char *path, const u8 *uuid, u64 ctransid, O_RDONLY | O_NOATIME); if (args_v2.fd < 0) { ret = -errno; - fprintf(stderr, "ERROR: open %s failed. %s\n", - parent_subvol->path, strerror(-ret)); + if (errno != ENOENT) + fprintf(stderr, "ERROR: open %s failed. %s\n", + parent_subvol->path, strerror(-ret)); + else + fprintf(stderr, + "It seems that you have changed your default " + "subvolume or you specify other subvolume to\n" + "mount btrfs, try to remount this btrfs filesystem " + "with fs tree, and run btrfs receive again!\n"); goto out; } diff --git a/man/btrfs.8.in b/man/btrfs.8.in index c11b53ae..8fea115a 100644 --- a/man/btrfs.8.in +++ b/man/btrfs.8.in @@ -660,11 +660,16 @@ Receive subvolumes from stdin. Receives one or more subvolumes that were previously sent with btrfs send. The received subvolumes are stored into \fI\fP. -btrfs receive will fail in case a receiving subvolume -already exists. It will also fail in case a previously -received subvolume was changed after it was received. -After receiving a subvolume, it is immediately set to -read only. +btrfs receive will fail with the following case: + +1.a receiving subvolume already exists. + +2.a previously received subvolume was changed after it was received. + +3.default subvolume is changed or you don't mount btrfs filesystem with +fs tree. + +After receiving a subvolume, it is immediately set to read only. .RS \fIOptions\fR