Should always call finish_transfer() for inplace handling, just like