auto import from //branches/cupcake/...@130745
diff --git a/vold/volmgr.h b/vold/volmgr.h
index a7f5701..98c1561 100644
--- a/vold/volmgr.h
+++ b/vold/volmgr.h
@@ -23,6 +23,7 @@
#include "vold.h"
#include "blkdev.h"
#include "media.h"
+#include "devmapper.h"
#define PROP_EXTERNAL_STORAGE_STATE "EXTERNAL_STORAGE_STATE"
@@ -70,15 +71,18 @@
volstate_ejecting,
#define VOLD_EVT_EJECTING "volume_ejecting:"
#define VOLD_ES_PVAL_EJECTING "ejecting"
+
+ volstate_formatting,
} volume_state_t;
struct volume;
struct volmgr_fstable_entry {
char *name;
- int (*identify_fn) (blkdev_t *dev);
- int (*check_fn) (blkdev_t *dev);
- int (*mount_fn) (blkdev_t *dev, struct volume *vol);
+ int (*identify_fn) (blkdev_t *dev);
+ int (*check_fn) (blkdev_t *dev);
+ int (*mount_fn) (blkdev_t *dev, struct volume *vol, boolean safe_mode);
+ boolean case_sensitive_paths;
};
struct volmgr_start_args {
@@ -86,21 +90,38 @@
blkdev_t *dev;
};
+struct volmgr_reaper_args {
+ void (*cb) (struct volume *, void *);
+ void *cb_arg;
+};
+
+#define VOLMGR_MAX_MEDIAPATHS_PER_VOLUME 8
+
typedef struct volume {
- char *media_path;
- media_type_t media_type;
- char *mount_point;
- char *ums_path;
+ char *media_paths[VOLMGR_MAX_MEDIAPATHS_PER_VOLUME];
+
+ media_type_t media_type;
+ char *mount_point;
+ char *ums_path;
+ struct devmapping *dm;
pthread_mutex_t lock;
volume_state_t state;
blkdev_t *dev;
pid_t worker_pid;
pthread_t worker_thread;
- struct volmgr_start_args worker_args;
+ union {
+ struct volmgr_start_args start_args;
+ struct volmgr_reaper_args reaper_args;
+ } worker_args;
boolean worker_running;
pthread_mutex_t worker_sem;
+ struct volmgr_fstable_entry *fs;
+
+ unsigned char *key;
+ unsigned int keysize;
+
struct volume *next;
} volume_t;
@@ -110,6 +131,8 @@
int volmgr_enable_ums(boolean enable);
int volmgr_stop_volume_by_mountpoint(char *mount_point);
int volmgr_start_volume_by_mountpoint(char *mount_point);
-
+int volmgr_safe_mode(boolean enable);
+int volmgr_format_volume(char *mount_point);
+int volmgr_set_volume_key(char *mount_point, unsigned char *key, unsigned int keysize);
void KillProcessesWithOpenFiles(const char* mountPoint, boolean sigkill, int *excluded, int num_excluded);
#endif