From: "M. Mohan Kumar" <mohan@in.ibm.com>
To: qemu-devel@nongnu.org
Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>,
Chris Wright <chrisw@sous-sol.org>,
Blue Swirl <blauwirbel@gmail.com>,
"Hao, Xudong" <xudong.hao@intel.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
Avi Kivity <avi@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] virtio-9p: fix build on !CONFIG_UTIMENSAT v2
Date: Mon, 8 Nov 2010 12:14:27 +0530 [thread overview]
Message-ID: <201011081214.28202.mohan@in.ibm.com> (raw)
In-Reply-To: <4CD3A513.2010102@jp.fujitsu.com>
> This patch introduce a fallback mechanism for old systems that do not
> support utimensat. This will fix build failure with following warnings:
>
> hw/virtio-9p-local.c: In function 'local_utimensat':
> hw/virtio-9p-local.c:479: warning: implicit declaration of function
> 'utimensat' hw/virtio-9p-local.c:479: warning: nested extern declaration
> of 'utimensat'
>
> and
>
> hw/virtio-9p.c: In function 'v9fs_setattr_post_chmod':
> hw/virtio-9p.c:1410: error: 'UTIME_NOW' undeclared (first use in this
> function) hw/virtio-9p.c:1410: error: (Each undeclared identifier is
> reported only once hw/virtio-9p.c:1410: error: for each function it
> appears in.)
> hw/virtio-9p.c:1413: error: 'UTIME_OMIT' undeclared (first use in this
> function) hw/virtio-9p.c: In function 'v9fs_wstat_post_chmod':
> hw/virtio-9p.c:2905: error: 'UTIME_OMIT' undeclared (first use in this
> function)
>
> Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
> ---
> hw/virtio-9p-local.c | 32 ++++++++++++++++++++++++++++++--
> hw/virtio-9p.h | 10 ++++++++++
> 2 files changed, 40 insertions(+), 2 deletions(-)
>
> diff --git a/hw/virtio-9p-local.c b/hw/virtio-9p-local.c
> index 0d52020..7811d2c 100644
> --- a/hw/virtio-9p-local.c
> +++ b/hw/virtio-9p-local.c
> @@ -479,10 +479,38 @@ static int local_chown(FsContext *fs_ctx, const char
> *path, FsCred *credp) return -1;
> }
>
> +/* TODO: relocate this to proper file, and make it more generic */
> +static int qemu_utimensat(int dirfd, const char *path,
> + const struct timespec *times, int flags)
> +{
IMHO, this code can be moved to cutils.c
> +#ifdef CONFIG_UTIMENSAT
> + return utimensat(dirfd, path, times, flags);
> +#else
> + /*
> + * Fallback: use utimes() instead of utimensat().
> + * See commit 74bc02b2d2272dc88fb98d43e631eb154717f517 for known
> problem. + */
> + struct timeval tv[2];
> + int i;
> +
> + for (i = 0; i < 2; i++) {
> + if (times[i].tv_nsec == UTIME_OMIT || times[i].tv_nsec ==
> UTIME_NOW) { + tv[i].tv_sec = 0;
> + tv[i].tv_usec = 0;
> + } else {
> + tv[i].tv_sec = times[i].tv_sec;
> + tv[i].tv_usec = times[i].tv_nsec / 1000;
> + }
> + }
> +
> + return utimes(path, &tv[0]);
> +#endif
The idea of introducing utimensat was to avoid resetting atime to 1970-01-01
05:30:00 (utime does not give option to not change atime). But as per utimes
man page, if any of the time field is 0, it would be set to current time. As
per stat man page, truncate will not update atime, only mtime will be updated.
next prev parent reply other threads:[~2010-11-08 6:44 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <BC00F5384FCFC9499AF06F92E8B78A9E1AC3EFA17E@shsmsx502.ccr.corp.intel.com>
2010-10-13 8:00 ` [Qemu-devel] qemu-kvm build issue on RHEL5.1 Hidetoshi Seto
2010-10-13 8:13 ` Hao, Xudong
2010-10-13 19:11 ` Blue Swirl
2010-10-14 0:33 ` Hidetoshi Seto
2010-11-04 17:03 ` Chris Wright
2010-11-05 6:32 ` Hidetoshi Seto
2010-11-05 6:32 ` [PATCH] virtio-9p: fix build on !CONFIG_UTIMENSAT v2 Hidetoshi Seto
2010-11-08 6:44 ` M. Mohan Kumar [this message]
2010-11-12 12:33 ` [Qemu-devel] " Jes Sorensen
2010-11-14 5:58 ` Chris Wright
2010-11-15 2:10 ` [Qemu-devel] " Hidetoshi Seto
2010-11-15 2:15 ` [PATCH v3] virtio-9p: fix build on !CONFIG_UTIMENSAT Hidetoshi Seto
2010-11-15 3:36 ` Chris Wright
2010-11-15 16:49 ` M. Mohan Kumar
2010-11-21 15:22 ` [Qemu-devel] " Anthony Liguori
2010-11-22 6:28 ` Jes Sorensen
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=201011081214.28202.mohan@in.ibm.com \
--to=mohan@in.ibm.com \
--cc=avi@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=chrisw@sous-sol.org \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
--cc=seto.hidetoshi@jp.fujitsu.com \
--cc=xudong.hao@intel.com \
/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