[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] xl: Need help with overflow and error handling for vif rate support

On Tue, 2012-03-27 at 18:04 +0100, Mathieu Gagnà wrote:
> Hi,
> I'm working a patch to add support for vif rate limiting support to 
> libxl/xl. [1]
> I'm especially working on using uint64_t instead of uint32_t [2] and 
> adding error handling. [3]
> - How should I check for overflows when multiplying 2 uint64_t together?
>    - I'm currently using math.h and log. Is it the correct approach?

You can check if A*B > UINT64_MAX by first checking
        if B != 0 && A > UINT64_MAX/B
                WOULD OVERFLOW

Assuming we are talking about rate_interval_usecs and
rate_bytes_per_interval then rate_interval_usecs can probably be a 32
bit number, UINT32_MAX usecs is something like 71 minutes, which ought
to be plenty. Only rate_bytes_per_interval rally needs to be a 64 bit

> - How should I handle errors?
>    - Should I do something similar to libxlu_disk.c?
>    - Should xlu_vif_parse_rate prints an error and returns an error code?

Yes, I think so. Return an appropriate error code for each failure

>    - If the error is from one of the "helpers", should they print an 
> error too or should xlu_vif_parse_rate deals with it?

Either is fine so long as a message is printed exactly once in the case
of an error. If you can give more specific messages in the helpers then
it likely makes sense to do it there.

> Any help would be greatly appreciated.
> Regards,
> [1] http://lists.xen.org/archives/html/xen-devel/2012-03/msg01596.html
> [2] http://lists.xen.org/archives/html/xen-devel/2012-03/msg01627.html
> [3] http://lists.xen.org/archives/html/xen-devel/2012-03/msg01738.html

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.