Merge "trusty/storage: Add property indicating when fs is ready"
This commit is contained in:
commit
a3e605486d
2 changed files with 28 additions and 1 deletions
|
|
@ -32,11 +32,11 @@ cc_binary {
|
|||
|
||||
shared_libs: [
|
||||
"libbase",
|
||||
"libcutils",
|
||||
"liblog",
|
||||
"libhardware_legacy",
|
||||
],
|
||||
header_libs: [
|
||||
"libcutils_headers",
|
||||
"libgsi_headers",
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
#include <cutils/properties.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <inttypes.h>
|
||||
|
|
@ -43,6 +44,22 @@ enum sync_state {
|
|||
|
||||
static const char *ssdir_name;
|
||||
|
||||
/*
|
||||
* Property set to 1 after we have opened a file under ssdir_name. The backing
|
||||
* files for both TD and TDP are currently located under /data/vendor/ss and can
|
||||
* only be opened once userdata is mounted. This storageproxyd service is
|
||||
* restarted when userdata is available, which causes the Trusty storage service
|
||||
* to reconnect and attempt to open the backing files for TD and TDP. Once we
|
||||
* set this property, other users can expect that the Trusty storage service
|
||||
* ports will be available (although they may block if still being initialized),
|
||||
* and connections will not be reset after this point (assuming the
|
||||
* storageproxyd service stays running).
|
||||
*/
|
||||
#define FS_READY_PROPERTY "ro.vendor.trusty.storage.fs_ready"
|
||||
|
||||
/* has FS_READY_PROPERTY been set? */
|
||||
static bool fs_ready_initialized = false;
|
||||
|
||||
static enum sync_state fs_state;
|
||||
static enum sync_state fd_state[FD_TBL_SIZE];
|
||||
|
||||
|
|
@ -336,6 +353,16 @@ int storage_file_open(struct storage_msg* msg, const void* r, size_t req_len) {
|
|||
ALOGV("%s: \"%s\": fd = %u: handle = %d\n",
|
||||
__func__, path, rc, resp.handle);
|
||||
|
||||
/* a backing file has been opened, notify any waiting init steps */
|
||||
if (!fs_ready_initialized) {
|
||||
rc = property_set(FS_READY_PROPERTY, "1");
|
||||
if (rc == 0) {
|
||||
fs_ready_initialized = true;
|
||||
} else {
|
||||
ALOGE("Could not set property %s, rc: %d\n", FS_READY_PROPERTY, rc);
|
||||
}
|
||||
}
|
||||
|
||||
return ipc_respond(msg, &resp, sizeof(resp));
|
||||
|
||||
err_response:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue