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.