--- /dev/null
+From 6d9d21e35fbfa2934339e96934f862d118abac23 Mon Sep 17 00:00:00 2001
+From: Kent Overstreet <kmo@daterainc.com>
+Date: Mon, 23 Sep 2013 23:17:27 -0700
+Subject: bcache: Fix a dumb journal discard bug
+
+From: Kent Overstreet <kmo@daterainc.com>
+
+commit 6d9d21e35fbfa2934339e96934f862d118abac23 upstream.
+
+That switch statement was obviously wrong, leading to some sort of weird
+spinning on rare occasion with discards enabled...
+
+Signed-off-by: Kent Overstreet <kmo@daterainc.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/md/bcache/journal.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/md/bcache/journal.c
++++ b/drivers/md/bcache/journal.c
+@@ -425,7 +425,7 @@ static void do_journal_discard(struct ca
+ return;
+ }
+
+- switch (atomic_read(&ja->discard_in_flight) == DISCARD_IN_FLIGHT) {
++ switch (atomic_read(&ja->discard_in_flight)) {
+ case DISCARD_IN_FLIGHT:
+ return;
+
--- /dev/null
+From 2f6cf0de0281d210061ce976f2d42d246adc75bb Mon Sep 17 00:00:00 2001
+From: Kent Overstreet <kmo@daterainc.com>
+Date: Mon, 23 Sep 2013 23:17:26 -0700
+Subject: block: Fix bio_copy_data()
+
+From: Kent Overstreet <kmo@daterainc.com>
+
+commit 2f6cf0de0281d210061ce976f2d42d246adc75bb upstream.
+
+The memcpy() in bio_copy_data() was using the wrong offset vars, leading
+to data corruption in weird unusual setups.
+
+Signed-off-by: Kent Overstreet <kmo@daterainc.com>
+Cc: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/bio.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/fs/bio.c
++++ b/fs/bio.c
+@@ -917,8 +917,8 @@ void bio_copy_data(struct bio *dst, stru
+ src_p = kmap_atomic(src_bv->bv_page);
+ dst_p = kmap_atomic(dst_bv->bv_page);
+
+- memcpy(dst_p + dst_bv->bv_offset,
+- src_p + src_bv->bv_offset,
++ memcpy(dst_p + dst_offset,
++ src_p + src_offset,
+ bytes);
+
+ kunmap_atomic(dst_p);
--- /dev/null
+block-fix-bio_copy_data.patch
+sysv-add-forgotten-superblock-lock-init-for-v7-fs.patch
+bcache-fix-a-dumb-journal-discard-bug.patch
--- /dev/null
+From 49475555848d396a0c78fb2f8ecceb3f3f263ef1 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Wed, 18 Sep 2013 12:39:16 +0200
+Subject: sysv: Add forgotten superblock lock init for v7 fs
+
+From: Lubomir Rintel <lkundrak@v3.sk>
+
+commit 49475555848d396a0c78fb2f8ecceb3f3f263ef1 upstream.
+
+Superblock lock was replaced with (un)lock_super() removal, but left
+uninitialized for Seventh Edition UNIX filesystem in the following commit (3.7):
+c07cb01 sysv: drop lock/unlock super
+
+Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/sysv/super.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/fs/sysv/super.c
++++ b/fs/sysv/super.c
+@@ -487,6 +487,7 @@ static int v7_fill_super(struct super_bl
+ sbi->s_sb = sb;
+ sbi->s_block_base = 0;
+ sbi->s_type = FSTYPE_V7;
++ mutex_init(&sbi->s_lock);
+ sb->s_fs_info = sbi;
+
+ sb_set_blocksize(sb, 512);