From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
Filipe David Borba Manana <fdmanana@gmail.com>,
Josef Bacik <jbacik@fb.com>, Chris Mason <clm@fb.com>
Subject: [PATCH 3.13 138/149] Btrfs: fix tree mod logging
Date: Thu, 20 Mar 2014 17:05:01 -0700 [thread overview]
Message-ID: <20140321000441.736534822@linuxfoundation.org> (raw)
In-Reply-To: <20140321000436.377902063@linuxfoundation.org>
3.13-stable review patch. If anyone has any objections, please let me know.
------------------
From: Filipe David Borba Manana <fdmanana@gmail.com>
commit 5de865eebb8330eee19c37b31fb6f315a09d4273 upstream.
While running the test btrfs/004 from xfstests in a loop, it failed
about 1 time out of 20 runs in my desktop. The failure happened in
the backref walking part of the test, and the test's error message was
like this:
# btrfs/004 93s ... [failed, exit status 1] - output mismatch (see /home/fdmanana/git/hub/xfstests_2/results//btrfs/004.out.bad)
# --- tests/btrfs/004.out 2013-11-26 18:25:29.263333714 +0000
# +++ /home/fdmanana/git/hub/xfstests_2/results//btrfs/004.out.bad 2013-12-10 15:25:10.327518516 +0000
# @@ -1,3 +1,8 @@
# QA output created by 004
# *** test backref walking
# -*** done
# +unexpected output from
# + /home/fdmanana/git/hub/btrfs-progs/btrfs inspect-internal logical-resolve -P 141512704 /home/fdmanana/btrfs-tests/scratch_1
# +expected inum: 405, expected address: 454656, file: /home/fdmanana/btrfs-tests/scratch_1/snap1/p0/d6/d3d/d156/fce, got:
# +
...
(Run 'diff -u tests/btrfs/004.out /home/fdmanana/git/hub/xfstests_2/results//btrfs/004.out.bad' to see the entire diff)
Ran: btrfs/004
Failures: btrfs/004
Failed 1 of 1 tests
But immediately after the test finished, the btrfs inspect-internal command
returned the expected output:
$ btrfs inspect-internal logical-resolve -P 141512704 /home/fdmanana/btrfs-tests/scratch_1
inode 405 offset 454656 root 258
inode 405 offset 454656 root 5
It turned out this was because the btrfs_search_old_slot() calls performed
during backref walking (backref.c:__resolve_indirect_ref) were not finding
anything. The reason for this turned out to be that the tree mod logging
code was not logging some node multi-step operations atomically, therefore
btrfs_search_old_slot() callers iterated often over an incomplete tree that
wasn't fully consistent with any tree state from the past. Besides missing
items, this often (but not always) resulted in -EIO errors during old slot
searches, reported in dmesg like this:
[ 4299.933936] ------------[ cut here ]------------
[ 4299.933949] WARNING: CPU: 0 PID: 23190 at fs/btrfs/ctree.c:1343 btrfs_search_old_slot+0x57b/0xab0 [btrfs]()
[ 4299.933950] Modules linked in: btrfs raid6_pq xor pci_stub vboxpci(O) vboxnetadp(O) vboxnetflt(O) vboxdrv(O) bnep rfcomm bluetooth parport_pc ppdev binfmt_misc joydev snd_hda_codec_h
[ 4299.933977] CPU: 0 PID: 23190 Comm: btrfs Tainted: G W O 3.12.0-fdm-btrfs-next-16+ #70
[ 4299.933978] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./Z77 Pro4, BIOS P1.50 09/04/2012
[ 4299.933979] 000000000000053f ffff8806f3fd98f8 ffffffff8176d284 0000000000000007
[ 4299.933982] 0000000000000000 ffff8806f3fd9938 ffffffff8104a81c ffff880659c64b70
[ 4299.933984] ffff880659c643d0 ffff8806599233d8 ffff880701e2e938 0000160000000000
[ 4299.933987] Call Trace:
[ 4299.933991] [<ffffffff8176d284>] dump_stack+0x55/0x76
[ 4299.933994] [<ffffffff8104a81c>] warn_slowpath_common+0x8c/0xc0
[ 4299.933997] [<ffffffff8104a86a>] warn_slowpath_null+0x1a/0x20
[ 4299.934003] [<ffffffffa065d3bb>] btrfs_search_old_slot+0x57b/0xab0 [btrfs]
[ 4299.934005] [<ffffffff81775f3b>] ? _raw_read_unlock+0x2b/0x50
[ 4299.934010] [<ffffffffa0655001>] ? __tree_mod_log_search+0x81/0xc0 [btrfs]
[ 4299.934019] [<ffffffffa06dd9b0>] __resolve_indirect_refs+0x130/0x5f0 [btrfs]
[ 4299.934027] [<ffffffffa06a21f1>] ? free_extent_buffer+0x61/0xc0 [btrfs]
[ 4299.934034] [<ffffffffa06de39c>] find_parent_nodes+0x1fc/0xe40 [btrfs]
[ 4299.934042] [<ffffffffa06b13e0>] ? defrag_lookup_extent+0xe0/0xe0 [btrfs]
[ 4299.934048] [<ffffffffa06b13e0>] ? defrag_lookup_extent+0xe0/0xe0 [btrfs]
[ 4299.934056] [<ffffffffa06df980>] iterate_extent_inodes+0xe0/0x250 [btrfs]
[ 4299.934058] [<ffffffff817762db>] ? _raw_spin_unlock+0x2b/0x50
[ 4299.934065] [<ffffffffa06dfb82>] iterate_inodes_from_logical+0x92/0xb0 [btrfs]
[ 4299.934071] [<ffffffffa06b13e0>] ? defrag_lookup_extent+0xe0/0xe0 [btrfs]
[ 4299.934078] [<ffffffffa06b7015>] btrfs_ioctl+0xf65/0x1f60 [btrfs]
[ 4299.934080] [<ffffffff811658b8>] ? handle_mm_fault+0x278/0xb00
[ 4299.934083] [<ffffffff81075563>] ? up_read+0x23/0x40
[ 4299.934085] [<ffffffff8177a41c>] ? __do_page_fault+0x20c/0x5a0
[ 4299.934088] [<ffffffff811b2946>] do_vfs_ioctl+0x96/0x570
[ 4299.934090] [<ffffffff81776e23>] ? error_sti+0x5/0x6
[ 4299.934093] [<ffffffff810b71e8>] ? trace_hardirqs_off_caller+0x28/0xd0
[ 4299.934096] [<ffffffff81776a09>] ? retint_swapgs+0xe/0x13
[ 4299.934098] [<ffffffff811b2eb1>] SyS_ioctl+0x91/0xb0
[ 4299.934100] [<ffffffff813eecde>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[ 4299.934102] [<ffffffff8177ef12>] system_call_fastpath+0x16/0x1b
[ 4299.934102] [<ffffffff8177ef12>] system_call_fastpath+0x16/0x1b
[ 4299.934104] ---[ end trace 48f0cfc902491414 ]---
[ 4299.934378] btrfs bad fsid on block 0
These tree mod log operations that must be performed atomically, tree_mod_log_free_eb,
tree_mod_log_eb_copy, tree_mod_log_insert_root and tree_mod_log_insert_move, used to
be performed atomically before the following commit:
c8cc6341653721b54760480b0d0d9b5f09b46741
(Btrfs: stop using GFP_ATOMIC for the tree mod log allocations)
That change removed the atomicity of such operations. This patch restores the
atomicity while still not doing the GFP_ATOMIC allocations of tree_mod_elem
structures, so it has to do the allocations using GFP_NOFS before acquiring
the mod log lock.
This issue has been experienced by several users recently, such as for example:
http://www.spinics.net/lists/linux-btrfs/msg28574.html
After running the btrfs/004 test for 679 consecutive iterations with this
patch applied, I didn't ran into the issue anymore.
Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/btrfs/ctree.c | 385 ++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 296 insertions(+), 89 deletions(-)
--- a/fs/btrfs/ctree.c
+++ b/fs/btrfs/ctree.c
@@ -39,7 +39,7 @@ static int balance_node_right(struct btr
struct extent_buffer *src_buf);
static void del_ptr(struct btrfs_root *root, struct btrfs_path *path,
int level, int slot);
-static void tree_mod_log_free_eb(struct btrfs_fs_info *fs_info,
+static int tree_mod_log_free_eb(struct btrfs_fs_info *fs_info,
struct extent_buffer *eb);
static int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path);
@@ -475,6 +475,8 @@ void btrfs_put_tree_mod_seq(struct btrfs
* the index is the shifted logical of the *new* root node for root replace
* operations, or the shifted logical of the affected block for all other
* operations.
+ *
+ * Note: must be called with write lock (tree_mod_log_write_lock).
*/
static noinline int
__tree_mod_log_insert(struct btrfs_fs_info *fs_info, struct tree_mod_elem *tm)
@@ -483,24 +485,9 @@ __tree_mod_log_insert(struct btrfs_fs_in
struct rb_node **new;
struct rb_node *parent = NULL;
struct tree_mod_elem *cur;
- int ret = 0;
BUG_ON(!tm);
- tree_mod_log_write_lock(fs_info);
- if (list_empty(&fs_info->tree_mod_seq_list)) {
- tree_mod_log_write_unlock(fs_info);
- /*
- * Ok we no longer care about logging modifications, free up tm
- * and return 0. Any callers shouldn't be using tm after
- * calling tree_mod_log_insert, but if they do we can just
- * change this to return a special error code to let the callers
- * do their own thing.
- */
- kfree(tm);
- return 0;
- }
-
spin_lock(&fs_info->tree_mod_seq_lock);
tm->seq = btrfs_inc_tree_mod_seq_minor(fs_info);
spin_unlock(&fs_info->tree_mod_seq_lock);
@@ -518,18 +505,13 @@ __tree_mod_log_insert(struct btrfs_fs_in
new = &((*new)->rb_left);
else if (cur->seq > tm->seq)
new = &((*new)->rb_right);
- else {
- ret = -EEXIST;
- kfree(tm);
- goto out;
- }
+ else
+ return -EEXIST;
}
rb_link_node(&tm->node, parent, new);
rb_insert_color(&tm->node, tm_root);
-out:
- tree_mod_log_write_unlock(fs_info);
- return ret;
+ return 0;
}
/*
@@ -545,19 +527,38 @@ static inline int tree_mod_dont_log(stru
return 1;
if (eb && btrfs_header_level(eb) == 0)
return 1;
+
+ tree_mod_log_write_lock(fs_info);
+ if (list_empty(&(fs_info)->tree_mod_seq_list)) {
+ tree_mod_log_write_unlock(fs_info);
+ return 1;
+ }
+
return 0;
}
-static inline int
-__tree_mod_log_insert_key(struct btrfs_fs_info *fs_info,
- struct extent_buffer *eb, int slot,
- enum mod_log_op op, gfp_t flags)
+/* Similar to tree_mod_dont_log, but doesn't acquire any locks. */
+static inline int tree_mod_need_log(const struct btrfs_fs_info *fs_info,
+ struct extent_buffer *eb)
+{
+ smp_mb();
+ if (list_empty(&(fs_info)->tree_mod_seq_list))
+ return 0;
+ if (eb && btrfs_header_level(eb) == 0)
+ return 0;
+
+ return 1;
+}
+
+static struct tree_mod_elem *
+alloc_tree_mod_elem(struct extent_buffer *eb, int slot,
+ enum mod_log_op op, gfp_t flags)
{
struct tree_mod_elem *tm;
tm = kzalloc(sizeof(*tm), flags);
if (!tm)
- return -ENOMEM;
+ return NULL;
tm->index = eb->start >> PAGE_CACHE_SHIFT;
if (op != MOD_LOG_KEY_ADD) {
@@ -567,8 +568,9 @@ __tree_mod_log_insert_key(struct btrfs_f
tm->op = op;
tm->slot = slot;
tm->generation = btrfs_node_ptr_generation(eb, slot);
+ RB_CLEAR_NODE(&tm->node);
- return __tree_mod_log_insert(fs_info, tm);
+ return tm;
}
static noinline int
@@ -576,10 +578,27 @@ tree_mod_log_insert_key(struct btrfs_fs_
struct extent_buffer *eb, int slot,
enum mod_log_op op, gfp_t flags)
{
- if (tree_mod_dont_log(fs_info, eb))
+ struct tree_mod_elem *tm;
+ int ret;
+
+ if (!tree_mod_need_log(fs_info, eb))
+ return 0;
+
+ tm = alloc_tree_mod_elem(eb, slot, op, flags);
+ if (!tm)
+ return -ENOMEM;
+
+ if (tree_mod_dont_log(fs_info, eb)) {
+ kfree(tm);
return 0;
+ }
- return __tree_mod_log_insert_key(fs_info, eb, slot, op, flags);
+ ret = __tree_mod_log_insert(fs_info, tm);
+ tree_mod_log_write_unlock(fs_info);
+ if (ret)
+ kfree(tm);
+
+ return ret;
}
static noinline int
@@ -587,53 +606,95 @@ tree_mod_log_insert_move(struct btrfs_fs
struct extent_buffer *eb, int dst_slot, int src_slot,
int nr_items, gfp_t flags)
{
- struct tree_mod_elem *tm;
- int ret;
+ struct tree_mod_elem *tm = NULL;
+ struct tree_mod_elem **tm_list = NULL;
+ int ret = 0;
int i;
+ int locked = 0;
- if (tree_mod_dont_log(fs_info, eb))
+ if (!tree_mod_need_log(fs_info, eb))
return 0;
+ tm_list = kzalloc(nr_items * sizeof(struct tree_mod_elem *), flags);
+ if (!tm_list)
+ return -ENOMEM;
+
+ tm = kzalloc(sizeof(*tm), flags);
+ if (!tm) {
+ ret = -ENOMEM;
+ goto free_tms;
+ }
+
+ tm->index = eb->start >> PAGE_CACHE_SHIFT;
+ tm->slot = src_slot;
+ tm->move.dst_slot = dst_slot;
+ tm->move.nr_items = nr_items;
+ tm->op = MOD_LOG_MOVE_KEYS;
+
+ for (i = 0; i + dst_slot < src_slot && i < nr_items; i++) {
+ tm_list[i] = alloc_tree_mod_elem(eb, i + dst_slot,
+ MOD_LOG_KEY_REMOVE_WHILE_MOVING, flags);
+ if (!tm_list[i]) {
+ ret = -ENOMEM;
+ goto free_tms;
+ }
+ }
+
+ if (tree_mod_dont_log(fs_info, eb))
+ goto free_tms;
+ locked = 1;
+
/*
* When we override something during the move, we log these removals.
* This can only happen when we move towards the beginning of the
* buffer, i.e. dst_slot < src_slot.
*/
for (i = 0; i + dst_slot < src_slot && i < nr_items; i++) {
- ret = __tree_mod_log_insert_key(fs_info, eb, i + dst_slot,
- MOD_LOG_KEY_REMOVE_WHILE_MOVING, GFP_NOFS);
- BUG_ON(ret < 0);
+ ret = __tree_mod_log_insert(fs_info, tm_list[i]);
+ if (ret)
+ goto free_tms;
}
- tm = kzalloc(sizeof(*tm), flags);
- if (!tm)
- return -ENOMEM;
+ ret = __tree_mod_log_insert(fs_info, tm);
+ if (ret)
+ goto free_tms;
+ tree_mod_log_write_unlock(fs_info);
+ kfree(tm_list);
- tm->index = eb->start >> PAGE_CACHE_SHIFT;
- tm->slot = src_slot;
- tm->move.dst_slot = dst_slot;
- tm->move.nr_items = nr_items;
- tm->op = MOD_LOG_MOVE_KEYS;
+ return 0;
+free_tms:
+ for (i = 0; i < nr_items; i++) {
+ if (tm_list[i] && !RB_EMPTY_NODE(&tm_list[i]->node))
+ rb_erase(&tm_list[i]->node, &fs_info->tree_mod_log);
+ kfree(tm_list[i]);
+ }
+ if (locked)
+ tree_mod_log_write_unlock(fs_info);
+ kfree(tm_list);
+ kfree(tm);
- return __tree_mod_log_insert(fs_info, tm);
+ return ret;
}
-static inline void
-__tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, struct extent_buffer *eb)
+static inline int
+__tree_mod_log_free_eb(struct btrfs_fs_info *fs_info,
+ struct tree_mod_elem **tm_list,
+ int nritems)
{
- int i;
- u32 nritems;
+ int i, j;
int ret;
- if (btrfs_header_level(eb) == 0)
- return;
-
- nritems = btrfs_header_nritems(eb);
for (i = nritems - 1; i >= 0; i--) {
- ret = __tree_mod_log_insert_key(fs_info, eb, i,
- MOD_LOG_KEY_REMOVE_WHILE_FREEING, GFP_NOFS);
- BUG_ON(ret < 0);
+ ret = __tree_mod_log_insert(fs_info, tm_list[i]);
+ if (ret) {
+ for (j = nritems - 1; j > i; j--)
+ rb_erase(&tm_list[j]->node,
+ &fs_info->tree_mod_log);
+ return ret;
+ }
}
+
+ return 0;
}
static noinline int
@@ -642,17 +703,38 @@ tree_mod_log_insert_root(struct btrfs_fs
struct extent_buffer *new_root, gfp_t flags,
int log_removal)
{
- struct tree_mod_elem *tm;
+ struct tree_mod_elem *tm = NULL;
+ struct tree_mod_elem **tm_list = NULL;
+ int nritems = 0;
+ int ret = 0;
+ int i;
- if (tree_mod_dont_log(fs_info, NULL))
+ if (!tree_mod_need_log(fs_info, NULL))
return 0;
- if (log_removal)
- __tree_mod_log_free_eb(fs_info, old_root);
+ if (log_removal && btrfs_header_level(old_root) > 0) {
+ nritems = btrfs_header_nritems(old_root);
+ tm_list = kzalloc(nritems * sizeof(struct tree_mod_elem *),
+ flags);
+ if (!tm_list) {
+ ret = -ENOMEM;
+ goto free_tms;
+ }
+ for (i = 0; i < nritems; i++) {
+ tm_list[i] = alloc_tree_mod_elem(old_root, i,
+ MOD_LOG_KEY_REMOVE_WHILE_FREEING, flags);
+ if (!tm_list[i]) {
+ ret = -ENOMEM;
+ goto free_tms;
+ }
+ }
+ }
tm = kzalloc(sizeof(*tm), flags);
- if (!tm)
- return -ENOMEM;
+ if (!tm) {
+ ret = -ENOMEM;
+ goto free_tms;
+ }
tm->index = new_root->start >> PAGE_CACHE_SHIFT;
tm->old_root.logical = old_root->start;
@@ -660,7 +742,30 @@ tree_mod_log_insert_root(struct btrfs_fs
tm->generation = btrfs_header_generation(old_root);
tm->op = MOD_LOG_ROOT_REPLACE;
- return __tree_mod_log_insert(fs_info, tm);
+ if (tree_mod_dont_log(fs_info, NULL))
+ goto free_tms;
+
+ if (tm_list)
+ ret = __tree_mod_log_free_eb(fs_info, tm_list, nritems);
+ if (!ret)
+ ret = __tree_mod_log_insert(fs_info, tm);
+
+ tree_mod_log_write_unlock(fs_info);
+ if (ret)
+ goto free_tms;
+ kfree(tm_list);
+
+ return ret;
+
+free_tms:
+ if (tm_list) {
+ for (i = 0; i < nritems; i++)
+ kfree(tm_list[i]);
+ kfree(tm_list);
+ }
+ kfree(tm);
+
+ return ret;
}
static struct tree_mod_elem *
@@ -729,31 +834,75 @@ tree_mod_log_search(struct btrfs_fs_info
return __tree_mod_log_search(fs_info, start, min_seq, 0);
}
-static noinline void
+static noinline int
tree_mod_log_eb_copy(struct btrfs_fs_info *fs_info, struct extent_buffer *dst,
struct extent_buffer *src, unsigned long dst_offset,
unsigned long src_offset, int nr_items)
{
- int ret;
+ int ret = 0;
+ struct tree_mod_elem **tm_list = NULL;
+ struct tree_mod_elem **tm_list_add, **tm_list_rem;
int i;
+ int locked = 0;
- if (tree_mod_dont_log(fs_info, NULL))
- return;
+ if (!tree_mod_need_log(fs_info, NULL))
+ return 0;
if (btrfs_header_level(dst) == 0 && btrfs_header_level(src) == 0)
- return;
+ return 0;
+
+ tm_list = kzalloc(nr_items * 2 * sizeof(struct tree_mod_elem *),
+ GFP_NOFS);
+ if (!tm_list)
+ return -ENOMEM;
+ tm_list_add = tm_list;
+ tm_list_rem = tm_list + nr_items;
for (i = 0; i < nr_items; i++) {
- ret = __tree_mod_log_insert_key(fs_info, src,
- i + src_offset,
- MOD_LOG_KEY_REMOVE, GFP_NOFS);
- BUG_ON(ret < 0);
- ret = __tree_mod_log_insert_key(fs_info, dst,
- i + dst_offset,
- MOD_LOG_KEY_ADD,
- GFP_NOFS);
- BUG_ON(ret < 0);
+ tm_list_rem[i] = alloc_tree_mod_elem(src, i + src_offset,
+ MOD_LOG_KEY_REMOVE, GFP_NOFS);
+ if (!tm_list_rem[i]) {
+ ret = -ENOMEM;
+ goto free_tms;
+ }
+
+ tm_list_add[i] = alloc_tree_mod_elem(dst, i + dst_offset,
+ MOD_LOG_KEY_ADD, GFP_NOFS);
+ if (!tm_list_add[i]) {
+ ret = -ENOMEM;
+ goto free_tms;
+ }
+ }
+
+ if (tree_mod_dont_log(fs_info, NULL))
+ goto free_tms;
+ locked = 1;
+
+ for (i = 0; i < nr_items; i++) {
+ ret = __tree_mod_log_insert(fs_info, tm_list_rem[i]);
+ if (ret)
+ goto free_tms;
+ ret = __tree_mod_log_insert(fs_info, tm_list_add[i]);
+ if (ret)
+ goto free_tms;
}
+
+ tree_mod_log_write_unlock(fs_info);
+ kfree(tm_list);
+
+ return 0;
+
+free_tms:
+ for (i = 0; i < nr_items * 2; i++) {
+ if (tm_list[i] && !RB_EMPTY_NODE(&tm_list[i]->node))
+ rb_erase(&tm_list[i]->node, &fs_info->tree_mod_log);
+ kfree(tm_list[i]);
+ }
+ if (locked)
+ tree_mod_log_write_unlock(fs_info);
+ kfree(tm_list);
+
+ return ret;
}
static inline void
@@ -778,12 +927,52 @@ tree_mod_log_set_node_key(struct btrfs_f
BUG_ON(ret < 0);
}
-static noinline void
+static noinline int
tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, struct extent_buffer *eb)
{
+ struct tree_mod_elem **tm_list = NULL;
+ int nritems = 0;
+ int i;
+ int ret = 0;
+
+ if (btrfs_header_level(eb) == 0)
+ return 0;
+
+ if (!tree_mod_need_log(fs_info, NULL))
+ return 0;
+
+ nritems = btrfs_header_nritems(eb);
+ tm_list = kzalloc(nritems * sizeof(struct tree_mod_elem *),
+ GFP_NOFS);
+ if (!tm_list)
+ return -ENOMEM;
+
+ for (i = 0; i < nritems; i++) {
+ tm_list[i] = alloc_tree_mod_elem(eb, i,
+ MOD_LOG_KEY_REMOVE_WHILE_FREEING, GFP_NOFS);
+ if (!tm_list[i]) {
+ ret = -ENOMEM;
+ goto free_tms;
+ }
+ }
+
if (tree_mod_dont_log(fs_info, eb))
- return;
- __tree_mod_log_free_eb(fs_info, eb);
+ goto free_tms;
+
+ ret = __tree_mod_log_free_eb(fs_info, tm_list, nritems);
+ tree_mod_log_write_unlock(fs_info);
+ if (ret)
+ goto free_tms;
+ kfree(tm_list);
+
+ return 0;
+
+free_tms:
+ for (i = 0; i < nritems; i++)
+ kfree(tm_list[i]);
+ kfree(tm_list);
+
+ return ret;
}
static noinline void
@@ -1041,8 +1230,13 @@ static noinline int __btrfs_cow_block(st
btrfs_set_node_ptr_generation(parent, parent_slot,
trans->transid);
btrfs_mark_buffer_dirty(parent);
- if (last_ref)
- tree_mod_log_free_eb(root->fs_info, buf);
+ if (last_ref) {
+ ret = tree_mod_log_free_eb(root->fs_info, buf);
+ if (ret) {
+ btrfs_abort_transaction(trans, root, ret);
+ return ret;
+ }
+ }
btrfs_free_tree_block(trans, root, buf, parent_start,
last_ref);
}
@@ -3022,8 +3216,12 @@ static int push_node_left(struct btrfs_t
} else
push_items = min(src_nritems - 8, push_items);
- tree_mod_log_eb_copy(root->fs_info, dst, src, dst_nritems, 0,
- push_items);
+ ret = tree_mod_log_eb_copy(root->fs_info, dst, src, dst_nritems, 0,
+ push_items);
+ if (ret) {
+ btrfs_abort_transaction(trans, root, ret);
+ return ret;
+ }
copy_extent_buffer(dst, src,
btrfs_node_key_ptr_offset(dst_nritems),
btrfs_node_key_ptr_offset(0),
@@ -3093,8 +3291,12 @@ static int balance_node_right(struct btr
(dst_nritems) *
sizeof(struct btrfs_key_ptr));
- tree_mod_log_eb_copy(root->fs_info, dst, src, 0,
- src_nritems - push_items, push_items);
+ ret = tree_mod_log_eb_copy(root->fs_info, dst, src, 0,
+ src_nritems - push_items, push_items);
+ if (ret) {
+ btrfs_abort_transaction(trans, root, ret);
+ return ret;
+ }
copy_extent_buffer(dst, src,
btrfs_node_key_ptr_offset(0),
btrfs_node_key_ptr_offset(src_nritems - push_items),
@@ -3295,7 +3497,12 @@ static noinline int split_node(struct bt
btrfs_header_chunk_tree_uuid(split),
BTRFS_UUID_SIZE);
- tree_mod_log_eb_copy(root->fs_info, split, c, 0, mid, c_nritems - mid);
+ ret = tree_mod_log_eb_copy(root->fs_info, split, c, 0,
+ mid, c_nritems - mid);
+ if (ret) {
+ btrfs_abort_transaction(trans, root, ret);
+ return ret;
+ }
copy_extent_buffer(split, c,
btrfs_node_key_ptr_offset(0),
btrfs_node_key_ptr_offset(mid),
next prev parent reply other threads:[~2014-03-21 0:05 UTC|newest]
Thread overview: 159+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-21 0:02 [PATCH 3.13 000/149] 3.13.7-stable review Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 001/149] zram: avoid null access when fail to alloc meta Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 002/149] mm: page_alloc: exempt GFP_THISNODE allocations from zone fairness Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 003/149] mm: include VM_MIXEDMAP flag in the VM_SPECIAL list to avoid m(un)locking Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 004/149] ocfs2: fix quota file corruption Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 005/149] ocfs2 syncs the wrong range Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 006/149] memcg: fix endless loop in __mem_cgroup_iter_next() Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 007/149] sched: Fix double normalization of vruntime Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 008/149] rapidio/tsi721: fix tasklet termination in dma channel release Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 009/149] veth: Fix vlan_features so as to be able to use stacked vlan interfaces Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 010/149] tun: remove bogus hardware vlan acceleration flags from vlan_features Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 011/149] net-tcp: fastopen: fix high order allocations Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 012/149] neigh: recompute reachabletime before returning from neigh_periodic_work() Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 013/149] virtio-net: alloc big buffers also when guest can receive UFO Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 014/149] ipv6: reuse ip6_frag_id from ip6_ufo_append_data Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 015/149] ipv4: ipv6: better estimate tunnel header cut for correct ufo handling Greg Kroah-Hartman
2014-03-21 0:02 ` [PATCH 3.13 016/149] sfc: check for NULL efx->ptp_data in efx_ptp_event Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 017/149] sch_tbf: Fix potential memory leak in tbf_change() Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 018/149] ipv6: ipv6_find_hdr restore prev functionality Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 019/149] tg3: Dont check undefined error bits in RXBD Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 020/149] ip_tunnel:multicast process cause panic due to skb->_skb_refdst NULL pointer Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 021/149] net: sctp: fix sctp_sf_do_5_1D_ce to verify if we/peer is AUTH capable Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 022/149] macvlan: Add support for always_on offload features Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 023/149] mac80211: send control port protocol frames to the VO queue Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 024/149] mac80211: fix AP powersave TX vs. wakeup race Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 025/149] mac80211: dont validate unchanged AP bandwidth while tracking Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 026/149] mac80211: fix association to 20/40 MHz VHT networks Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 027/149] mac80211: clear sequence/fragment number in QoS-null frames Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 028/149] ath9k: Fix ETSI compliance for AR9462 2.0 Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 029/149] ath9k: protect tid->sched check Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 030/149] ath9k: fix ps-poll responses under a-mpdu sessions Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 032/149] iwlwifi: mvm: change of listen interval from 70 to 10 Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 033/149] iwlwifi: dvm: clear IWL_STA_UCODE_INPROGRESS when assoc fails Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 034/149] iwlwifi: fix TX status for aggregated packets Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 035/149] iwlwifi: mvm: dont WARN when statistics are handled late Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 036/149] iwlwifi: disable TX AMPDU by default for iwldvm Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 037/149] mwifiex: clean pcie ring only when device is present Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 038/149] mwifiex: add NULL check for PCIe Rx skb Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 039/149] mwifiex: fix cmd and Tx data timeout issue for PCIe cards Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 040/149] mwifiex: do not advertise usb autosuspend support Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 041/149] mwifiex: copy APs HT capability info correctly Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 042/149] mwifiex: save and copy APs VHT " Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 043/149] ARC: Use correct PTAG register for icache flush Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 044/149] perf trace: Decode architecture-specific signal numbers Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 047/149] ALSA: oxygen: Xonar DG(X): capture from I2S channel 1, not 2 Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 048/149] ALSA: usb-audio: Add quirk for Logitech Webcam C500 Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 049/149] ALSA: hda - Added inverted digital-mic handling for Acer TravelMate 8371 Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 050/149] ALSA: hda - add automute fix for another dell AIO model Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 051/149] ALSA: hda - Add missing loopback merge path for AD1884/1984 codecs Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 052/149] ALSA: hda - Use analog beep for Thinkpads with AD1984 codecs Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 053/149] ALSA: hda - Fix loud click noise with IdeaPad 410Y Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 054/149] pinctrl: sunxi: use chained_irq_{enter, exit} for GIC compatibility Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 055/149] powerpc/tm: Fix crash when forking inside a transaction Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 056/149] powerpc: Align p_dyn, p_rela and p_st symbols Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 057/149] DRM: armada: fix use of kfifo_put() Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 058/149] ARM: fix noMMU kallsyms symbol filtering Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 059/149] ARM: 7991/1: sa1100: fix compile problem on Collie Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 060/149] regulator: core: Replace direct ops->enable usage Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 061/149] x86: Ignore NMIs that come in during early boot Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 062/149] x86: fix compile error due to X86_TRAP_NMI use in asm files Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 063/149] x86/amd/numa: Fix northbridge quirk to assign correct NUMA node Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 064/149] x86_pkg_temp_thermal: Do not expose as a hwmon device Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 065/149] Revert "USBNET: ax88179_178a: enable tso if usb host supports sg dma" Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 066/149] usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 067/149] usb: Make DELAY_INIT quirk wait 100ms between Get Configuration requests Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 068/149] Revert "xhci 1.0: Limit arbitrarily-aligned scatter gather." Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 069/149] genirq: Remove racy waitqueue_active check Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 070/149] cpuset: fix a locking issue in cpuset_migrate_mm() Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 071/149] cpuset: fix a race condition in __cpuset_node_allowed_softwall() Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 072/149] ACPI / resources: ignore invalid ACPI device resources Greg Kroah-Hartman
2014-03-22 2:30 ` Stefan Lippers-Hollmann
2014-03-22 16:26 ` Greg Kroah-Hartman
2014-03-22 16:35 ` Paul Bolle
2014-03-22 16:54 ` Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 073/149] ACPI / EC: Clear stale EC events on Samsung systems Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 074/149] tracing: Do not add event files for modules that fail tracepoints Greg Kroah-Hartman
2014-03-21 0:03 ` [PATCH 3.13 075/149] firewire: net: fix use after free Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 077/149] firewire: dont use PREPARE_DELAYED_WORK Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 078/149] libata: disable queued TRIM for Crucial M500 mSATA SSDs Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 079/149] libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk for Seagate Momentus SpinPoint M8 (2BA30001) Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 080/149] libata: use wider match for blacklisting Crucial M500 Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 081/149] spi: coldfire-qspi: Fix getting correct address for *mcfqspi Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 082/149] spi: fsl-dspi: Fix getting correct address for master Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 083/149] spi: spi-imx: spi_imx_remove: do not disable disabled clocks Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 084/149] spi: spi-ath79: fix initial GPIO CS line setup Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 085/149] NFSv4: Fix another nfs4_sequence corruptor Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 086/149] NFS: Fix a delegation callback race Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 087/149] NFSv4: nfs4_stateid_is_current should return true for an invalid stateid Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 088/149] cpufreq: use cpufreq_cpu_get() to avoid cpufreq_get() race conditions Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 089/149] cpufreq: Skip current frequency initialization for ->setpolicy drivers Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 090/149] ACPI / sleep: Add extra checks for HW Reduced ACPI mode sleep states Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 091/149] iscsi/iser-target: Use list_del_init for ->i_conn_node Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 092/149] iscsi/iser-target: Fix isert_conn->state hung shutdown issues Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 093/149] iser-target: Ignore completions for FRWRs in isert_cq_tx_work Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 094/149] iser-target: Fix post_send_buf_count for RDMA READ/WRITE Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 095/149] iser-target: Fix command leak for tx_desc->comp_llnode_batch Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 096/149] mm/readahead.c: fix do_readahead() for no readpage(s) Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 097/149] iscsi-target: Fix iscsit_get_tpg_from_np tpg_state bug Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 098/149] fs/proc/base.c: fix GPF in /proc/$PID/map_files Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 099/149] drm/radeon/atom: select the proper number of lanes in transmitter setup Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 100/149] drm/radeon/dpm: fix typo in EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 101/149] drm/i915: fix pch pci device enumeration Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 103/149] drm/radeon: re-order firmware loading in preparation for dpm rework Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 104/149] drm/radeon: fix runpm disabling on non-PX harder Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 105/149] drm/radeon/cik: properly set sdma ring status on disable Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 106/149] drm/radeon/cik: stop the sdma engines in the enable() function Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 107/149] drm/radeon/cik: properly set compute ring status on disable Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 108/149] drm/radeon: fix minor typos in si_dpm.c Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 109/149] drm/radeon/si: fix typo in dpm sq ramping setup Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 110/149] ASoC: pcm: free path list before exiting from error conditions Greg Kroah-Hartman
2014-03-22 15:53 ` Ben Hutchings
2014-03-22 18:54 ` Mark Brown
2014-03-24 4:35 ` Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 111/149] ASoC: 88pm860: Fix IO setup Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 112/149] ASoC: si476x: " Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 113/149] i2c: Remove usage of orphaned symbol OF_I2C Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 114/149] ipc: Fix 2 bugs in msgrcv() MSG_COPY implementation Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 116/149] ibmveth: Fix endian issues with MAC addresses Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 117/149] PCI: Enable INTx in pci_reenable_device() only when MSI/MSI-X not enabled Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 118/149] vmxnet3: fix netpoll race condition Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 119/149] vmxnet3: fix building without CONFIG_PCI_MSI Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 120/149] mm/compaction: break out of loop on !PageBuddy in isolate_freepages_block Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 121/149] dm cache mq: fix memory allocation failure for large cache devices Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 122/149] dm space map metadata: fix refcount decrement below 0 which caused corruption Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 123/149] dm cache: fix truncation bug when copying a block to/from >2TB fast device Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 124/149] dm cache: fix access beyond end of origin device Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 125/149] net: unix socket code abuses csum_partial Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 126/149] can: flexcan: fix shutdown: first disable chip, then all interrupts Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 127/149] can: flexcan: flexcan_open(): fix error path if flexcan_chip_start() fails Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 128/149] can: flexcan: fix transition from and to low power mode in chip_{en,dis}able Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 129/149] can: flexcan: factor out transceiver {en,dis}able into seperate functions Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 130/149] can: flexcan: flexcan_remove(): add missing netif_napi_del() Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 131/149] SCSI: isci: fix reset timeout handling Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 132/149] SCSI: isci: correct erroneous for_each_isci_host macro Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 133/149] SCSI: qla2xxx: Poll during initialization for ISP25xx and ISP83xx Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 134/149] SCSI: qla2xxx: Fix multiqueue MSI-X registration Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 135/149] SCSI: storvsc: NULL pointer dereference fix Greg Kroah-Hartman
2014-03-21 0:04 ` [PATCH 3.13 136/149] x86, fpu: Check tsk_used_math() in kernel_fpu_end() for eager FPU Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 137/149] Btrfs: return immediately if tree log mod is not necessary Greg Kroah-Hartman
2014-03-21 0:05 ` Greg Kroah-Hartman [this message]
2014-03-21 0:05 ` [PATCH 3.13 139/149] Btrfs: fix data corruption when reading/updating compressed extents Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 140/149] audit: dont generate loginuid log when audit disabled Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 141/149] intel_pstate: Add setting voltage value for baytrail P states Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 142/149] intel_pstate: Add support for Baytrail turbo " Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 143/149] ALSA: oxygen: modify adjust_dg_dac_routing function Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 144/149] regulator: core: Change dummy supplies error message to a warning Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 145/149] Fix mountpoint reference leakage in linkat Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 147/149] bio-integrity: Fix bio_integrity_verify segment start bug Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 148/149] arm64: mm: Add double logical invert to pte accessors Greg Kroah-Hartman
2014-03-21 0:05 ` [PATCH 3.13 149/149] memcg: reparent charges of children before processing parent Greg Kroah-Hartman
2014-03-21 5:37 ` [PATCH 3.13 000/149] 3.13.7-stable review Guenter Roeck
2014-03-21 8:42 ` Thomas Backlund
2014-03-21 9:00 ` Thomas Backlund
2014-03-22 16:25 ` Greg Kroah-Hartman
2014-03-22 16:25 ` Greg Kroah-Hartman
2014-03-22 21:57 ` Shuah Khan
2014-03-24 4:32 ` Greg Kroah-Hartman
2014-03-21 13:54 ` Satoru Takeuchi
2014-03-22 16:26 ` Greg Kroah-Hartman
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=20140321000441.736534822@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=clm@fb.com \
--cc=fdmanana@gmail.com \
--cc=jbacik@fb.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).