All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/16 V2] vhost: fix scsi cmd handling and IOPs
@ 2020-10-07 20:54 ` Mike Christie
  0 siblings, 0 replies; 69+ messages in thread
From: Mike Christie @ 2020-10-07 20:54 UTC (permalink / raw)
  To: martin.petersen, linux-scsi, target-devel, mst, jasowang,
	pbonzini, stefanha, virtualization

The following patches were made over Michael's vhost branch here:
https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git/log/?h=vhost
 
The patches also apply to Linus's or Martin's trees if you apply
https://patchwork.kernel.org/patch/11790681/
which was merged into mst's tree already.

The following patches are a follow up to this post:
https://patchwork.kernel.org/cover/11790763/
which originally was fixing how vhost-scsi handled cmds so we would
not get IO errors when sending more than 256 cmds.

In that patchset I needed to detect if a vq was in use and for this
patch:
https://patchwork.kernel.org/patch/11790685/
it was suggested to add support for VHOST_RING_ENABLE. While doing
that though I hit a couple problems:

1. The patches moved how vhost-scsi allocated cmds from per lio
session to per vhost vq. To support both VHOST_RING_ENABLE and
where userspace didn't support it, I would have to keep around the
old per session/device cmd allocator/completion and then also maintain
the new code. Or, I would still have to use this patch
patchwork.kernel.org/cover/11790763/ for the compat case so there
adding the new ioctl would not help much.

2. For vhost-scsi I also wanted to prevent where we allocate iovecs
for 128 vqs even though we normally use a couple. To do this, I needed
something similar to #1, but the problem is that the VHOST_RING_ENABLE
call would come too late.

To try and balance #1 and #2, these patches just allow vhost-scsi
to setup a vq when userspace starts to config it. This allows the
driver to only fully setup (we still waste some memory to support older
setups but do not have to preallocate everything like before) what
is used plus I do not need to maintain 2 code paths.

Note that in this posting I am also including additional patches
that create multiple vhost worker threads, because I wanted to see
if people felt that maybe to support that and for this enablement
issue we want a completely a new ioctl.


V2:
- fix use before set cpu var errors
- drop vhost_vq_is_setup
- include patches to do a worker thread per scsi IO vq



^ permalink raw reply	[flat|nested] 69+ messages in thread
* Re: [PATCH 04/16] vhost: prep vhost_dev_init users to handle failures
@ 2020-10-08  0:15 kernel test robot
  0 siblings, 0 replies; 69+ messages in thread
From: kernel test robot @ 2020-10-08  0:15 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 5552 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <1602104101-5592-5-git-send-email-michael.christie@oracle.com>
References: <1602104101-5592-5-git-send-email-michael.christie@oracle.com>
TO: Mike Christie <michael.christie@oracle.com>
TO: martin.petersen(a)oracle.com
TO: linux-scsi(a)vger.kernel.org
TO: target-devel(a)vger.kernel.org
TO: mst(a)redhat.com
TO: jasowang(a)redhat.com
TO: pbonzini(a)redhat.com
TO: stefanha(a)redhat.com
TO: virtualization(a)lists.linux-foundation.org

Hi Mike,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on vhost/linux-next]
[also build test WARNING on next-20201007]
[cannot apply to v5.9-rc8]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Mike-Christie/vhost-fix-scsi-cmd-handling-and-IOPs/20201008-045802
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git linux-next
:::::: branch date: 3 hours ago
:::::: commit date: 3 hours ago
config: x86_64-randconfig-m001-20201008 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/vhost/vdpa.c:844 vhost_vdpa_open() error: uninitialized symbol 'r'.

Old smatch warnings:
drivers/vhost/vdpa.c:436 vhost_vdpa_unlocked_ioctl() warn: maybe return -EFAULT instead of the bytes remaining?
drivers/vhost/vdpa.c:489 vhost_vdpa_unlocked_ioctl() warn: maybe return -EFAULT instead of the bytes remaining?

vim +/r +844 drivers/vhost/vdpa.c

4c8cf31885f69e8 Tiwei Bie     2020-03-26  792  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  793  static int vhost_vdpa_open(struct inode *inode, struct file *filep)
4c8cf31885f69e8 Tiwei Bie     2020-03-26  794  {
4c8cf31885f69e8 Tiwei Bie     2020-03-26  795  	struct vhost_vdpa *v;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  796  	struct vhost_dev *dev;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  797  	struct vhost_virtqueue **vqs;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  798  	int nvqs, i, r, opened;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  799  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  800  	v = container_of(inode->i_cdev, struct vhost_vdpa, cdev);
4c8cf31885f69e8 Tiwei Bie     2020-03-26  801  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  802  	opened = atomic_cmpxchg(&v->opened, 0, 1);
4c8cf31885f69e8 Tiwei Bie     2020-03-26  803  	if (opened)
4c8cf31885f69e8 Tiwei Bie     2020-03-26  804  		return -EBUSY;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  805  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  806  	nvqs = v->nvqs;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  807  	vhost_vdpa_reset(v);
4c8cf31885f69e8 Tiwei Bie     2020-03-26  808  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  809  	vqs = kmalloc_array(nvqs, sizeof(*vqs), GFP_KERNEL);
4c8cf31885f69e8 Tiwei Bie     2020-03-26  810  	if (!vqs) {
4c8cf31885f69e8 Tiwei Bie     2020-03-26  811  		r = -ENOMEM;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  812  		goto err;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  813  	}
4c8cf31885f69e8 Tiwei Bie     2020-03-26  814  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  815  	dev = &v->vdev;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  816  	for (i = 0; i < nvqs; i++) {
4c8cf31885f69e8 Tiwei Bie     2020-03-26  817  		vqs[i] = &v->vqs[i];
4c8cf31885f69e8 Tiwei Bie     2020-03-26  818  		vqs[i]->handle_kick = handle_vq_kick;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  819  	}
7dc4d1082d406f3 Mike Christie 2020-10-07  820  	if (vhost_dev_init(dev, vqs, nvqs, 0, 0, 0, false,
7dc4d1082d406f3 Mike Christie 2020-10-07  821  			   vhost_vdpa_process_iotlb_msg))
7dc4d1082d406f3 Mike Christie 2020-10-07  822  		goto err_dev_init;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  823  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  824  	dev->iotlb = vhost_iotlb_alloc(0, 0);
4c8cf31885f69e8 Tiwei Bie     2020-03-26  825  	if (!dev->iotlb) {
4c8cf31885f69e8 Tiwei Bie     2020-03-26  826  		r = -ENOMEM;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  827  		goto err_init_iotlb;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  828  	}
4c8cf31885f69e8 Tiwei Bie     2020-03-26  829  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  830  	r = vhost_vdpa_alloc_domain(v);
4c8cf31885f69e8 Tiwei Bie     2020-03-26  831  	if (r)
4c8cf31885f69e8 Tiwei Bie     2020-03-26  832  		goto err_init_iotlb;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  833  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  834  	filep->private_data = v;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  835  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  836  	return 0;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  837  
4c8cf31885f69e8 Tiwei Bie     2020-03-26  838  err_init_iotlb:
4c8cf31885f69e8 Tiwei Bie     2020-03-26  839  	vhost_dev_cleanup(&v->vdev);
7dc4d1082d406f3 Mike Christie 2020-10-07  840  err_dev_init:
37787e9f81e2e58 Mike Christie 2020-09-21  841  	kfree(vqs);
4c8cf31885f69e8 Tiwei Bie     2020-03-26  842  err:
4c8cf31885f69e8 Tiwei Bie     2020-03-26  843  	atomic_dec(&v->opened);
4c8cf31885f69e8 Tiwei Bie     2020-03-26 @844  	return r;
4c8cf31885f69e8 Tiwei Bie     2020-03-26  845  }
4c8cf31885f69e8 Tiwei Bie     2020-03-26  846  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 41419 bytes --]

^ permalink raw reply	[flat|nested] 69+ messages in thread

end of thread, other threads:[~2020-10-23 16:24 UTC | newest]

Thread overview: 69+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-10-07 20:54 [PATCH 00/16 V2] vhost: fix scsi cmd handling and IOPs Mike Christie
2020-10-07 20:54 ` Mike Christie
2020-10-07 20:54 ` [PATCH 01/16] vhost scsi: add lun parser helper Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 02/16] vhost: remove work arg from vhost_work_flush Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 03/16] vhost net: use goto error handling in open Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 04/16] vhost: prep vhost_dev_init users to handle failures Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-08  0:58   ` kernel test robot
2020-10-08  0:58     ` kernel test robot
2020-10-08  0:58     ` kernel test robot
2020-10-08  0:58     ` kernel test robot
2020-10-09 11:41   ` Dan Carpenter
2020-10-09 11:41     ` Dan Carpenter
2020-10-09 11:41     ` Dan Carpenter
2020-10-09 11:41     ` Dan Carpenter
2020-10-09 11:41     ` Dan Carpenter
2020-10-23 15:56     ` Michael S. Tsirkin
2020-10-23 15:56       ` Michael S. Tsirkin
2020-10-23 15:56       ` Michael S. Tsirkin
2020-10-23 15:56       ` Michael S. Tsirkin
2020-10-23 16:21       ` Mike Christie
2020-10-23 16:21         ` Mike Christie
2020-10-23 16:21         ` Mike Christie
2020-10-07 20:54 ` [PATCH 05/16] vhost: move vq iovec allocation to dev init time Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 06/16] vhost: support delayed vq creation Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 07/16] vhost scsi: support delayed IO " Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 08/16] vhost scsi: alloc cmds per vq instead of session Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 09/16] vhost scsi: fix cmd completion race Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 10/16] vhost scsi: Add support for LUN resets Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 11/16] vhost scsi: remove extra flushes Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 12/16] vhost: support multiple worker threads Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-08 17:56   ` Mike Christie
2020-10-08 17:56     ` Mike Christie
2020-10-08 20:26     ` Michael S. Tsirkin
2020-10-08 20:26       ` Michael S. Tsirkin
2020-10-08 20:26       ` Michael S. Tsirkin
2020-10-07 20:54 ` [PATCH 13/16] vhost poll: fix coding style Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-07 20:54 ` [PATCH 14/16] vhost: poll support support multiple workers Mike Christie
2020-10-07 20:54   ` Mike Christie
2020-10-08  0:46   ` kernel test robot
2020-10-08  0:46     ` kernel test robot
2020-10-08  0:46     ` kernel test robot
2020-10-08  0:46     ` kernel test robot
2020-10-23 15:43     ` Michael S. Tsirkin
2020-10-23 15:43       ` Michael S. Tsirkin
2020-10-23 15:43       ` Michael S. Tsirkin
2020-10-23 15:43       ` Michael S. Tsirkin
2020-10-07 20:55 ` [PATCH 15/16] vhost scsi: make completion per vq Mike Christie
2020-10-07 20:55   ` Mike Christie
2020-10-07 20:55 ` [PATCH 16/16] vhost scsi: multiple worker support Mike Christie
2020-10-07 20:55   ` Mike Christie
2020-10-23 15:46 ` [PATCH 00/16 V2] vhost: fix scsi cmd handling and IOPs Michael S. Tsirkin
2020-10-23 15:46   ` Michael S. Tsirkin
2020-10-23 15:46   ` Michael S. Tsirkin
2020-10-23 16:22   ` Mike Christie
2020-10-23 16:22     ` Mike Christie
  -- strict thread matches above, loose matches on Subject: below --
2020-10-08  0:15 [PATCH 04/16] vhost: prep vhost_dev_init users to handle failures kernel test robot

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.