On Thu, Jul 31, 2025 at 06:04:52PM +0200, Mikulas Patocka wrote:
> 
> 
> On Wed, 30 Jul 2025, LongPing Wei wrote:
> 
> > Hi, Mikulas
> > 
> > For example:
> > 
> > F2FS/EXT4
> > ----
> > dm-thin
> > ----
> > dm-thin-pool
> > ----
> > pool data
> > 
> > 1. There is a block of testfile in F2FS/EXT4.
> > 2. The offset of this block is n.
> > 3. The position in the dm-thin device is m.
> > 4. The position in the pool data is x.
> > 
> > The IV is only be affectted by offset in file and the ino of this file.
> > 
> > Even if we change m by defrag or change x by COW, IV won't changed.
> > 
> > The upper layer will only read the decrypted blocks with the same key and
> > continous IV in one bio.
> > 
> > If the upper layer read the full chunk with mixed blocks for GC purpose, key
> > and IV won't be passed in. Then the upper layer just get the encrypted 
> > blocks.
> > 
> > LongPing Wei
> 
> Yes - so if the IV is calculated from inode and offset, it seems safe to 
> support it on dm-thin. So, I accepted the patch (and increased the target 
> version).
> 
> BTW. what happens if someone uses FALLOC_FL_COLLAPSE_RANGE or 
> FALLOC_FL_INSERT_RANGE on a file with inline encryption? That changes file 
> offsets of existing data, so it should be disallowed when using inline 
> encryption - but I don't see a test for this in the functions 
> ext4_collapse_range and ext4_insert_range.

This seems to be a question about fscrypt, not about inline encryption
per se.  FALLOC_FL_COLLAPSE_RANGE and FALLOC_FL_INSERT_RANGE fail with
EOPNOTSUPP on encrypted files, as is documented in
Documentation/filesystems/fscrypt.rst.  For ext4, the check happens at
the beginning of ext4_fallocate().

- Eric

Reply via email to