aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Fleischer <fleiben@gmail.com>2017-07-07 23:30:14 +0200
committerNikolaus Rath <Nikolaus@rath.org>2017-07-13 16:06:05 +0200
commitdb149d1d874ccf044f3ed8d8f980452506b8fb4b (patch)
tree6c579c7472e70d66646c93e5b41e9c4a98272458
parent861d308a03319e23286290ee8cffc6fd307e0ec9 (diff)
downloadsshfs-db149d1d874ccf044f3ed8d8f980452506b8fb4b.tar
sshfs-db149d1d874ccf044f3ed8d8f980452506b8fb4b.tar.gz
sshfs-db149d1d874ccf044f3ed8d8f980452506b8fb4b.tar.bz2
sshfs-db149d1d874ccf044f3ed8d8f980452506b8fb4b.zip
Fall back to global I/O size on macOS
The st_blksize value of struct stat represents the optimal block size for file I/O operations. FUSE for macOS will use this value when preforming read or write operations on the file. The smaller st_blksize is the more context switches are required to complete the operation. Setting st_blksize to 0 results in FUSE for macOS falling back to the global I/O size, that can be specified through the "-o iosize=..." mount-time option. Fixes osxfuse/osxfuse#389 and osxfuse/sshfs#33
-rw-r--r--sshfs.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sshfs.c b/sshfs.c
index 5475d98..9809057 100644
--- a/sshfs.c
+++ b/sshfs.c
@@ -3150,6 +3150,9 @@ static int sshfs_getattr(const char *path, struct stat *stbuf,
}
if (!err) {
err = buf_get_attrs(&outbuf, stbuf, NULL);
+#ifdef __APPLE__
+ stbuf->st_blksize = 0;
+#endif
buf_free(&outbuf);
}
buf_free(&buf);