mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 21:03:32 +00:00
xen-blkfront: Apply 'feature_persistent' parameter when connect
commit402c43ea6b
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, commitaac8a70db2
("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 commit74a852479c
("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:74a852479c
("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>
This commit is contained in:
parent
0081c64ab8
commit
31dc3b1562
2 changed files with 2 additions and 4 deletions
|
@ -15,5 +15,5 @@ KernelVersion: 5.10
|
||||||
Contact: SeongJae Park <sj@kernel.org>
|
Contact: SeongJae Park <sj@kernel.org>
|
||||||
Description:
|
Description:
|
||||||
Whether to enable the persistent grants feature or not. Note
|
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).
|
The default is Y (enable).
|
||||||
|
|
|
@ -2011,8 +2011,6 @@ static int blkfront_probe(struct xenbus_device *dev,
|
||||||
info->vdevice = vdevice;
|
info->vdevice = vdevice;
|
||||||
info->connected = BLKIF_STATE_DISCONNECTED;
|
info->connected = BLKIF_STATE_DISCONNECTED;
|
||||||
|
|
||||||
info->feature_persistent = feature_persistent;
|
|
||||||
|
|
||||||
/* Front end dir is a number, which is used as the id. */
|
/* Front end dir is a number, which is used as the id. */
|
||||||
info->handle = simple_strtoul(strrchr(dev->nodename, '/')+1, NULL, 0);
|
info->handle = simple_strtoul(strrchr(dev->nodename, '/')+1, NULL, 0);
|
||||||
dev_set_drvdata(&dev->dev, info);
|
dev_set_drvdata(&dev->dev, info);
|
||||||
|
@ -2306,7 +2304,7 @@ static void blkfront_gather_backend_features(struct blkfront_info *info)
|
||||||
if (xenbus_read_unsigned(info->xbdev->otherend, "feature-discard", 0))
|
if (xenbus_read_unsigned(info->xbdev->otherend, "feature-discard", 0))
|
||||||
blkfront_setup_discard(info);
|
blkfront_setup_discard(info);
|
||||||
|
|
||||||
if (info->feature_persistent)
|
if (feature_persistent)
|
||||||
info->feature_persistent =
|
info->feature_persistent =
|
||||||
!!xenbus_read_unsigned(info->xbdev->otherend,
|
!!xenbus_read_unsigned(info->xbdev->otherend,
|
||||||
"feature-persistent", 0);
|
"feature-persistent", 0);
|
||||||
|
|
Loading…
Reference in a new issue