Skip to content

Commit

Permalink
2674: turbo/issue-2673 - Mount filesystem as soon as it's been received
Browse files Browse the repository at this point in the history
Instead of storing the filesystem just received in top_zfs,
mount and share it directly in zfs_receive_one().

This will make a filesystem be mounted as soon as it's been received,
instead of waiting to the very end - which might take days.

Signed-off-by: Turbo Fredriksson <[email protected]>

Closes: openzfs#2673
  • Loading branch information
FransUrbo committed Dec 19, 2014
1 parent 2b6561e commit 3ead261
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions lib/libzfs/libzfs_sendrecv.c
Original file line number Diff line number Diff line change
Expand Up @@ -3128,6 +3128,9 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
}
}

if (clp)
err |= changelist_postfix(clp);

/*
* Mount the target filesystem (if created). Also mount any
* children of the target filesystem if we did a replication
Expand All @@ -3144,22 +3147,24 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
if (h->zfs_type == ZFS_TYPE_VOLUME) {
*cp = '@';
} else if (newfs || stream_avl) {
/*
* Track the first/top of hierarchy fs,
* for mounting and sharing later.
*/
/* Track the first/top of hierarchy fs */
if (top_zfs && *top_zfs == NULL)
*top_zfs = zfs_strdup(hdl, zc.zc_value);

/* mount and share received datasets */
clp = changelist_gather(h, ZFS_PROP_MOUNTPOINT,
CL_GATHER_MOUNT_ALWAYS,
0);
if (clp)
err |= changelist_postfix(clp);
}
zfs_close(h);
}
*cp = '@';
}

if (clp) {
err |= changelist_postfix(clp);
if (clp)
changelist_free(clp);
}

if (prop_errflags & ZPROP_ERR_NOCLEAR) {
(void) fprintf(stderr, dgettext(TEXT_DOMAIN, "Warning: "
Expand Down

0 comments on commit 3ead261

Please sign in to comment.