mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 17:12:06 +00:00
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,
|
||||
<nr_unmap_seq> the number of unmapped sequential zones, and <nr_seq> the
|
||||
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;
|
||||
}
|
||||
|
||||
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 = {
|
||||
.name = "zoned",
|
||||
.version = {1, 1, 0},
|
||||
@ -1004,6 +1018,7 @@ static struct target_type dmz_type = {
|
||||
.resume = dmz_resume,
|
||||
.iterate_devices = dmz_iterate_devices,
|
||||
.status = dmz_status,
|
||||
.message = dmz_message,
|
||||
};
|
||||
|
||||
static int __init dmz_init(void)
|
||||
|
Loading…
Reference in New Issue
Block a user