Skip to content

Commit

Permalink
=> 2673: turbo/issue-2673 - Mount filesystem as soon as it's been rec…
Browse files Browse the repository at this point in the history
…eived

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 Sep 27, 2014
1 parent b9d7f12 commit 6352ecd
Showing 1 changed file with 13 additions and 11 deletions.
24 changes: 13 additions & 11 deletions lib/libzfs/libzfs_sendrecv.c
Original file line number Diff line number Diff line change
Expand Up @@ -3079,6 +3079,11 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
}
}

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

/*
* Mount the target filesystem (if created). Also mount any
* children of the target filesystem if we did a replication
Expand All @@ -3095,23 +3100,20 @@ 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.
*/
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);
changelist_free(clp);
}
}
zfs_close(h);
}
*cp = '@';
}

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

if (prop_errflags & ZPROP_ERR_NOCLEAR) {
(void) fprintf(stderr, dgettext(TEXT_DOMAIN, "Warning: "
"failed to clear unreceived properties on %s"),
Expand Down

0 comments on commit 6352ecd

Please sign in to comment.