From: Kevin Wolf <kwolf@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2] file-posix: specify expected filetypes
Date: Wed, 17 Jan 2018 11:45:42 +0100 [thread overview]
Message-ID: <20180117104542.GA3860@localhost.localdomain> (raw)
In-Reply-To: <20180115225047.28607-1-jsnow@redhat.com>
Am 15.01.2018 um 23:50 hat John Snow geschrieben:
> I don't think there's a legitimate reason to open directories as if
> they were files. This prevents QEMU from opening and attempting to probe
> a directory inode, which can break in exciting ways. One of those ways
> is lseek on ext4/xfs, which will return 0x7fffffffffffffff as the file
> size instead of EISDIR. This can coax QEMU into responding with a
> confusing "file too big" instead of "Hey, that's not a file".
>
> See: https://bugs.launchpad.net/qemu/+bug/1739304/
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>
> v2: Is something like this what you had in mind, Kevin?
> I couldn't make the hdev/cdrom checks more specific
> as I'm not sure which environments expect which, but
> if you know I can tighten it.
This should do. We could in theory be more specific about which OS
expects block devices and which one uses character devices, but there's
probably no point in doing that. And without further research I couldn't
say much more than that Linux uses block devices and FreeBSD character
devices.
> block/file-posix.c | 38 +++++++++++++++++++++++++++++---------
> 1 file changed, 29 insertions(+), 9 deletions(-)
As Eric said, it would be good to add a deprecation note to
qemu-doc.texi (and probably also the changelog in the wiki).
> diff --git a/block/file-posix.c b/block/file-posix.c
> index 36ee89e940..fe06cdb8f8 100644
> --- a/block/file-posix.c
> +++ b/block/file-posix.c
> @@ -417,7 +417,8 @@ static QemuOptsList raw_runtime_opts = {
> };
>
> static int raw_open_common(BlockDriverState *bs, QDict *options,
> - int bdrv_flags, int open_flags, Error **errp)
> + int bdrv_flags, int open_flags,
> + bool device, Error **errp)
> {
> BDRVRawState *s = bs->opaque;
> QemuOpts *opts;
> @@ -556,10 +557,30 @@ static int raw_open_common(BlockDriverState *bs, QDict *options,
> error_setg_errno(errp, errno, "Could not stat file");
> goto fail;
> }
> - if (S_ISREG(st.st_mode)) {
> - s->discard_zeroes = true;
> - s->has_fallocate = true;
> +
> + if (!device) {
> + if (S_ISBLK(st.st_mode)) {
> + warn_report("Opening a block device as file using 'file'"
> + "driver is deprecated");
All your line-wrapped strings are missing a space at the end of the
first line.
Kevin
prev parent reply other threads:[~2018-01-17 10:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-15 22:50 [Qemu-devel] [PATCH v2] file-posix: specify expected filetypes John Snow
2018-01-16 20:35 ` Eric Blake
2018-01-17 10:45 ` Kevin Wolf [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180117104542.GA3860@localhost.localdomain \
--to=kwolf@redhat.com \
--cc=jsnow@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).