...I think your suggestions are OK. In an ideal world we could work to reduce the many signed/unsigned conversions, which make me dizzy. I think the ones that really cause problems are large unsigned int values which are converted to int and then either to sector_t (except on 32-bit systems without LBDAF) or to unsigned long on 64-bit systems.
If you agree with these changes, I'll update your patch and merge it to my
tree (along with the other two changes which look good to me).