aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_log_recover.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-08-10 10:01:33 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-08-10 10:01:33 -0700
commite6bbe1d05353a29628a4ca72d88bac0bdcec5f38 (patch)
treed662a065cfa9f0e32145887e46947d29a89d9f9d /fs/xfs/xfs_log_recover.c
parent7e34d70a7163b236f520ef4fc0d7c50093dd3746 (diff)
parentf7644cbfcdf03528f0f450f3940c4985b2291f49 (diff)
downloadkernel_replicant_linux-e6bbe1d05353a29628a4ca72d88bac0bdcec5f38.tar.gz
kernel_replicant_linux-e6bbe1d05353a29628a4ca72d88bac0bdcec5f38.tar.bz2
kernel_replicant_linux-e6bbe1d05353a29628a4ca72d88bac0bdcec5f38.zip
Merge 4.2-rc6 into usb-next
We want the USB fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/xfs/xfs_log_recover.c')
-rw-r--r--fs/xfs/xfs_log_recover.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index 01dd228ca05e..480ebba8464f 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -1886,9 +1886,14 @@ xlog_recover_get_buf_lsn(
uuid = &((struct xfs_dir3_blk_hdr *)blk)->uuid;
break;
case XFS_ATTR3_RMT_MAGIC:
- lsn = be64_to_cpu(((struct xfs_attr3_rmt_hdr *)blk)->rm_lsn);
- uuid = &((struct xfs_attr3_rmt_hdr *)blk)->rm_uuid;
- break;
+ /*
+ * Remote attr blocks are written synchronously, rather than
+ * being logged. That means they do not contain a valid LSN
+ * (i.e. transactionally ordered) in them, and hence any time we
+ * see a buffer to replay over the top of a remote attribute
+ * block we should simply do so.
+ */
+ goto recover_immediately;
case XFS_SB_MAGIC:
lsn = be64_to_cpu(((struct xfs_dsb *)blk)->sb_lsn);
uuid = &((struct xfs_dsb *)blk)->sb_uuid;