Print this page
FAR: generating send-streams in portable format
This commit adds a switch '-F' to  zfs send. This set, zfs send generates
a stream in FAR-format instead of the traditional zfs stream format. The
generated send stream is compatible with the stream generated from 'btrfs send'
and can in principle easily be received to any filesystem.


 568         /* for incrementals, do all intermediate snapshots */
 569         boolean_t doall;
 570 
 571         /* if dataset is a clone, do incremental from its origin */
 572         boolean_t fromorigin;
 573 
 574         /* do deduplication */
 575         boolean_t dedup;
 576 
 577         /* send properties (ie, -p) */
 578         boolean_t props;
 579 
 580         /* do not send (no-op, ie. -n) */
 581         boolean_t dryrun;
 582 
 583         /* parsable verbose output (ie. -P) */
 584         boolean_t parsable;
 585 
 586         /* show progress (ie. -v) */
 587         boolean_t progress;



 588 } sendflags_t;
 589 
 590 typedef boolean_t (snapfilter_cb_t)(zfs_handle_t *, void *);
 591 
 592 extern int zfs_send(zfs_handle_t *, const char *, const char *,
 593     sendflags_t *, int, snapfilter_cb_t, void *, nvlist_t **);
 594 
 595 extern int zfs_promote(zfs_handle_t *);
 596 extern int zfs_hold(zfs_handle_t *, const char *, const char *, boolean_t,
 597     boolean_t, boolean_t, int, uint64_t, uint64_t);
 598 extern int zfs_release(zfs_handle_t *, const char *, const char *, boolean_t);
 599 extern int zfs_get_holds(zfs_handle_t *, nvlist_t **);
 600 extern uint64_t zvol_volsize_to_reservation(uint64_t, nvlist_t *);
 601 
 602 typedef int (*zfs_userspace_cb_t)(void *arg, const char *domain,
 603     uid_t rid, uint64_t space);
 604 
 605 extern int zfs_userspace(zfs_handle_t *, zfs_userquota_prop_t,
 606     zfs_userspace_cb_t, void *);
 607 




 568         /* for incrementals, do all intermediate snapshots */
 569         boolean_t doall;
 570 
 571         /* if dataset is a clone, do incremental from its origin */
 572         boolean_t fromorigin;
 573 
 574         /* do deduplication */
 575         boolean_t dedup;
 576 
 577         /* send properties (ie, -p) */
 578         boolean_t props;
 579 
 580         /* do not send (no-op, ie. -n) */
 581         boolean_t dryrun;
 582 
 583         /* parsable verbose output (ie. -P) */
 584         boolean_t parsable;
 585 
 586         /* show progress (ie. -v) */
 587         boolean_t progress;
 588 
 589         /* send output as FAR-stream */
 590         boolean_t far;
 591 } sendflags_t;
 592 
 593 typedef boolean_t (snapfilter_cb_t)(zfs_handle_t *, void *);
 594 
 595 extern int zfs_send(zfs_handle_t *, const char *, const char *,
 596     sendflags_t *, int, snapfilter_cb_t, void *, nvlist_t **);
 597 
 598 extern int zfs_promote(zfs_handle_t *);
 599 extern int zfs_hold(zfs_handle_t *, const char *, const char *, boolean_t,
 600     boolean_t, boolean_t, int, uint64_t, uint64_t);
 601 extern int zfs_release(zfs_handle_t *, const char *, const char *, boolean_t);
 602 extern int zfs_get_holds(zfs_handle_t *, nvlist_t **);
 603 extern uint64_t zvol_volsize_to_reservation(uint64_t, nvlist_t *);
 604 
 605 typedef int (*zfs_userspace_cb_t)(void *arg, const char *domain,
 606     uid_t rid, uint64_t space);
 607 
 608 extern int zfs_userspace(zfs_handle_t *, zfs_userquota_prop_t,
 609     zfs_userspace_cb_t, void *);
 610