• Ryusuke Konishi's avatar
    nilfs2: allow future expansion of metadata read out via get info ioctl · 003ff182
    Ryusuke Konishi authored
    Nilfs has some ioctl commands to read out metadata from meta data
    files:
    
     - NILFS_IOCTL_GET_CPINFO for checkpoint file,
     - NILFS_IOCTL_GET_SUINFO for segment usage file, and
     - NILFS_IOCTL_GET_VINFO for Disk Address Transalation (DAT) file,
       respectively.
    
    Every routine on these metadata files is implemented so that it allows
    future expansion of on-disk format.  But, the above ioctl commands do
    not support expansion even though nilfs_argv structure can handle
    arbitrary size for data exchanged via ioctl.
    
    This allows future expansion of the following structures which give
    basic format of the "get information" ioctls:
    
     - struct nilfs_cpinfo
     - struct nilfs_suinfo
     - struct nilfs_vinfo
    
    So, this introduces forward compatility of such ioctl commands.
    
    In this patch, a sanity check in nilfs_ioctl_get_info() function is
    changed to accept larger data structure [1], and metadata read
    routines are rewritten so that they become compatible for larger
    structures; the routines will just ignore the remaining fields which
    the current version of nilfs doesn't know.
    
    [1] The ioctl function already has another upper limit (PAGE_SIZE
        against a structure, which appears in nilfs_ioctl_wrap_copy
        function), and this will not cause security problem.
    Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    003ff182
ioctl.c 16 KB