From db149d1d874ccf044f3ed8d8f980452506b8fb4b Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Fri, 7 Jul 2017 23:30:14 +0200 Subject: 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 --- sshfs.c | 3 +++ 1 file changed, 3 insertions(+) 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); -- cgit v1.2.3