On 2021/04/16 16:13, Johannes Thumshirn wrote: > On 16/04/2021 05:05, Damien Le Moal wrote: > > [...] > >> + CRYPT_IV_NO_SECTORS, /* IV calculation does not use sectors */ > > [...] > >> - if (ivmode == NULL) >> + if (ivmode == NULL) { >> cc->iv_gen_ops = NULL; >> - else if (strcmp(ivmode, "plain") == 0) >> + set_bit(CRYPT_IV_NO_SECTORS, &cc->cipher_flags); >> + } else if (strcmp(ivmode, "plain") == 0) > > [...] > >> + if (!test_bit(CRYPT_IV_NO_SECTORS, &cc->cipher_flags)) { >> + DMWARN("Zone append is not supported with sector-based IV cyphers"); >> + ti->zone_append_not_supported = true; >> + } > > I think this negation is hard to follow, at least I had a hard time > reviewing it. > > Wouldn't it make more sense to use CRYPT_IV_USE_SECTORS, set the bit > for algorithms that use sectors as IV (like plain64) and then do a > normal There are only 2 IV modes that do not use sectors. null and random. All others do. Hence the "NO_SECTORS" choice. That is the exception rather than the norm, the flag indicates that. > > if (test_bit(CRYPT_IV_USE_SECTORS, &cc->cipher_flags)) { > DMWARN("Zone append is not supported with sector-based IV cyphers"); > ti->zone_append_not_supported = true; > } > > i.e. without the double negation? Yes. I agree, it is more readable. But adds more lines for the same result. I could add a small boolean helper to make the "!test_bit(CRYPT_IV_NO_SECTORS, &cc->cipher_flags)" easier to understand. > > -- Damien Le Moal Western Digital Research