diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-08-07 15:26:12 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-08-07 15:26:12 +0000 |
commit | d1aa4beeefc67170949dbbc937f1473c43db534b (patch) | |
tree | d357149816747c2cee788e2b33411f1b0920a9db | |
parent | a63bc4e751e90f86bc111dd59dd0dec5eccef36f (diff) | |
parent | daf694c5b48c31a88a7e31e344c8640ab89c743f (diff) | |
download | core-android13-d1-s3-release.tar.gz |
Merge cherrypicks of [19517836, 19517837] into tm-d1-release.android-13.0.0_r9android-13.0.0_r15android-13.0.0_r14android-13.0.0_r13android-13.0.0_r11android-13.0.0_r10android13-d1-s3-releaseandroid13-d1-s2-releaseandroid13-d1-s1-releaseandroid13-d1-release
Change-Id: I881441a3d7f27972b16af4f2a0d8bae9e864d846
-rw-r--r-- | trusty/storage/interface/include/trusty/interface/storage.h | 4 | ||||
-rw-r--r-- | trusty/storage/proxy/proxy.c | 9 | ||||
-rw-r--r-- | trusty/storage/proxy/storage.c | 8 |
3 files changed, 17 insertions, 4 deletions
diff --git a/trusty/storage/interface/include/trusty/interface/storage.h b/trusty/storage/interface/include/trusty/interface/storage.h index 3f1dcb8c6..255ade127 100644 --- a/trusty/storage/interface/include/trusty/interface/storage.h +++ b/trusty/storage/interface/include/trusty/interface/storage.h @@ -70,6 +70,9 @@ enum storage_cmd { * @STORAGE_ERR_TRANSACT returned by various operations to indicate that current transaction * is in error state. Such state could be only cleared by sending * STORAGE_END_TRANSACTION message. + * @STORAGE_ERR_SYNC_FAILURE indicates that the current operation failed to sync + * to disk. Only returned if STORAGE_MSG_FLAG_PRE_COMMIT or + * STORAGE_MSG_FLAG_POST_COMMIT was set for the request. */ enum storage_err { STORAGE_NO_ERROR = 0, @@ -80,6 +83,7 @@ enum storage_err { STORAGE_ERR_NOT_FOUND = 5, STORAGE_ERR_EXIST = 6, STORAGE_ERR_TRANSACT = 7, + STORAGE_ERR_SYNC_FAILURE = 8, }; /** diff --git a/trusty/storage/proxy/proxy.c b/trusty/storage/proxy/proxy.c index 262003427..f01589287 100644 --- a/trusty/storage/proxy/proxy.c +++ b/trusty/storage/proxy/proxy.c @@ -116,10 +116,11 @@ static int drop_privs(void) { static int handle_req(struct storage_msg* msg, const void* req, size_t req_len) { int rc; - if ((msg->flags & STORAGE_MSG_FLAG_POST_COMMIT) && (msg->cmd != STORAGE_RPMB_SEND)) { + if ((msg->flags & STORAGE_MSG_FLAG_POST_COMMIT) && msg->cmd != STORAGE_RPMB_SEND && + msg->cmd != STORAGE_FILE_WRITE) { /* - * handling post commit messages on non rpmb commands are not - * implemented as there is no use case for this yet. + * handling post commit messages on commands other than rpmb and write + * operations are not implemented as there is no use case for this yet. */ ALOGE("cmd 0x%x: post commit option is not implemented\n", msg->cmd); msg->result = STORAGE_ERR_UNIMPLEMENTED; @@ -129,7 +130,7 @@ static int handle_req(struct storage_msg* msg, const void* req, size_t req_len) if (msg->flags & STORAGE_MSG_FLAG_PRE_COMMIT) { rc = storage_sync_checkpoint(); if (rc < 0) { - msg->result = STORAGE_ERR_GENERIC; + msg->result = STORAGE_ERR_SYNC_FAILURE; return ipc_respond(msg, NULL, 0); } } diff --git a/trusty/storage/proxy/storage.c b/trusty/storage/proxy/storage.c index c00c399d9..c531cfd13 100644 --- a/trusty/storage/proxy/storage.c +++ b/trusty/storage/proxy/storage.c @@ -407,6 +407,14 @@ int storage_file_write(struct storage_msg *msg, goto err_response; } + if (msg->flags & STORAGE_MSG_FLAG_POST_COMMIT) { + rc = storage_sync_checkpoint(); + if (rc < 0) { + msg->result = STORAGE_ERR_SYNC_FAILURE; + goto err_response; + } + } + msg->result = STORAGE_NO_ERROR; err_response: |