diff for duplicates of <20111027195209.GD2329@localhost.localdomain> diff --git a/a/1.txt b/N1/1.txt index 0637d4f..bd1288f 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -7,31 +7,39 @@ On Tue, Oct 25, 2011 at 01:56:48PM +0200, Christian Brunner wrote: > >> > >> On Mon, 24 Oct 2011, Christian Brunner wrote: > >> > -> >> > - When I run ceph with btrfs snaps disabled, the situation is getting -> >> > slightly better. I can run an OSD for about 3 days without problems, +> >> > - When I run ceph with btrfs snaps disabled, the situation is ge= +tting +> >> > slightly better. I can run an OSD for about 3 days without probl= +ems, > >> > but then again the load increases. This time, I can see that the -> >> > ceph-osd (blkdev_issue_flush) and btrfs-endio-wri are doing more work +> >> > ceph-osd (blkdev_issue_flush) and btrfs-endio-wri are doing more= + work > >> > than usual. > >> -> >> FYI in this scenario you're exposed to the same journal replay issues that -> >> ext4 and XFS are. The btrfs workload that ceph is generating will also -> >> not be all that special, though, so this problem shouldn't be unique to +> >> FYI in this scenario you're exposed to the same journal replay iss= +ues that +> >> ext4 and XFS are. =A0The btrfs workload that ceph is generating wi= +ll also +> >> not be all that special, though, so this problem shouldn't be uniq= +ue to > >> ceph. > >> > > -> > Can you get sysrq+w when this happens? I'd like to see what btrfs-endio-write +> > Can you get sysrq+w when this happens? =A0I'd like to see what btrf= +s-endio-write > > is up to. -> +>=20 > Capturing this seems to be not easy. I have a few traces (see > attachment), but with sysrq+w I do not get a stacktrace of > btrfs-endio-write. What I have is a "latencytop -c" output which is > interesting: -> +>=20 > In our Ceph-OSD server we have 4 disks with 4 btrfs filesystems. Ceph -> tries to balance the load over all OSDs, so all filesystems should get +> tries to balance the load over all OSDs, so all filesystems should ge= +t > an nearly equal load. At the moment one filesystem seems to have a > problem. When running with iostat I see the following -> +>=20 > Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s > avgrq-sz avgqu-sz await svctm %util > sdd 0.00 0.00 0.00 4.33 0.00 53.33 @@ -42,21 +50,24 @@ On Tue, Oct 25, 2011 at 01:56:48PM +0200, Christian Brunner wrote: > 12.00 0.03 25.00 19.75 2.63 > sda 0.00 0.00 0.00 0.67 0.00 8.00 > 12.00 0.01 19.50 12.50 0.83 -> -> The PID of the ceph-osd taht is running on sdc is 2053 and when I look +>=20 +> The PID of the ceph-osd taht is running on sdc is 2053 and when I loo= +k > with top I see this process and a btrfs-endio-writer (PID 5447): -> +>=20 > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > 2053 root 20 0 537m 146m 2364 S 33.2 0.6 43:31.24 ceph-osd -> 5447 root 20 0 0 0 0 S 22.6 0.0 19:32.18 btrfs-endio-wri -> +> 5447 root 20 0 0 0 0 S 22.6 0.0 19:32.18 btrfs-en= +dio-wri +>=20 > In the latencytop output you can see that those processes have a much > higher latency, than the other ceph-osd and btrfs-endio-writers. -> +>=20 > Regards, > Christian -Ok just a shot in the dark, but could you give this a whirl and see if it helps +Ok just a shot in the dark, but could you give this a whirl and see if = +it helps you? Thanks Josef @@ -66,32 +77,35 @@ diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c index 125cf76..fbc196e 100644 --- a/fs/btrfs/delayed-ref.c +++ b/fs/btrfs/delayed-ref.c -@@ -210,9 +210,9 @@ int btrfs_delayed_ref_lock(struct btrfs_trans_handle *trans, +@@ -210,9 +210,9 @@ int btrfs_delayed_ref_lock(struct btrfs_trans_handl= +e *trans, } - +=20 int btrfs_find_ref_cluster(struct btrfs_trans_handle *trans, - struct list_head *cluster, u64 start) + struct list_head *cluster, u64 start, unsigned long max_count) { -- int count = 0; -+ unsigned long count = 0; +- int count =3D 0; ++ unsigned long count =3D 0; struct btrfs_delayed_ref_root *delayed_refs; struct rb_node *node; struct btrfs_delayed_ref_node *ref; -@@ -242,7 +242,7 @@ int btrfs_find_ref_cluster(struct btrfs_trans_handle *trans, - node = rb_first(&delayed_refs->root); +@@ -242,7 +242,7 @@ int btrfs_find_ref_cluster(struct btrfs_trans_handl= +e *trans, + node =3D rb_first(&delayed_refs->root); } again: - while (node && count < 32) { + while (node && count < max_count) { - ref = rb_entry(node, struct btrfs_delayed_ref_node, rb_node); + ref =3D rb_entry(node, struct btrfs_delayed_ref_node, rb_node); if (btrfs_delayed_ref_is_head(ref)) { - head = btrfs_delayed_node_to_head(ref); + head =3D btrfs_delayed_node_to_head(ref); diff --git a/fs/btrfs/delayed-ref.h b/fs/btrfs/delayed-ref.h index e287e3b..b15a6ad 100644 --- a/fs/btrfs/delayed-ref.h +++ b/fs/btrfs/delayed-ref.h -@@ -169,7 +169,8 @@ btrfs_find_delayed_ref_head(struct btrfs_trans_handle *trans, u64 bytenr); +@@ -169,7 +169,8 @@ btrfs_find_delayed_ref_head(struct btrfs_trans_hand= +le *trans, u64 bytenr); int btrfs_delayed_ref_lock(struct btrfs_trans_handle *trans, struct btrfs_delayed_ref_head *head); int btrfs_find_ref_cluster(struct btrfs_trans_handle *trans, @@ -105,13 +119,14 @@ diff --git a/fs/btrfs/dir-item.c b/fs/btrfs/dir-item.c index 31d84e7..c190282 100644 --- a/fs/btrfs/dir-item.c +++ b/fs/btrfs/dir-item.c -@@ -81,6 +81,7 @@ int btrfs_insert_xattr_item(struct btrfs_trans_handle *trans, +@@ -81,6 +81,7 @@ int btrfs_insert_xattr_item(struct btrfs_trans_handle= + *trans, u32 data_size; - +=20 BUG_ON(name_len + data_len > BTRFS_MAX_XATTR_SIZE(root)); + WARN_ON(trans->endio); - - key.objectid = objectid; +=20 + key.objectid =3D objectid; btrfs_set_key_type(&key, BTRFS_XATTR_ITEM_KEY); diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 4eb7d2b..0977a10 100644 @@ -120,14 +135,14 @@ index 4eb7d2b..0977a10 100644 @@ -2295,7 +2295,7 @@ again: * lock */ - ret = btrfs_find_ref_cluster(trans, &cluster, + ret =3D btrfs_find_ref_cluster(trans, &cluster, - delayed_refs->run_delayed_start); + delayed_refs->run_delayed_start, count); if (ret) break; - +=20 @@ -2338,7 +2338,8 @@ again: - node = rb_next(node); + node =3D rb_next(node); } spin_unlock(&delayed_refs->lock); - schedule_timeout(1); @@ -140,31 +155,34 @@ diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index f12747c..73a5e66 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c -@@ -1752,6 +1752,7 @@ static int btrfs_finish_ordered_io(struct inode *inode, u64 start, u64 end) +@@ -1752,6 +1752,7 @@ static int btrfs_finish_ordered_io(struct inode *= +inode, u64 start, u64 end) else - trans = btrfs_join_transaction(root); + trans =3D btrfs_join_transaction(root); BUG_ON(IS_ERR(trans)); -+ trans->endio = 1; - trans->block_rsv = &root->fs_info->delalloc_block_rsv; - ++ trans->endio =3D 1; + trans->block_rsv =3D &root->fs_info->delalloc_block_rsv; +=20 if (test_bit(BTRFS_ORDERED_COMPRESSED, &ordered_extent->flags)) -@@ -2057,8 +2058,11 @@ void btrfs_run_delayed_iputs(struct btrfs_root *root) +@@ -2057,8 +2058,11 @@ void btrfs_run_delayed_iputs(struct btrfs_root *= +root) LIST_HEAD(list); - struct btrfs_fs_info *fs_info = root->fs_info; + struct btrfs_fs_info *fs_info =3D root->fs_info; struct delayed_iput *delayed; + struct btrfs_trans_handle *trans; int empty; - -+ trans = current->journal_info; +=20 ++ trans =3D current->journal_info; + WARN_ON(trans && trans->endio); spin_lock(&fs_info->delayed_iput_lock); - empty = list_empty(&fs_info->delayed_iputs); + empty =3D list_empty(&fs_info->delayed_iputs); spin_unlock(&fs_info->delayed_iput_lock); diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index a1c9404..ab68cfa 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c -@@ -527,12 +527,15 @@ int btrfs_wait_ordered_extents(struct btrfs_root *root, +@@ -527,12 +527,15 @@ int btrfs_wait_ordered_extents(struct btrfs_root = +*root, */ int btrfs_run_ordered_operations(struct btrfs_root *root, int wait) { @@ -172,10 +190,10 @@ index a1c9404..ab68cfa 100644 struct btrfs_inode *btrfs_inode; struct inode *inode; struct list_head splice; - -+ trans = (struct btrfs_trans_handle *)current->journal_info; +=20 ++ trans =3D (struct btrfs_trans_handle *)current->journal_info; INIT_LIST_HEAD(&splice); - +=20 + WARN_ON(trans && trans->endio); mutex_lock(&root->fs_info->ordered_operations_mutex); spin_lock(&root->fs_info->ordered_extent_lock); @@ -185,31 +203,32 @@ index 29bef63..009d2db 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -310,6 +310,7 @@ again: - h->use_count = 1; - h->block_rsv = NULL; - h->orig_rsv = NULL; -+ h->endio = 0; - + h->use_count =3D 1; + h->block_rsv =3D NULL; + h->orig_rsv =3D NULL; ++ h->endio =3D 0; +=20 smp_mb(); if (cur_trans->blocked && may_wait_transaction(root, type)) { -@@ -467,20 +468,17 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans, +@@ -467,20 +468,17 @@ static int __btrfs_end_transaction(struct btrfs_t= +rans_handle *trans, while (count < 4) { - unsigned long cur = trans->delayed_ref_updates; - trans->delayed_ref_updates = 0; + unsigned long cur =3D trans->delayed_ref_updates; + trans->delayed_ref_updates =3D 0; - if (cur && - trans->transaction->delayed_refs.num_heads_ready > 64) { -- trans->delayed_ref_updates = 0; +- trans->delayed_ref_updates =3D 0; - - /* - * do a full flush if the transaction is trying - * to close - */ - if (trans->transaction->delayed_refs.flushing) -- cur = 0; +- cur =3D 0; - btrfs_run_delayed_refs(trans, root, cur); - } else { + if (!cur || -+ trans->transaction->delayed_refs.num_heads_ready <= 64) ++ trans->transaction->delayed_refs.num_heads_ready <=3D 64) break; - } + @@ -218,12 +237,13 @@ index 29bef63..009d2db 100644 + * to close + */ + if (trans->transaction->delayed_refs.flushing && throttle) -+ cur = 0; ++ cur =3D 0; + btrfs_run_delayed_refs(trans, root, cur); count++; } - -@@ -498,6 +496,7 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans, +=20 +@@ -498,6 +496,7 @@ static int __btrfs_end_transaction(struct btrfs_tra= +ns_handle *trans, * our use_count. */ trans->use_count++; @@ -241,9 +261,10 @@ index 02564e6..7eae404 100644 struct btrfs_block_rsv *orig_rsv; + unsigned endio; }; - +=20 struct btrfs_pending_snapshot { -- -To unsubscribe from this list: send the line "unsubscribe ceph-devel" in +To unsubscribe from this list: send the line "unsubscribe ceph-devel" i= +n the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/a/content_digest b/N1/content_digest index ca3c91e..34c48d0 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -22,31 +22,39 @@ "> >>\n" "> >> On Mon, 24 Oct 2011, Christian Brunner wrote:\n" "> >> >\n" - "> >> > - When I run ceph with btrfs snaps disabled, the situation is getting\n" - "> >> > slightly better. I can run an OSD for about 3 days without problems,\n" + "> >> > - When I run ceph with btrfs snaps disabled, the situation is ge=\n" + "tting\n" + "> >> > slightly better. I can run an OSD for about 3 days without probl=\n" + "ems,\n" "> >> > but then again the load increases. This time, I can see that the\n" - "> >> > ceph-osd (blkdev_issue_flush) and btrfs-endio-wri are doing more work\n" + "> >> > ceph-osd (blkdev_issue_flush) and btrfs-endio-wri are doing more=\n" + " work\n" "> >> > than usual.\n" "> >>\n" - "> >> FYI in this scenario you're exposed to the same journal replay issues that\n" - "> >> ext4 and XFS are. \302\240The btrfs workload that ceph is generating will also\n" - "> >> not be all that special, though, so this problem shouldn't be unique to\n" + "> >> FYI in this scenario you're exposed to the same journal replay iss=\n" + "ues that\n" + "> >> ext4 and XFS are. =A0The btrfs workload that ceph is generating wi=\n" + "ll also\n" + "> >> not be all that special, though, so this problem shouldn't be uniq=\n" + "ue to\n" "> >> ceph.\n" "> >>\n" "> >\n" - "> > Can you get sysrq+w when this happens? \302\240I'd like to see what btrfs-endio-write\n" + "> > Can you get sysrq+w when this happens? =A0I'd like to see what btrf=\n" + "s-endio-write\n" "> > is up to.\n" - "> \n" + ">=20\n" "> Capturing this seems to be not easy. I have a few traces (see\n" "> attachment), but with sysrq+w I do not get a stacktrace of\n" "> btrfs-endio-write. What I have is a \"latencytop -c\" output which is\n" "> interesting:\n" - "> \n" + ">=20\n" "> In our Ceph-OSD server we have 4 disks with 4 btrfs filesystems. Ceph\n" - "> tries to balance the load over all OSDs, so all filesystems should get\n" + "> tries to balance the load over all OSDs, so all filesystems should ge=\n" + "t\n" "> an nearly equal load. At the moment one filesystem seems to have a\n" "> problem. When running with iostat I see the following\n" - "> \n" + ">=20\n" "> Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s\n" "> avgrq-sz avgqu-sz await svctm %util\n" "> sdd 0.00 0.00 0.00 4.33 0.00 53.33\n" @@ -57,21 +65,24 @@ "> 12.00 0.03 25.00 19.75 2.63\n" "> sda 0.00 0.00 0.00 0.67 0.00 8.00\n" "> 12.00 0.01 19.50 12.50 0.83\n" - "> \n" - "> The PID of the ceph-osd taht is running on sdc is 2053 and when I look\n" + ">=20\n" + "> The PID of the ceph-osd taht is running on sdc is 2053 and when I loo=\n" + "k\n" "> with top I see this process and a btrfs-endio-writer (PID 5447):\n" - "> \n" + ">=20\n" "> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND\n" "> 2053 root 20 0 537m 146m 2364 S 33.2 0.6 43:31.24 ceph-osd\n" - "> 5447 root 20 0 0 0 0 S 22.6 0.0 19:32.18 btrfs-endio-wri\n" - "> \n" + "> 5447 root 20 0 0 0 0 S 22.6 0.0 19:32.18 btrfs-en=\n" + "dio-wri\n" + ">=20\n" "> In the latencytop output you can see that those processes have a much\n" "> higher latency, than the other ceph-osd and btrfs-endio-writers.\n" - "> \n" + ">=20\n" "> Regards,\n" "> Christian\n" "\n" - "Ok just a shot in the dark, but could you give this a whirl and see if it helps\n" + "Ok just a shot in the dark, but could you give this a whirl and see if =\n" + "it helps\n" "you? Thanks\n" "\n" "Josef\n" @@ -81,32 +92,35 @@ "index 125cf76..fbc196e 100644\n" "--- a/fs/btrfs/delayed-ref.c\n" "+++ b/fs/btrfs/delayed-ref.c\n" - "@@ -210,9 +210,9 @@ int btrfs_delayed_ref_lock(struct btrfs_trans_handle *trans,\n" + "@@ -210,9 +210,9 @@ int btrfs_delayed_ref_lock(struct btrfs_trans_handl=\n" + "e *trans,\n" " }\n" - " \n" + "=20\n" " int btrfs_find_ref_cluster(struct btrfs_trans_handle *trans,\n" "-\t\t\t struct list_head *cluster, u64 start)\n" "+\t\t\t struct list_head *cluster, u64 start, unsigned long max_count)\n" " {\n" - "-\tint count = 0;\n" - "+\tunsigned long count = 0;\n" + "-\tint count =3D 0;\n" + "+\tunsigned long count =3D 0;\n" " \tstruct btrfs_delayed_ref_root *delayed_refs;\n" " \tstruct rb_node *node;\n" " \tstruct btrfs_delayed_ref_node *ref;\n" - "@@ -242,7 +242,7 @@ int btrfs_find_ref_cluster(struct btrfs_trans_handle *trans,\n" - " \t\t\tnode = rb_first(&delayed_refs->root);\n" + "@@ -242,7 +242,7 @@ int btrfs_find_ref_cluster(struct btrfs_trans_handl=\n" + "e *trans,\n" + " \t\t\tnode =3D rb_first(&delayed_refs->root);\n" " \t}\n" " again:\n" "-\twhile (node && count < 32) {\n" "+\twhile (node && count < max_count) {\n" - " \t\tref = rb_entry(node, struct btrfs_delayed_ref_node, rb_node);\n" + " \t\tref =3D rb_entry(node, struct btrfs_delayed_ref_node, rb_node);\n" " \t\tif (btrfs_delayed_ref_is_head(ref)) {\n" - " \t\t\thead = btrfs_delayed_node_to_head(ref);\n" + " \t\t\thead =3D btrfs_delayed_node_to_head(ref);\n" "diff --git a/fs/btrfs/delayed-ref.h b/fs/btrfs/delayed-ref.h\n" "index e287e3b..b15a6ad 100644\n" "--- a/fs/btrfs/delayed-ref.h\n" "+++ b/fs/btrfs/delayed-ref.h\n" - "@@ -169,7 +169,8 @@ btrfs_find_delayed_ref_head(struct btrfs_trans_handle *trans, u64 bytenr);\n" + "@@ -169,7 +169,8 @@ btrfs_find_delayed_ref_head(struct btrfs_trans_hand=\n" + "le *trans, u64 bytenr);\n" " int btrfs_delayed_ref_lock(struct btrfs_trans_handle *trans,\n" " \t\t\t struct btrfs_delayed_ref_head *head);\n" " int btrfs_find_ref_cluster(struct btrfs_trans_handle *trans,\n" @@ -120,13 +134,14 @@ "index 31d84e7..c190282 100644\n" "--- a/fs/btrfs/dir-item.c\n" "+++ b/fs/btrfs/dir-item.c\n" - "@@ -81,6 +81,7 @@ int btrfs_insert_xattr_item(struct btrfs_trans_handle *trans,\n" + "@@ -81,6 +81,7 @@ int btrfs_insert_xattr_item(struct btrfs_trans_handle=\n" + " *trans,\n" " \tu32 data_size;\n" - " \n" + "=20\n" " \tBUG_ON(name_len + data_len > BTRFS_MAX_XATTR_SIZE(root));\n" "+\tWARN_ON(trans->endio);\n" - " \n" - " \tkey.objectid = objectid;\n" + "=20\n" + " \tkey.objectid =3D objectid;\n" " \tbtrfs_set_key_type(&key, BTRFS_XATTR_ITEM_KEY);\n" "diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c\n" "index 4eb7d2b..0977a10 100644\n" @@ -135,14 +150,14 @@ "@@ -2295,7 +2295,7 @@ again:\n" " \t\t * lock\n" " \t\t */\n" - " \t\tret = btrfs_find_ref_cluster(trans, &cluster,\n" + " \t\tret =3D btrfs_find_ref_cluster(trans, &cluster,\n" "-\t\t\t\t\t delayed_refs->run_delayed_start);\n" "+\t\t\t\t\t delayed_refs->run_delayed_start, count);\n" " \t\tif (ret)\n" " \t\t\tbreak;\n" - " \n" + "=20\n" "@@ -2338,7 +2338,8 @@ again:\n" - " \t\t\tnode = rb_next(node);\n" + " \t\t\tnode =3D rb_next(node);\n" " \t\t}\n" " \t\tspin_unlock(&delayed_refs->lock);\n" "-\t\tschedule_timeout(1);\n" @@ -155,31 +170,34 @@ "index f12747c..73a5e66 100644\n" "--- a/fs/btrfs/inode.c\n" "+++ b/fs/btrfs/inode.c\n" - "@@ -1752,6 +1752,7 @@ static int btrfs_finish_ordered_io(struct inode *inode, u64 start, u64 end)\n" + "@@ -1752,6 +1752,7 @@ static int btrfs_finish_ordered_io(struct inode *=\n" + "inode, u64 start, u64 end)\n" " \telse\n" - " \t\ttrans = btrfs_join_transaction(root);\n" + " \t\ttrans =3D btrfs_join_transaction(root);\n" " \tBUG_ON(IS_ERR(trans));\n" - "+\ttrans->endio = 1;\n" - " \ttrans->block_rsv = &root->fs_info->delalloc_block_rsv;\n" - " \n" + "+\ttrans->endio =3D 1;\n" + " \ttrans->block_rsv =3D &root->fs_info->delalloc_block_rsv;\n" + "=20\n" " \tif (test_bit(BTRFS_ORDERED_COMPRESSED, &ordered_extent->flags))\n" - "@@ -2057,8 +2058,11 @@ void btrfs_run_delayed_iputs(struct btrfs_root *root)\n" + "@@ -2057,8 +2058,11 @@ void btrfs_run_delayed_iputs(struct btrfs_root *=\n" + "root)\n" " \tLIST_HEAD(list);\n" - " \tstruct btrfs_fs_info *fs_info = root->fs_info;\n" + " \tstruct btrfs_fs_info *fs_info =3D root->fs_info;\n" " \tstruct delayed_iput *delayed;\n" "+\tstruct btrfs_trans_handle *trans;\n" " \tint empty;\n" - " \n" - "+\ttrans = current->journal_info;\n" + "=20\n" + "+\ttrans =3D current->journal_info;\n" "+\tWARN_ON(trans && trans->endio);\n" " \tspin_lock(&fs_info->delayed_iput_lock);\n" - " \tempty = list_empty(&fs_info->delayed_iputs);\n" + " \tempty =3D list_empty(&fs_info->delayed_iputs);\n" " \tspin_unlock(&fs_info->delayed_iput_lock);\n" "diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c\n" "index a1c9404..ab68cfa 100644\n" "--- a/fs/btrfs/ordered-data.c\n" "+++ b/fs/btrfs/ordered-data.c\n" - "@@ -527,12 +527,15 @@ int btrfs_wait_ordered_extents(struct btrfs_root *root,\n" + "@@ -527,12 +527,15 @@ int btrfs_wait_ordered_extents(struct btrfs_root =\n" + "*root,\n" " */\n" " int btrfs_run_ordered_operations(struct btrfs_root *root, int wait)\n" " {\n" @@ -187,10 +205,10 @@ " \tstruct btrfs_inode *btrfs_inode;\n" " \tstruct inode *inode;\n" " \tstruct list_head splice;\n" - " \n" - "+\ttrans = (struct btrfs_trans_handle *)current->journal_info;\n" + "=20\n" + "+\ttrans =3D (struct btrfs_trans_handle *)current->journal_info;\n" " \tINIT_LIST_HEAD(&splice);\n" - " \n" + "=20\n" "+\tWARN_ON(trans && trans->endio);\n" " \tmutex_lock(&root->fs_info->ordered_operations_mutex);\n" " \tspin_lock(&root->fs_info->ordered_extent_lock);\n" @@ -200,31 +218,32 @@ "--- a/fs/btrfs/transaction.c\n" "+++ b/fs/btrfs/transaction.c\n" "@@ -310,6 +310,7 @@ again:\n" - " \th->use_count = 1;\n" - " \th->block_rsv = NULL;\n" - " \th->orig_rsv = NULL;\n" - "+\th->endio = 0;\n" - " \n" + " \th->use_count =3D 1;\n" + " \th->block_rsv =3D NULL;\n" + " \th->orig_rsv =3D NULL;\n" + "+\th->endio =3D 0;\n" + "=20\n" " \tsmp_mb();\n" " \tif (cur_trans->blocked && may_wait_transaction(root, type)) {\n" - "@@ -467,20 +468,17 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans,\n" + "@@ -467,20 +468,17 @@ static int __btrfs_end_transaction(struct btrfs_t=\n" + "rans_handle *trans,\n" " \twhile (count < 4) {\n" - " \t\tunsigned long cur = trans->delayed_ref_updates;\n" - " \t\ttrans->delayed_ref_updates = 0;\n" + " \t\tunsigned long cur =3D trans->delayed_ref_updates;\n" + " \t\ttrans->delayed_ref_updates =3D 0;\n" "-\t\tif (cur &&\n" "-\t\t trans->transaction->delayed_refs.num_heads_ready > 64) {\n" - "-\t\t\ttrans->delayed_ref_updates = 0;\n" + "-\t\t\ttrans->delayed_ref_updates =3D 0;\n" "-\n" "-\t\t\t/*\n" "-\t\t\t * do a full flush if the transaction is trying\n" "-\t\t\t * to close\n" "-\t\t\t */\n" "-\t\t\tif (trans->transaction->delayed_refs.flushing)\n" - "-\t\t\t\tcur = 0;\n" + "-\t\t\t\tcur =3D 0;\n" "-\t\t\tbtrfs_run_delayed_refs(trans, root, cur);\n" "-\t\t} else {\n" "+\t\tif (!cur ||\n" - "+\t\t trans->transaction->delayed_refs.num_heads_ready <= 64)\n" + "+\t\t trans->transaction->delayed_refs.num_heads_ready <=3D 64)\n" " \t\t\tbreak;\n" "-\t\t}\n" "+\n" @@ -233,12 +252,13 @@ "+\t\t * to close\n" "+\t\t */\n" "+\t\tif (trans->transaction->delayed_refs.flushing && throttle)\n" - "+\t\t\tcur = 0;\n" + "+\t\t\tcur =3D 0;\n" "+\t\tbtrfs_run_delayed_refs(trans, root, cur);\n" " \t\tcount++;\n" " \t}\n" - " \n" - "@@ -498,6 +496,7 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans,\n" + "=20\n" + "@@ -498,6 +496,7 @@ static int __btrfs_end_transaction(struct btrfs_tra=\n" + "ns_handle *trans,\n" " \t\t\t * our use_count.\n" " \t\t\t */\n" " \t\t\ttrans->use_count++;\n" @@ -256,11 +276,12 @@ " \tstruct btrfs_block_rsv *orig_rsv;\n" "+\tunsigned endio;\n" " };\n" - " \n" + "=20\n" " struct btrfs_pending_snapshot {\n" "--\n" - "To unsubscribe from this list: send the line \"unsubscribe ceph-devel\" in\n" + "To unsubscribe from this list: send the line \"unsubscribe ceph-devel\" i=\n" + "n\n" "the body of a message to majordomo@vger.kernel.org\n" More majordomo info at http://vger.kernel.org/majordomo-info.html -8e20d528cd9a3f8e56ab498eef8eff1c10eda757ba2407820ae190bb72f3bd17 +e61532d952e9220ee2c5273487320f98827ccb283ca212ba4c73f6284800c96f
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.