Merge "adb: split up reads longer than 16k."
diff --git a/metricsd/etc/weaved/traits/metrics.json b/metricsd/etc/weaved/traits/metrics.json
index 7d17c77..7583270 100644
--- a/metricsd/etc/weaved/traits/metrics.json
+++ b/metricsd/etc/weaved/traits/metrics.json
@@ -1,15 +1,17 @@
{
"_metrics": {
"commands": {
- "_enableAnalyticsReporting": {
- "minimalRole": "manager"
+ "enableAnalyticsReporting": {
+ "minimalRole": "manager",
+ "parameters": {}
},
- "_disableAnalyticsReporting": {
- "minimalRole": "manager"
+ "disableAnalyticsReporting": {
+ "minimalRole": "manager",
+ "parameters": {}
}
},
"state": {
- "_AnalyticsReportingState": {
+ "analyticsReportingState": {
"type": "string",
"enum": [ "enabled", "disabled" ]
}
diff --git a/metricsd/metrics_collector.cc b/metricsd/metrics_collector.cc
index b5c2289..e9edf2e 100644
--- a/metricsd/metrics_collector.cc
+++ b/metricsd/metrics_collector.cc
@@ -229,11 +229,11 @@
device_->AddComponent(kWeaveComponent, {"_metrics"});
device_->AddCommandHandler(
kWeaveComponent,
- "_metrics._enableAnalyticsReporting",
+ "_metrics.enableAnalyticsReporting",
base::Bind(&MetricsCollector::OnEnableMetrics, base::Unretained(this)));
device_->AddCommandHandler(
kWeaveComponent,
- "_metrics._disableAnalyticsReporting",
+ "_metrics.disableAnalyticsReporting",
base::Bind(&MetricsCollector::OnDisableMetrics, base::Unretained(this)));
latest_cpu_use_microseconds_ = cpu_usage_collector_->GetCumulativeCpuUse();
@@ -294,7 +294,7 @@
metrics_lib_->AreMetricsEnabled() ? "enabled" : "disabled";
if (!device_->SetStateProperty(kWeaveComponent,
- "_metrics._AnalyticsReportingState",
+ "_metrics.analyticsReportingState",
enabled,
nullptr)) {
LOG(ERROR) << "failed to update weave's state";
diff --git a/sdcard/sdcard.c b/sdcard/sdcard.c
index b6bbe7e..45efe36 100644
--- a/sdcard/sdcard.c
+++ b/sdcard/sdcard.c
@@ -507,6 +507,16 @@
}
}
+static void derive_permissions_recursive_locked(struct fuse* fuse, struct node *parent) {
+ struct node *node;
+ for (node = parent->child; node; node = node->next) {
+ derive_permissions_locked(fuse, parent, node);
+ if (node->child) {
+ derive_permissions_recursive_locked(fuse, node);
+ }
+ }
+}
+
/* Kernel has already enforced everything we returned through
* derive_permissions_locked(), so this is used to lock down access
* even further, such as enforcing that apps hold sdcard_rw. */
@@ -1145,6 +1155,8 @@
res = rename_node_locked(child_node, new_name, new_actual_name);
if (!res) {
remove_node_from_parent_locked(child_node);
+ derive_permissions_locked(fuse, new_parent_node, child_node);
+ derive_permissions_recursive_locked(fuse, child_node);
add_node_to_parent_locked(child_node, new_parent_node);
}
goto done;
@@ -1654,6 +1666,9 @@
TRACE("read_package_list: found %zu packages\n",
hashmapSize(global->package_to_appid));
+ /* Regenerate ownership details using newly loaded mapping */
+ derive_permissions_recursive_locked(global->fuse_default, &global->root);
+
pthread_mutex_unlock(&global->lock);
return rc;