From patchwork Fri Jan 30 08:12:29 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nicholas A. Bellinger" X-Patchwork-Id: 5747811 Return-Path: X-Original-To: patchwork-kvm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 6EADCBF6C3 for ; Fri, 30 Jan 2015 08:45:51 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4D9AE20225 for ; Fri, 30 Jan 2015 08:45:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5D33C2021A for ; Fri, 30 Jan 2015 08:45:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759772AbbA3Ipj (ORCPT ); Fri, 30 Jan 2015 03:45:39 -0500 Received: from mail-ob0-f181.google.com ([209.85.214.181]:54031 "EHLO mail-ob0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759903AbbA3Ipd (ORCPT ); Fri, 30 Jan 2015 03:45:33 -0500 Received: by mail-ob0-f181.google.com with SMTP id vb8so1635732obc.12 for ; Fri, 30 Jan 2015 00:45:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=jEn3KoBMNsYuSUDFtFBom0p8sVIkmzJggnQQu1w1+m8=; b=JDByE4VCrKBSVDlnu5wG1QnRHXes6tftGWyZIKDyDCRuD4sGiy6i5ulo3+AiB25hQk ts0xIrKInUvgEM4jL6WLNbChtRklWlsm6YJ/C4gQ9lDQ1e0h4v3+a7O7P8/+GUkRsRl7 sXRKC9BvgvjHAVt66G9wGRcq7tmMDfHB84eEaNEz2dABKqHTfSuGIZ19xlf/ldkkMAmC AtHMTMLcOgQRnWPzZ9Nw1Im2X5MieNKUDBEdyCCxJs4G05AH/ib9/ewOn1nHwBrVrKrO 4TFJS436dalapl8Ka7O0C+/E0iMguuk5VfODbec9pvqn/xtgMUuBK5UtWvWG3rv+EX1d 6RuQ== X-Gm-Message-State: ALoCoQmJjueFVAvEeVW3BMqk45vAE1JBMXIZPe+2JaCpMKVcoN3VxlYHIhwQsu+Nu04R96lST6YU X-Received: by 10.202.62.70 with SMTP id l67mr2867560oia.59.1422607532959; Fri, 30 Jan 2015 00:45:32 -0800 (PST) Received: from localhost.localdomain (mail.linux-iscsi.org. [67.23.28.174]) by mx.google.com with ESMTPSA id l3sm5046132obx.14.2015.01.30.00.45.32 (version=TLSv1 cipher=RC4-SHA bits=128/128); Fri, 30 Jan 2015 00:45:32 -0800 (PST) From: "Nicholas A. Bellinger" To: target-devel Cc: linux-scsi , kvm-devel , Paolo Bonzini , "Michael S. Tsirkin" , Nicholas Bellinger Subject: [PATCH 5/8] vhost/scsi: Add common vhost_scsi_queue_desc code Date: Fri, 30 Jan 2015 08:12:29 +0000 Message-Id: <1422605552-24797-6-git-send-email-nab@daterainc.com> X-Mailer: git-send-email 1.7.2.5 In-Reply-To: <1422605552-24797-1-git-send-email-nab@daterainc.com> References: <1422605552-24797-1-git-send-email-nab@daterainc.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Nicholas Bellinger Move logic for typical vhost_scsi_handle_vq() -> tcm_vhost_workqueue -> tcm_vhost_submission_work() dispatch into vhost_scsi_queue_desc(). Can be shared by vhost_scsi_handle_vqal() code. Cc: Michael S. Tsirkin Cc: Paolo Bonzini Signed-off-by: Nicholas Bellinger --- drivers/vhost/scsi.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c index 049e603..756a893 100644 --- a/drivers/vhost/scsi.c +++ b/drivers/vhost/scsi.c @@ -963,6 +963,24 @@ vhost_scsi_send_bad_target(struct vhost_scsi *vs, pr_err("Faulted on virtio_scsi_cmd_resp\n"); } +static void vhost_scsi_queue_desc(struct tcm_vhost_cmd *cmd, int desc) +{ + /* + * Save the descriptor from vhost_get_vq_desc() to be used to + * complete the virtio-scsi request in TCM callback context via + * tcm_vhost_queue_data_in() and tcm_vhost_queue_status() + */ + cmd->tvc_vq_desc = desc; + /* + * Dispatch cmd descriptor for cmwq execution in process + * context provided by tcm_vhost_workqueue. This also ensures + * cmd is executed on the same kworker CPU as this vhost + * thread to gain positive L2 cache locality effects. + */ + INIT_WORK(&cmd->work, tcm_vhost_submission_work); + queue_work(tcm_vhost_workqueue, &cmd->work); +} + static void vhost_scsi_handle_vq(struct vhost_scsi *vs, struct vhost_virtqueue *vq) { @@ -1191,20 +1209,7 @@ vhost_scsi_handle_vq(struct vhost_scsi *vs, struct vhost_virtqueue *vq) continue; } } - /* - * Save the descriptor from vhost_get_vq_desc() to be used to - * complete the virtio-scsi request in TCM callback context via - * tcm_vhost_queue_data_in() and tcm_vhost_queue_status() - */ - cmd->tvc_vq_desc = head; - /* - * Dispatch tv_cmd descriptor for cmwq execution in process - * context provided by tcm_vhost_workqueue. This also ensures - * tv_cmd is executed on the same kworker CPU as this vhost - * thread to gain positive L2 cache locality effects.. - */ - INIT_WORK(&cmd->work, tcm_vhost_submission_work); - queue_work(tcm_vhost_workqueue, &cmd->work); + vhost_scsi_queue_desc(cmd, head); } out: mutex_unlock(&vq->mutex);