• Ming Lei's avatar
    block: always remove partitions from blk_drop_partitions() · d0f0f1b4
    Ming Lei authored
    In theory, when GENHD_FL_NO_PART_SCAN is set, no partitions can be created
    on one disk. However, ioctl(BLKPG, BLKPG_ADD_PARTITION) doesn't check
    GENHD_FL_NO_PART_SCAN, so partitions still can be added even though
    GENHD_FL_NO_PART_SCAN is set.
    
    So far blk_drop_partitions() only removes partitions when disk_part_scan_enabled()
    return true. This way can make ghost partition on loop device after changing/clearing
    FD in case that PARTSCAN is disabled, such as partitions can be added
    via 'parted' on loop disk even though GENHD_FL_NO_PART_SCAN is set.
    
    Fix this issue by always removing partitions in blk_drop_partitions(), and
    this way is correct because the current code supposes that no partitions
    can be added in case of GENHD_FL_NO_PART_SCAN.
    Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    d0f0f1b4
core.c 18.4 KB