diff options
author | Thierry Strudel <tstrudel@google.com> | 2016-01-13 15:11:35 -0800 |
---|---|---|
committer | Thierry Strudel <tstrudel@google.com> | 2016-08-04 05:02:18 -0700 |
commit | 738e0dcf0a09fa7659a7efa79de9482f7cf54e4f (patch) | |
tree | 6687a4437247b62668d132192c98a588b4611746 /sdcard | |
parent | 29e7e3edb1edb4567ef9f354d9a5290b92394492 (diff) | |
download | core-738e0dcf0a09fa7659a7efa79de9482f7cf54e4f.tar.gz core-738e0dcf0a09fa7659a7efa79de9482f7cf54e4f.tar.bz2 core-738e0dcf0a09fa7659a7efa79de9482f7cf54e4f.zip |
[DO NOT MERGE] Use FUSE_SHORTCIRCUIT if available
Use a non yet maintainer reviewed kernel patch from QCOM that greatly
improves IO speed in case it is available from the device specific
kernel headers.
Bug: 24216004
Bug: 30222859
Change-Id: I4101d80082c9ad9d042dde5c620ddb309d193d52
Diffstat (limited to 'sdcard')
-rw-r--r-- | sdcard/sdcard.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sdcard/sdcard.c b/sdcard/sdcard.c index 9480e4ab9..13ebaf157 100644 --- a/sdcard/sdcard.c +++ b/sdcard/sdcard.c @@ -1221,7 +1221,13 @@ static int handle_open(struct fuse* fuse, struct fuse_handler* handler, } out.fh = ptr_to_id(h); out.open_flags = 0; + +#ifdef FUSE_SHORTCIRCUIT + out.lower_fd = h->fd; +#else out.padding = 0; +#endif + fuse_reply(fuse, hdr->unique, &out, sizeof(out)); return NO_STATUS; } @@ -1385,7 +1391,13 @@ static int handle_opendir(struct fuse* fuse, struct fuse_handler* handler, } out.fh = ptr_to_id(h); out.open_flags = 0; + +#ifdef FUSE_SHORTCIRCUIT + out.lower_fd = -1; +#else out.padding = 0; +#endif + fuse_reply(fuse, hdr->unique, &out, sizeof(out)); return NO_STATUS; } @@ -1467,6 +1479,11 @@ static int handle_init(struct fuse* fuse, struct fuse_handler* handler, out.major = FUSE_KERNEL_VERSION; out.max_readahead = req->max_readahead; out.flags = FUSE_ATOMIC_O_TRUNC | FUSE_BIG_WRITES; + +#ifdef FUSE_SHORTCIRCUIT + out.flags |= FUSE_SHORTCIRCUIT; +#endif + out.max_background = 32; out.congestion_threshold = 32; out.max_write = MAX_WRITE; |