]> git.proxmox.com Git - mirror_zfs.git/commitdiff
libzfs_sendrecv: Style pass on dump_filesystem
authorRyan Moeller <freqlabs@FreeBSD.org>
Wed, 18 Aug 2021 18:01:04 +0000 (18:01 +0000)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 2 Feb 2022 01:03:30 +0000 (17:03 -0800)
* Add high level comments.
* Eliminate unnecessarily void arg.
* Avoid unnecessary line wrapping.
* Initialize sdd fields with the correct types.
* Remove extra whitespace.
* Refactor replication checks for clarity.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ryan Moeller <freqlabs@FreeBSD.org>
Closes #12967

lib/libzfs/libzfs_sendrecv.c

index 7d4cd1475253cbfbe3cb6cff1e17d5846457d178..751e34a92b4b0d1a973830dc12ee1229c53fd65f 100644 (file)
@@ -1149,15 +1149,20 @@ dump_snapshot(zfs_handle_t *zhp, void *arg)
        return (err);
 }
 
+/*
+ * Send all snapshots for a filesystem, updating the send dump data.
+ */
 static int
-dump_filesystem(zfs_handle_t *zhp, void *arg)
+dump_filesystem(zfs_handle_t *zhp, send_dump_data_t *sdd)
 {
        int rv = 0;
-       send_dump_data_t *sdd = arg;
        boolean_t missingfrom = B_FALSE;
        zfs_cmd_t zc = {"\0"};
        uint64_t min_txg = 0, max_txg = 0;
 
+       /*
+        * Make sure the tosnap exists.
+        */
        (void) snprintf(zc.zc_name, sizeof (zc.zc_name), "%s@%s",
            zhp->zfs_name, sdd->tosnap);
        if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_OBJSET_STATS, &zc) != 0) {
@@ -1168,47 +1173,52 @@ dump_filesystem(zfs_handle_t *zhp, void *arg)
                return (0);
        }
 
+       /*
+        * If this fs does not have fromsnap, and we're doing
+        * recursive, we need to send a full stream from the
+        * beginning (or an incremental from the origin if this
+        * is a clone).  If we're doing non-recursive, then let
+        * them get the error.
+        */
        if (sdd->replicate && sdd->fromsnap) {
                /*
-                * If this fs does not have fromsnap, and we're doing
-                * recursive, we need to send a full stream from the
-                * beginning (or an incremental from the origin if this
-                * is a clone).  If we're doing non-recursive, then let
-                * them get the error.
+                * Make sure the fromsnap exists.
                 */
                (void) snprintf(zc.zc_name, sizeof (zc.zc_name), "%s@%s",
                    zhp->zfs_name, sdd->fromsnap);
-               if (zfs_ioctl(zhp->zfs_hdl,
-                   ZFS_IOC_OBJSET_STATS, &zc) != 0) {
+               if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_OBJSET_STATS, &zc) != 0)
                        missingfrom = B_TRUE;
-               }
        }
 
-       sdd->seenfrom = sdd->seento = sdd->prevsnap[0] = 0;
+       sdd->seenfrom = sdd->seento = B_FALSE;
+       sdd->prevsnap[0] = '\0';
        sdd->prevsnap_obj = 0;
        if (sdd->fromsnap == NULL || missingfrom)
                sdd->seenfrom = B_TRUE;
 
-
-
        /*
         * Iterate through all snapshots and process the ones we will be
         * sending. If we only have a "from" and "to" snapshot to deal
         * with, we can avoid iterating through all the other snapshots.
         */
        if (sdd->doall || sdd->replicate || sdd->tosnap == NULL) {
-               if (!sdd->replicate && sdd->fromsnap != NULL)
-                       min_txg = get_snap_txg(zhp->zfs_hdl, zhp->zfs_name,
-                           sdd->fromsnap);
-               if (!sdd->replicate && sdd->tosnap != NULL)
-                       max_txg = get_snap_txg(zhp->zfs_hdl, zhp->zfs_name,
-                           sdd->tosnap);
-               rv = zfs_iter_snapshots_sorted(zhp, dump_snapshot, arg,
+               if (!sdd->replicate) {
+                       if (sdd->fromsnap != NULL) {
+                               min_txg = get_snap_txg(zhp->zfs_hdl,
+                                   zhp->zfs_name, sdd->fromsnap);
+                       }
+                       if (sdd->tosnap != NULL) {
+                               max_txg = get_snap_txg(zhp->zfs_hdl,
+                                   zhp->zfs_name, sdd->tosnap);
+                       }
+               }
+               rv = zfs_iter_snapshots_sorted(zhp, dump_snapshot, sdd,
                    min_txg, max_txg);
        } else {
                char snapname[MAXPATHLEN] = { 0 };
                zfs_handle_t *snap;
 
+               /* Dump fromsnap. */
                if (!sdd->seenfrom) {
                        (void) snprintf(snapname, sizeof (snapname),
                            "%s@%s", zhp->zfs_name, sdd->fromsnap);
@@ -1220,6 +1230,7 @@ dump_filesystem(zfs_handle_t *zhp, void *arg)
                                rv = -1;
                }
 
+               /* Dump tosnap. */
                if (rv == 0) {
                        (void) snprintf(snapname, sizeof (snapname),
                            "%s@%s", zhp->zfs_name, sdd->tosnap);