Git Product home page Git Product logo

Comments (1)

GoogleCodeExporter avatar GoogleCodeExporter commented on September 17, 2024
seeing as 1.0 used mountd and now 1.5 uses vold:

modifying uevent.c in system/core/vold/vold.c to 
use PHYSDEVICEPATH seems to work.  Here is the patch, it is obviously 
a hack, but it does seem to work. 

--- a/vold/uevent.c 
+++ b/vold/uevent.c 
@@ -309,6 +309,7 @@ static int handle_block_event(struct uevent 
*event) 


     truncate_sysfs_path(event->path, n, mediapath, sizeof 
(mediapath)); 


+    strncpy(mediapath, get_uevent_param(event, "PHYSDEVPATH"), 255); 
     if (!(media = media_lookup_by_path(mediapath, false))) { 
 #if DEBUG_UEVENT 
         LOG_VOL("No backend media found @ device path '%s'", 
mediapath); 


This is the vold.conf I'm using: 
## vold configuration file for the emulator/SDK 


volume_sdcard { 
    ## This is the direct uevent device path to the SD slot on the 
device 
    media_path     /class/mmc_host/mmc0/ 
    media_type     mmc 
    mount_point    /sdcard 
    ums_path       /devices/platform/usb_mass_storage/lun0 



} 


and this fails mostly but its a start, wich leads to...

This will mount the 1st partition only. 


Sorry, hard cording. 


diff --git a/vold/blkdev.c b/vold/blkdev.c 
index 3167507..fa0cb61 100644 
--- a/vold/blkdev.c 
+++ b/vold/blkdev.c 
@@ -301,6 +301,9 @@ int blkdev_get_num_pending_partitions(blkdev_t 
*blk) 
struct blkdev_list *list_scan = list_root; 
int num = blk->nr_parts; 


+ if (!num && (blk->type == blkdev_partition)) 
+ return num; 
+ 
if (blk->type != blkdev_disk) 
return -EINVAL; 


diff --git a/vold/mmc.c b/vold/mmc.c 
index 0f08964..b7be9f5 100644 
--- a/vold/mmc.c 
+++ b/vold/mmc.c 
@@ -85,7 +85,8 @@ static int mmc_bootstrap_controller(char 
*sysfs_path) 
if ((!strcmp(de->d_name, "uevent")) || 
(!strcmp(de->d_name, "subsystem")) || 
(!strcmp(de->d_name, "device")) || 
- (!strcmp(de->d_name, "power"))) { 
+ (!strcmp(de->d_name, "power")) || 
+ (!strcmp(de->d_name, "slot_name"))) { 
continue; 



} 


@@ -170,8 +171,8 @@ static int mmc_bootstrap_card(char *sysfs_path) 
* Check for block drivers 
*/ 
char block_devpath[255]; 
- sprintf(tmp, "%s/block", devpath); 
- sprintf(filename, "/sys%s/block", devpath); 
+ sprintf(tmp, "%s/block:mmcblk0", devpath); 
+ sprintf(filename, "/sys%s/block:mmcblk0", devpath); 
if (!access(filename, F_OK)) { 
if (mmc_bootstrap_block(tmp)) { 
LOGE("Error bootstrapping block @ %s", tmp); 
@@ -203,9 +204,30 @@ static int mmc_bootstrap_block(char *devpath) 

if (de->d_name[0] == '.') 
continue; 
- sprintf(tmp, "%s/%s", devpath, de->d_name); 
+ 
+ if ((!strcmp(de->d_name, "uevent")) || 
+ (!strcmp(de->d_name, "dev")) || 
+ (!strcmp(de->d_name, "subsystem")) || 
+ (!strcmp(de->d_name, "device")) || 
+ (!strcmp(de->d_name, "range")) || 
+ (!strcmp(de->d_name, "ext_range")) || 
+ (!strcmp(de->d_name, "removable")) || 
+ (!strcmp(de->d_name, "ro")) || 
+ (!strcmp(de->d_name, "size")) || 
+ (!strcmp(de->d_name, "capability")) || 
+ (!strcmp(de->d_name, "stat")) || 
+ (!strcmp(de->d_name, "power")) || 
+ (!strcmp(de->d_name, "holders")) || 
+ (!strcmp(de->d_name, "slaves")) || 
+ (!strcmp(de->d_name, "queue")) || 
+ (!strcmp(de->d_name, "bdi"))) { 
+ continue; 
+ } 
+ 
+ sprintf(tmp, "%s/%s", devpath, de->d_name); 
if (mmc_bootstrap_mmcblk(tmp)) 
LOGE("Error bootstraping mmcblk @ %s", tmp); 
+ break; 


} 


closedir(d); 
return 0; 
diff --git a/vold/uevent.c b/vold/uevent.c 
index cfb5786..6eb88d3 100644 
--- a/vold/uevent.c 
+++ b/vold/uevent.c 
@@ -301,7 +301,7 @@ static int handle_block_event(struct uevent 
*event) 

} else if (!strcmp(get_uevent_param(event, "DEVTYPE"), "disk")) 


n = 2; 
else if (!strcmp(get_uevent_param(event, "DEVTYPE"), "partition")) 
- n = 3; 
+ n = 2; 
else { 
LOGE("Bad blockdev type '%s'", get_uevent_param(event, "DEVTYPE")); 
return -EINVAL; 
diff --git a/vold/volmgr_vfat.c b/vold/volmgr_vfat.c 
index 344a166..5856a99 100644 
--- a/vold/volmgr_vfat.c 
+++ b/vold/volmgr_vfat.c 
@@ -125,7 +125,7 @@ int vfat_mount(blkdev_t *dev, volume_t *vol, 
boolean safe_mode) 


} 


#if VFAT_DEBUG 
- LOG_VOL("vfat_mount(%s, %d:%d): mount rc = %d", dev->major,k dev- 

>minor, 


+ LOG_VOL("vfat_mount(%d:%d, %s): mount rc = %d", dev->major, dev- 

>minor, 


vol->mount_point, rc); 
#endif 
free (devpath); 

--- 



wich brought me to...



For that we require to disable a sysfs_deprecated flag and to have the
following patches included on the android framework:

- http://review.omapzoom.org/Gerrit#change,346
- http://review.omapzoom.org/Gerrit#change,345

Signed-off-by: Leed Aguilar <[email protected]>
---
arch/arm/configs/omap_zoom2_android_defconfig | 14 ++++++++++----
drivers/serial/omap-serial.c | 17 +++++++----------
2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/arch/arm/configs/omap_zoom2_android_defconfig 
b/arch/arm/configs/omap_zoom2_android_defconfig
index 2202868..a0834d3 100644
--- a/arch/arm/configs/omap_zoom2_android_defconfig
+++ b/arch/arm/configs/omap_zoom2_android_defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.27.10-omap1
-# Mon May 4 11:07:27 2009
+# Thu May 14 17:55:05 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -53,8 +53,7 @@ CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
# CONFIG_RELAY is not set
# CONFIG_NAMESPACES is not set
CONFIG_BLK_DEV_INITRD=y
--
1.6.0

Original comment by [email protected] on 21 Jul 2009 at 5:08

from live-android.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.