dm zoned: Introduce dmz_dev_is_dying() and dmz_check_dev()
Introduce accessors dmz_dev_is_dying() and dmz_check_dev() to avoid having to reference the devices directly. Signed-off-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Bob Liu <bob.liu@oracle.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
parent
2234e7321d
commit
d0e21ce40c
@ -267,6 +267,16 @@ const char *dmz_metadata_label(struct dmz_metadata *zmd)
|
|||||||
return (const char *)zmd->devname;
|
return (const char *)zmd->devname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool dmz_check_dev(struct dmz_metadata *zmd)
|
||||||
|
{
|
||||||
|
return dmz_check_bdev(&zmd->dev[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dmz_dev_is_dying(struct dmz_metadata *zmd)
|
||||||
|
{
|
||||||
|
return dmz_bdev_is_dying(&zmd->dev[0]);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Lock/unlock mapping table.
|
* Lock/unlock mapping table.
|
||||||
* The map lock also protects all the zone lists.
|
* The map lock also protects all the zone lists.
|
||||||
@ -1719,7 +1729,7 @@ struct dm_zone *dmz_get_chunk_mapping(struct dmz_metadata *zmd, unsigned int chu
|
|||||||
/* Allocate a random zone */
|
/* Allocate a random zone */
|
||||||
dzone = dmz_alloc_zone(zmd, DMZ_ALLOC_RND);
|
dzone = dmz_alloc_zone(zmd, DMZ_ALLOC_RND);
|
||||||
if (!dzone) {
|
if (!dzone) {
|
||||||
if (dmz_bdev_is_dying(zmd->dev)) {
|
if (dmz_dev_is_dying(zmd)) {
|
||||||
dzone = ERR_PTR(-EIO);
|
dzone = ERR_PTR(-EIO);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@ -1820,7 +1830,7 @@ struct dm_zone *dmz_get_chunk_buffer(struct dmz_metadata *zmd,
|
|||||||
/* Allocate a random zone */
|
/* Allocate a random zone */
|
||||||
bzone = dmz_alloc_zone(zmd, DMZ_ALLOC_RND);
|
bzone = dmz_alloc_zone(zmd, DMZ_ALLOC_RND);
|
||||||
if (!bzone) {
|
if (!bzone) {
|
||||||
if (dmz_bdev_is_dying(zmd->dev)) {
|
if (dmz_dev_is_dying(zmd)) {
|
||||||
bzone = ERR_PTR(-EIO);
|
bzone = ERR_PTR(-EIO);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -455,7 +455,7 @@ static void dmz_reclaim_work(struct work_struct *work)
|
|||||||
unsigned int p_unmap_rnd;
|
unsigned int p_unmap_rnd;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (dmz_bdev_is_dying(zrc->dev))
|
if (dmz_dev_is_dying(zmd))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!dmz_should_reclaim(zrc)) {
|
if (!dmz_should_reclaim(zrc)) {
|
||||||
@ -490,7 +490,7 @@ static void dmz_reclaim_work(struct work_struct *work)
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
DMDEBUG("(%s): Reclaim error %d\n",
|
DMDEBUG("(%s): Reclaim error %d\n",
|
||||||
dmz_metadata_label(zmd), ret);
|
dmz_metadata_label(zmd), ret);
|
||||||
if (!dmz_check_bdev(zrc->dev))
|
if (!dmz_check_dev(zmd))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -632,7 +632,7 @@ static int dmz_map(struct dm_target *ti, struct bio *bio)
|
|||||||
sector_t chunk_sector;
|
sector_t chunk_sector;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (dmz_bdev_is_dying(dmz->dev))
|
if (dmz_dev_is_dying(zmd))
|
||||||
return DM_MAPIO_KILL;
|
return DM_MAPIO_KILL;
|
||||||
|
|
||||||
DMDEBUG("(%s): BIO op %d sector %llu + %u => chunk %llu, block %llu, %u blocks",
|
DMDEBUG("(%s): BIO op %d sector %llu + %u => chunk %llu, block %llu, %u blocks",
|
||||||
|
@ -181,6 +181,9 @@ sector_t dmz_start_sect(struct dmz_metadata *zmd, struct dm_zone *zone);
|
|||||||
sector_t dmz_start_block(struct dmz_metadata *zmd, struct dm_zone *zone);
|
sector_t dmz_start_block(struct dmz_metadata *zmd, struct dm_zone *zone);
|
||||||
unsigned int dmz_nr_chunks(struct dmz_metadata *zmd);
|
unsigned int dmz_nr_chunks(struct dmz_metadata *zmd);
|
||||||
|
|
||||||
|
bool dmz_check_dev(struct dmz_metadata *zmd);
|
||||||
|
bool dmz_dev_is_dying(struct dmz_metadata *zmd);
|
||||||
|
|
||||||
#define DMZ_ALLOC_RND 0x01
|
#define DMZ_ALLOC_RND 0x01
|
||||||
#define DMZ_ALLOC_RECLAIM 0x02
|
#define DMZ_ALLOC_RECLAIM 0x02
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user