stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Josef Bacik <josef@toxicpanda.com>,
	Filipe Manana <fdmanana@suse.com>,
	David Sterba <dsterba@suse.com>
Subject: [PATCH 4.19 106/195] Btrfs: fix missing hole after hole punching and fsync when using NO_HOLES
Date: Mon, 10 Feb 2020 04:32:44 -0800	[thread overview]
Message-ID: <20200210122315.658547910@linuxfoundation.org> (raw)
In-Reply-To: <20200210122305.731206734@linuxfoundation.org>

From: Filipe Manana <fdmanana@suse.com>

commit 0e56315ca147b3e60c7bf240233a301d3c7fb508 upstream.

When using the NO_HOLES feature, if we punch a hole into a file and then
fsync it, there are cases where a subsequent fsync will miss the fact that
a hole was punched, resulting in the holes not existing after replaying
the log tree.

Essentially these cases all imply that, tree-log.c:copy_items(), is not
invoked for the leafs that delimit holes, because nothing changed those
leafs in the current transaction. And it's precisely copy_items() where
we currenly detect and log holes, which works as long as the holes are
between file extent items in the input leaf or between the beginning of
input leaf and the previous leaf or between the last item in the leaf
and the next leaf.

First example where we miss a hole:

  *) The extent items of the inode span multiple leafs;

  *) The punched hole covers a range that affects only the extent items of
     the first leaf;

  *) The fsync operation is done in full mode (BTRFS_INODE_NEEDS_FULL_SYNC
     is set in the inode's runtime flags).

  That results in the hole not existing after replaying the log tree.

  For example, if the fs/subvolume tree has the following layout for a
  particular inode:

      Leaf N, generation 10:

      [ ... INODE_ITEM INODE_REF EXTENT_ITEM (0 64K) EXTENT_ITEM (64K 128K) ]

      Leaf N + 1, generation 10:

      [ EXTENT_ITEM (128K 64K) ... ]

  If at transaction 11 we punch a hole coverting the range [0, 128K[, we end
  up dropping the two extent items from leaf N, but we don't touch the other
  leaf, so we end up in the following state:

      Leaf N, generation 11:

      [ ... INODE_ITEM INODE_REF ]

      Leaf N + 1, generation 10:

      [ EXTENT_ITEM (128K 64K) ... ]

  A full fsync after punching the hole will only process leaf N because it
  was modified in the current transaction, but not leaf N + 1, since it
  was not modified in the current transaction (generation 10 and not 11).
  As a result the fsync will not log any holes, because it didn't process
  any leaf with extent items.

Second example where we will miss a hole:

  *) An inode as its items spanning 5 (or more) leafs;

  *) A hole is punched and it covers only the extents items of the 3rd
     leaf. This resulsts in deleting the entire leaf and not touching any
     of the other leafs.

  So the only leaf that is modified in the current transaction, when
  punching the hole, is the first leaf, which contains the inode item.
  During the full fsync, the only leaf that is passed to copy_items()
  is that first leaf, and that's not enough for the hole detection
  code in copy_items() to determine there's a hole between the last
  file extent item in the 2nd leaf and the first file extent item in
  the 3rd leaf (which was the 4th leaf before punching the hole).

Fix this by scanning all leafs and punch holes as necessary when doing a
full fsync (less common than a non-full fsync) when the NO_HOLES feature
is enabled. The lack of explicit file extent items to mark holes makes it
necessary to scan existing extents to determine if holes exist.

A test case for fstests follows soon.

Fixes: 16e7549f045d33 ("Btrfs: incompatible format change to remove hole extents")
CC: stable@vger.kernel.org # 4.4+
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/tree-log.c |  388 +++++++++++++---------------------------------------
 1 file changed, 100 insertions(+), 288 deletions(-)

--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -3892,7 +3892,7 @@ static int log_csums(struct btrfs_trans_
 static noinline int copy_items(struct btrfs_trans_handle *trans,
 			       struct btrfs_inode *inode,
 			       struct btrfs_path *dst_path,
-			       struct btrfs_path *src_path, u64 *last_extent,
+			       struct btrfs_path *src_path,
 			       int start_slot, int nr, int inode_only,
 			       u64 logged_isize)
 {
@@ -3903,7 +3903,6 @@ static noinline int copy_items(struct bt
 	struct btrfs_file_extent_item *extent;
 	struct btrfs_inode_item *inode_item;
 	struct extent_buffer *src = src_path->nodes[0];
-	struct btrfs_key first_key, last_key, key;
 	int ret;
 	struct btrfs_key *ins_keys;
 	u32 *ins_sizes;
@@ -3911,9 +3910,6 @@ static noinline int copy_items(struct bt
 	int i;
 	struct list_head ordered_sums;
 	int skip_csum = inode->flags & BTRFS_INODE_NODATASUM;
-	bool has_extents = false;
-	bool need_find_last_extent = true;
-	bool done = false;
 
 	INIT_LIST_HEAD(&ordered_sums);
 
@@ -3922,8 +3918,6 @@ static noinline int copy_items(struct bt
 	if (!ins_data)
 		return -ENOMEM;
 
-	first_key.objectid = (u64)-1;
-
 	ins_sizes = (u32 *)ins_data;
 	ins_keys = (struct btrfs_key *)(ins_data + nr * sizeof(u32));
 
@@ -3944,9 +3938,6 @@ static noinline int copy_items(struct bt
 
 		src_offset = btrfs_item_ptr_offset(src, start_slot + i);
 
-		if (i == nr - 1)
-			last_key = ins_keys[i];
-
 		if (ins_keys[i].type == BTRFS_INODE_ITEM_KEY) {
 			inode_item = btrfs_item_ptr(dst_path->nodes[0],
 						    dst_path->slots[0],
@@ -3960,20 +3951,6 @@ static noinline int copy_items(struct bt
 					   src_offset, ins_sizes[i]);
 		}
 
-		/*
-		 * We set need_find_last_extent here in case we know we were
-		 * processing other items and then walk into the first extent in
-		 * the inode.  If we don't hit an extent then nothing changes,
-		 * we'll do the last search the next time around.
-		 */
-		if (ins_keys[i].type == BTRFS_EXTENT_DATA_KEY) {
-			has_extents = true;
-			if (first_key.objectid == (u64)-1)
-				first_key = ins_keys[i];
-		} else {
-			need_find_last_extent = false;
-		}
-
 		/* take a reference on file data extents so that truncates
 		 * or deletes of this inode don't have to relog the inode
 		 * again
@@ -4039,167 +4016,6 @@ static noinline int copy_items(struct bt
 		kfree(sums);
 	}
 
-	if (!has_extents)
-		return ret;
-
-	if (need_find_last_extent && *last_extent == first_key.offset) {
-		/*
-		 * We don't have any leafs between our current one and the one
-		 * we processed before that can have file extent items for our
-		 * inode (and have a generation number smaller than our current
-		 * transaction id).
-		 */
-		need_find_last_extent = false;
-	}
-
-	/*
-	 * Because we use btrfs_search_forward we could skip leaves that were
-	 * not modified and then assume *last_extent is valid when it really
-	 * isn't.  So back up to the previous leaf and read the end of the last
-	 * extent before we go and fill in holes.
-	 */
-	if (need_find_last_extent) {
-		u64 len;
-
-		ret = btrfs_prev_leaf(inode->root, src_path);
-		if (ret < 0)
-			return ret;
-		if (ret)
-			goto fill_holes;
-		if (src_path->slots[0])
-			src_path->slots[0]--;
-		src = src_path->nodes[0];
-		btrfs_item_key_to_cpu(src, &key, src_path->slots[0]);
-		if (key.objectid != btrfs_ino(inode) ||
-		    key.type != BTRFS_EXTENT_DATA_KEY)
-			goto fill_holes;
-		extent = btrfs_item_ptr(src, src_path->slots[0],
-					struct btrfs_file_extent_item);
-		if (btrfs_file_extent_type(src, extent) ==
-		    BTRFS_FILE_EXTENT_INLINE) {
-			len = btrfs_file_extent_ram_bytes(src, extent);
-			*last_extent = ALIGN(key.offset + len,
-					     fs_info->sectorsize);
-		} else {
-			len = btrfs_file_extent_num_bytes(src, extent);
-			*last_extent = key.offset + len;
-		}
-	}
-fill_holes:
-	/* So we did prev_leaf, now we need to move to the next leaf, but a few
-	 * things could have happened
-	 *
-	 * 1) A merge could have happened, so we could currently be on a leaf
-	 * that holds what we were copying in the first place.
-	 * 2) A split could have happened, and now not all of the items we want
-	 * are on the same leaf.
-	 *
-	 * So we need to adjust how we search for holes, we need to drop the
-	 * path and re-search for the first extent key we found, and then walk
-	 * forward until we hit the last one we copied.
-	 */
-	if (need_find_last_extent) {
-		/* btrfs_prev_leaf could return 1 without releasing the path */
-		btrfs_release_path(src_path);
-		ret = btrfs_search_slot(NULL, inode->root, &first_key,
-				src_path, 0, 0);
-		if (ret < 0)
-			return ret;
-		ASSERT(ret == 0);
-		src = src_path->nodes[0];
-		i = src_path->slots[0];
-	} else {
-		i = start_slot;
-	}
-
-	/*
-	 * Ok so here we need to go through and fill in any holes we may have
-	 * to make sure that holes are punched for those areas in case they had
-	 * extents previously.
-	 */
-	while (!done) {
-		u64 offset, len;
-		u64 extent_end;
-
-		if (i >= btrfs_header_nritems(src_path->nodes[0])) {
-			ret = btrfs_next_leaf(inode->root, src_path);
-			if (ret < 0)
-				return ret;
-			ASSERT(ret == 0);
-			src = src_path->nodes[0];
-			i = 0;
-			need_find_last_extent = true;
-		}
-
-		btrfs_item_key_to_cpu(src, &key, i);
-		if (!btrfs_comp_cpu_keys(&key, &last_key))
-			done = true;
-		if (key.objectid != btrfs_ino(inode) ||
-		    key.type != BTRFS_EXTENT_DATA_KEY) {
-			i++;
-			continue;
-		}
-		extent = btrfs_item_ptr(src, i, struct btrfs_file_extent_item);
-		if (btrfs_file_extent_type(src, extent) ==
-		    BTRFS_FILE_EXTENT_INLINE) {
-			len = btrfs_file_extent_ram_bytes(src, extent);
-			extent_end = ALIGN(key.offset + len,
-					   fs_info->sectorsize);
-		} else {
-			len = btrfs_file_extent_num_bytes(src, extent);
-			extent_end = key.offset + len;
-		}
-		i++;
-
-		if (*last_extent == key.offset) {
-			*last_extent = extent_end;
-			continue;
-		}
-		offset = *last_extent;
-		len = key.offset - *last_extent;
-		ret = btrfs_insert_file_extent(trans, log, btrfs_ino(inode),
-				offset, 0, 0, len, 0, len, 0, 0, 0);
-		if (ret)
-			break;
-		*last_extent = extent_end;
-	}
-
-	/*
-	 * Check if there is a hole between the last extent found in our leaf
-	 * and the first extent in the next leaf. If there is one, we need to
-	 * log an explicit hole so that at replay time we can punch the hole.
-	 */
-	if (ret == 0 &&
-	    key.objectid == btrfs_ino(inode) &&
-	    key.type == BTRFS_EXTENT_DATA_KEY &&
-	    i == btrfs_header_nritems(src_path->nodes[0])) {
-		ret = btrfs_next_leaf(inode->root, src_path);
-		need_find_last_extent = true;
-		if (ret > 0) {
-			ret = 0;
-		} else if (ret == 0) {
-			btrfs_item_key_to_cpu(src_path->nodes[0], &key,
-					      src_path->slots[0]);
-			if (key.objectid == btrfs_ino(inode) &&
-			    key.type == BTRFS_EXTENT_DATA_KEY &&
-			    *last_extent < key.offset) {
-				const u64 len = key.offset - *last_extent;
-
-				ret = btrfs_insert_file_extent(trans, log,
-							       btrfs_ino(inode),
-							       *last_extent, 0,
-							       0, len, 0, len,
-							       0, 0, 0);
-				*last_extent += len;
-			}
-		}
-	}
-	/*
-	 * Need to let the callers know we dropped the path so they should
-	 * re-search.
-	 */
-	if (!ret && need_find_last_extent)
-		ret = 1;
 	return ret;
 }
 
@@ -4365,7 +4181,7 @@ static int btrfs_log_prealloc_extents(st
 	const u64 i_size = i_size_read(&inode->vfs_inode);
 	const u64 ino = btrfs_ino(inode);
 	struct btrfs_path *dst_path = NULL;
-	u64 last_extent = (u64)-1;
+	bool dropped_extents = false;
 	int ins_nr = 0;
 	int start_slot;
 	int ret;
@@ -4387,8 +4203,7 @@ static int btrfs_log_prealloc_extents(st
 		if (slot >= btrfs_header_nritems(leaf)) {
 			if (ins_nr > 0) {
 				ret = copy_items(trans, inode, dst_path, path,
-						 &last_extent, start_slot,
-						 ins_nr, 1, 0);
+						 start_slot, ins_nr, 1, 0);
 				if (ret < 0)
 					goto out;
 				ins_nr = 0;
@@ -4412,8 +4227,7 @@ static int btrfs_log_prealloc_extents(st
 			path->slots[0]++;
 			continue;
 		}
-		if (last_extent == (u64)-1) {
-			last_extent = key.offset;
+		if (!dropped_extents) {
 			/*
 			 * Avoid logging extent items logged in past fsync calls
 			 * and leading to duplicate keys in the log tree.
@@ -4427,6 +4241,7 @@ static int btrfs_log_prealloc_extents(st
 			} while (ret == -EAGAIN);
 			if (ret)
 				goto out;
+			dropped_extents = true;
 		}
 		if (ins_nr == 0)
 			start_slot = slot;
@@ -4441,7 +4256,7 @@ static int btrfs_log_prealloc_extents(st
 		}
 	}
 	if (ins_nr > 0) {
-		ret = copy_items(trans, inode, dst_path, path, &last_extent,
+		ret = copy_items(trans, inode, dst_path, path,
 				 start_slot, ins_nr, 1, 0);
 		if (ret > 0)
 			ret = 0;
@@ -4636,13 +4451,8 @@ static int btrfs_log_all_xattrs(struct b
 
 		if (slot >= nritems) {
 			if (ins_nr > 0) {
-				u64 last_extent = 0;
-
 				ret = copy_items(trans, inode, dst_path, path,
-						 &last_extent, start_slot,
-						 ins_nr, 1, 0);
-				/* can't be 1, extent items aren't processed */
-				ASSERT(ret <= 0);
+						 start_slot, ins_nr, 1, 0);
 				if (ret < 0)
 					return ret;
 				ins_nr = 0;
@@ -4666,13 +4476,8 @@ static int btrfs_log_all_xattrs(struct b
 		cond_resched();
 	}
 	if (ins_nr > 0) {
-		u64 last_extent = 0;
-
 		ret = copy_items(trans, inode, dst_path, path,
-				 &last_extent, start_slot,
-				 ins_nr, 1, 0);
-		/* can't be 1, extent items aren't processed */
-		ASSERT(ret <= 0);
+				 start_slot, ins_nr, 1, 0);
 		if (ret < 0)
 			return ret;
 	}
@@ -4681,100 +4486,119 @@ static int btrfs_log_all_xattrs(struct b
 }
 
 /*
- * If the no holes feature is enabled we need to make sure any hole between the
- * last extent and the i_size of our inode is explicitly marked in the log. This
- * is to make sure that doing something like:
- *
- *      1) create file with 128Kb of data
- *      2) truncate file to 64Kb
- *      3) truncate file to 256Kb
- *      4) fsync file
- *      5) <crash/power failure>
- *      6) mount fs and trigger log replay
- *
- * Will give us a file with a size of 256Kb, the first 64Kb of data match what
- * the file had in its first 64Kb of data at step 1 and the last 192Kb of the
- * file correspond to a hole. The presence of explicit holes in a log tree is
- * what guarantees that log replay will remove/adjust file extent items in the
- * fs/subvol tree.
- *
- * Here we do not need to care about holes between extents, that is already done
- * by copy_items(). We also only need to do this in the full sync path, where we
- * lookup for extents from the fs/subvol tree only. In the fast path case, we
- * lookup the list of modified extent maps and if any represents a hole, we
- * insert a corresponding extent representing a hole in the log tree.
+ * When using the NO_HOLES feature if we punched a hole that causes the
+ * deletion of entire leafs or all the extent items of the first leaf (the one
+ * that contains the inode item and references) we may end up not processing
+ * any extents, because there are no leafs with a generation matching the
+ * current transaction that have extent items for our inode. So we need to find
+ * if any holes exist and then log them. We also need to log holes after any
+ * truncate operation that changes the inode's size.
  */
-static int btrfs_log_trailing_hole(struct btrfs_trans_handle *trans,
-				   struct btrfs_root *root,
-				   struct btrfs_inode *inode,
-				   struct btrfs_path *path)
+static int btrfs_log_holes(struct btrfs_trans_handle *trans,
+			   struct btrfs_root *root,
+			   struct btrfs_inode *inode,
+			   struct btrfs_path *path)
 {
 	struct btrfs_fs_info *fs_info = root->fs_info;
-	int ret;
 	struct btrfs_key key;
-	u64 hole_start;
-	u64 hole_size;
-	struct extent_buffer *leaf;
-	struct btrfs_root *log = root->log_root;
 	const u64 ino = btrfs_ino(inode);
 	const u64 i_size = i_size_read(&inode->vfs_inode);
+	u64 prev_extent_end = 0;
+	int ret;
 
-	if (!btrfs_fs_incompat(fs_info, NO_HOLES))
+	if (!btrfs_fs_incompat(fs_info, NO_HOLES) || i_size == 0)
 		return 0;
 
 	key.objectid = ino;
 	key.type = BTRFS_EXTENT_DATA_KEY;
-	key.offset = (u64)-1;
+	key.offset = 0;
 
 	ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
-	ASSERT(ret != 0);
 	if (ret < 0)
 		return ret;
 
-	ASSERT(path->slots[0] > 0);
-	path->slots[0]--;
-	leaf = path->nodes[0];
-	btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
-
-	if (key.objectid != ino || key.type != BTRFS_EXTENT_DATA_KEY) {
-		/* inode does not have any extents */
-		hole_start = 0;
-		hole_size = i_size;
-	} else {
+	while (true) {
 		struct btrfs_file_extent_item *extent;
+		struct extent_buffer *leaf = path->nodes[0];
 		u64 len;
 
-		/*
-		 * If there's an extent beyond i_size, an explicit hole was
-		 * already inserted by copy_items().
-		 */
-		if (key.offset >= i_size)
-			return 0;
+		if (path->slots[0] >= btrfs_header_nritems(path->nodes[0])) {
+			ret = btrfs_next_leaf(root, path);
+			if (ret < 0)
+				return ret;
+			if (ret > 0) {
+				ret = 0;
+				break;
+			}
+			leaf = path->nodes[0];
+		}
+
+		btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
+		if (key.objectid != ino || key.type != BTRFS_EXTENT_DATA_KEY)
+			break;
+
+		/* We have a hole, log it. */
+		if (prev_extent_end < key.offset) {
+			const u64 hole_len = key.offset - prev_extent_end;
+
+			/*
+			 * Release the path to avoid deadlocks with other code
+			 * paths that search the root while holding locks on
+			 * leafs from the log root.
+			 */
+			btrfs_release_path(path);
+			ret = btrfs_insert_file_extent(trans, root->log_root,
+						       ino, prev_extent_end, 0,
+						       0, hole_len, 0, hole_len,
+						       0, 0, 0);
+			if (ret < 0)
+				return ret;
+
+			/*
+			 * Search for the same key again in the root. Since it's
+			 * an extent item and we are holding the inode lock, the
+			 * key must still exist. If it doesn't just emit warning
+			 * and return an error to fall back to a transaction
+			 * commit.
+			 */
+			ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
+			if (ret < 0)
+				return ret;
+			if (WARN_ON(ret > 0))
+				return -ENOENT;
+			leaf = path->nodes[0];
+		}
 
 		extent = btrfs_item_ptr(leaf, path->slots[0],
 					struct btrfs_file_extent_item);
-
 		if (btrfs_file_extent_type(leaf, extent) ==
-		    BTRFS_FILE_EXTENT_INLINE)
-			return 0;
+		    BTRFS_FILE_EXTENT_INLINE) {
+			len = btrfs_file_extent_ram_bytes(leaf, extent);
+			prev_extent_end = ALIGN(key.offset + len,
+						fs_info->sectorsize);
+		} else {
+			len = btrfs_file_extent_num_bytes(leaf, extent);
+			prev_extent_end = key.offset + len;
+		}
 
-		len = btrfs_file_extent_num_bytes(leaf, extent);
-		/* Last extent goes beyond i_size, no need to log a hole. */
-		if (key.offset + len > i_size)
-			return 0;
-		hole_start = key.offset + len;
-		hole_size = i_size - hole_start;
+		path->slots[0]++;
+		cond_resched();
 	}
-	btrfs_release_path(path);
 
-	/* Last extent ends at i_size. */
-	if (hole_size == 0)
-		return 0;
+	if (prev_extent_end < i_size) {
+		u64 hole_len;
 
-	hole_size = ALIGN(hole_size, fs_info->sectorsize);
-	ret = btrfs_insert_file_extent(trans, log, ino, hole_start, 0, 0,
-				       hole_size, 0, hole_size, 0, 0, 0);
-	return ret;
+		btrfs_release_path(path);
+		hole_len = ALIGN(i_size - prev_extent_end, fs_info->sectorsize);
+		ret = btrfs_insert_file_extent(trans, root->log_root,
+					       ino, prev_extent_end, 0, 0,
+					       hole_len, 0, hole_len,
+					       0, 0, 0);
+		if (ret < 0)
+			return ret;
+	}
+
+	return 0;
 }
 
 /*
@@ -4934,7 +4758,6 @@ static int btrfs_log_inode(struct btrfs_
 	struct btrfs_key min_key;
 	struct btrfs_key max_key;
 	struct btrfs_root *log = root->log_root;
-	u64 last_extent = 0;
 	int err = 0;
 	int ret;
 	int nritems;
@@ -5108,7 +4931,7 @@ again:
 					ins_start_slot = path->slots[0];
 				}
 				ret = copy_items(trans, inode, dst_path, path,
-						 &last_extent, ins_start_slot,
+						 ins_start_slot,
 						 ins_nr, inode_only,
 						 logged_isize);
 				if (ret < 0) {
@@ -5161,17 +4984,13 @@ again:
 			if (ins_nr == 0)
 				goto next_slot;
 			ret = copy_items(trans, inode, dst_path, path,
-					 &last_extent, ins_start_slot,
+					 ins_start_slot,
 					 ins_nr, inode_only, logged_isize);
 			if (ret < 0) {
 				err = ret;
 				goto out_unlock;
 			}
 			ins_nr = 0;
-			if (ret) {
-				btrfs_release_path(path);
-				continue;
-			}
 			goto next_slot;
 		}
 
@@ -5184,18 +5003,13 @@ again:
 			goto next_slot;
 		}
 
-		ret = copy_items(trans, inode, dst_path, path, &last_extent,
+		ret = copy_items(trans, inode, dst_path, path,
 				 ins_start_slot, ins_nr, inode_only,
 				 logged_isize);
 		if (ret < 0) {
 			err = ret;
 			goto out_unlock;
 		}
-		if (ret) {
-			ins_nr = 0;
-			btrfs_release_path(path);
-			continue;
-		}
 		ins_nr = 1;
 		ins_start_slot = path->slots[0];
 next_slot:
@@ -5209,13 +5023,12 @@ next_slot:
 		}
 		if (ins_nr) {
 			ret = copy_items(trans, inode, dst_path, path,
-					 &last_extent, ins_start_slot,
+					 ins_start_slot,
 					 ins_nr, inode_only, logged_isize);
 			if (ret < 0) {
 				err = ret;
 				goto out_unlock;
 			}
-			ret = 0;
 			ins_nr = 0;
 		}
 		btrfs_release_path(path);
@@ -5230,14 +5043,13 @@ next_key:
 		}
 	}
 	if (ins_nr) {
-		ret = copy_items(trans, inode, dst_path, path, &last_extent,
+		ret = copy_items(trans, inode, dst_path, path,
 				 ins_start_slot, ins_nr, inode_only,
 				 logged_isize);
 		if (ret < 0) {
 			err = ret;
 			goto out_unlock;
 		}
-		ret = 0;
 		ins_nr = 0;
 	}
 
@@ -5250,7 +5062,7 @@ next_key:
 	if (max_key.type >= BTRFS_EXTENT_DATA_KEY && !fast_search) {
 		btrfs_release_path(path);
 		btrfs_release_path(dst_path);
-		err = btrfs_log_trailing_hole(trans, root, inode, path);
+		err = btrfs_log_holes(trans, root, inode, path);
 		if (err)
 			goto out_unlock;
 	}



  parent reply	other threads:[~2020-02-10 13:32 UTC|newest]

Thread overview: 205+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-10 12:30 [PATCH 4.19 000/195] 4.19.103-stable review Greg Kroah-Hartman
2020-02-10 12:30 ` [PATCH 4.19 001/195] Revert "drm/sun4i: dsi: Change the start delay calculation" Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 002/195] ovl: fix lseek overflow on 32bit Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 003/195] kernel/module: Fix memleak in module_add_modinfo_attrs() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 004/195] media: iguanair: fix endpoint sanity check Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 005/195] ocfs2: fix oops when writing cloned file Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 006/195] x86/cpu: Update cached HLE state on write to TSX_CTRL_CPUID_CLEAR Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 007/195] udf: Allow writing to Rewritable partitions Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 008/195] printk: fix exclusive_console replaying Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 009/195] iwlwifi: mvm: fix NVM check for 3168 devices Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 010/195] sparc32: fix struct ipc64_perm type definition Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 011/195] cls_rsvp: fix rsvp_policy Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 012/195] gtp: use __GFP_NOWARN to avoid memalloc warning Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 013/195] l2tp: Allow duplicate session creation with UDP Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 014/195] net: hsr: fix possible NULL deref in hsr_handle_frame() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 015/195] net_sched: fix an OOB access in cls_tcindex Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 016/195] net: stmmac: Delete txtimer in suspend() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 017/195] bnxt_en: Fix TC queue mapping Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 018/195] tcp: clear tp->total_retrans in tcp_disconnect() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 019/195] tcp: clear tp->delivered " Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 020/195] tcp: clear tp->data_segs{in|out} " Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 021/195] tcp: clear tp->segs_{in|out} " Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 022/195] rxrpc: Fix use-after-free in rxrpc_put_local() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 023/195] rxrpc: Fix insufficient receive notification generation Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 024/195] rxrpc: Fix missing active use pinning of rxrpc_local object Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 025/195] rxrpc: Fix NULL pointer deref due to call->conn being cleared on disconnect Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 026/195] media: uvcvideo: Avoid cyclic entity chains due to malformed USB descriptors Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 027/195] mfd: dln2: More sanity checking for endpoints Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 028/195] ipc/msg.c: consolidate all xxxctl_down() functions Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 029/195] tracing: Fix sched switch start/stop refcount racy updates Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 030/195] rcu: Avoid data-race in rcu_gp_fqs_check_wake() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 031/195] brcmfmac: Fix memory leak in brcmf_usbdev_qinit Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 032/195] usb: typec: tcpci: mask event interrupts when remove driver Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 033/195] usb: gadget: legacy: set max_speed to super-speed Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 034/195] usb: gadget: f_ncm: Use atomic_t to track in-flight request Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 035/195] usb: gadget: f_ecm: " Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 036/195] ALSA: usb-audio: Fix endianess in descriptor validation Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 037/195] ALSA: dummy: Fix PCM format loop in proc output Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 038/195] mm/memory_hotplug: fix remove_memory() lockdep splat Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 039/195] mm: move_pages: report the number of non-attempted pages Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 040/195] media/v4l2-core: set pages dirty upon releasing DMA buffers Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 041/195] media: v4l2-core: compat: ignore native command codes Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 042/195] media: v4l2-rect.h: fix v4l2_rect_map_inside() top/left adjustments Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 043/195] lib/test_kasan.c: fix memory leak in kmalloc_oob_krealloc_more() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 044/195] irqdomain: Fix a memory leak in irq_domain_push_irq() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 045/195] platform/x86: intel_scu_ipc: Fix interrupt support Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 046/195] ALSA: hda: Add Clevo W65_67SB the power_save blacklist Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 047/195] KVM: arm64: Correct PSTATE on exception entry Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 048/195] KVM: arm/arm64: Correct CPSR " Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 049/195] KVM: arm/arm64: Correct AArch32 SPSR " Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 050/195] KVM: arm64: Only sign-extend MMIO up to register width Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 051/195] MIPS: fix indentation of the RELOCS message Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 052/195] MIPS: boot: fix typo in vmlinux.lzma.its target Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 053/195] s390/mm: fix dynamic pagetable upgrade for hugetlbfs Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 054/195] powerpc/xmon: dont access ASDR in VMs Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 055/195] powerpc/pseries: Advance pfn if section is not present in lmb_is_removable() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 056/195] smb3: fix signing verification of large reads Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 057/195] PCI: tegra: Fix return value check of pm_runtime_get_sync() Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 058/195] mmc: spi: Toggle SPI polarity, do not hardcode it Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 059/195] ACPI: video: Do not export a non working backlight interface on MSI MS-7721 boards Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 060/195] ACPI / battery: Deal with design or full capacity being reported as -1 Greg Kroah-Hartman
2020-02-10 12:31 ` [PATCH 4.19 061/195] ACPI / battery: Use design-cap for capacity calculations if full-cap is not available Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 062/195] ACPI / battery: Deal better with neither design nor full capacity not being reported Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 063/195] alarmtimer: Unregister wakeup source when module get fails Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 064/195] ubifs: Reject unsupported ioctl flags explicitly Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 065/195] ubifs: dont trigger assertion on invalid no-key filename Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 066/195] ubifs: Fix FS_IOC_SETFLAGS unexpectedly clearing encrypt flag Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 067/195] ubifs: Fix deadlock in concurrent bulk-read and writepage Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 068/195] crypto: geode-aes - convert to skcipher API and make thread-safe Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 069/195] PCI: keystone: Fix link training retries initiation Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 070/195] mmc: sdhci-of-at91: fix memleak on clk_get failure Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 071/195] hv_balloon: Balloon up according to request page number Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 072/195] mfd: axp20x: Mark AXP20X_VBUS_IPSOUT_MGMT as volatile Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 073/195] crypto: api - Check spawn->alg under lock in crypto_drop_spawn Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 074/195] crypto: ccree - fix backlog memory leak Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 075/195] crypto: ccree - fix pm wrongful error reporting Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 076/195] crypto: ccree - fix PM race condition Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 077/195] scripts/find-unused-docs: Fix massive false positives Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 078/195] scsi: qla2xxx: Fix mtcp dump collection failure Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 079/195] power: supply: ltc2941-battery-gauge: fix use-after-free Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 080/195] ovl: fix wrong WARN_ON() in ovl_cache_update_ino() Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 081/195] f2fs: choose hardlimit when softlimit is larger than hardlimit in f2fs_statfs_project() Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 082/195] f2fs: fix miscounted block limit " Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 083/195] f2fs: code cleanup for f2fs_statfs_project() Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 084/195] PM: core: Fix handling of devices deleted during system-wide resume Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 085/195] of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 086/195] dm zoned: support zone sizes smaller than 128MiB Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 087/195] dm space map common: fix to ensure new block isnt already in use Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 088/195] dm crypt: fix benbi IV constructor crash if used in authenticated mode Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 089/195] dm: fix potential for q->make_request_fn NULL pointer Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 090/195] dm writecache: fix incorrect flush sequence when doing SSD mode commit Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 091/195] padata: Remove broken queue flushing Greg Kroah-Hartman
2020-02-14 10:21   ` Yang Yingliang
2020-02-14 15:21     ` Greg Kroah-Hartman
2020-02-14 20:10       ` Daniel Jordan
2020-02-14 20:49         ` Greg Kroah-Hartman
2020-02-14 16:37     ` Daniel Jordan
2020-02-10 12:32 ` [PATCH 4.19 092/195] tracing: Annotate ftrace_graph_hash pointer with __rcu Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 093/195] tracing: Annotate ftrace_graph_notrace_hash " Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 094/195] ftrace: Add comment to why rcu_dereference_sched() is open coded Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 095/195] ftrace: Protect ftrace_graph_hash with ftrace_sync Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 096/195] samples/bpf: Dont try to remove users homedir on clean Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 097/195] crypto: ccp - set max RSA modulus size for v3 platform devices as well Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 098/195] crypto: pcrypt - Do not clear MAY_SLEEP flag in original request Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 099/195] crypto: atmel-aes - Fix counter overflow in CTR mode Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 100/195] crypto: api - Fix race condition in crypto_spawn_alg Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 101/195] crypto: picoxcell - adjust the position of tasklet_init and fix missed tasklet_kill Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 102/195] scsi: qla2xxx: Fix unbound NVME response length Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 103/195] NFS: Fix memory leaks and corruption in readdir Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 104/195] NFS: Directory page cache pages need to be locked when read Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 105/195] jbd2_seq_info_next should increase position index Greg Kroah-Hartman
2020-02-10 12:32 ` Greg Kroah-Hartman [this message]
2020-02-10 12:32 ` [PATCH 4.19 107/195] btrfs: set trans->drity in btrfs_commit_transaction Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 108/195] Btrfs: fix race between adding and putting tree mod seq elements and nodes Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 109/195] ARM: tegra: Enable PLLP bypass during Tegra124 LP1 Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 110/195] iwlwifi: dont throw error when trying to remove IGTK Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 111/195] mwifiex: fix unbalanced locking in mwifiex_process_country_ie() Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 112/195] sunrpc: expiry_time should be seconds not timeval Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 113/195] gfs2: move setting current->backing_dev_info Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 114/195] gfs2: fix O_SYNC write handling Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 115/195] drm/rect: Avoid division by zero Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 116/195] media: rc: ensure lirc is initialized before registering input device Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 117/195] tools/kvm_stat: Fix kvm_exit filter name Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 118/195] xen/balloon: Support xend-based toolstack take two Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 119/195] watchdog: fix UAF in reboot notifier handling in watchdog core code Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 120/195] bcache: add readahead cache policy options via sysfs interface Greg Kroah-Hartman
2020-02-10 12:32 ` [PATCH 4.19 121/195] eventfd: track eventfd_signal() recursion depth Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 122/195] aio: prevent potential eventfd recursion on poll Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 123/195] KVM: x86: Refactor picdev_write() to prevent Spectre-v1/L1TF attacks Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 124/195] KVM: x86: Refactor prefix decoding " Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 125/195] KVM: x86: Protect pmu_intel.c from " Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 126/195] KVM: x86: Protect DR-based index computations " Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 127/195] KVM: x86: Protect kvm_lapic_reg_write() " Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 128/195] KVM: x86: Protect kvm_hv_msr_[get|set]_crash_data() " Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 129/195] KVM: x86: Protect ioapic_write_indirect() " Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 130/195] KVM: x86: Protect MSR-based index computations in pmu.h " Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 131/195] KVM: x86: Protect ioapic_read_indirect() " Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 132/195] KVM: x86: Protect MSR-based index computations from Spectre-v1/L1TF attacks in x86.c Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 133/195] KVM: x86: Protect x86_decode_insn from Spectre-v1/L1TF attacks Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 134/195] KVM: x86: Protect MSR-based index computations in fixed_msr_to_seg_unit() " Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 135/195] KVM: x86: Fix potential put_fpu() w/o load_fpu() on MPX platform Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 136/195] KVM: PPC: Book3S HV: Uninit vCPU if vcore creation fails Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 137/195] KVM: PPC: Book3S PR: Free shared page if mmu initialization fails Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 138/195] x86/kvm: Be careful not to clear KVM_VCPU_FLUSH_TLB bit Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 139/195] KVM: x86: Dont let userspace set host-reserved cr4 bits Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 140/195] KVM: x86: Free wbinvd_dirty_mask if vCPU creation fails Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 141/195] KVM: s390: do not clobber registers during guest reset/store status Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 142/195] clk: tegra: Mark fuse clock as critical Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 143/195] drm/amd/dm/mst: Ignore payload update failures Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 144/195] percpu: Separate decrypted varaibles anytime encryption can be enabled Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 145/195] scsi: qla2xxx: Fix the endianness of the qla82xx_get_fw_size() return type Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 146/195] scsi: csiostor: Adjust indentation in csio_device_reset Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 147/195] scsi: qla4xxx: Adjust indentation in qla4xxx_mem_free Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 148/195] scsi: ufs: Recheck bkops level if bkops is disabled Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 149/195] phy: qualcomm: Adjust indentation in read_poll_timeout Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 150/195] ext2: Adjust indentation in ext2_fill_super Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 151/195] powerpc/44x: Adjust indentation in ibm4xx_denali_fixup_memsize Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 152/195] drm: msm: mdp4: Adjust indentation in mdp4_dsi_encoder_enable Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 153/195] NFC: pn544: Adjust indentation in pn544_hci_check_presence Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 154/195] ppp: Adjust indentation into ppp_async_input Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 155/195] net: smc911x: Adjust indentation in smc911x_phy_configure Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 156/195] net: tulip: Adjust indentation in {dmfe, uli526x}_init_module Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 157/195] IB/mlx5: Fix outstanding_pi index for GSI qps Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 158/195] IB/core: Fix ODP get user pages flow Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 159/195] nfsd: fix delay timer on 32-bit architectures Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 160/195] nfsd: fix jiffies/time_t mixup in LRU list Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 161/195] nfsd: Return the correct number of bytes written to the file Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 162/195] ubi: fastmap: Fix inverted logic in seen selfcheck Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 163/195] ubi: Fix an error pointer dereference in error handling code Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 164/195] mfd: da9062: Fix watchdog compatible string Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 165/195] mfd: rn5t618: Mark ADC control register volatile Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 166/195] bonding/alb: properly access headers in bond_alb_xmit() Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 167/195] net: dsa: bcm_sf2: Only 7278 supports 2Gb/sec IMP port Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 168/195] net: mvneta: move rx_dropped and rx_errors in per-cpu stats Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 169/195] net_sched: fix a resource leak in tcindex_set_parms() Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 170/195] net: systemport: Avoid RBUF stuck in Wake-on-LAN mode Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 171/195] net/mlx5: IPsec, Fix esp modify function attribute Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 172/195] net/mlx5: IPsec, fix memory leak at mlx5_fpga_ipsec_delete_sa_ctx Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 173/195] net: macb: Remove unnecessary alignment check for TSO Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 174/195] net: macb: Limit maximum GEM TX length in TSO Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 175/195] net: dsa: b53: Always use dev->vlan_enabled in b53_configure_vlan() Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 176/195] ext4: fix deadlock allocating crypto bounce page from mempool Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 177/195] btrfs: use bool argument in free_root_pointers() Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 178/195] btrfs: free block groups after freeing fs trees Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 179/195] drm: atmel-hlcdc: enable clock before configuring timing engine Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 180/195] drm/dp_mst: Remove VCPI while disabling topology mgr Greg Kroah-Hartman
2020-02-10 12:33 ` [PATCH 4.19 181/195] btrfs: flush write bio if we loop in extent_write_cache_pages Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 182/195] KVM: x86/mmu: Apply max PA check for MMIO sptes to 32-bit KVM Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 183/195] KVM: x86: Use gpa_t for cr2/gpa to fix TDP support on " Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 184/195] KVM: VMX: Add non-canonical check on writes to RTIT address MSRs Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 185/195] KVM: nVMX: vmread should not set rflags to specify success in case of #PF Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 186/195] KVM: Use vcpu-specific gva->hva translation when querying host page size Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 187/195] KVM: Play nice with read-only memslots " Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 188/195] mm: zero remaining unavailable struct pages Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 189/195] mm: return zero_resv_unavail optimization Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 190/195] mm/page_alloc.c: fix uninitialized memmaps on a partially populated last section Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 191/195] cifs: fail i/o on soft mounts if sessionsetup errors out Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 192/195] x86/apic/msi: Plug non-maskable MSI affinity race Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 193/195] clocksource: Prevent double add_timer_on() for watchdog_timer Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 194/195] perf/core: Fix mlock accounting in perf_mmap() Greg Kroah-Hartman
2020-02-10 12:34 ` [PATCH 4.19 195/195] rxrpc: Fix service call disconnection Greg Kroah-Hartman
2020-02-10 18:52 ` [PATCH 4.19 000/195] 4.19.103-stable review Naresh Kamboju
2020-02-10 20:05 ` Jon Hunter
2020-02-10 21:41 ` Guenter Roeck
2020-02-10 22:45 ` shuah

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200210122315.658547910@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=dsterba@suse.com \
    --cc=fdmanana@suse.com \
    --cc=josef@toxicpanda.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).