mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
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:
parent
5745e38afe
commit
d3ab98e691
10 changed files with 91 additions and 17 deletions
|
@ -203,16 +203,30 @@ static ssize_t local_preadv(FsContext *ctx, int fd, const struct iovec *iov,
|
|||
static ssize_t local_pwritev(FsContext *ctx, int fd, const struct iovec *iov,
|
||||
int iovcnt, off_t offset)
|
||||
{
|
||||
ssize_t ret
|
||||
;
|
||||
#ifdef CONFIG_PREADV
|
||||
return pwritev(fd, iov, iovcnt, offset);
|
||||
ret = pwritev(fd, iov, iovcnt, offset);
|
||||
#else
|
||||
int err = lseek(fd, offset, SEEK_SET);
|
||||
if (err == -1) {
|
||||
return err;
|
||||
} else {
|
||||
return writev(fd, iov, iovcnt);
|
||||
ret = writev(fd, iov, iovcnt);
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_SYNC_FILE_RANGE
|
||||
if (ret > 0 && ctx->export_flags & V9FS_IMMEDIATE_WRITEOUT) {
|
||||
/*
|
||||
* Initiate a writeback. This is not a data integrity sync.
|
||||
* We want to ensure that we don't leave dirty pages in the cache
|
||||
* after write when writeout=immediate is sepcified.
|
||||
*/
|
||||
sync_file_range(fd, offset, ret,
|
||||
SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE);
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int local_chmod(FsContext *fs_ctx, V9fsPath *fs_path, FsCred *credp)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue