• Leah Rumancik's avatar
    ext4: add ioctl EXT4_IOC_CHECKPOINT · 351a0a3f
    Leah Rumancik authored
    ioctl EXT4_IOC_CHECKPOINT checkpoints and flushes the journal. This
    includes forcing all the transactions to the log, checkpointing the
    transactions, and flushing the log to disk. This ioctl takes u32 "flags"
    as an argument. Three flags are supported. EXT4_IOC_CHECKPOINT_FLAG_DRY_RUN
    can be used to verify input to the ioctl. It returns error if there is any
    invalid input, otherwise it returns success without performing
    any checkpointing. The other two flags, EXT4_IOC_CHECKPOINT_FLAG_DISCARD
    and EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT, can be used to issue requests to
    discard or zeroout the journal logs blocks, respectively. At this
    point, EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT is primarily added to enable
    testing of this codepath on devices that don't support discard.
    EXT4_IOC_CHECKPOINT_FLAG_DISCARD and EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT
    cannot both be set.
    
    Systems that wish to achieve content deletion SLO can set up a daemon
    that calls this ioctl at a regular interval such that it matches with the
    SLO requirement. Thus, with this patch, the ext4_dir_entry2 wipeout
    patch[1], and the Ext4 "-o discard" mount option set, Ext4 can now
    guarantee that all file contents, file metatdata, and filenames will not
    be accessible through the filesystem and will have had discard or
    zeroout requests issued for corresponding device blocks.
    
    The __jbd2_journal_erase function could also be used to discard or
    zero-fill the journal during journal load after recovery. This would
    provide a potential solution to a journal replay bug reported earlier this
    year[2]. After a successful journal recovery, e2fsck can call this ioctl to
    discard the journal as well.
    
    [1] https://lore.kernel.org/linux-ext4/YIHknqxngB1sUdie@mit.edu/
    [2] https://lore.kernel.org/linux-ext4/YDZoaacIYStFQT8g@mit.edu/
    
    Link: https://lore.kernel.org/r/20210518151327.130198-2-leah.rumancik@gmail.comSigned-off-by: default avatarLeah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    351a0a3f
ext4.h 132 KB