Patchwork [v3] ext4: ext4_ext_convert_to_initialized bug found in extended FSX testing

login
register
mail settings
Submitter Allison Henderson
Date May 15, 2011, 3:08 p.m.
Message ID <4DCFEC6D.1040508@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/95628/
State Accepted
Headers show

Comments

Allison Henderson - May 15, 2011, 3:08 p.m.
v1 -> v2
- Extent is now zeroed starting from map.m_len
- Return value changed to return the number of 
  blocks split out

v2 -> v3
- Corrected patch description

This patch addresses bugs found while testing punch hole 
with the fsx test.  The patch corrects the number of blocks
that are zeroed out while splitting an extent, and also corrects
the return value to return the number of blocks split out, instead
of the number of blocks zeroed out.

This patch has been tested in addition to the following patches: 
[Ext4 punch hole v7]
[XFS Tests Punch Hole 1/1 v2] Add Punch Hole Testing to FSX

The test ran successfully for 24 hours.

Signed-off-by: Allison Henderson <achender@us.ibm.com>

---
:100644 100644 e363f21... 5f243da... M	fs/ext4/extents.c
 fs/ext4/extents.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)
Theodore Ts'o - May 16, 2011, 2:19 p.m.
I've added this to the ext4 patch queue (dev branch).  Many thanks for
all of your work testing the punch series, and finding other bugs
while you were at it!

I'm about to start merging the punch patches into the dev branch.

Just one tiny request for the future:

On Sun, May 15, 2011 at 08:08:29AM -0700, Allison Henderson wrote:
> v1 -> v2
> - Extent is now zeroed starting from map.m_len
> - Return value changed to return the number of 
>   blocks split out
> 
> v2 -> v3
> - Corrected patch description

I really appreciate the fact that you write great commit descriptions
and keep a version history of your patches; it helps me out a lot.  If
you could move the version history to after the "---" and before the
diff stats (or actual patch if there are no diff stats), that would
make my life a just a tiny bit easier.

Awesome work, and thanks again!

							- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index e363f21..5f243da 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -2818,8 +2818,8 @@  static int ext4_ext_convert_to_initialized(handle_t *handle,
 		    (EXT4_EXT_MAY_ZEROOUT & split_flag)) {
 			/* case 3 */
 			zero_ex.ee_block =
-					 cpu_to_le32(map->m_lblk + map->m_len);
-			zero_ex.ee_len = cpu_to_le16(allocated - map->m_len);
+					 cpu_to_le32(map->m_lblk);
+			zero_ex.ee_len = cpu_to_le16(allocated);
 			ext4_ext_store_pblock(&zero_ex,
 				ext4_ext_pblock(ex) + map->m_lblk - ee_block);
 			err = ext4_ext_zeroout(inode, &zero_ex);
@@ -2842,10 +2842,9 @@  static int ext4_ext_convert_to_initialized(handle_t *handle,
 					goto out;
 			}
 
-			allocated = map->m_lblk - ee_block + map->m_len;
-
 			split_map.m_lblk = ee_block;
-			split_map.m_len = allocated;
+			split_map.m_len = map->m_lblk - ee_block + map->m_len;
+			allocated = map->m_len;
 		}
 	}