Tradeoff: how much complexity

Tradeoffs in implementation complexity
Lots of knobs in the NBD spec Mandate all-or-none server implementation
Pro
  • Implement as much or as little as convenient for the server
  • Matches reality that no one resize solution fits all
  • Easier interoperability testing
  • Client can rely on all servers giving same response
Con
  • More combinations requires more testing
  • Odd or untested combinations could produce weird behaviors or even CVEs
  • Clients must be prepared for more fallbacks
  • NBD protocol tries to be as simple as possible
  • Not all tradeoffs map easily to existing implementation
  • Open-ended structured replies requires more efforts for writing a compliant server