should sz = 0 return -EAGAIN?