[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions |
Date: |
Thu, 17 Nov 2011 14:41:14 +0000 |
On Fri, Nov 11, 2011 at 6:48 AM, Supriya Kannery
<address@hidden> wrote:
> +static int raw_reopen_prepare(BlockDriverState *bs, BDRVReopenState **prs,
> + int flags)
> +{
> + BDRVRawReopenState *raw_rs = g_malloc0(sizeof(BDRVRawReopenState));
> + BDRVRawState *s = bs->opaque;
> + int ret = 0;
> +
> + raw_rs->reopen_state.reopen_flags = s->open_flags;
> + raw_rs->reopen_state.bs = bs;
> + raw_rs->reopen_fd = -1;
> + *prs = &(raw_rs->reopen_state);
> +
> + /* Flags that can be set using fcntl */
> + int fcntl_flags = BDRV_O_NOCACHE;
> +
> + if ((bs->open_flags & ~fcntl_flags) == (flags & ~fcntl_flags)) {
> + raw_rs->reopen_fd = dup(s->fd);
> + if (raw_rs->reopen_fd <= 0) {
> + return -1;
return -errno;
> + }
> + if ((flags & BDRV_O_NOCACHE)) {
> + raw_rs->reopen_state.reopen_flags |= O_DIRECT;
> + } else {
> + raw_rs->reopen_state.reopen_flags &= ~O_DIRECT;
> + }
> + ret = fcntl_setfl(raw_rs->reopen_fd,
> raw_rs->reopen_state.reopen_flags);
I wonder if this works on Solaris, FreeBSD, etc?
Perhaps there needs to be a fallback to the missing "else" case below...
> + } else {
> +
> + /* TBD: Handle O_DSYNC and other flags. For now return error */
> + ret = -1;
...and this needs to be implemented.
> + }
> + return ret;
> +}
Stefan
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, (continued)
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Luiz Capitulino, 2011/11/17
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Stefan Hajnoczi, 2011/11/17
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, supriya kannery, 2011/11/21
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Stefan Hajnoczi, 2011/11/21
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, supriya kannery, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Kevin Wolf, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, supriya kannery, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Stefan Hajnoczi, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Supriya Kannery, 2011/11/22
[Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, Supriya Kannery, 2011/11/11
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions,
Stefan Hajnoczi <=
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, supriya kannery, 2011/11/21
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, supriya kannery, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, Stefan Hajnoczi, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, Christoph Hellwig, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, supriya kannery, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, Stefan Hajnoczi, 2011/11/22