diff --git a/btrfsprogs.changes b/btrfsprogs.changes index 373263f..2372d27 100644 --- a/btrfsprogs.changes +++ b/btrfsprogs.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Sep 1 14:07:53 CEST 2014 - dsterba@suse.cz + +- workaround for send api breakage +- Added patch: send-stream-api-wokaround.patch + ------------------------------------------------------------------- Wed Aug 27 17:23:48 CEST 2014 - dsterba@suse.cz diff --git a/btrfsprogs.spec b/btrfsprogs.spec index dd7bb8a..a18b596 100644 --- a/btrfsprogs.spec +++ b/btrfsprogs.spec @@ -64,6 +64,8 @@ Patch171: 0171-btrfs-progs-make-free-space-checker-work-on-non-4k-s.patch Patch1000: local-version-override.patch Patch1001: library-version-defines.patch +Patch1002: send-stream-api-wokaround.patch + BuildRequires: asciidoc BuildRequires: libacl-devel BuildRequires: libattr-devel @@ -132,6 +134,7 @@ build applications to interface with btrfs. %patch171 -p1 %patch1000 -p1 %patch1001 -p1 +%patch1002 -p1 %build make %{?_smp_mflags} CFLAGS="%{optflags}" all btrfs-convert \ diff --git a/send-stream-api-wokaround.patch b/send-stream-api-wokaround.patch new file mode 100644 index 0000000..67ec9be --- /dev/null +++ b/send-stream-api-wokaround.patch @@ -0,0 +1,55 @@ +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); +