Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'stable/for-jens-4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen into for-linus

Pull a xen_blkfront fix from Konrad:

"It has one simple fix for the multi-queue support not showing up after
a block device was detached/re-attached."

* 'stable/for-jens-4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
xen-blkfront: move negotiate_mq to cover all cases of new VBDs

+8 -9
+8 -9
drivers/block/xen-blkfront.c
··· 262 262 263 263 static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo); 264 264 static void blkfront_gather_backend_features(struct blkfront_info *info); 265 + static int negotiate_mq(struct blkfront_info *info); 265 266 266 267 static int get_id_from_freelist(struct blkfront_ring_info *rinfo) 267 268 { ··· 1775 1774 unsigned int i, max_page_order; 1776 1775 unsigned int ring_page_order; 1777 1776 1777 + if (!info) 1778 + return -ENODEV; 1779 + 1778 1780 max_page_order = xenbus_read_unsigned(info->xbdev->otherend, 1779 1781 "max-ring-page-order", 0); 1780 1782 ring_page_order = min(xen_blkif_max_ring_order, max_page_order); 1781 1783 info->nr_ring_pages = 1 << ring_page_order; 1784 + 1785 + err = negotiate_mq(info); 1786 + if (err) 1787 + goto destroy_blkring; 1782 1788 1783 1789 for (i = 0; i < info->nr_rings; i++) { 1784 1790 struct blkfront_ring_info *rinfo = &info->rinfo[i]; ··· 1986 1978 } 1987 1979 1988 1980 info->xbdev = dev; 1989 - err = negotiate_mq(info); 1990 - if (err) { 1991 - kfree(info); 1992 - return err; 1993 - } 1994 1981 1995 1982 mutex_init(&info->mutex); 1996 1983 info->vdevice = vdevice; ··· 2101 2098 } 2102 2099 2103 2100 blkif_free(info, info->connected == BLKIF_STATE_CONNECTED); 2104 - 2105 - err = negotiate_mq(info); 2106 - if (err) 2107 - return err; 2108 2101 2109 2102 err = talk_to_blkback(dev, info); 2110 2103 if (!err)