Managing user disk space
Drupal does all the work.

I made a call to file_validate_size() in my hook_file_validate() handler.  I also made an admin form to modify each role's allowable space (using variable_get/set), and it works great.

Next step is to create a table containing non-default values (keyed by uid), and an admin tool to set individual users' allowable space.  I'll then update my hook_file_validate() handler to check for the user in that table.  If not, then check the default.