All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: dsterba@suse.cz, Qu Wenruo <wqu@suse.com>,
	linux-btrfs@vger.kernel.org, Greed Rong <greedrong@gmail.com>
Subject: Re: [PATCH 3/4] btrfs: preallocate anon_dev for subvolume and snapshot creation
Date: Fri, 3 Jul 2020 13:19:14 +0800	[thread overview]
Message-ID: <dce7628b-f182-783b-6f8f-da543bc5421b@gmx.com> (raw)
In-Reply-To: <20200702234632.GU27795@twin.jikos.cz>


[-- Attachment #1.1: Type: text/plain, Size: 2868 bytes --]



On 2020/7/3 上午7:46, David Sterba wrote:
> On Thu, Jul 02, 2020 at 06:08:21PM +0200, David Sterba wrote:
>> On Thu, Jul 02, 2020 at 07:56:57AM +0800, Qu Wenruo wrote:
>>> On 2020/7/2 上午1:39, David Sterba wrote:
>>>> On Wed, Jul 01, 2020 at 11:25:27AM +0800, Qu Wenruo wrote:
>>>> Adding the anon_dev argument to btrfs_get_fs_root is wrong and I have
>>>> never suggested that. What I meant is to put the actual id allocation
>>>> to the callers where the subvolume is created, ie only 2 places.
>>>
>>> You mean to extract btrfs_init_fs_root() out of btrfs_get_fs_root()?
>>>
>>> That looks a little risky and I can't find any good solution to make it
>>> more elegant than the current one.
>>
>> I spent more time reading through the get-fs-root functions and the main
>> problem is that btrfs_get_fs_root is doing several things, and it makes
>> a lot of code simple, I certainly want to keep it that way.
>>
>> The idea was to pre-insert the new root (similar to the root item
>> insertion, btrfs_insert_root) and not letting btrfs_get_fs_root call to
>> btrfs_init_fs_info where the anon_bdev allocation happens for all the
>> other non-ioctl cases.
>>
>> Which could be done by factoring out btrfs_init_fs_root from
>> btrfs_get_fs_root. This would allow to extend only btrfs_init_fs_root
>> arguments with the anon_bdev, and keep btrfs_get_fs_root intact.
>> So this is splitting the API from the end.
>>
>> What you originally proposed is a split from the begnning, ie. add a
>> common implementation for existing and new and provide btrfs_get_fs_root
>> and btrfs_get_new_fs_root that would hide the additional parameters.
>>
>> Both ways are IMO valid but I thought it would be easier to pass the
>> anon bdev inside ioctl callbacks. The problem that makes my proposal
>> less appealing is that btrfs_read_tree_root gets called earlier than
>> I'd like so factoring everything after btrfs_init_fs_root would not be
>> so straightforward.
>>
>> In conclusion, your proposal is better and I'm going to merge it.
>>
>>> Although I would definitely remove the "__" prefix as we shouldn't add
>>> such prefix anymore.
>>
>> Yeah with the small naming fixups.
> 
> It's in for-next-20200703. I've updated the changelogs to reflect what
> we found during debugging the issue, the __ function renamed to
> btrfs_get_root_ref and some function comments added. All patches
> reordered and tagged for stable though the preallocation is not within
> the size limit.
> 

Thanks for the merge and dropping the unneeded check patch.

All the modification looks good to me.

Just a small nitpick for commit a561defc34aa ("btrfs: don't allocate
anonymous block device for user invisible roots"), there is an
unnecessary new line after "[CAUSE]".

Thanks for your daily work of maintaining btrfs,
Qu



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  reply	other threads:[~2020-07-03  5:19 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-16  2:17 [PATCH 0/4] btrfs: workaround exhausted anonymous block device pool Qu Wenruo
2020-06-16  2:17 ` [PATCH 1/4] btrfs: disk-io: don't allocate anonymous block device for user invisible roots Qu Wenruo
2020-06-16 19:21   ` Josef Bacik
2020-06-16  2:17 ` [PATCH 2/4] btrfs: detect uninitialized btrfs_root::anon_dev for user visible subvolumes Qu Wenruo
2020-06-16 19:25   ` Josef Bacik
2020-06-16 22:49     ` Qu Wenruo
2020-06-16 23:32       ` Josef Bacik
2020-06-16 23:49         ` Qu Wenruo
2020-06-17 11:31           ` David Sterba
2020-06-17 13:37             ` Josef Bacik
2020-06-17 23:39               ` Qu Wenruo
2020-06-16  2:17 ` [PATCH 3/4] btrfs: preallocate anon_dev for subvolume and snapshot creation Qu Wenruo
2020-06-16 15:10   ` David Sterba
2020-06-16 22:54     ` Qu Wenruo
2020-07-01  3:25     ` Qu Wenruo
2020-07-01 17:39       ` David Sterba
2020-07-01 23:56         ` Qu Wenruo
2020-07-02 16:08           ` David Sterba
2020-07-02 23:46             ` David Sterba
2020-07-03  5:19               ` Qu Wenruo [this message]
2020-07-03 12:29                 ` David Sterba
2020-07-03 12:39                   ` Qu Wenruo
2020-06-16  2:17 ` [PATCH 4/4] btrfs: free anon_dev earlier to prevent exhausting anonymous block device pool Qu Wenruo
2020-06-16 19:23   ` Josef Bacik
2020-06-16 22:48     ` David Sterba
2020-06-16 23:31       ` Josef Bacik
2020-06-30 14:14 ` [PATCH 0/4] btrfs: workaround exhausted " David Sterba

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=dce7628b-f182-783b-6f8f-da543bc5421b@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=dsterba@suse.cz \
    --cc=greedrong@gmail.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=wqu@suse.com \
    /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 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.