| From 402c43ea6b34a1b371ffeed9adf907402569eaf5 Mon Sep 17 00:00:00 2001 |
| From: SeongJae Park <sj@kernel.org> |
| Date: Fri, 15 Jul 2022 22:51:08 +0000 |
| Subject: xen-blkfront: Apply 'feature_persistent' parameter when connect |
| |
| From: SeongJae Park <sj@kernel.org> |
| |
| commit 402c43ea6b34a1b371ffeed9adf907402569eaf5 upstream. |
| |
| In some use cases[1], the backend is created while the frontend doesn't |
| support the persistent grants feature, but later the frontend can be |
| changed to support the feature and reconnect. In the past, 'blkback' |
| enabled the persistent grants feature since it unconditionally checked |
| if frontend supports the persistent grants feature for every connect |
| ('connect_ring()') and decided whether it should use persistent grans or |
| not. |
| |
| However, commit aac8a70db24b ("xen-blkback: add a parameter for |
| disabling of persistent grants") has mistakenly changed the behavior. |
| It made the frontend feature support check to not be repeated once it |
| shown the 'feature_persistent' as 'false', or the frontend doesn't |
| support persistent grants. |
| |
| Similar behavioral change has made on 'blkfront' by commit 74a852479c68 |
| ("xen-blkfront: add a parameter for disabling of persistent grants"). |
| This commit changes the behavior of the parameter to make effect for |
| every connect, so that the previous behavior of 'blkfront' can be |
| restored. |
| |
| [1] https://lore.kernel.org/xen-devel/CAJwUmVB6H3iTs-C+U=v-pwJB7-_ZRHPxHzKRJZ22xEPW7z8a=g@mail.gmail.com/ |
| |
| Fixes: 74a852479c68 ("xen-blkfront: add a parameter for disabling of persistent grants") |
| Cc: <stable@vger.kernel.org> # 5.10.x |
| Signed-off-by: SeongJae Park <sj@kernel.org> |
| Reviewed-by: Maximilian Heyne <mheyne@amazon.de> |
| Reviewed-by: Juergen Gross <jgross@suse.com> |
| Link: https://lore.kernel.org/r/20220715225108.193398-4-sj@kernel.org |
| Signed-off-by: Juergen Gross <jgross@suse.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| Documentation/ABI/testing/sysfs-driver-xen-blkfront | 2 +- |
| drivers/block/xen-blkfront.c | 4 +--- |
| 2 files changed, 2 insertions(+), 4 deletions(-) |
| |
| --- a/Documentation/ABI/testing/sysfs-driver-xen-blkfront |
| +++ b/Documentation/ABI/testing/sysfs-driver-xen-blkfront |
| @@ -15,5 +15,5 @@ KernelVersion: 5.10 |
| Contact: SeongJae Park <sjpark@amazon.de> |
| Description: |
| Whether to enable the persistent grants feature or not. Note |
| - that this option only takes effect on newly created frontends. |
| + that this option only takes effect on newly connected frontends. |
| The default is Y (enable). |
| --- a/drivers/block/xen-blkfront.c |
| +++ b/drivers/block/xen-blkfront.c |
| @@ -2088,8 +2088,6 @@ static int blkfront_probe(struct xenbus_ |
| info->vdevice = vdevice; |
| info->connected = BLKIF_STATE_DISCONNECTED; |
| |
| - info->feature_persistent = feature_persistent; |
| - |
| /* Front end dir is a number, which is used as the id. */ |
| info->handle = simple_strtoul(strrchr(dev->nodename, '/')+1, NULL, 0); |
| dev_set_drvdata(&dev->dev, info); |
| @@ -2393,7 +2391,7 @@ static void blkfront_gather_backend_feat |
| if (xenbus_read_unsigned(info->xbdev->otherend, "feature-discard", 0)) |
| blkfront_setup_discard(info); |
| |
| - if (info->feature_persistent) |
| + if (feature_persistent) |
| info->feature_persistent = |
| !!xenbus_read_unsigned(info->xbdev->otherend, |
| "feature-persistent", 0); |