hw/9pfs: Add new virtfs option writeout=immediate skip host page cache

writeout=immediate implies the after pwritev we do a sync_file_range.

Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
Aneesh Kumar K.V 2011-10-12 19:11:23 +05:30
parent 5745e38afe
commit d3ab98e691
10 changed files with 91 additions and 17 deletions

View file

@ -80,6 +80,20 @@ void cred_init(FsCred *credp)
credp->fc_rdev = -1;
}
static int get_dotl_openflags(V9fsState *s, int oflags)
{
int flags;
/*
* Filter the client open flags
*/
flags = oflags & ~(O_NOCTTY | O_ASYNC | O_CREAT);
/*
* Ignore direct disk access hint until the server supports it.
*/
flags &= ~O_DIRECT;
return flags;
}
void v9fs_string_init(V9fsString *str)
{
str->data = NULL;
@ -1598,10 +1612,7 @@ static void v9fs_open(void *opaque)
err = offset;
} else {
if (s->proto_version == V9FS_PROTO_2000L) {
flags = mode;
flags &= ~(O_NOCTTY | O_ASYNC | O_CREAT);
/* Ignore direct disk access hint until the server supports it. */
flags &= ~O_DIRECT;
flags = get_dotl_openflags(s, mode);
} else {
flags = omode_to_uflags(mode);
}
@ -1650,8 +1661,7 @@ static void v9fs_lcreate(void *opaque)
goto out_nofid;
}
/* Ignore direct disk access hint until the server supports it. */
flags &= ~O_DIRECT;
flags = get_dotl_openflags(pdu->s, flags);
err = v9fs_co_open2(pdu, fidp, &name, gid,
flags | O_CREAT, mode, &stbuf);
if (err < 0) {