• E
    fscrypt: add functions for direct I/O support · c6c89783
    Eric Biggers 提交于
    Encrypted files traditionally haven't supported DIO, due to the need to
    encrypt/decrypt the data.  However, when the encryption is implemented
    using inline encryption (blk-crypto) instead of the traditional
    filesystem-layer encryption, it is straightforward to support DIO.
    
    In preparation for supporting this, add the following functions:
    
    - fscrypt_dio_supported() checks whether a DIO request is supported as
      far as encryption is concerned.  Encrypted files will only support DIO
      when inline encryption is used and the I/O request is properly
      aligned; this function checks these preconditions.
    
    - fscrypt_limit_io_blocks() limits the length of a bio to avoid crossing
      a place in the file that a bio with an encryption context cannot
      cross due to a DUN discontiguity.  This function is needed by
      filesystems that use the iomap DIO implementation (which operates
      directly on logical ranges, so it won't use fscrypt_mergeable_bio())
      and that support FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32.
    Co-developed-by: NSatya Tangirala <satyat@google.com>
    Signed-off-by: NSatya Tangirala <satyat@google.com>
    Reviewed-by: NChristoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20220128233940.79464-2-ebiggers@kernel.orgSigned-off-by: NEric Biggers <ebiggers@google.com>
    c6c89783
crypto.c 12.8 KB