Skip to content
  • Mike Snitzer's avatar
    dm ioctl: make bio or request based device type immutable · a5664dad
    Mike Snitzer authored
    
    
    Determine whether a mapped device is bio-based or request-based when
    loading its first (inactive) table and don't allow that to be changed
    later.
    
    This patch performs different device initialisation in each of the two
    cases.  (We don't think it's necessary to add code to support changing
    between the two types.)
    
    Allowed md->type transitions:
      DM_TYPE_NONE to DM_TYPE_BIO_BASED
      DM_TYPE_NONE to DM_TYPE_REQUEST_BASED
    
    We now prevent table_load from replacing the inactive table with a
    conflicting type of table even after an explicit table_clear.
    
    Introduce 'type_lock' into the struct mapped_device to protect md->type
    and to prepare for the next patch that will change the queue
    initialization and allocate memory while md->type_lock is held.
    
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    Acked-by: default avatarKiyoshi Ueda <k-ueda@ct.jp.nec.com>
    Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
    
     drivers/md/dm-ioctl.c    |   15 +++++++++++++++
     drivers/md/dm.c          |   37 ++++++++++++++++++++++++++++++-------
     drivers/md/dm.h          |    5 +++++
     include/linux/dm-ioctl.h |    4 ++--
     4 files changed, 52 insertions(+), 9 deletions(-)
    a5664dad