Fix for Empty App-Mounted Directories in Android 4.2on January 21, 2013 at 3:30 am
With the release of Android 4.2 came many new features, one of which was the support for multiple user accounts on the same device. Unfortunately this addition had a rather undesirable effect on a feature that many people found much more useful than being able to create a separate user account. As of version 4.2, apps such as CIFS manager and Mountpoint no longer function as they should, due to changes that prevented Dalvik apps from mounting file systems to be shared with other apps. The directories will appear to be absolutely fine from within the app that initially mounted them. However, when attempting to view the contents from another app, well, you won’t be able to. Certain aspects of this issue have been addressed by XDA Elite Recognized Developer Chainfire‘s Stickmount, which is compatible with 4.2. However, until now there hasn’t yet been a resolution that doesn’t rely on a third party application.
The crux of the issue is that to ensure separation between user accounts, the system mounts everything under “/” (which is everything) as a recursive slave mountspace. In laymans terms, linking between apps across the filesystem is somewhat borked. Fortunately for those of you who would like to rectify this and regain that functionality, XDA Recognized Developer mkasick has come up with not just one but two different methods of remedying this issue. Please note though that these fixes are primarily aimed at developers looking to integrate them into integrate into 4.2-based ROMs.
Both fixes are composed of two parts, one of which is a modification to the boot ramdisk init.rc. The preferable method of patching this issue is by applying a change to Dalvik, which restricts the slave mountspace to ”/system” and “/mnt/shell/emulated”. The second option does the same thing at kernel level for ROMs that don’t/can’t use the preferred fix. These commits are in the process of being evaluated for inclusion into CyanogenMod, but at the moment still need to be applied manually.
Check out the original forum thread for a much more technical evaluation of the problem and links to the relevant gerrit/github pages for these patches.