As this code runs in 'monitor' it cannot just free memory,
it must add it to a list for 'manager' to free.
Fortunate update->space_list exists for just this purpose.
dl->devname might be small, so put it in update->space and
put dl in update->space_list.
Signed-off-by: NeilBrown <neilb@suse.de>
if (dl->pdnum == (signed)ent) {
close(dl->fd);
dl->fd = -1;
- /* FIXME this doesn't free
- * dl->devname */
- update->space = dl;
*dlp = dl->next;
+ update->space = dl->devname;
+ *(void**)dl = update->space_list;
+ update->space_list = (void**)dl;
break;
}
}