storageproxy: Support POST_COMMIT sync for all commands
Previously we did not support STORAGE_MSG_FLAG_POST_COMMIT for anything
but RPMB operations (in which case it was a no-op). We need to support
this flag in order to store a superblock in non-secure storage, as we
need that write to commit atomically wrt all other writes.
Test: com.android.storage-unittest.nsp
Bug: 228793975
Change-Id: Ia453c1916970e0b65a91e42f18b920ac4e1f01db
Merged-In: Ia453c1916970e0b65a91e42f18b920ac4e1f01db
(cherry picked from commit 57770a5318)
This commit is contained in:
parent
c134d822c5
commit
5b02ed521c
2 changed files with 12 additions and 3 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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_GENERIC;
|
||||
goto err_response;
|
||||
}
|
||||
}
|
||||
|
||||
msg->result = STORAGE_NO_ERROR;
|
||||
|
||||
err_response:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue