Changeset View
Changeset View
Standalone View
Standalone View
sys/geom/geom_dev.c
Context not available. | |||||
* time can be is likewise. We make this ioctl | * time can be is likewise. We make this ioctl | ||||
* interruptible by checking for signals for each bio. | * interruptible by checking for signals for each bio. | ||||
*/ | */ | ||||
if (SIGPENDING(td)) | if (length > 0 && SIGPENDING(td)) { | ||||
imp: Why add a length check? | |||||
ron.steinke_dell.comAuthorUnsubmitted Done Inline ActionsCurrently 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. ron.steinke_dell.com: Currently if you get signal during the last BIO_DELETE biodone(), you'll succeed. That's… | |||||
rang_acm.orgUnsubmitted Not Done Inline ActionsIf the length is 0, we’ll be exiting anyway, and the DELETE operation has completed, so the EINTR wouldn’t convey any useful information. At least, that’s my guess. rang_acm.org: If the length is 0, we’ll be exiting anyway, and the DELETE operation has completed, so the… | |||||
error = EINTR; | |||||
break; | break; | ||||
} | |||||
} | } | ||||
break; | break; | ||||
case DIOCGIDENT: | case DIOCGIDENT: | ||||
Context not available. |
Why add a length check?