Re: [PATCH] xen-blkback: add a parameter for disabling of persistent grants
From: SeongJae Park <hidden>
Date: 2020-09-22 07:58:00
Also in:
lkml, xen-devel
On Tue, 22 Sep 2020 09:32:02 +0200 "Roger Pau Monné" [off-list ref] wrote:
On Tue, Sep 22, 2020 at 09:01:25AM +0200, SeongJae Park wrote:quoted
From: SeongJae Park <redacted> Persistent grants feature provides high scalability. On some small systems, however, it could incur data copy overhead[1] and thus it is required to be disabled. But, there is no option to disable it. For the reason, this commit adds a module parameter for disabling of the feature.Have you considered adding a similar option for blkfront?
I will add yet another option for blkfront in the next spin.
quoted
[1] https://wiki.xen.org/wiki/Xen_4.3_Block_Protocol_Scalability Signed-off-by: Anthony Liguori <redacted> Signed-off-by: SeongJae Park <redacted> --- .../ABI/testing/sysfs-driver-xen-blkback | 8 ++++++++ drivers/block/xen-blkback/xenbus.c | 17 ++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-)diff --git a/Documentation/ABI/testing/sysfs-driver-xen-blkback b/Documentation/ABI/testing/sysfs-driver-xen-blkback index ecb7942ff146..0c42285c75ee 100644 --- a/Documentation/ABI/testing/sysfs-driver-xen-blkback +++ b/Documentation/ABI/testing/sysfs-driver-xen-blkback@@ -35,3 +35,11 @@ Description: controls the duration in milliseconds that blkback will not cache any page not backed by a grant mapping. The default is 10ms. + +What: /sys/module/xen_blkback/parameters/feature_persistent +Date: September 2020 +KernelVersion: 5.10 +Contact: SeongJae Park <sjpark@amazon.de> +Description: + Whether to enable the persistent grants feature or not. + The default is 1 (enable).I would add that this option only takes effect on newly created backends, existing backends when the option is set will continue to use persistent grants. For already running backends you could drain the buffer of persistent grants and flip the option, but that's more complex and not required.
You're right, I will add the description.
quoted
diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index b9aa5d1ac10b..9c03d70469f4 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c@@ -879,6 +879,12 @@ static void reclaim_memory(struct xenbus_device *dev) /* ** Connection ** */ +/* Enable the persistent grants feature. */ +static unsigned int feature_persistent = 1; +module_param_named(feature_persistent, feature_persistent, int, 0644); +MODULE_PARM_DESC(feature_persistent, + "Enables the persistent grants feature"); + /* * Write the physical details regarding the block device to the store, and * switch to Connected state.@@ -906,7 +912,8 @@ static void connect(struct backend_info *be) xen_blkbk_barrier(xbt, be, be->blkif->vbd.flush_support); - err = xenbus_printf(xbt, dev->nodename, "feature-persistent", "%u", 1); + err = xenbus_printf(xbt, dev->nodename, "feature-persistent", "%u", + feature_persistent ? 1 : 0);You can avoid writing the feature altogether if it's not enabled, there's no need to set feature-persistent = 0.
Agreed. I will do so in the next spin. Thanks, SeongJae Park