mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-24 12:09:58 +00:00
[virtio-9p] Make v9fs_do_utimensat accept timespec structures instead of v9stat.
Currently v9fs_do_utimensat takes a V9fsStat argument and builds timespec structures. It sets tv_nsec values to 0 by default. Instead of this it should take struct timespec[2] and pass it down to the system directly. This will make it more generic and useful elsewhere. Signed-off-by: Sripathi Kodi <sripathik@in.ibm.com> Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
This commit is contained in:
parent
74bc02b2d2
commit
8fc39ae4bd
@ -237,25 +237,10 @@ static int v9fs_do_chown(V9fsState *s, V9fsString *path, uid_t uid, gid_t gid)
|
||||
return s->ops->chown(&s->ctx, path->data, &cred);
|
||||
}
|
||||
|
||||
static int v9fs_do_utimensat(V9fsState *s, V9fsString *path, V9fsStat v9stat)
|
||||
static int v9fs_do_utimensat(V9fsState *s, V9fsString *path,
|
||||
const struct timespec times[2])
|
||||
{
|
||||
struct timespec ts[2];
|
||||
|
||||
if (v9stat.atime != -1) {
|
||||
ts[0].tv_sec = v9stat.atime;
|
||||
ts[0].tv_nsec = 0;
|
||||
} else {
|
||||
ts[0].tv_nsec = UTIME_OMIT;
|
||||
}
|
||||
|
||||
if (v9stat.mtime != -1) {
|
||||
ts[1].tv_sec = v9stat.mtime;
|
||||
ts[1].tv_nsec = 0;
|
||||
} else {
|
||||
ts[1].tv_nsec = UTIME_OMIT;
|
||||
}
|
||||
|
||||
return s->ops->utimensat(&s->ctx, path->data, ts);
|
||||
return s->ops->utimensat(&s->ctx, path->data, times);
|
||||
}
|
||||
|
||||
static int v9fs_do_remove(V9fsState *s, V9fsString *path)
|
||||
@ -2341,7 +2326,21 @@ static void v9fs_wstat_post_chmod(V9fsState *s, V9fsWstatState *vs, int err)
|
||||
}
|
||||
|
||||
if (vs->v9stat.mtime != -1 || vs->v9stat.atime != -1) {
|
||||
if (v9fs_do_utimensat(s, &vs->fidp->path, vs->v9stat)) {
|
||||
struct timespec times[2];
|
||||
if (vs->v9stat.atime != -1) {
|
||||
times[0].tv_sec = vs->v9stat.atime;
|
||||
times[0].tv_nsec = 0;
|
||||
} else {
|
||||
times[0].tv_nsec = UTIME_OMIT;
|
||||
}
|
||||
if (vs->v9stat.mtime != -1) {
|
||||
times[1].tv_sec = vs->v9stat.mtime;
|
||||
times[1].tv_nsec = 0;
|
||||
} else {
|
||||
times[1].tv_nsec = UTIME_OMIT;
|
||||
}
|
||||
|
||||
if (v9fs_do_utimensat(s, &vs->fidp->path, times)) {
|
||||
err = -errno;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user