From patchwork Wed Nov 24 08:40:12 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nicholas A. Bellinger" X-Patchwork-Id: 72815 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id DC47DB70A7 for ; Wed, 24 Nov 2010 19:41:32 +1100 (EST) Received: from localhost ([127.0.0.1]:60276 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PLAuv-0000Te-71 for incoming@patchwork.ozlabs.org; Wed, 24 Nov 2010 03:41:29 -0500 Received: from [140.186.70.92] (port=43477 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PLAtk-0000S6-N1 for qemu-devel@nongnu.org; Wed, 24 Nov 2010 03:40:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PLAtj-0007Jo-J5 for qemu-devel@nongnu.org; Wed, 24 Nov 2010 03:40:16 -0500 Received: from smtp128.sbc.mail.sp1.yahoo.com ([69.147.65.187]:32520) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1PLAtj-0007Jj-AP for qemu-devel@nongnu.org; Wed, 24 Nov 2010 03:40:15 -0500 Received: (qmail 25414 invoked from network); 24 Nov 2010 08:40:14 -0000 Received: from localhost.localdomain (nab@70.231.233.146 with login) by smtp128.sbc.mail.sp1.yahoo.com with SMTP; 24 Nov 2010 00:40:14 -0800 PST X-Yahoo-SMTP: fzDSGlOswBCWnIOrNw7KwwK1j9PqyNbe5PtLKiS4dDU.UNl_t6bdEZu9tTLW X-YMail-OSG: sBl6XpkVM1lSU6NWQX3p3NXfkOIWAjCwBK61g0LCw.IIyLi S27vC41dgd.U0fnP84n0FZWrzyb8ZlPeRQ4.WEl3iF69H.k7y5ZVqH.wu5HA Ik.wW7ta1eF1h1YcsMCEkaPAiYCfoByUuQj6hK1uGL2qlOP14XQQVN98aTE0 QvZhWn67usEuCQDgsDYvt7bjJUU0cuxTyfa.VVHvs_6OzE8bh_LNBpJ48AzS QSaqj1i4ZPzb7Y5eP5D_OqP9PwsyfOs79mFDjdJVZwqJZliJoH.Ah219SUwj D37u2YmEsOc9tziOIz47GwiTyZ6s.Q2tAOa1H6PN_hIPUzNVDHFNiJQl33Q- - X-Yahoo-Newman-Property: ymail-3 From: "Nicholas A. Bellinger" To: Hannes Reinecke , Kevin Wolf Date: Wed, 24 Nov 2010 00:40:12 -0800 Message-Id: <1290588012-8893-1-git-send-email-nab@linux-iscsi.org> X-Mailer: git-send-email 1.5.6.5 X-detected-operating-system: by eggs.gnu.org: FreeBSD 6.x (1) Cc: qemu-devel , Stefan Hajnoczi , Gerd Hoffmann , Nicholas Bellinger , Paolo Bonzini Subject: [Qemu-devel] [PATCH 2/5] block: Add BSG qemu_open() in block/raw.c:raw_open() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Nicholas Bellinger This patch adds a BSG specific qemu_open() call in block/raw.c:raw_open() that saves the opened file descriptor for BSG AIO into BlockDriverState->fd. It also adds the reverse close() call to block/raw.c:raw_close() Signed-off-by: Nicholas A. Bellinger --- block/raw.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-) diff --git a/block/raw.c b/block/raw.c index 1980deb..c6c1968 100644 --- a/block/raw.c +++ b/block/raw.c @@ -5,7 +5,26 @@ static int raw_open(BlockDriverState *bs, int flags) { + int fd, ret; + bs->sg = bs->file->sg; + /* + * scsi-generic and other raw types do not call qemu_open() + */ + if (bs->sg != BDS_BSG) + return 0; + /* + * Obtain a file descriptor for the underlying BSG device for AIO w/ iovecs + */ + fd = qemu_open(bs->filename, flags, 0644); + if (fd < 0) { + ret = -errno; + if (ret == -EROFS) + ret = -EACCES; + return ret; + } + bs->fd = fd; + return 0; } @@ -37,6 +56,8 @@ static BlockDriverAIOCB *raw_aio_writev(BlockDriverState *bs, static void raw_close(BlockDriverState *bs) { + if (bs->fd > 0) + close(bs->fd); } static int raw_flush(BlockDriverState *bs)