From: Richard Jones Date: Tue, 18 May 2010 22:49:43 +0000 (+0100) Subject: fuse: Implement write syscall (RHBZ#592883). X-Git-Tag: 1.3.14~21 X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=commitdiff_plain;h=9735484c3579e4e4705cd99dd2f6617186b069cc fuse: Implement write syscall (RHBZ#592883). --- diff --git a/fuse/guestmount.c b/fuse/guestmount.c index 27a4cef..e1cb2d8 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 e31ea9d..d464f11 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