• Dan Williams's avatar
    dax: Arrange for dax_supported check to span multiple devices · 7bf7eac8
    Dan Williams authored
    Pankaj reports that starting with commit ad428cdb "dax: Check the
    end of the block-device capacity with dax_direct_access()" device-mapper
    no longer allows dax operation. This results from the stricter checks in
    __bdev_dax_supported() that validate that the start and end of a
    block-device map to the same 'pagemap' instance.
    
    Teach the dax-core and device-mapper to validate the 'pagemap' on a
    per-target basis. This is accomplished by refactoring the
    bdev_dax_supported() internals into generic_fsdax_supported() which
    takes a sector range to validate. Consequently generic_fsdax_supported()
    is suitable to be used in a device-mapper ->iterate_devices() callback.
    A new ->dax_supported() operation is added to allow composite devices to
    split and route upper-level bdev_dax_supported() requests.
    
    Fixes: ad428cdb ("dax: Check the end of the block-device...")
    Cc: <stable@vger.kernel.org>
    Cc: Ira Weiny <ira.weiny@intel.com>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Keith Busch <keith.busch@intel.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Reported-by: default avatarPankaj Gupta <pagupta@redhat.com>
    Reviewed-by: default avatarPankaj Gupta <pagupta@redhat.com>
    Tested-by: default avatarPankaj Gupta <pagupta@redhat.com>
    Tested-by: default avatarVaibhav Jain <vaibhav@linux.ibm.com>
    Reviewed-by: default avatarMike Snitzer <snitzer@redhat.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    7bf7eac8
super.c 16.8 KB