qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Sassan Panahinejad <sassan@sassan.me.uk>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Bug in virtio-9p when fstatting an fd referring to a file that no longer exists
Date: Thu, 28 Apr 2011 17:51:26 +0100	[thread overview]
Message-ID: <BANLkTimMptU4mYuJ5L_gQbmU=rQH_wyjRQ@mail.gmail.com> (raw)
In-Reply-To: <BANLkTi=YcOXPfOkDeMhB9XJKzD6Kz4Rcpg@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1920 bytes --]

This thread seems relevant:
http://www.mail-archive.com/linux-fsdevel@vger.kernel.org/msg09159.html
Unless things have changed, it looks like the problem is in the client
kernel (although note that there isn't support in qemu, even if the client
did send an fid associated with an open file!).
Any thoughts on a workaround for this?


Thanks
Sassan

On 28 April 2011 17:13, Sassan Panahinejad <sassan@sassan.me.uk> wrote:

> It should be possible for guest applications to fstat a file for which they
> have a valid file descriptor, even if the file has been removed.
> Demonstrated by the code sample below (fstat reports no such file or
> directory).
> Strangely it seems that reading from a file in this state works fine (and
> when both are run, the server receives a different fid for each).
> On any other filesystem, the code runs correctly. On our 9p filesystem it
> fails.
> Many applications (including bash) depend on this working correctly.
> I will continue investigating, but any thoughts anyone has on the subject
> would be appreciated.
>
>
> Thanks
> Sassan
>
>
> #include <stdio.h>
> #include <unistd.h>
> #include <fcntl.h>
> #include <sys/types.h>
> #include <sys/stat.h>
>
>
> int main(void)
> {
>         int ret;
>         struct stat statbuf;
>         int fd = open("test.txt", O_RDWR | O_CREAT, 0666);
>         if (fd < 0) {
>                 printf("open failed: %m\n");
>                 return 1;
>         }
>         ret = write(fd, "test1\n", 6);
>         if (ret < 0) {
>                 printf("write1 failed: %m\n");
>                 return 1;
>         }
>         ret = unlink("test.txt");
>         if (ret < 0) {
>                 printf("unlink failed: %m\n");
>                 return 1;
>         }
>         ret = fstat(fd, &statbuf);
>         if (ret < 0) {
>                 printf("fstat failed: %m\n");
>                 return 1;
>         }
>         return 0;
> }
>

[-- Attachment #2: Type: text/html, Size: 2482 bytes --]

  reply	other threads:[~2011-04-28 16:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-28 16:13 [Qemu-devel] Bug in virtio-9p when fstatting an fd referring to a file that no longer exists Sassan Panahinejad
2011-04-28 16:51 ` Sassan Panahinejad [this message]
2011-05-02 15:47   ` Venkateswararao Jujjuri
2011-05-03 15:20     ` Sassan Panahinejad

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='BANLkTimMptU4mYuJ5L_gQbmU=rQH_wyjRQ@mail.gmail.com' \
    --to=sassan@sassan.me.uk \
    --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).