From cbff56028fa083b094972c25789cc07e842cb106 Mon Sep 17 00:00:00 2001 From: Dmitry Monakhov Date: Mon, 4 Mar 2013 00:36:06 -0500 Subject: [PATCH] --- yaml --- r: 361582 b: refs/heads/master c: ec22ba8edb507395c95fbc617eea26a6b2d98797 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/ext4/extents.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index cb5fa3515d5f..983f9e6ea8de 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 357b66fdc8ad4cea6e6336956a70742f961f0a4d +refs/heads/master: ec22ba8edb507395c95fbc617eea26a6b2d98797 diff --git a/trunk/fs/ext4/extents.c b/trunk/fs/ext4/extents.c index bef194a14437..60818ed1f6a9 100644 --- a/trunk/fs/ext4/extents.c +++ b/trunk/fs/ext4/extents.c @@ -1584,10 +1584,12 @@ ext4_can_extents_be_merged(struct inode *inode, struct ext4_extent *ex1, unsigned short ext1_ee_len, ext2_ee_len, max_len; /* - * Make sure that either both extents are uninitialized, or - * both are _not_. + * Make sure that both extents are initialized. We don't merge + * uninitialized extents so that we can be sure that end_io code has + * the extent that was written properly split out and conversion to + * initialized is trivial. */ - if (ext4_ext_is_uninitialized(ex1) ^ ext4_ext_is_uninitialized(ex2)) + if (ext4_ext_is_uninitialized(ex1) || ext4_ext_is_uninitialized(ex2)) return 0; if (ext4_ext_is_uninitialized(ex1))