public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <wqu@suse.com>
To: fdmanana@gmail.com, Qu Wenruo <quwenruo.btrfs@gmx.com>
Cc: linux-btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: [PATCH RFC] btrfs-progs: receive: fallback to buffered copy if clone failed
Date: Wed, 29 Sep 2021 18:25:15 +0800	[thread overview]
Message-ID: <bec618cc-4373-9fd6-b34b-683c565772c9@suse.com> (raw)
In-Reply-To: <CAL3q7H7doRb75LRJGbuyEJu5V+DDhaq8qytWTnYr1wQ7Z-b_yA@mail.gmail.com>



On 2021/9/29 17:59, Filipe Manana wrote:
[...]
>>> Normally we should only exit if errno is not EINTR, and retry
>>> (continue) on the EINTR case.
>>
>> For this, I'm a little concerned.
>>
>> EINTR means the operation is interrupted (by signal).
>> In that case, doesn't it mean the user want to stop the receive?
> 
> There will be plenty of opportunities to be interrupted and still be responsive.
> But ok, you can leave it as it is.
> 
>>
[...]
>>>
>>> What if we have thousands of clone operations?
>>> Is there any rate limited print() in progs like there is for kernel?
>>
>> Unfortunately we don't yet have.
>>
>> But the good news (that I didn't catch at time of writing) is, we now
>> have global verbose/quite switch, so that we can easily hide those
>> warning by default and only output such warning for verbose run.
> 
> The problem with this is that it will possibly hide future bugs with
> the kernel sending incorrect clone operations.
> 
> Having this fallback-to-read-write behaviour by default would hide
> some bugs we had in the past on the kernel side, and unless users
> start running receive with the verbose switch, we won't know about it.
> Even if they do run with the verbose switch, some might not notice the
> warnings at all, and for those who notice it they might not bother to
> report the warnings since the receive succeeded and they didn't find
> any data corruption/loss.
> 
> Or we might start receiving reports about send/receive doing less
> cloning/extent sharing than before, and we won't easily know that the
> receive side has fallen back to this read-write behaviour due to some
> bug on kernel.
> 
> That's why making the behaviour explicit through a new command line
> flag would cause less surprises and make it harder to miss regressions
> on the kernel. And add some documentation explaining on which cases
> the flag is useful.

This sounds indeed better, handling both cases well.

I'll try to add a new option to receive, maybe something called 
--clone-fallback.

Any advice on the option name would be very helpful.

Thanks,
Qu

> 
> Thanks.
> 
>>
>> Thanks,
>> Qu
>>
>>>
>>> That's one reason why my proposal had in mind an optional flag to
>>> trigger this behaviour.
>>>
>>> Thanks for doing it, I was planning on doing something similar soon.
>>>
>>>> +               ret = buffered_copy(clone_fd, rctx->write_fd, clone_offset,
>>>> +                                   len, offset);
>>>>           }
>>>>
>>>>    out:
>>>> --
>>>> 2.33.0
>>>>
>>>
>>>
> 
> 
> 


  reply	other threads:[~2021-09-29 10:25 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-28 23:51 [PATCH RFC] btrfs-progs: receive: fallback to buffered copy if clone failed Qu Wenruo
2021-09-29  9:27 ` Filipe Manana
2021-09-29  9:33   ` Qu Wenruo
2021-09-29  9:59     ` Filipe Manana
2021-09-29 10:25       ` Qu Wenruo [this message]
2021-09-29 10:44         ` Filipe Manana

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=bec618cc-4373-9fd6-b34b-683c565772c9@suse.com \
    --to=wqu@suse.com \
    --cc=fdmanana@gmail.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=quwenruo.btrfs@gmx.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox