Block status: does it change the status quo?

Checking whether a block is already zero will eliminate the need to write zeroes to that block, but at what cost?

block status reports hole block status reports data write zeroes

O(1) server O(n) server
no block status    
block status sees zero    
block status sees data        
block status is slow        

If checking once per block is bad, can we instead check once per image?

Or why even check - what if we ensure the image starts with all zeroes?