From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:60398) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uah2J-0006KP-Mu for qemu-devel@nongnu.org; Fri, 10 May 2013 02:42:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uah2H-0002NN-AV for qemu-devel@nongnu.org; Fri, 10 May 2013 02:42:35 -0400 Message-ID: <518C96D5.9070009@gmail.com> Date: Fri, 10 May 2013 08:42:29 +0200 From: Gabriel de Perthuis MIME-Version: 1.0 References: <518AE484.9090204@gmail.com> <87r4hfo6jr.fsf@linux.vnet.ibm.com> In-Reply-To: <87r4hfo6jr.fsf@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH] 9p: Be robust against paths without FS_IOC_GETVERSION List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Aneesh Kumar K.V" Cc: qemu-devel@nongnu.org, qemu-stable@nongnu.org Le 10/05/2013 05:30, Aneesh Kumar K.V a écrit : > Gabriel de Perthuis writes: > >> The current implementation checked for supported filesystems at mount >> time, but actual support depends on the path. Don't error out when >> finding unversioned paths. > > Can you elaborate this a bit ? ioctl support generally depends on the mount point. You have a check that verifies the filesystem at the root of the source side is ext4 or something else whitelisted to have generation support, but that's not sufficient, the source may contain other mountpoints that don't support the getversion ioctl. When a path gives you ENOTTY, that means the ioctl is not supported. >> This fix allows booting a linux kernel with the same / filesystem as the >> host; otherwise the boot fails when mounting devtmpfs. >> >> Signed-off-by: Gabriel de Perthuis >> --- >> hw/9pfs/cofile.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/hw/9pfs/cofile.c b/hw/9pfs/cofile.c >> index 2efebf3..194c130 100644 >> --- a/hw/9pfs/cofile.c >> +++ b/hw/9pfs/cofile.c >> @@ -36,10 +36,14 @@ int v9fs_co_st_gen(V9fsPDU *pdu, V9fsPath *path, mode_t st_mode, >> err = -errno; >> } >> }); >> v9fs_path_unlock(s); >> } >> + /* The ioctl may not be supported depending on the path */ >> + if (err == -ENOTTY) { >> + err = 0; >> + } > > So you don't want to consider -ENOTTY as an error ? why ? ENOTTY means the ioctl is not supported. That should be handled the same as if the source-side root didn't have a whitelisted filesystem. That means we need to return 0 in both cases. >> return err; >> } >> >> int v9fs_co_lstat(V9fsPDU *pdu, V9fsPath *path, struct stat *stbuf) >> { >> -- > > -aneesh