Index: btrfs-progs-v3.16/cmds-receive.c =================================================================== --- btrfs-progs-v3.16.orig/cmds-receive.c +++ btrfs-progs-v3.16/cmds-receive.c @@ -877,7 +877,7 @@ static int do_receive(struct btrfs_recei goto out; while (!end) { - ret = btrfs_read_and_process_send_stream(r_fd, &send_ops, r, + ret = btrfs_read_and_process_send_stream2(r_fd, &send_ops, r, r->honor_end_cmd, max_errors); if (ret < 0) Index: btrfs-progs-v3.16/send-stream.c =================================================================== --- btrfs-progs-v3.16.orig/send-stream.c +++ btrfs-progs-v3.16/send-stream.c @@ -436,11 +436,21 @@ out: } /* + * Temporary backward compatibility workaround + */ +int btrfs_read_and_process_send_stream(int fd, + struct btrfs_send_ops *ops, void *user, + int honor_end_cmd) +{ + return btrfs_read_and_process_send_stream2(fd, ops, user, honor_end_cmd, 1); +} + +/* * If max_errors is 0, then don't stop processing the stream if one of the * callbacks in btrfs_send_ops structure returns an error. If greater than * zero, stop after max_errors errors happened. */ -int btrfs_read_and_process_send_stream(int fd, +int btrfs_read_and_process_send_stream2(int fd, struct btrfs_send_ops *ops, void *user, int honor_end_cmd, u64 max_errors) Index: btrfs-progs-v3.16/send-stream.h =================================================================== --- btrfs-progs-v3.16.orig/send-stream.h +++ btrfs-progs-v3.16/send-stream.h @@ -58,6 +58,10 @@ struct btrfs_send_ops { int btrfs_read_and_process_send_stream(int fd, struct btrfs_send_ops *ops, void *user, + int honor_end_cmd); +/* Temporary API */ +int btrfs_read_and_process_send_stream2(int fd, + struct btrfs_send_ops *ops, void *user, int honor_end_cmd, u64 max_errors);