From c3ebecfefb84f8328228c8253ead0eb6a9768ca8 Mon Sep 17 00:00:00 2001 From: Nikhilesh Reddy Date: Mon, 18 May 2015 15:49:39 -0700 Subject: sdcard : Use the fuse shortcircuit option Use the fuse shortcircuit option for faster read and write performance in the fuse mount points. Change-Id: Iee11451348443108c82b14d6856e4c95a47159d1 --- sdcard/Android.mk | 4 ++++ sdcard/sdcard.c | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) (limited to 'sdcard') diff --git a/sdcard/Android.mk b/sdcard/Android.mk index cb3a8fb..89c3613 100644 --- a/sdcard/Android.mk +++ b/sdcard/Android.mk @@ -1,6 +1,10 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) +ifeq ($(call is-vendor-board-platform,QCOM),true) +LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include +LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr +endif LOCAL_SRC_FILES := sdcard.c LOCAL_MODULE := sdcard diff --git a/sdcard/sdcard.c b/sdcard/sdcard.c index a79e2dd..840642b 100644 --- a/sdcard/sdcard.c +++ b/sdcard/sdcard.c @@ -1202,7 +1202,13 @@ static int handle_open(struct fuse* fuse, struct fuse_handler* handler, } out.fh = ptr_to_id(h); out.open_flags = 0; - out.padding = 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; } @@ -1366,7 +1372,13 @@ static int handle_opendir(struct fuse* fuse, struct fuse_handler* handler, } out.fh = ptr_to_id(h); out.open_flags = 0; - out.padding = 0; + + #ifdef FUSE_SHORTCIRCUIT + out.lower_fd = -1; + #else + out.padding = 0; + #endif + fuse_reply(fuse, hdr->unique, &out, sizeof(out)); return NO_STATUS; } @@ -1448,6 +1460,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; -- cgit v1.1