Thread (2 messages) 2 messages, 2 authors, 2012-08-22

Re: [PATCH] Btrfs: fix a dio write regression

From: David Sterba <hidden>
Date: 2012-08-22 15:57:30

Hi,

a few minor style comments,

On Wed, Aug 22, 2012 at 06:11:14PM +0800, bo.li.liu@oracle.com wrote:
quoted hunk ↗ jump to hunk
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -5993,10 +5993,24 @@ unlock:
 	 * in the case of read we need to unlock only the end area that we
 	 * aren't using if there is any left over space.
 	 */
-	if (lockstart < lockend)
-		clear_extent_bit(&BTRFS_I(inode)->io_tree, lockstart, lockend,
-				 unlock_bits, 1, 0, &cached_state, GFP_NOFS);
-	else
+	if (lockstart < lockend) {
+		if (create && len < lockend - lockstart) {
+			clear_extent_bit(&BTRFS_I(inode)->io_tree, lockstart,
+					 lockstart + len - 1, unlock_bits, 1, 0,
+					 &cached_state, GFP_NOFS);
+			/*
+			 * Beside unlock, we also need to cleanup reserved space
+			 * for the left range by attaching EXTENT_DO_ACCOUNTING.
+			 */
+			clear_extent_bit(&BTRFS_I(inode)->io_tree,
+					 lockstart + len, lockend, unlock_bits |
+					 EXTENT_DO_ACCOUNTING, 1, 0, NULL,
I'd prefer to see unlock_bits and the new value on one line
+					 GFP_NOFS);
+		} else
add { ... } around this
+			clear_extent_bit(&BTRFS_I(inode)->io_tree, lockstart,
+					 lockend, unlock_bits, 1, 0,
+					 &cached_state, GFP_NOFS);
+	} else
here too
 		free_extent_state(cached_state);
 
 	free_extent_map(em);
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help