On Wed, Jun 15, 2016 at 02:40:53PM -0400, Colin Lord wrote: > 1) Denis Lunev suggested having block_module_load_one return the > loaded driver to reduce duplicated for loops in many of the functions > in block.c. I'd be happy to do this but wasn't completely sure how > error handling would happen in that case since currently the return > value is an integer error code. Would I switch to using the > error handling mechanisms provided in util/error.c?
Yes, change "int foo(...)" to "MyObject *foo(..., Error **errp)". The
Error object allows functions to provide detailed, human-readable error
messages so it can be a win.
If this change would cause a lot of changes you can stop the refactoring
from snowballing using error_setg_errno() to bridge new Error functions
with old int -errno functions:
MyObject *foo(..., Error **errp)
{
/* I don't want propagate Error to all called functions yet, it
* would snowball. So just wrap up the errno:
*/
ret = legacy_function(...);
if (ret < 0) {
error_setg_errno(errp, -ret, "legacy_function failed");
return NULL;
}
}
signature.asc
Description: PGP signature
