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.