* Re: [PATCH 01/13] target: move t_task_cdb initialization [not found] ` <20210209123845.4856-2-michael.christie@oracle.com> @ 2021-02-10 8:35 ` Christoph Hellwig 0 siblings, 0 replies; 7+ messages in thread From: Christoph Hellwig @ 2021-02-10 8:35 UTC (permalink / raw) To: Mike Christie Cc: loberman, Chaitanya.Kulkarni, martin.petersen, mst, virtualization, target-devel, stefanha, linux-scsi On Tue, Feb 09, 2021 at 06:38:33AM -0600, Mike Christie wrote: > The next patch splits target_submit_cmd_map_sgls so the initialization > and submission part can be called at different times. If the init part > fails we can reference the t_task_cdb early in some of the logging > and tracing code. This moves it to transport_init_se_cmd so we don't > hit NULL pointer crashes. > > Signed-off-by: Mike Christie <michael.christie@oracle.com> Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de> _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20210209123845.4856-3-michael.christie@oracle.com>]
* Re: [PATCH 02/13] target: split target_submit_cmd_map_sgls [not found] ` <20210209123845.4856-3-michael.christie@oracle.com> @ 2021-02-09 16:15 ` kernel test robot 2021-02-10 8:36 ` Christoph Hellwig 1 sibling, 0 replies; 7+ messages in thread From: kernel test robot @ 2021-02-09 16:15 UTC (permalink / raw) To: Mike Christie, Chaitanya.Kulkarni, loberman, martin.petersen, linux-scsi, target-devel, mst, stefanha, virtualization Cc: kbuild-all, Mike Christie [-- Attachment #1: Type: text/plain, Size: 4737 bytes --] Hi Mike, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on mkp-scsi/for-next] [also build test WARNING on vhost/linux-next v5.11-rc7 next-20210125] [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/target-move-t_task_cdb-initialization/20210209-213926 base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next config: h8300-randconfig-s031-20210209 (attached as .config) compiler: h8300-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-215-g0fb77bb6-dirty # https://github.com/0day-ci/linux/commit/3382952197b63f11c166ff293f819ce6ac4d52ae git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Mike-Christie/target-move-t_task_cdb-initialization/20210209-213926 git checkout 3382952197b63f11c166ff293f819ce6ac4d52ae # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=h8300 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> "sparse warnings: (new ones prefixed by >>)" >> drivers/target/target_core_transport.c:1695:12: sparse: sparse: incorrect type in assignment (different base types) @@ expected int rc @@ got restricted sense_reason_t @@ drivers/target/target_core_transport.c:1695:12: sparse: expected int rc drivers/target/target_core_transport.c:1695:12: sparse: got restricted sense_reason_t drivers/target/target_core_transport.c:1699:12: sparse: sparse: incorrect type in assignment (different base types) @@ expected int rc @@ got restricted sense_reason_t @@ drivers/target/target_core_transport.c:1699:12: sparse: expected int rc drivers/target/target_core_transport.c:1699:12: sparse: got restricted sense_reason_t >> drivers/target/target_core_transport.c:1736:51: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected restricted sense_reason_t [usertype] @@ got int rc @@ drivers/target/target_core_transport.c:1736:51: sparse: expected restricted sense_reason_t [usertype] drivers/target/target_core_transport.c:1736:51: sparse: got int rc vim +1695 drivers/target/target_core_transport.c 1678 1679 /** 1680 * target_submit - perform final initialization and submit cmd to LIO core 1681 * @se_cmd: command descriptor to submit 1682 * @cdb: pointer to SCSI CDB 1683 * 1684 * target_submit_prep must have been called on the cmd, and this must be 1685 * called from process context. 1686 */ 1687 static void target_submit(struct se_cmd *se_cmd, unsigned char *cdb) 1688 { 1689 struct scatterlist *sgl = se_cmd->t_data_sg; 1690 unsigned char *buf = NULL; 1691 int rc; 1692 1693 might_sleep(); 1694 > 1695 rc = target_cmd_init_cdb(se_cmd, cdb); 1696 if (rc) 1697 goto fail; 1698 1699 rc = target_cmd_parse_cdb(se_cmd); 1700 if (rc != 0) 1701 goto fail; 1702 1703 if (se_cmd->t_data_nents != 0) { 1704 BUG_ON(!sgl); 1705 /* 1706 * A work-around for tcm_loop as some userspace code via 1707 * scsi-generic do not memset their associated read buffers, 1708 * so go ahead and do that here for type non-data CDBs. Also 1709 * note that this is currently guaranteed to be a single SGL 1710 * for this case by target core in target_setup_cmd_from_cdb() 1711 * -> transport_generic_cmd_sequencer(). 1712 */ 1713 if (!(se_cmd->se_cmd_flags & SCF_SCSI_DATA_CDB) && 1714 se_cmd->data_direction == DMA_FROM_DEVICE) { 1715 if (sgl) 1716 buf = kmap(sg_page(sgl)) + sgl->offset; 1717 1718 if (buf) { 1719 memset(buf, 0, sgl->length); 1720 kunmap(sg_page(sgl)); 1721 } 1722 } 1723 1724 } 1725 1726 /* 1727 * Check if we need to delay processing because of ALUA 1728 * Active/NonOptimized primary access state.. 1729 */ 1730 core_alua_check_nonop_delay(se_cmd); 1731 1732 transport_handle_cdb_direct(se_cmd); 1733 return; 1734 1735 fail: > 1736 transport_generic_request_failure(se_cmd, rc); 1737 } 1738 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 23129 bytes --] [-- Attachment #3: Type: text/plain, Size: 183 bytes --] _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 02/13] target: split target_submit_cmd_map_sgls [not found] ` <20210209123845.4856-3-michael.christie@oracle.com> 2021-02-09 16:15 ` [PATCH 02/13] target: split target_submit_cmd_map_sgls kernel test robot @ 2021-02-10 8:36 ` Christoph Hellwig 1 sibling, 0 replies; 7+ messages in thread From: Christoph Hellwig @ 2021-02-10 8:36 UTC (permalink / raw) To: Mike Christie Cc: loberman, Chaitanya.Kulkarni, martin.petersen, mst, virtualization, target-devel, stefanha, linux-scsi Can you just kill off target_submit_cmd_map_sgls entirely and just open code the two calls in the three callers? _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20210209123845.4856-6-michael.christie@oracle.com>]
* Re: [PATCH 05/13] tcm loop: use blk cmd allocator for se_cmds [not found] ` <20210209123845.4856-6-michael.christie@oracle.com> @ 2021-02-10 8:37 ` Christoph Hellwig 0 siblings, 0 replies; 7+ messages in thread From: Christoph Hellwig @ 2021-02-10 8:37 UTC (permalink / raw) To: Mike Christie Cc: loberman, Chaitanya.Kulkarni, martin.petersen, mst, virtualization, target-devel, stefanha, linux-scsi On Tue, Feb 09, 2021 at 06:38:37AM -0600, Mike Christie wrote: > This just has tcm loop use the block layer cmd allocator for se_cmds > instead of using the tcm_loop_cmd_cache. In future patches when we > can use the host tags for internal requests like TMFs we can completely > kill the tcm_loop_cmd_cache. > > Signed-off-by: Mike Christie <michael.christie@oracle.com> Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de> _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20210209123845.4856-8-michael.christie@oracle.com>]
* Re: [PATCH 07/13] target: cleanup cmd flag bits [not found] ` <20210209123845.4856-8-michael.christie@oracle.com> @ 2021-02-10 8:38 ` Christoph Hellwig 0 siblings, 0 replies; 7+ messages in thread From: Christoph Hellwig @ 2021-02-10 8:38 UTC (permalink / raw) To: Mike Christie Cc: loberman, Chaitanya.Kulkarni, martin.petersen, mst, virtualization, target-devel, stefanha, linux-scsi On Tue, Feb 09, 2021 at 06:38:39AM -0600, Mike Christie wrote: > We have a couple holes in the cmd flags definitions. This cleans > up the definitions to fix that and make it easier to read. > > Signed-off-by: Mike Christie <michael.christie@oracle.com> > Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de> _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20210209123845.4856-12-michael.christie@oracle.com>]
* Re: [PATCH 11/13] target: replace work per cmd in completion path [not found] ` <20210209123845.4856-12-michael.christie@oracle.com> @ 2021-02-10 8:42 ` Christoph Hellwig 0 siblings, 0 replies; 7+ messages in thread From: Christoph Hellwig @ 2021-02-10 8:42 UTC (permalink / raw) To: Mike Christie Cc: loberman, Chaitanya.Kulkarni, martin.petersen, mst, virtualization, target-devel, stefanha, linux-scsi On Tue, Feb 09, 2021 at 06:38:43AM -0600, Mike Christie wrote: > Doing a work per cmd can lead to lots of threads being created. > This patch just replaces the completion work per cmd with a per cpu > list. Combined with the first patches this allows tcm loop on top of > initiators like iser to go from around 700K IOPs to 1000K and reduces > the number of threads that get created when the system is under heavy > load and hitting the initiator drivers tagging limits. OTOH it does increase completion latency, which might be the preference for some workloads. Do we need a tunable here? > +static void target_queue_cmd_work(struct se_cmd_queue *q, struct se_cmd *se_cmd, > + int cpu, struct workqueue_struct *wq) > { > - struct se_cmd *cmd = container_of(work, struct se_cmd, work); > + llist_add(&se_cmd->se_cmd_list, &q->cmd_list); > + queue_work_on(cpu, wq, &q->work); > +} Do we need this helper at all? Having it open coded in the two callers would seem easier to follow to me. _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20210209123845.4856-13-michael.christie@oracle.com>]
* Re: [PATCH 12/13] target, vhost-scsi: don't switch cpus on completion [not found] ` <20210209123845.4856-13-michael.christie@oracle.com> @ 2021-02-10 8:44 ` Christoph Hellwig 0 siblings, 0 replies; 7+ messages in thread From: Christoph Hellwig @ 2021-02-10 8:44 UTC (permalink / raw) To: Mike Christie Cc: loberman, Chaitanya.Kulkarni, martin.petersen, mst, virtualization, target-devel, stefanha, linux-scsi > struct se_device *se_dev = se_cmd->se_dev; > - int cpu = se_cmd->cpuid; > + int cpu; > + > + if (se_cmd->se_cmd_flags & SCF_IGNORE_CPUID_COMPL) > + cpu = smp_processor_id(); > + else > + cpu = se_cmd->cpuid; > > target_queue_cmd_work(&se_dev->queues[cpu].cq, se_cmd, cpu, > target_completion_wq); Can't we just use se_cmd->cpuid == WORK_CPU_UNBOUND as the no affinity indicator, which would remove all branches here. _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-02-10 8:44 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20210209123845.4856-1-michael.christie@oracle.com>
[not found] ` <20210209123845.4856-2-michael.christie@oracle.com>
2021-02-10 8:35 ` [PATCH 01/13] target: move t_task_cdb initialization Christoph Hellwig
[not found] ` <20210209123845.4856-3-michael.christie@oracle.com>
2021-02-09 16:15 ` [PATCH 02/13] target: split target_submit_cmd_map_sgls kernel test robot
2021-02-10 8:36 ` Christoph Hellwig
[not found] ` <20210209123845.4856-6-michael.christie@oracle.com>
2021-02-10 8:37 ` [PATCH 05/13] tcm loop: use blk cmd allocator for se_cmds Christoph Hellwig
[not found] ` <20210209123845.4856-8-michael.christie@oracle.com>
2021-02-10 8:38 ` [PATCH 07/13] target: cleanup cmd flag bits Christoph Hellwig
[not found] ` <20210209123845.4856-12-michael.christie@oracle.com>
2021-02-10 8:42 ` [PATCH 11/13] target: replace work per cmd in completion path Christoph Hellwig
[not found] ` <20210209123845.4856-13-michael.christie@oracle.com>
2021-02-10 8:44 ` [PATCH 12/13] target, vhost-scsi: don't switch cpus on completion Christoph Hellwig
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).