History log of /system/core/sdcard/sdcard.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
e92372ba9eaa04eb4ed7eb9417ee2be3515bd972 15-Aug-2012 Jean-Baptiste Queru <jbq@google.com> resolved conflicts for merge of 2237ca4c to jb-mr1-dev

Change-Id: I04982ff2b092274b940a621b238c2246349aa85e
29bdc876e498a193f61ea3bdadce5bf8a35cb250 27-Jul-2012 Edwin Vane <edwin.vane@intel.com> Fixing signed/unsigned comparison warnings

Clang turned up some signed/unsigned comparison warnings. These warnings
have been fixed by cleaning up sdcard slightly:
- Don't use negative numbers for invalid gid/uid.
- sdcard takes a fixed number of arguments now so assert on that instead
of using a for loop.
- Also fixed usage string to reflect this fact.

Change-Id: Iee58a8e9aaedb3d40ad7dfeef63d8cd1fe1cd248
Author: Edwin Vane <edwin.vane@intel.com>
Reviewed-by: Kevin P Schoedel <kevin.p.schoedel@intel.com>
e169bd05ec70f68c0db5e61c93b71e1746eb6c56 14-Aug-2012 Jeff Sharkey <jsharkey@android.com> Source and destination paths for sdcard.

Enables init.rc to provide both paths, instead of hard-coding the

Bug: 6925012
Change-Id: I666cde710baad965b98619b68fcbcbb104973da3
6249b9009f44f2127670eda4d5aa6d5fd3e26e02 26-May-2012 Jeff Brown <jeffbrown@google.com> Make sdcard daemon multi-threaded.

The essential idea here is that a handler thread only needs to
hold a lock on the global node table while it is manipulating
nodes. The actual I/O operation is then performed without
holding any locks.

By default, we use 2 threads but this can be configured on the
command-line. Work is sheduled somewhat arbitrarily by the
handler threads. Whichever thread happens to read() the next
request first wins the right process it. This policy is very
simple but potentially wastes threads when there isn't much
work to be done. We can always improve this later if needed.

Change-Id: Id27a27c2c9b40d4f8e35a6bef9dd84f0dfacf337
fc1e1a0ab48a88dc7e9a93f65da5e6458de622af 26-May-2012 Jeff Brown <jeffbrown@google.com> Refactor request opcode handlers.

This is mostly a structural change. The handlers have been moved
into individual functions, which will help with upcoming changes.

Change-Id: I774739d859e177d6b5d4186d2771444166b734fa
7729d2450faeb1a02c72b29f48efc208de1cb444 26-May-2012 Jeff Brown <jeffbrown@google.com> Move buffers into a handler structure.

Also use PATH_MAX instead of PATH_BUFFER to determine the
maximum path length.

Change-Id: Ic78f731d339a2a97766d29d222dd27cac4e620ce
6fd921ae03a0fa17acfe118753ecd76d25f02e10 26-May-2012 Jeff Brown <jeffbrown@google.com> Implement FUSE_FSYNC request.

This request is needed for application correctness, without which
data corruption may result.

Bug: 6488845
Change-Id: I3d676c2e40f6e6b37d5d270c7cb40f1bf8c1fa47
847158476c1b7662eeec77808d8ecdbb329e6f28 25-May-2012 Jeff Brown <jeffbrown@google.com> More code cleanup.

Use constants to specify MAX_READ and MAX_WRITE buffer sizes and
use that to determine the size of the buffers that we need.

Be more careful about how the request header and data payload are
extracted. For example, the old code did len -= hdr->len, but
since len == hdr->len, this value was always 0. It turns out we
didn't use len thereafter, but we might want to for sanity checking
incoming requests.

Use const to make it clearer what data is coming out of the request.

Removed spurious error reply from FUSE_WRITE. It serves no purpose
and is ignored by the kernel.

Bug: 6488845
Change-Id: Ia328532979868f0aaea43744a49662f2f4511bfe
2656735f515a41cf131c87be5f40550b6538ce80 25-May-2012 Jeff Brown <jeffbrown@google.com> Code cleanup.

Removed references to unsupported command-line arguments.

Fixed compiler warnings.

Bug: 6488845
Change-Id: I50cb865609ea0fa5824ae2741b831cd886033055
e5d32128b0f1373822b02b2a2e69c6b199e0f805 09-Feb-2012 Sundar Raman <sunds@ti.com> sdcard: use FUSE_BIG_WRITES for FUSE writes

Slightly optimizes the writes used by sdcard to increase
throughput and decrease cpu load. Update the read
size to 256 x 1024 + 128 from current 8192 bytes since
writes can go as high as that.

Change-Id: I3bad425f31d4aa6f44f546e3d31439fd5bdca9ea
Signed-off-by: Sundar Raman <sunds@ti.com>
cfa9f650266621fee963fe18084a39602aa8fcc6 10-Apr-2012 Jeff Sharkey <jsharkey@android.com> Migrate emulated SD card to /storage/sdcard.

Bug: 6131916
Change-Id: Iab4d2a36b1dd979f7a9a0583d51dca3c5e38e681
2fc9fc7c8e26a35059ad39fe35ed256bfadb2891 22-Jul-2011 Yuncheol Heo <ycheo@google.com> Fix returning errno values which should be negative.

Change-Id: Id6464b127678ca1d9f4afa7c99fcfce361f4ad4a
ca1030ae42edfbeaedef5ea02a2c279bbb3b10cf 25-Mar-2011 Ken Sumrall <ksumrall@android.com> am b26662c0: am c3e69903: am 97919656: Add support for the utime(2) family of system calls to the sdcard fuse filesystem.

* commit 'b26662c0a2876767b2c06cb740f07b1010f91548':
Add support for the utime(2) family of system calls to the sdcard fuse filesystem.
97919656803126c6b28ea6070fc86d124ac4ef4b 18-Mar-2011 Ken Sumrall <ksumrall@android.com> Add support for the utime(2) family of system calls to the sdcard fuse filesystem.

Add support for the utime(2) family of system calls to change the modify
and access time of files. Requires an updated bionic with support for
the utimensat(2) system call.

Change-Id: I8cc0c0e6671c5708849752f47e4c3d4be2858b61
8349cce829388503fae67d454aff6a544ccd36aa 16-Mar-2011 Terry Heo (Woncheol) <terryheo@google.com> Fix uninitialized variable bug in sdcard emulator
- Following members were not initialized in fuse_init().
- Initialize fuse->root with memset().

Change-Id: I4bce754ace608b526961f59049b2d780fd99756f
75e17a8908d52e32f5de85b90b74e156265c60c6 26-Jan-2011 Mike Lockwood <lockwood@android.com> sdcard: Fix readdir implementation so rewinddir will work correctly

Fixes problem with "ls -R" in /mnt/sdcard

BUG: 3309556

Change-Id: Ie2246585439116de3cb40f4005f3b44a0439f54c
Signed-off-by: Mike Lockwood <lockwood@android.com>
575a2bbee30d70a1940077a5b699aaf93cb4e2cd 23-Jan-2011 Mike Lockwood <lockwood@android.com> sdcard: Remove lower case squashing of file names

sdcard daemon will now create new files and directories using
the actual name passed in by the client.
For existing files, sdcard will do case insensitive matching
when case sensitive lookup fails.

Change-Id: I89f995ea01beb2c63a9b36943dbcfaa16e7cd972
Signed-off-by: Mike Lockwood <lockwood@android.com>
b94d320b1e7e2a3493147f6763cd2825b111a4d8 18-Jan-2011 Mike Lockwood <lockwood@android.com> sdcard: Fix lower case squashing for case insensitivity support.

The fuse layer in the kernel does not support case insensitive file systems.
But the sdcard daemon's fuse_lookup was returning the same file object for
different file names, which caused problems in the kernel fuse layer's dcache,
resulting in EBUSY errors if the same directory was opened twice under different
names differing only by case.

To fix this, the sdcard daemon will return different file objects for files or directories
that differ only by case. Now the squashing occurs only in the interaction between
the sdcard daemon and the underlying file system in /data/media, and sdcard maintains
the illusion for the kernel fuse layer that there are two separate files.

Example: Suppose both /mnt/sdcard/foo.txt and /mnt/sdcard/FOO.TXT are opened.
Previously, the sdcard would squash this to a single node, and return the same
node to the kernel fuse implementation twice, and would open the underlying file
/data/media/foo.txt only once. Now sdcard will create two separate nodes will open
/data/media/foo.txt twice, once for mnt/sdcard/foo.txt and again for /mnt/sdcard/FOO.TXT.

Change-Id: I70e36b7822142750d3eeeb75edd6464ec7c79f2a
Signed-off-by: Mike Lockwood <lockwood@android.com>
1bedb73f9fc239b69d958cbabc50c7ba382bacbc 13-Jan-2011 Mike Lockwood <lockwood@android.com> sdcard: Have the -f option fix user/group permissions as well as file name case

Change-Id: I280ded6ce79fb11752c89ebafa663d7ee29edebc
Signed-off-by: Mike Lockwood <lockwood@android.com>
4f35e623a2359789406772009078d1a6ca7af6b3 12-Jan-2011 Mike Lockwood <lockwood@android.com> sdcard: Add command line options for lowercase file name squashing:

-l squash all file names to lower case when creating new files
-f rename existing files to make them lower case

Change-Id: I3245deb690228cf577bdc9bd4b0fcf0306ea3e16
Signed-off-by: Mike Lockwood <lockwood@android.com>
51b3a2d77a3361f6088172a4a68a0111058d3aab 12-Jan-2011 Mike Lockwood <lockwood@android.com> sdcard: Force file names to lower case in order to provide case insensitivity

Change-Id: I2cdb12c7e296e1c28b66e32c7037dce060eecd67
Signed-off-by: Mike Lockwood <lockwood@android.com>
90749774edd0c0cab327b62ce43cb4dfd33e897d 12-Jan-2011 Kenny Root <kroot@google.com> Use pread64/pwrite64 instead of pread/pwrite

>2GB files were failing strangely when pread was used instead of
pread64. Also writing to files should use pwrite64 in case they grow
over 2GB.

Bug: 3205336
Change-Id: I0c9619de35680093d7777ca132ce488eae502216
77085c570e7db2ea4a52e3a0fec5100687c31b46 05-Jan-2011 Paul Eastham <eastham@google.com> Fix refcounting in the rename case.

Change-Id: I59dbac8c92bda450e6d89f7f180241fd4b5bbae6
11ccdb3be67b22f677065715ace68aabf371acc7 14-Oct-2010 Paul Eastham <eastham@google.com> Properly reflect RENAME ops in FUSE internal state

In response to a RENAME, we actually need to rename and move the virtual
node. To support this, filenames are now allocated separately, as reallocing
the whole node to accommodate a longer filename would break the direct
mapping of fhs and inodes to fuse pointers.

Change-Id: I71e5a965f875dedc5f58f9d182156734b29ca179
f43219e0b1022b257499289ceb951f6a1a44bf9c 22-Sep-2010 Paul Eastham <eastham@google.com> Partially implement SETATTR for sdcard/FUSE

Handle truncate cases within SETATTR so that truncate() and ftruncate() call
will work.

Change-Id: I5a9862dcaa6ca7b5e9115cb5d3bfed88787fa7ac
Signed-off-by: Paul Eastham <eastham@google.com>
fc1a13bfdd9f7acd36bd4ae8f87cd57aa298f5ac 20-Aug-2010 Mike Lockwood <lockwood@android.com> sdcard: Add support for the O_TRUNC open() flag

BUG: 2935163

Change-Id: I9f76b24147b2f87ddb7869bb72baac03e86ef7e6
Signed-off-by: Mike Lockwood <lockwood@android.com>
4553b08d7555a103fdbe8623a9cbd826a7e413ff 16-Aug-2010 Mike Lockwood <lockwood@android.com> sdcard: Implement statfs, stat time values and change mount point to /mnt/sdcard

Change-Id: Iac2c4ec47af7d47d76a82916866ad36782caf25c
Signed-off-by: Mike Lockwood <lockwood@android.com>
b14a2c6e34b197870433386fb809d34b58b30fc0 13-Aug-2010 Brian Swetland <swetland@google.com> fix up permissions

Change-Id: I93c828ebc755ad2a2055066c8af65dfde7dc7b2e
03ee9479a4ed67689b9bbccda20c60800a38b178 13-Aug-2010 Brian Swetland <swetland@google.com> sdcard: a program to create a "virtual" /sdcard pointed at a path

sdcard is a program that uses FUSE to emulate FAT-on-sdcard style
directory permissions (all files are given fixed owner, group, and
permissions at creation, owner, group, and permissions are not
changeable, symlinks and hardlinks are not createable, etc.

usage: sdcard <path> <uid> <gid>

It must be run as root, but will change to uid/gid as soon as it
mounts a filesystem on /sdcard. It will refuse to run if uid or
gid are zero.

Change-Id: I9a5d2e5daaebeee632f8470172cbb77b7fa689f8
Signed-off-by: Brian Swetland <swetland@google.com>