summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Skip FUSE request from /dev/fuse if unique=0Daichi Hirono2017-06-191-0/+1
| | | | | | | | | | | | | | | | | | | | | | APCT log shows that we got FUSE request unique=0 and replying to such request causes a EINVAL. The possible reasons of getting unique=0 here are: * /dev/fuse actually submits such requests. In this case, not replying to such request probabbly safe as the kernel cannot wait corresponding response without a unique number. We can observing the kernel code to find out what unique=0 actually means. * Memory corruption happens and unique number are cleared with zero. In this case, if we skip unique=0 request, libappfuse does not reply to the kernel request and APCT result will become timeout . To see which case happens, the CL ScopedLogSeverity to output verbose logs and lets FuseBridgeLoop skip a request from /dev/fuse if unique=0. Bug: 62429763 Test: libappfuse_tests Change-Id: I8c4d532564b690d55573b92260170b0cd68150ab
* Change FuseAppLoop so that it can process messages asynchronously.Daichi Hirono2017-03-271-58/+53
| | | | | | | | | | Previously FuseAppLoopCallback needs to return values in a synchrnous manner. The CL changes it to asynchronous mannger so that apps can process FUSE message asynchrnously. Bug: 35229514 Test: FuseAppLoopTest Change-Id: I8edcfdb003a25cfd5e9c490ec871140220b21e35
* Enable FuseBridgeLoop to accept new mount point after startingDaichi Hirono2017-03-231-6/+10
| | | | | | | | | | | | The CL turns StartFuseBridgeLoop function into FuseBridgeLoop class, and adds a method adding new appfuse mount to the loop. After doing this, one FuseBridgeLoop can process FUSE commands from multiple AppFuse mounts. Bug: 34903085 Test: libappfuse_test Change-Id: I54f11f54bc26c551281b9c32e9bb91f8f043774c
* Add ReadOrAgain and WriteOrAgain methods to FuseMessage.Daichi Hirono2017-03-133-37/+27
| | | | | | | | | | | | | These methods return kAgain if operation cannot be done without blocking the current thread. The CL also introduecs new helper function SetupMessageSockets so that FuseMessages are always transfered via sockets that save message boundaries. Bug: 34903085 Test: libappfuse_test Change-Id: I34544372cc1b0c7bc9622e581ae16c018a123fa9
* Add permission bits to open() with O_CREAT.George Burgess IV2017-02-091-1/+1
| | | | | | | | | It's an error to pass open O_CREAT without giving it mode bits: https://linux.die.net/man/3/open Bug: 32073964 Test: Compiles with clang FORTIFY. Change-Id: I6b2a3694f85565afdeb782585c6af36e8c4d1557
* Support SOCK_STREAM for bridge between system and appDaichi Hirono2016-12-111-0/+26
| | | | | | | | | | | | | Previously AppFuse use SOCK_SEQPACKET for sockets communicating system and app. However SOCK_SEQPACKET requires the buffer of message size in the kernel and sometimes failed to write with ENOBUF. The CL updates libappfuse so that it can use SOCK_STREAM instead of SOCK_SEQPACKET. Bug: 33279206 Test: libappfuse_test Change-Id: I622ada9ac1d71d0c57b6cfff0904c7829cea7995
* Stops the loop when all files are closed.Daichi Hirono2016-11-161-2/+7
| | | | | | | | | | The CL changes FuseBridgeLoop so that it exits when all files opened on the AppFuse mount point are closed. Note that the client code will unmount the FUSE mount point after the loop exits. Bug: 32260320 Test: libappfuse_test Change-Id: I4965fbb48de8a280c6306e70757a07376b1956a7
* Merge "Use FUSE_COMPAT_22_INIT_OUT_SIZE always if available."Treehugger Robot2016-11-151-1/+1
|\
| * Use FUSE_COMPAT_22_INIT_OUT_SIZE always if available.Daichi Hirono2016-11-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | We return the minor version number 15 to FUSE_INIT since we don't handle BATCH_FORGET. Thus the kernel does not accept the latest size of fuse_init_out. Instead we need to use FUSE_COMPAT_22_INIT_OUT_SIZE. Bug: 32779923 Test: libappfuse_test Change-Id: I5c979d0e45344ca8adfe3ad3f4a9561442abcb3a
* | Add FuseAppLoop to libappfuse.Daichi Hirono2016-11-143-18/+342
|/ | | | | | | | | The class is used at the app side (StorageManager) to parse FUSE commands. Bug: 32260320 Test: libappfuse_test Change-Id: I1ae2904d3290a041f1efbf8fc10ba032eda5449c
* Add FuseBridgeLoop to libappfuse.Daichi Hirono2016-10-272-1/+197
| | | | | | | | | The CL adds FuseBridgeLoop class to libappfuse, which is used in the system service to proxy fuse commands to applications. Bug: 29970149 Test: libappfuse_test Change-Id: I0708f608b3868721ab16ba4028fd2c17a6735af7
* Add utility functions for FUSE.Daichi Hirono2016-10-261-0/+187
The CL adds utility functions to framework to parse FUSE messages from the kernel. The library will be used from framework JNI and service JNI. Bug: 32260320 Test: libappfuse_test Change-Id: Ib89b26d34789e6c26a3288beceb3ea145c1ae780