merge from donut
This commit is contained in:
commit
a86835965e
|
@ -33,7 +33,7 @@
|
|||
#define ADB_VERSION_MAJOR 1 // Used for help/version information
|
||||
#define ADB_VERSION_MINOR 0 // Used for help/version information
|
||||
|
||||
#define ADB_SERVER_VERSION 20 // Increment this when we want to force users to start a new adb server
|
||||
#define ADB_SERVER_VERSION 21 // Increment this when we want to force users to start a new adb server
|
||||
|
||||
typedef struct amessage amessage;
|
||||
typedef struct apacket apacket;
|
||||
|
|
|
@ -6,7 +6,6 @@ include $(CLEAR_VARS)
|
|||
copy_from := \
|
||||
etc/dbus.conf \
|
||||
etc/init.goldfish.sh \
|
||||
etc/ppp/ip-up-vpn \
|
||||
etc/hosts
|
||||
|
||||
copy_to := $(addprefix $(TARGET_OUT)/,$(copy_from))
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
#!/system/bin/sh
|
||||
|
||||
/system/bin/setprop "vpn.dns1" "$DNS1"
|
||||
/system/bin/setprop "vpn.dns2" "$DNS2"
|
||||
|
||||
GATEWAY=${6#*@}
|
||||
VPNSERVER=${6%@*}
|
||||
|
||||
# Protect the route to vpn server
|
||||
/system/bin/route add -net "$VPNSERVER" netmask 255.255.255.255 gw "$GATEWAY"
|
||||
|
||||
if (exp $?) ; then exit $?; fi
|
||||
|
||||
# Route all traffic to vpn connection
|
||||
/system/bin/route add -net 0.0.0.0 netmask 128.0.0.0 gw $IPREMOTE
|
||||
/system/bin/route add -net 128.0.0.0 netmask 128.0.0.0 gw $IPREMOTE
|
||||
|
||||
/system/bin/setprop "vpn.up" "1"
|
|
@ -78,11 +78,10 @@ loglevel 3
|
|||
mkdir /data/misc/keystore 0770 keystore keystore
|
||||
mkdir /data/misc/vpn 0770 system system
|
||||
mkdir /data/misc/vpn/profiles 0770 system system
|
||||
mkdir /data/misc/wifi 0770 wifi system
|
||||
chown wifi system /data/misc/wifi
|
||||
touch /data/misc/wifi/wpa_supplicant.conf
|
||||
# give system access to wpa_supplicant.conf for backup and restore
|
||||
mkdir /data/misc/wifi 0770 wifi wifi
|
||||
chmod 0770 /data/misc/wifi
|
||||
chmod 0660 /data/misc/wifi/wpa_supplicant.conf
|
||||
chown wifi system /data/misc/wifi/wpa_supplicant.conf
|
||||
mkdir /data/local 0771 shell shell
|
||||
mkdir /data/local/tmp 0771 shell shell
|
||||
mkdir /data/data 0771 system system
|
||||
|
|
|
@ -73,7 +73,7 @@ int blkdev_refresh(blkdev_t *blk)
|
|||
}
|
||||
|
||||
if (ioctl(fd, BLKGETSIZE, &blk->nr_sec)) {
|
||||
LOGE("Unable to get device size (%m)");
|
||||
LOGE("Unable to get device size (%s)", strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
close(fd);
|
||||
|
|
21
vold/mmc.c
21
vold/mmc.c
|
@ -43,7 +43,8 @@ int mmc_bootstrap()
|
|||
struct dirent *de;
|
||||
|
||||
if (!(d = opendir(SYSFS_CLASS_MMC_PATH))) {
|
||||
LOG_ERROR("Unable to open '%s' (%m)", SYSFS_CLASS_MMC_PATH);
|
||||
LOG_ERROR("Unable to open '%s' (%s)", SYSFS_CLASS_MMC_PATH,
|
||||
strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
|
||||
|
@ -54,8 +55,10 @@ int mmc_bootstrap()
|
|||
continue;
|
||||
|
||||
sprintf(tmp, "%s/%s", SYSFS_CLASS_MMC_PATH, de->d_name);
|
||||
if (mmc_bootstrap_controller(tmp))
|
||||
LOG_ERROR("Error bootstrapping controller '%s' (%m)", tmp);
|
||||
if (mmc_bootstrap_controller(tmp)) {
|
||||
LOG_ERROR("Error bootstrapping controller '%s' (%s)", tmp,
|
||||
strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
closedir(d);
|
||||
|
@ -72,7 +75,7 @@ static int mmc_bootstrap_controller(char *sysfs_path)
|
|||
LOG_VOL("bootstrap_controller(%s):", sysfs_path);
|
||||
#endif
|
||||
if (!(d = opendir(sysfs_path))) {
|
||||
LOG_ERROR("Unable to open '%s' (%m)", sysfs_path);
|
||||
LOG_ERROR("Unable to open '%s' (%s)", sysfs_path, strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
|
||||
|
@ -92,7 +95,7 @@ static int mmc_bootstrap_controller(char *sysfs_path)
|
|||
sprintf(tmp, "%s/%s", sysfs_path, de->d_name);
|
||||
|
||||
if (mmc_bootstrap_card(tmp) < 0)
|
||||
LOG_ERROR("Error bootstrapping card '%s' (%m)", tmp);
|
||||
LOG_ERROR("Error bootstrapping card '%s' (%s)", tmp, strerror(errno));
|
||||
} // while
|
||||
|
||||
closedir(d);
|
||||
|
@ -123,7 +126,7 @@ static int mmc_bootstrap_card(char *sysfs_path)
|
|||
}
|
||||
|
||||
if (chdir(sysfs_path) < 0) {
|
||||
LOGE("Unable to chdir to %s (%m)", sysfs_path);
|
||||
LOGE("Unable to chdir to %s (%s)", sysfs_path, strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
|
||||
|
@ -162,7 +165,7 @@ static int mmc_bootstrap_card(char *sysfs_path)
|
|||
uevent_params[3] = (char *) NULL;
|
||||
|
||||
if (simulate_uevent("mmc", devpath, "add", uevent_params) < 0) {
|
||||
LOGE("Error simulating uevent (%m)");
|
||||
LOGE("Error simulating uevent (%s)", strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
|
||||
|
@ -264,7 +267,7 @@ static int mmc_bootstrap_mmcblk_partition(char *devpath)
|
|||
|
||||
sprintf(filename, "/sys%s/uevent", devpath);
|
||||
if (!(fp = fopen(filename, "r"))) {
|
||||
LOGE("Unable to open '%s' (%m)", filename);
|
||||
LOGE("Unable to open '%s' (%s)", filename, strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
|
||||
|
@ -286,7 +289,7 @@ static int mmc_bootstrap_mmcblk_partition(char *devpath)
|
|||
uevent_params[4] = '\0';
|
||||
|
||||
if (simulate_uevent("block", devpath, "add", uevent_params) < 0) {
|
||||
LOGE("Error simulating uevent (%m)");
|
||||
LOGE("Error simulating uevent (%s)", strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -35,7 +35,8 @@ int switch_bootstrap()
|
|||
struct dirent *de;
|
||||
|
||||
if (!(d = opendir(SYSFS_CLASS_SWITCH_PATH))) {
|
||||
LOG_ERROR("Unable to open '%s' (%m)", SYSFS_CLASS_SWITCH_PATH);
|
||||
LOG_ERROR("Unable to open '%s' (%s)", SYSFS_CLASS_SWITCH_PATH,
|
||||
strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
|
||||
|
@ -46,8 +47,10 @@ int switch_bootstrap()
|
|||
continue;
|
||||
|
||||
sprintf(tmp, "%s/%s", SYSFS_CLASS_SWITCH_PATH, de->d_name);
|
||||
if (mmc_bootstrap_switch(tmp))
|
||||
LOG_ERROR("Error bootstrapping switch '%s' (%m)", tmp);
|
||||
if (mmc_bootstrap_switch(tmp)) {
|
||||
LOG_ERROR("Error bootstrapping switch '%s' (%s)", tmp,
|
||||
strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
closedir(d);
|
||||
|
|
|
@ -333,7 +333,7 @@ static int handle_block_event(struct uevent *event)
|
|||
min,
|
||||
media,
|
||||
get_uevent_param(event, "DEVTYPE")))) {
|
||||
LOGE("Unable to allocate new blkdev (%m)");
|
||||
LOGE("Unable to allocate new blkdev (%s)", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -354,8 +354,12 @@ static int handle_block_event(struct uevent *event)
|
|||
|
||||
if (blkdev_get_num_pending_partitions(blkdev->disk) == 0) {
|
||||
if ((rc = volmgr_consider_disk(blkdev->disk)) < 0) {
|
||||
LOGE("Volmgr failed to handle device (%d)", rc);
|
||||
return rc;
|
||||
if (rc == -EBUSY) {
|
||||
LOGI("Volmgr not ready to handle device");
|
||||
} else {
|
||||
LOGE("Volmgr failed to handle device (%d)", rc);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (event->action == action_remove) {
|
||||
|
@ -414,7 +418,7 @@ static int handle_mmc_event(struct uevent *event)
|
|||
get_uevent_param(event, "MMC_NAME"),
|
||||
serial,
|
||||
media_mmc))) {
|
||||
LOGE("Unable to allocate new media (%m)");
|
||||
LOGE("Unable to allocate new media (%s)", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
LOGI("New MMC card '%s' (serial %u) added @ %s", media->name,
|
||||
|
|
|
@ -53,6 +53,8 @@ static int ver_minor = 0;
|
|||
static pthread_mutex_t write_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
static int fw_sock = -1;
|
||||
|
||||
int bootstrap = 0;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int door_sock = -1;
|
||||
|
@ -108,6 +110,7 @@ int main(int argc, char **argv)
|
|||
* Bootstrap
|
||||
*/
|
||||
|
||||
bootstrap = 1;
|
||||
// Volume Manager
|
||||
volmgr_bootstrap();
|
||||
|
||||
|
@ -120,6 +123,7 @@ int main(int argc, char **argv)
|
|||
// Switch
|
||||
switch_bootstrap();
|
||||
|
||||
bootstrap = 0;
|
||||
/*
|
||||
* Main loop
|
||||
*/
|
||||
|
|
|
@ -97,4 +97,5 @@ boolean ums_hostconnected_get(void);
|
|||
|
||||
int send_msg(char *msg);
|
||||
int send_msg_with_data(char *msg, char *data);
|
||||
extern int bootstrap;
|
||||
#endif
|
||||
|
|
|
@ -523,8 +523,7 @@ static int _volmgr_consider_disk_and_vol(volume_t *vol, blkdev_t *dev)
|
|||
|
||||
if (vol->state == volstate_unknown ||
|
||||
vol->state == volstate_mounted ||
|
||||
vol->state == volstate_mounted_ro ||
|
||||
vol->state == volstate_damaged) {
|
||||
vol->state == volstate_mounted_ro) {
|
||||
LOGE("Cannot consider volume '%s' because it is in state '%d",
|
||||
vol->mount_point, vol->state);
|
||||
return -EADDRINUSE;
|
||||
|
@ -584,7 +583,7 @@ static int _volmgr_consider_disk_and_vol(volume_t *vol, blkdev_t *dev)
|
|||
LOG_VOL("_volmgr_start(%s, %d:%d) rc = %d",
|
||||
vol->mount_point, part->major, part->minor, rc);
|
||||
#endif
|
||||
if (!rc)
|
||||
if (!rc || rc == -EBUSY)
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1066,6 +1065,13 @@ static int volmgr_start_fs(struct volmgr_fstable_entry *fs, volume_t *vol, blkde
|
|||
|
||||
vol->dev = dev;
|
||||
|
||||
if (bootstrap) {
|
||||
LOGI("Aborting start of %s (bootstrap = %d)\n", vol->mount_point,
|
||||
bootstrap);
|
||||
vol->state = volstate_unmounted;
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
vol->worker_args.start_args.fs = fs;
|
||||
vol->worker_args.start_args.dev = dev;
|
||||
|
||||
|
|
|
@ -51,28 +51,40 @@ int vfat_check(blkdev_t *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
char *args[5];
|
||||
args[0] = FSCK_MSDOS_PATH;
|
||||
args[1] = "-p";
|
||||
args[2] = "-f";
|
||||
args[3] = blkdev_get_devpath(dev);
|
||||
args[4] = NULL;
|
||||
rc = logwrap(4, args, 1);
|
||||
free(args[3]);
|
||||
int pass = 1;
|
||||
do {
|
||||
char *args[5];
|
||||
args[0] = FSCK_MSDOS_PATH;
|
||||
args[1] = "-p";
|
||||
args[2] = "-f";
|
||||
args[3] = blkdev_get_devpath(dev);
|
||||
args[4] = NULL;
|
||||
rc = logwrap(4, args, 1);
|
||||
free(args[3]);
|
||||
|
||||
if (rc == 0) {
|
||||
LOG_VOL("Filesystem check completed OK");
|
||||
return 0;
|
||||
} else if (rc == 2) {
|
||||
LOG_VOL("Filesystem check failed (not a FAT filesystem)");
|
||||
return -ENODATA;
|
||||
} else if (rc == -11) {
|
||||
LOG_VOL("Filesystem check crashed");
|
||||
return -EIO;
|
||||
} else {
|
||||
LOG_VOL("Filesystem check failed (unknown exit code %d)", rc);
|
||||
return -EIO;
|
||||
}
|
||||
if (rc == 0) {
|
||||
LOG_VOL("Filesystem check completed OK");
|
||||
return 0;
|
||||
} else if (rc == 2) {
|
||||
LOG_VOL("Filesystem check failed (not a FAT filesystem)");
|
||||
return -ENODATA;
|
||||
} else if (rc == 4) {
|
||||
if (pass++ <= 3) {
|
||||
LOG_VOL("Filesystem modified - rechecking (pass %d)",
|
||||
pass);
|
||||
continue;
|
||||
} else {
|
||||
LOG_VOL("Failing check after too many rechecks");
|
||||
return -EIO;
|
||||
}
|
||||
} else if (rc == -11) {
|
||||
LOG_VOL("Filesystem check crashed");
|
||||
return -EIO;
|
||||
} else {
|
||||
LOG_VOL("Filesystem check failed (unknown exit code %d)", rc);
|
||||
return -EIO;
|
||||
}
|
||||
} while (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -113,6 +125,21 @@ int vfat_mount(blkdev_t *dev, volume_t *vol, boolean safe_mode)
|
|||
"utf8,uid=1000,gid=1015,fmask=702,dmask=702,shortname=mixed");
|
||||
}
|
||||
|
||||
if (rc == 0) {
|
||||
char *lost_path;
|
||||
asprintf(&lost_path, "%s/LOST.DIR", vol->mount_point);
|
||||
if (access(lost_path, F_OK)) {
|
||||
/*
|
||||
* Create a LOST.DIR in the root so we have somewhere to put
|
||||
* lost cluster chains (fsck_msdos doesn't currently do this)
|
||||
*/
|
||||
if (mkdir(lost_path, 0755)) {
|
||||
LOGE("Unable to create LOST.DIR (%s)", strerror(errno));
|
||||
}
|
||||
}
|
||||
free(lost_path);
|
||||
}
|
||||
|
||||
#if VFAT_DEBUG
|
||||
LOG_VOL("vfat_mount(%s, %d:%d): mount rc = %d", dev->major,k dev->minor,
|
||||
vol->mount_point, rc);
|
||||
|
|
Loading…
Reference in New Issue