Message ID | 1388324691-24507-2-git-send-email-bo.li.liu@oracle.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On 12/29/2013 08:44 AM, Liu Bo wrote: > We don't have to keep subvolume's block_rsv during transaction commit, > and within transaction commit, we may also need the free space reclaimed > from this block_rsv to process delayed refs. > > Signed-off-by: Liu Bo <bo.li.liu@oracle.com> > --- > fs/btrfs/ioctl.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c > index 21da576..347bf61 100644 > --- a/fs/btrfs/ioctl.c > +++ b/fs/btrfs/ioctl.c > @@ -417,7 +417,8 @@ static noinline int create_subvol(struct inode *dir, > trans = btrfs_start_transaction(root, 0); > if (IS_ERR(trans)) { > ret = PTR_ERR(trans); > - goto out; > + btrfs_subvolume_release_metadata(root, &block_rsv, qgroup_reserved); > + return ret; > } > trans->block_rsv = &block_rsv; > trans->bytes_reserved = block_rsv.size; > @@ -542,6 +543,8 @@ static noinline int create_subvol(struct inode *dir, > fail: > trans->block_rsv = NULL; > trans->bytes_reserved = 0; > + btrfs_subvolume_release_metadata(root, &block_rsv, qgroup_reserved); > + > if (async_transid) { > *async_transid = trans->transid; > err = btrfs_commit_transaction_async(trans, root, 1); > @@ -555,8 +558,6 @@ fail: > > if (!ret) > d_instantiate(dentry, btrfs_lookup_dentry(dir, dentry)); > -out: > - btrfs_subvolume_release_metadata(root, &block_rsv, qgroup_reserved); > return ret; > } > Doesn't compile, please rebase onto new btrfs-next and resubmit. Thanks, Josef -- 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
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 21da576..347bf61 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -417,7 +417,8 @@ static noinline int create_subvol(struct inode *dir, trans = btrfs_start_transaction(root, 0); if (IS_ERR(trans)) { ret = PTR_ERR(trans); - goto out; + btrfs_subvolume_release_metadata(root, &block_rsv, qgroup_reserved); + return ret; } trans->block_rsv = &block_rsv; trans->bytes_reserved = block_rsv.size; @@ -542,6 +543,8 @@ static noinline int create_subvol(struct inode *dir, fail: trans->block_rsv = NULL; trans->bytes_reserved = 0; + btrfs_subvolume_release_metadata(root, &block_rsv, qgroup_reserved); + if (async_transid) { *async_transid = trans->transid; err = btrfs_commit_transaction_async(trans, root, 1); @@ -555,8 +558,6 @@ fail: if (!ret) d_instantiate(dentry, btrfs_lookup_dentry(dir, dentry)); -out: - btrfs_subvolume_release_metadata(root, &block_rsv, qgroup_reserved); return ret; }
We don't have to keep subvolume's block_rsv during transaction commit, and within transaction commit, we may also need the free space reclaimed from this block_rsv to process delayed refs. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> --- fs/btrfs/ioctl.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)