diff options
-rw-r--r-- | fuse/guestmount.c | 12 | ||||
-rwxr-xr-x | fuse/test-fuse.sh | 11 |
2 files changed, 22 insertions, 1 deletions
diff --git a/fuse/guestmount.c b/fuse/guestmount.c index 27a4cef2..e1cb2d89 100644 --- a/fuse/guestmount.c +++ b/fuse/guestmount.c @@ -653,7 +653,17 @@ fg_write (const char *path, const char *buf, size_t size, dir_cache_invalidate (path); - return -ENOSYS; /* XXX */ + /* See fg_read. */ + const size_t limit = 2 * 1024 * 1024; + if (size > limit) + size = limit; + + int r; + r = guestfs_pwrite (g, path, buf, size, offset); + if (r == -1) + return error (); + + return r; } static int diff --git a/fuse/test-fuse.sh b/fuse/test-fuse.sh index e31ea9d7..d464f11e 100755 --- a/fuse/test-fuse.sh +++ b/fuse/test-fuse.sh @@ -207,6 +207,17 @@ for ts in 12345 1234567 987654321; do [ "$(stat -c %Y timestamp)" -eq $ts ] done +stage Checking writes +cp hello.txt copy.txt +echo >> copy.txt +echo world >> copy.txt +echo bigger >> copy.txt +echo biggest >> copy.txt +[ "$(cat copy.txt)" = "hello +world +bigger +biggest" ] + # These ones are not yet tested by the current script: #stage XXX statfs/statvfs #stage XXX xattr operations |