dm zoned: add 'message' callback
Add callback for 'dmsetup message' to allow the reclaim process to be triggered manually. Eg. dmsetup message /dev/dm-X 0 message will start the reclaim process even if the default threshold of 50 percent of free random zones is not reached. 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
bc3d5717d2
commit
90b39d58f3
|
@ -160,3 +160,15 @@ where <nr_zones> is the total number of zones, <nr_unmap_rnd> is the number
|
||||||
of unmapped (ie free) random zones, <nr_rnd> the total number of zones,
|
of unmapped (ie free) random zones, <nr_rnd> the total number of zones,
|
||||||
<nr_unmap_seq> the number of unmapped sequential zones, and <nr_seq> the
|
<nr_unmap_seq> the number of unmapped sequential zones, and <nr_seq> the
|
||||||
total number of sequential zones.
|
total number of sequential zones.
|
||||||
|
|
||||||
|
Normally the reclaim process will be started once there are less than 50
|
||||||
|
percent free random zones. In order to start the reclaim process manually
|
||||||
|
even before reaching this threshold the 'dmsetup message' function can be
|
||||||
|
used:
|
||||||
|
|
||||||
|
Ex::
|
||||||
|
|
||||||
|
dmsetup message /dev/dm-X 0 reclaim
|
||||||
|
|
||||||
|
will start the reclaim process and random zones will be moved to sequential
|
||||||
|
zones.
|
||||||
|
|
|
@ -990,6 +990,20 @@ static void dmz_status(struct dm_target *ti, status_type_t type,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int dmz_message(struct dm_target *ti, unsigned int argc, char **argv,
|
||||||
|
char *result, unsigned int maxlen)
|
||||||
|
{
|
||||||
|
struct dmz_target *dmz = ti->private;
|
||||||
|
int r = -EINVAL;
|
||||||
|
|
||||||
|
if (!strcasecmp(argv[0], "reclaim")) {
|
||||||
|
dmz_schedule_reclaim(dmz->reclaim);
|
||||||
|
r = 0;
|
||||||
|
} else
|
||||||
|
DMERR("unrecognized message %s", argv[0]);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
static struct target_type dmz_type = {
|
static struct target_type dmz_type = {
|
||||||
.name = "zoned",
|
.name = "zoned",
|
||||||
.version = {1, 1, 0},
|
.version = {1, 1, 0},
|
||||||
|
@ -1004,6 +1018,7 @@ static struct target_type dmz_type = {
|
||||||
.resume = dmz_resume,
|
.resume = dmz_resume,
|
||||||
.iterate_devices = dmz_iterate_devices,
|
.iterate_devices = dmz_iterate_devices,
|
||||||
.status = dmz_status,
|
.status = dmz_status,
|
||||||
|
.message = dmz_message,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init dmz_init(void)
|
static int __init dmz_init(void)
|
||||||
|
|
Loading…
Reference in a new issue