Miao Xie
2011-Nov-10 06:28 UTC
[PATCH 1/6] Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush}()
btrfs_block_rsv_add{, _noflush}() have similar code, so abstract that code.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
---
fs/btrfs/extent-tree.c | 28 ++++++++++++----------------
1 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 1311beb..6703a43 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -3796,16 +3796,16 @@ void btrfs_free_block_rsv(struct btrfs_root *root,
kfree(rsv);
}
-int btrfs_block_rsv_add(struct btrfs_root *root,
- struct btrfs_block_rsv *block_rsv,
- u64 num_bytes)
+static inline int __block_rsv_add(struct btrfs_root *root,
+ struct btrfs_block_rsv *block_rsv,
+ u64 num_bytes, int flush)
{
int ret;
if (num_bytes == 0)
return 0;
- ret = reserve_metadata_bytes(root, block_rsv, num_bytes, 1);
+ ret = reserve_metadata_bytes(root, block_rsv, num_bytes, flush);
if (!ret) {
block_rsv_add_bytes(block_rsv, num_bytes, 1);
return 0;
@@ -3814,22 +3814,18 @@ int btrfs_block_rsv_add(struct btrfs_root *root,
return ret;
}
+int btrfs_block_rsv_add(struct btrfs_root *root,
+ struct btrfs_block_rsv *block_rsv,
+ u64 num_bytes)
+{
+ return __block_rsv_add(root, block_rsv, num_bytes, 1);
+}
+
int btrfs_block_rsv_add_noflush(struct btrfs_root *root,
struct btrfs_block_rsv *block_rsv,
u64 num_bytes)
{
- int ret;
-
- if (num_bytes == 0)
- return 0;
-
- ret = reserve_metadata_bytes(root, block_rsv, num_bytes, 0);
- if (!ret) {
- block_rsv_add_bytes(block_rsv, num_bytes, 1);
- return 0;
- }
-
- return ret;
+ return __block_rsv_add(root, block_rsv, num_bytes, 0);
}
int btrfs_block_rsv_check(struct btrfs_root *root,
--
1.7.6.4
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Miao Xie
2011-Nov-10 07:31 UTC
Re: [PATCH 1/6] Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush}()
The mail of PATCH 0 was always rejected, so I try to send it as the
reply of PATCH 1.
===================Title: [PATCH 0/6] Random fix of the space relocation
This patchset fixes 5 bugs of the space relocation, one fixes the problem
that we forgot to reserve space for writing out i-node cache, one fixes
that the path is not released, this problem may cause the deadlock.
one fixes the no-cow problem, this problem will break the meta-data.
one fixes the deadlock that caused by the race between the relocation
and the snapshot creation, the last one fixes BUG_ON() which is triggered
by the orphan back-ref nodes.
NOTE: This patchset is based on the danger branch.
Miao Xie (6):
Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush}()
Btrfs: fix no reserved space for writing out inode cache
Btrfs: fix unreleased path in btrfs_orphan_cleanup()
Btrfs: fix nocow when deleting the item
Btrfs: fix deadlock caused by the race between relocation and snapshot
creation
Btrfs: fix orphan backref nodes
fs/btrfs/extent-tree.c | 28 ++++++++++++----------------
fs/btrfs/inode-map.c | 28 ++++++++++++++++++++++++----
fs/btrfs/inode.c | 3 +++
fs/btrfs/relocation.c | 2 ++
fs/btrfs/transaction.c | 4 ++--
fs/btrfs/volumes.c | 5 ++++-
6 files changed, 47 insertions(+), 23 deletions(-)
On thu, 10 Nov 2011 14:28:23 +0800, Miao Xie wrote:> btrfs_block_rsv_add{, _noflush}() have similar code, so abstract that code.
>
> Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
> ---
> fs/btrfs/extent-tree.c | 28 ++++++++++++----------------
> 1 files changed, 12 insertions(+), 16 deletions(-)
>
> diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
> index 1311beb..6703a43 100644
> --- a/fs/btrfs/extent-tree.c
> +++ b/fs/btrfs/extent-tree.c
> @@ -3796,16 +3796,16 @@ void btrfs_free_block_rsv(struct btrfs_root *root,
> kfree(rsv);
> }
>
> -int btrfs_block_rsv_add(struct btrfs_root *root,
> - struct btrfs_block_rsv *block_rsv,
> - u64 num_bytes)
> +static inline int __block_rsv_add(struct btrfs_root *root,
> + struct btrfs_block_rsv *block_rsv,
> + u64 num_bytes, int flush)
> {
> int ret;
>
> if (num_bytes == 0)
> return 0;
>
> - ret = reserve_metadata_bytes(root, block_rsv, num_bytes, 1);
> + ret = reserve_metadata_bytes(root, block_rsv, num_bytes, flush);
> if (!ret) {
> block_rsv_add_bytes(block_rsv, num_bytes, 1);
> return 0;
> @@ -3814,22 +3814,18 @@ int btrfs_block_rsv_add(struct btrfs_root *root,
> return ret;
> }
>
> +int btrfs_block_rsv_add(struct btrfs_root *root,
> + struct btrfs_block_rsv *block_rsv,
> + u64 num_bytes)
> +{
> + return __block_rsv_add(root, block_rsv, num_bytes, 1);
> +}
> +
> int btrfs_block_rsv_add_noflush(struct btrfs_root *root,
> struct btrfs_block_rsv *block_rsv,
> u64 num_bytes)
> {
> - int ret;
> -
> - if (num_bytes == 0)
> - return 0;
> -
> - ret = reserve_metadata_bytes(root, block_rsv, num_bytes, 0);
> - if (!ret) {
> - block_rsv_add_bytes(block_rsv, num_bytes, 1);
> - return 0;
> - }
> -
> - return ret;
> + return __block_rsv_add(root, block_rsv, num_bytes, 0);
> }
>
> int btrfs_block_rsv_check(struct btrfs_root *root,
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Chris Mason
2011-Nov-11 00:12 UTC
Re: [PATCH 1/6] Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush}()
On Thu, Nov 10, 2011 at 03:31:08PM +0800, Miao Xie wrote:> The mail of PATCH 0 was always rejected, so I try to send it as the > reply of PATCH 1. > ===================> Title: [PATCH 0/6] Random fix of the space relocation > > This patchset fixes 5 bugs of the space relocation, one fixes the problem > that we forgot to reserve space for writing out i-node cache, one fixes > that the path is not released, this problem may cause the deadlock. > one fixes the no-cow problem, this problem will break the meta-data. > one fixes the deadlock that caused by the race between the relocation > and the snapshot creation, the last one fixes BUG_ON() which is triggered > by the orphan back-ref nodes. > > NOTE: This patchset is based on the danger branch.Thanks! For future patches, please use the for-linus branch instead. danger still has the subtransid code, which we need to fix -chris -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html