eclair snapshot
diff --git a/vold/volmgr.c b/vold/volmgr.c
index 3c34a9c..deb680e 100644
--- a/vold/volmgr.c
+++ b/vold/volmgr.c
@@ -460,7 +460,7 @@
                 pthread_mutex_lock(&v->lock);
                 if (v->state == volstate_mounted)
                     volmgr_send_eject_request(v);
-                else if (v->state == volstate_ums) {
+                else if (v->state == volstate_ums || v->state == volstate_nomedia) {
                     pthread_mutex_unlock(&v->lock);
                     goto next_vol;
                 }
@@ -536,9 +536,16 @@
          * Since we only support creating 1 partition (right now),
          * we can just lookup the target by devno
          */
-        blkdev_t *part = blkdev_lookup_by_devno(dev->major, 1);
+        blkdev_t *part;
+        if (vol->media_type == media_mmc)
+            part = blkdev_lookup_by_devno(dev->major, ALIGN_MMC_MINOR(dev->minor) + 1);
+        else
+            part = blkdev_lookup_by_devno(dev->major, 1);
         if (!part) {
-            part = blkdev_lookup_by_devno(dev->major, 0);
+            if (vol->media_type == media_mmc)
+                part = blkdev_lookup_by_devno(dev->major, ALIGN_MMC_MINOR(dev->minor));
+            else
+                part = blkdev_lookup_by_devno(dev->major, 0);
             if (!part) {
                 LOGE("Unable to find device to format");
                 return -ENODEV;
@@ -573,9 +580,14 @@
         rc = -ENODEV;
         int i;
         for (i = 0; i < dev->nr_parts; i++) {
-            blkdev_t *part = blkdev_lookup_by_devno(dev->major, (i+1));
+            blkdev_t *part;
+            if (vol->media_type == media_mmc)
+                part = blkdev_lookup_by_devno(dev->major, ALIGN_MMC_MINOR(dev->minor) + (i+1));
+            else
+                part = blkdev_lookup_by_devno(dev->major, (i+1));
             if (!part) {
-                LOGE("Error - unable to lookup partition for blkdev %d:%d", dev->major, (i+1));
+                LOGE("Error - unable to lookup partition for blkdev %d:%d",
+                    dev->major, dev->minor);
                 continue;
             }
             rc = _volmgr_start(vol, part);