All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Mike Snitzer <snitzer@redhat.com>
Cc: Damien LeMoal <damien.lemoal@wdc.com>,
	Bob Liu <bob.liu@oracle.com>,
	dm-devel@redhat.com
Subject: [PATCH 02/15] dm-zoned: add 'message' callback
Date: Mon, 11 May 2020 10:24:17 +0200	[thread overview]
Message-ID: <20200511082430.39455-3-hare@suse.de> (raw)
In-Reply-To: <20200511082430.39455-1-hare@suse.de>

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>
---
 Documentation/admin-guide/device-mapper/dm-zoned.rst | 12 ++++++++++++
 drivers/md/dm-zoned-target.c                         | 15 +++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/Documentation/admin-guide/device-mapper/dm-zoned.rst b/Documentation/admin-guide/device-mapper/dm-zoned.rst
index 4165fbf1aeb6..7547ce635161 100644
--- a/Documentation/admin-guide/device-mapper/dm-zoned.rst
+++ b/Documentation/admin-guide/device-mapper/dm-zoned.rst
@@ -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.
diff --git a/drivers/md/dm-zoned-target.c b/drivers/md/dm-zoned-target.c
index 0b4b27d280fb..0bfe34162dbb 100644
--- a/drivers/md/dm-zoned-target.c
+++ b/drivers/md/dm-zoned-target.c
@@ -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)
-- 
2.16.4

  parent reply	other threads:[~2020-05-11  8:24 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-11  8:24 [PATCHv6 00/14] dm-zoned: metadata version 2 Hannes Reinecke
2020-05-11  8:24 ` [PATCH 01/15] dm-zoned: add 'status' callback Hannes Reinecke
2020-05-11  8:24 ` Hannes Reinecke [this message]
2020-05-11  8:24 ` [PATCH 03/15] dm-zoned: store zone id within the zone structure and kill dmz_id() Hannes Reinecke
2020-05-11  8:24 ` [PATCH 04/15] dm-zoned: use array for superblock zones Hannes Reinecke
2020-05-11  8:24 ` [PATCH 05/15] dm-zoned: store device in struct dmz_sb Hannes Reinecke
2020-05-11  8:24 ` [PATCH 06/15] dm-zoned: move fields from struct dmz_dev to dmz_metadata Hannes Reinecke
2020-05-11  8:24 ` [PATCH 07/15] dm-zoned: introduce dmz_metadata_label() to format device name Hannes Reinecke
2020-05-11  8:24 ` [PATCH 08/15] dm-zoned: Introduce dmz_dev_is_dying() and dmz_check_dev() Hannes Reinecke
2020-05-11  8:24 ` [PATCH 09/15] dm-zoned: remove 'dev' argument from reclaim Hannes Reinecke
2020-05-11  8:24 ` [PATCH 10/15] dm-zoned: replace 'target' pointer in the bio context Hannes Reinecke
2020-05-11  8:24 ` [PATCH 11/15] dm-zoned: use dmz_zone_to_dev() when handling metadata I/O Hannes Reinecke
2020-05-11  8:24 ` [PATCH 12/15] dm-zoned: add metadata logging functions Hannes Reinecke
2020-05-11  8:24 ` [PATCH 13/15] dm-zoned: Reduce logging output on startup Hannes Reinecke
2020-05-11  8:24 ` [PATCH 14/15] dm-zoned: ignore metadata zone in dmz_alloc_zone() Hannes Reinecke
2020-05-11  8:24 ` [PATCH 15/15] dm-zoned: metadata version 2 Hannes Reinecke
2020-05-11  8:36   ` Damien Le Moal
2020-05-11  8:46     ` Hannes Reinecke
2020-05-11  8:51       ` Damien Le Moal
2020-05-11  9:18         ` Hannes Reinecke
2020-05-11  9:20           ` Damien Le Moal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200511082430.39455-3-hare@suse.de \
    --to=hare@suse.de \
    --cc=bob.liu@oracle.com \
    --cc=damien.lemoal@wdc.com \
    --cc=dm-devel@redhat.com \
    --cc=snitzer@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.