Current code bails out, but doesn't set an error. Set error to EINTR.
Unit Tests Skipped
Currently if you get signal during the last BIO_DELETE biodone(), you'll succeed. That's correct, as you've done all the work by the time you get the signal. Add the length check to avoid an unnecessary EINTR failure in that case.
This also means deletes which are small enough to only need a single pass will never see EINTR here, which may help preserve existing behavior for some cases.