On Mon, Feb 06, 2012 at 15:42:43 -0700, Eric Blake wrote:
On 02/06/2012 07:51 AM, Jiri Denemark wrote:
> virFileDirectFd was used for accessing files opened with O_DIRECT using
> libvirt_iohelper. We will want to use the helper for accessing files
> regardless on O_DIRECT and thus virFileDirectFd was generalized and
> renamed to virFileWrapperFd.
> ---
> src/qemu/qemu_driver.c | 42 +++++++++++---------
> src/util/virfile.c | 98 ++++++++++++++++++++++++++---------------------
> src/util/virfile.h | 18 +++++----
> 3 files changed, 87 insertions(+), 71 deletions(-)
>
Everything you've got is a mechanical rename, so I have no objection to
th is as-is. But if we ever get better kernel support for
posix_fadvise, we have a problem - use of posix_fadvise won't magically
make an fd report EAGAIN. I think it might be worth a v2 with some
slight tweaks by adding a second bool parameter to virFileWrapperFdNew.
OK, good point. However, I added a single int flags instead of two bool
parameters since I consider combining named bits more readable than several
true/false arguments for which you always need to go to the header to get the
meaning.
> @@ -2625,7 +2625,8 @@ qemuDomainSaveInternal(struct qemud_driver *driver,
virDomainPtr dom,
> &needUnlink, &bypassSecurityDriver);
> if (fd < 0)
> goto endjob;
> - if (bypass_cache && (directFd = virFileDirectFdNew(&fd, path)) ==
NULL)
> + if (bypass_cache &&
> + (wrapperFd = virFileWrapperFdNew(&fd, true, path)) == NULL)
Here, call virFileWrapperFdNew(&fd, true, true, path)
and in patch 2/2, it would change to:
wrapperFd = virFileWrapperFdNew(&fd, bypass_cache, true, path)
There's no need to pass a proper non-blocking fd to qemu here since save is
not live...
> @@ -2959,7 +2960,8 @@ doCoreDump(struct qemud_driver *driver,
> NULL, NULL)) < 0)
> goto cleanup;
>
> - if (bypass_cache && (directFd = virFileDirectFdNew(&fd, path)) ==
NULL)
> + if (bypass_cache &&
> + (wrapperFd = virFileWrapperFdNew(&fd, true, path)) == NULL)
Likewise (oops, you missed this one in 2/2).
While here core dump can be live so we need non-blocking. And this place was
the only place I touched in 2/2 so I'm not quite sure why you say I missed
it...
Jirka