adbd: increment writes_submitted_ before submitting writes.
If we fail to submit writes for some reason (e.g. the USB cable was unplugged), another thread that's waiting on the write mutex can enter SubmitWrites and attempt to resubmit the writes that we already failed to submit, leading to a failed assertion of !IoBlock::pending. Increment writes_submitted_ before actually calling io_submit, so we skip over these writes and fall through to exit. Bug: http://b/129134256 Test: manually unplugged a blueline Change-Id: I2fd0034e45db22c8f637c81039ce686b7aa6a03b
This commit is contained in:
parent
8a5a918ef8
commit
63b52ec13b
1 changed files with 2 additions and 2 deletions
|
@ -552,6 +552,8 @@ struct UsbFfsConnection : public Connection {
|
|||
LOG(VERBOSE) << "submitting write_request " << static_cast<void*>(iocbs[i]);
|
||||
}
|
||||
|
||||
writes_submitted_ += writes_to_submit;
|
||||
|
||||
int rc = io_submit(aio_context_.get(), writes_to_submit, iocbs);
|
||||
if (rc == -1) {
|
||||
HandleError(StringPrintf("failed to submit write requests: %s", strerror(errno)));
|
||||
|
@ -560,8 +562,6 @@ struct UsbFfsConnection : public Connection {
|
|||
LOG(FATAL) << "failed to submit all writes: wanted to submit " << writes_to_submit
|
||||
<< ", actually submitted " << rc;
|
||||
}
|
||||
|
||||
writes_submitted_ += rc;
|
||||
}
|
||||
|
||||
void HandleError(const std::string& error) {
|
||||
|
|
Loading…
Reference in a new issue