From patchwork Tue Jan 17 15:14:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Lieven X-Patchwork-Id: 9521313 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 89400601C3 for ; Tue, 17 Jan 2017 15:15:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7CF74285BD for ; Tue, 17 Jan 2017 15:15:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 704DB285C0; Tue, 17 Jan 2017 15:15:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id F201E285BD for ; Tue, 17 Jan 2017 15:15:25 +0000 (UTC) Received: from localhost ([::1]:36073 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTVTo-0002yx-Bz for patchwork-qemu-devel@patchwork.kernel.org; Tue, 17 Jan 2017 10:15:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34450) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTVTT-0002x5-Bi for qemu-devel@nongnu.org; Tue, 17 Jan 2017 10:15:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTVTQ-0005Rt-5c for qemu-devel@nongnu.org; Tue, 17 Jan 2017 10:15:03 -0500 Received: from mx-v6.kamp.de ([2a02:248:0:51::16]:33006 helo=mx01.kamp.de) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTVTP-0005HM-SB for qemu-devel@nongnu.org; Tue, 17 Jan 2017 10:15:00 -0500 Received: (qmail 7880 invoked by uid 89); 17 Jan 2017 15:14:57 -0000 Received: from [195.62.97.28] by client-16-kamp (envelope-from , uid 89) with qmail-scanner-2010/03/19-MF (clamdscan: 0.99.2/22909. avast: 1.2.2/17010300. spamassassin: 3.4.1. Clear:RC:1(195.62.97.28):. Processed in 0.111655 secs); 17 Jan 2017 15:14:57 -0000 Received: from smtp.kamp.de (HELO submission.kamp.de) ([195.62.97.28]) by mx01.kamp.de with ESMTPS (DHE-RSA-AES256-GCM-SHA384 encrypted); 17 Jan 2017 15:14:55 -0000 X-GL_Whitelist: yes Received: (qmail 22934 invoked from network); 17 Jan 2017 15:14:55 -0000 Received: from lieven-pc.kamp-intra.net (HELO ?172.21.12.60?) (pl@kamp.de@::ffff:172.21.12.60) by submission.kamp.de with ESMTPS (DHE-RSA-AES128-SHA encrypted) ESMTPA; 17 Jan 2017 15:14:55 -0000 To: Kevin Wolf , Ashijeet Acharya References: <1477926350-15869-1-git-send-email-ashijeetacharya@gmail.com> <20161031172022.GD12558@noname.redhat.com> From: Peter Lieven Message-ID: <50472f2d-4a71-5f6b-1037-bbefd2d8f4f4@kamp.de> Date: Tue, 17 Jan 2017 16:14:55 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <20161031172022.GD12558@noname.redhat.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a02:248:0:51::16 Subject: Re: [Qemu-devel] [PATCH v6 0/2] allow blockdev-add for NFS X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-block@nongnu.org, jcody@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com, mreitz@redhat.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Am 31.10.2016 um 18:20 schrieb Kevin Wolf: > Am 31.10.2016 um 16:05 hat Ashijeet Acharya geschrieben: >> Previously posted series patches: >> v5: https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg07580.html >> v4: https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg07449.html >> v3: https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg06903.html >> v2: https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg05844.html >> v1: https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg04487.html >> >> This series adds blockdev-add support for NFS block driver. > Thanks, fixed as commented on patch 1 and applied. Hi, it seems this series breaks passing options via URI. 1) in nfs_parse_uri parse_uint_full(qp->p[i].value, NULL, 0) segfaults, as the routine wants to set *NULL = val. Program received signal SIGSEGV, Segmentation fault. parse_uint (s=0x555555d0ead0 "131072", value=value@entry=0x0, endptr=endptr@entry=0x7fffffffd870, base=base@entry=0) at util/cutils.c:475 475 *value = val; (gdb) bt full #0 parse_uint (s=0x555555d0ead0 "131072", value=value@entry=0x0, endptr=endptr@entry=0x7fffffffd870, base=base@entry=0) at util/cutils.c:475 r = 0 endp = 0x555555d0ead6 "" val = 131072 #1 0x0000555555655ff2 in parse_uint_full (s=, value=value@entry=0x0, base=base@entry=0) at util/cutils.c:499 endp = 0x555555d093f0 "\004" r = #2 0x0000555555603425 in nfs_parse_uri (filename=, options=0x555555d093f0, errp=0x7fffffffd980) at block/nfs.c:116 uri = 0x555555d0e920 qp = 0x555555d0ea30 ret = -22 i = 0 __func__ = "nfs_parse_uri" #3 0x000055555559c7bb in bdrv_fill_options (errp=0x7fffffffd968, flags=0x7fffffffd95c, filename=, options=) at block.c:1278 drvname = protocol = local_err = 0x0 parse_filename = true drv = 0x5555558e3140 2) all parameters that have a different names in options and qdict e.g. readahead-size vs. readahead cannot be passed via URI. $ qemu-img convert -p nfs://172.21.200.61/templates/VC_debian8-20170116.qcow2,linux\?readahead=131072 iscsi://172.21.200.56:3260/iqn.2001-05.com.equallogic:0-8a0906-69d384e0a-aa3004e55e15878d-XXX/0 qemu-img: Could not open 'nfs://172.21.200.61/vcore-dev-cdrom/templates/VC_debian8-20170116.qcow2,linux?readahead=131072': Block protocol 'nfs' doesn't support the option 'readahead-size' Please let me know if the below fix would be correct: lieven@lieven-pc:~/git/qemu$ git diff Thanks, Peter diff --git a/block/nfs.c b/block/nfs.c index a564340..0ff8268 100644 --- a/block/nfs.c +++ b/block/nfs.c @@ -108,30 +108,31 @@ static int nfs_parse_uri(const char *filename, QDict *options, Error **errp) qdict_put(options, "path", qstring_from_str(uri->path)); for (i = 0; i < qp->n; i++) { + unsigned long long val; if (!qp->p[i].value) { error_setg(errp, "Value for NFS parameter expected: %s", qp->p[i].name); goto out; } - if (parse_uint_full(qp->p[i].value, NULL, 0)) { + if (parse_uint_full(qp->p[i].value, &val, 0)) { error_setg(errp, "Illegal value for NFS parameter: %s", qp->p[i].name); goto out; } if (!strcmp(qp->p[i].name, "uid")) { - qdict_put(options, "user", + qdict_put(options, "uid", qstring_from_str(qp->p[i].value)); } else if (!strcmp(qp->p[i].name, "gid")) { - qdict_put(options, "group", + qdict_put(options, "gid", qstring_from_str(qp->p[i].value)); } else if (!strcmp(qp->p[i].name, "tcp-syncnt")) { - qdict_put(options, "tcp-syn-count", + qdict_put(options, "tcp-syncnt", qstring_from_str(qp->p[i].value)); } else if (!strcmp(qp->p[i].name, "readahead")) { - qdict_put(options, "readahead-size", + qdict_put(options, "readahead", qstring_from_str(qp->p[i].value)); } else if (!strcmp(qp->p[i].name, "pagecache")) { - qdict_put(options, "page-cache-size", + qdict_put(options, "pagecache", qstring_from_str(qp->p[i].value)); } else if (!strcmp(qp->p[i].name, "debug")) { qdict_put(options, "debug",