Now if you run
select * from t where i=1 with lock;
it results in writing broken record version and the next run
select * from t where i=1;
will lead to bugcheck.
VIO_writelock always sure that it writes delta but in case of example after restore calculated fields there are two formats. VIO_writelock writes a full version of format 1 but not a delta but the functions always set delta flag. To fix it's enough to copy correct behaviour from VIO_modify.