On Tue, Feb 02, 2021 at 04:50:26PM +0000, Johannes Thumshirn wrote:
> On 02/02/2021 15:58, David Sterba wrote:
> >> static int check_async_write(struct btrfs_fs_info *fs_info,
> >> struct btrfs_inode *bi)
> >> {
> >> + if (btrfs_is_zoned(fs_info))
> >> + return 0;
> > This check need to be after the other ones as zoned is a static per-fs
> > status, while other others depend on either current state or system
> > state (crypto implementation).
> >
> >> if (atomic_read(&bi->sync_writers))
> >> return 0;
> >> if (test_bit(BTRFS_FS_CSUM_IMPL_FAST, &fs_info->flags))
>
> Can you explain the reasoning behind that rule? For a non-zoned FS this won't
> make a huge difference to check fs_info->zoned and for a zoned FS we're
> bailing out fast as we can't support async checksums.
On first sight it looked like a special case for zoned while it's not
the major usecase but the test is cheap and fast, it's ok to keep it
first.