• Mikulas Patocka's avatar
    dm io: remove extra bi_io_vec region hack · f1e53987
    Mikulas Patocka authored
    Remove the hack where we allocate an extra bi_io_vec to store additional
    private data.  This hack prevents us from supporting barriers in
    dm-raid1 without first making another little block layer change.
    Instead of doing that, this patch eliminates the bi_io_vec abuse by
    storing the region number directly in the low bits of bi_private.
    
    We need to store two things for each bio, the pointer to the main io
    structure and, if parallel writes were requested, an index indicating
    which of these writes this bio belongs to.  There can be at most
    BITS_PER_LONG regions - 32 or 64.
    
    The index (region number) was stored in the last (hidden) bio vector and
    the pointer to struct io was stored in bi_private.
    
    This patch now aligns "struct io" on BITS_PER_LONG bytes and stores the
    region number in the low BITS_PER_LONG bits of bi_private.
    Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
    f1e53987
dm-io.c 12.1 KB