Displaying 3 results from an estimated 3 matches for "btrfs_log_changed_ext".
2012 Sep 17
0
[PATCH] Btrfs: do not hold the write_lock on the extent tree while logging V2
...pre-allocated extent */
+#define EXTENT_FLAG_LOGGING 4 /* Logging this extent */
struct extent_map {
struct rb_node rb_node;
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 038a522..a3e88cf 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -2945,6 +2945,9 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,
list_del_init(&em->list);
if (em->generation <= test_gen)
continue;
+ /* Need a ref to keep it from getting evicted from cache */
+ atomic_inc(&em->refs);
+ set_bit(EXTENT_FLAG_LOGGING, &em->flags);
list_add_tail(&...
2013 Jan 10
0
[PATCH 02/11] Btrfs: use atomic for fs_info->last_trans_committed
...omic64_set(&root->fs_info->last_trans_committed, cur_trans->transid);
wake_up(&cur_trans->commit_wait);
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 83186c7..e6c8eb2 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -3392,7 +3392,7 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,
INIT_LIST_HEAD(&extents);
write_lock(&tree->lock);
- test_gen = root->fs_info->last_trans_committed;
+ test_gen = atomic64_read(&root->fs_info->last_trans_committed);
list_for_each_entry_safe(em, n, &tree->modified_ex...
2013 Apr 13
0
btrfs crash (and softlockup btrfs-endio-wri)
...00805000000002 ffff881ed614da00
Apr 13 04:05:54 datastore01 kernel: [1210991.390706] ffff8817d2f54810 ffff8812e5f39800 ffff8817d2f54688 000000000000584d
Apr 13 04:05:54 datastore01 kernel: [1210991.390709] Call Trace:
Apr 13 04:05:54 datastore01 kernel: [1210991.390727] [<ffffffffa03f0765>] btrfs_log_changed_extents+0xe5/0x6d0 [btrfs]
Apr 13 04:05:54 datastore01 kernel: [1210991.390737] [<ffffffffa039c7e3>] ? btrfs_search_slot+0x593/0x7a0 [btrfs]
Apr 13 04:05:54 datastore01 kernel: [1210991.390746] [<ffffffffa0396dea>] ? btrfs_alloc_path+0x1a/0x20 [btrfs]
Apr 13 04:05:54 datastore01 kernel: [...