Re: [PATCH 0/5][v2] Deal with a few ENOSPC corner cases

David Sterba
2020-03-25T18:33:47Z

On Wed, Mar 25, 2020 at 05:52:38PM +0200, Nikolay Borisov wrote:
>
>
> On 25.03.20 г. 17:50 ч., David Sterba wrote:
> > On Fri, Mar 13, 2020 at 03:58:04PM -0400, Josef Bacik wrote:
> >> v1->v2:
> >> - Dropped "btrfs: only take normal tickets into account in
> >> may_commit_transaction" because "btrfs: only check priority tickets for
> >> priority flushing" should actually fix the problem, and Nikolay pointed out
> >> that evict uses the priority list but is allowed to commit, so we need to take
> >> into account priority tickets sometimes.
> >> - Added "btrfs: allow us to use up to 90% of the global rsv for" so that the
> >> global rsv change was separate from the serialization patch.
> >> - Fixed up some changelogs.
> >> - Dropped an extra trace_printk that made it into v2.
> >
> > The patchset seems to be based on some other, code I think it's the
> > tickets for data chunks. The compilation fails because
> > BTRFS_RESERVE_FLUSH_DATA is not defined, but it's mentioned in several
> > patches.
> >
> > If the base patchset is a hard requirement then both would need to go in
> > at the same time, otherwise if it's possible to refresh this branch I
> > could add it to for-next now.
> >
>
> No, the data ticket is not a hard requirement. I've tested this branch
> on our SLE kernels without it. So the conflict resolution is really mino
> - simply removing the conditions involving BTRFS_RESERVE_FLUSH_DATA.

Ok, thanks. With this diff applied, I'll add the branch to for-next and
then to misc-next once some tests finish.

--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1188,8 +1188,7 @@ static int handle_reserve_ticket(struct btrfs_fs_info *fs_info,
*/
static inline bool is_normal_flushing(enum btrfs_reserve_flush_enum flush)
{
- return (flush == BTRFS_RESERVE_FLUSH_DATA) ||
- (flush == BTRFS_RESERVE_FLUSH_ALL) ||
+ return (flush == BTRFS_RESERVE_FLUSH_ALL) ||
(flush == BTRFS_RESERVE_FLUSH_ALL_STEAL);
}