From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:45768) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tqlfy-0000qA-Ph for qemu-devel@nongnu.org; Thu, 03 Jan 2013 09:21:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tqlfu-0005k3-EE for qemu-devel@nongnu.org; Thu, 03 Jan 2013 09:21:42 -0500 Received: from mail-vc0-f169.google.com ([209.85.220.169]:38045) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tqlfu-0005jw-9s for qemu-devel@nongnu.org; Thu, 03 Jan 2013 09:21:38 -0500 Received: by mail-vc0-f169.google.com with SMTP id gb23so15806451vcb.0 for ; Thu, 03 Jan 2013 06:21:37 -0800 (PST) Sender: Konrad Rzeszutek Date: Thu, 3 Jan 2013 09:21:30 -0500 From: Konrad Rzeszutek Wilk Message-ID: <20130103142129.GA6690@localhost.localdomain> References: <1356956174-23548-1-git-send-email-roger.pau@citrix.com> <1356956174-23548-2-git-send-email-roger.pau@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1356956174-23548-2-git-send-email-roger.pau@citrix.com> Subject: Re: [Qemu-devel] [Xen-devel] [PATCH RFC 1/3] xen_disk: handle disk files on ramfs/tmpfs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Roger Pau Monne Cc: Anthony PERARD , Stefano Stabellini , qemu-devel@nongnu.org, xen-devel@lists.xen.org On Mon, Dec 31, 2012 at 01:16:12PM +0100, Roger Pau Monne wrote: > Files that reside on ramfs or tmpfs cannot be opened with O_DIRECT, That is not entirely true. There are patches floating around (LKML) to make tmpfs/ramfs be able to do this. > if first call to bdrv_open fails with errno = EINVAL, try a second > call without BDRV_O_NOCACHE. > > Signed-off-by: Roger Pau Monné > Cc: xen-devel@lists.xen.org > Cc: Stefano Stabellini > Cc: Anthony PERARD > --- > hw/xen_disk.c | 16 +++++++++++++--- > 1 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/hw/xen_disk.c b/hw/xen_disk.c > index e6bb2f2..a159ee5 100644 > --- a/hw/xen_disk.c > +++ b/hw/xen_disk.c > @@ -562,7 +562,7 @@ static void blk_alloc(struct XenDevice *xendev) > static int blk_init(struct XenDevice *xendev) > { > struct XenBlkDev *blkdev = container_of(xendev, struct XenBlkDev, xendev); > - int index, qflags, info = 0; > + int index, qflags, info = 0, rc; > > /* read xenstore entries */ > if (blkdev->params == NULL) { > @@ -625,8 +625,18 @@ static int blk_init(struct XenDevice *xendev) > xen_be_printf(&blkdev->xendev, 2, "create new bdrv (xenbus setup)\n"); > blkdev->bs = bdrv_new(blkdev->dev); > if (blkdev->bs) { > - if (bdrv_open(blkdev->bs, blkdev->filename, qflags, > - bdrv_find_whitelisted_format(blkdev->fileproto)) != 0) { > + rc = bdrv_open(blkdev->bs, blkdev->filename, qflags, > + bdrv_find_whitelisted_format(blkdev->fileproto)); > + if (rc != 0 && errno == EINVAL) { > + /* Files on ramfs or tmpfs cannot be opened with O_DIRECT, > + * remove the BDRV_O_NOCACHE flag, and try to open > + * the file again. > + */ > + qflags &= ~BDRV_O_NOCACHE; > + rc = bdrv_open(blkdev->bs, blkdev->filename, qflags, > + bdrv_find_whitelisted_format(blkdev->fileproto)); > + } > + if (rc != 0) { > bdrv_delete(blkdev->bs); > blkdev->bs = NULL; > } > -- > 1.7.7.5 (Apple Git-26) > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel >