 - It is impossible to run request_cleanup() while doing a copyonwrite.    This will most likely cause new block allocations which can recurse    into request cleanup.  - While here optimize the ufs locking slightly.  We need only acquire and    drop once.  - process_removes() and process_truncates() also is only needed once.  - Attempt to flush each item on the worklist once but do not loop forever    if some can not be completed.
 - It is impossible to run request_cleanup() while doing a copyonwrite.
   This will most likely cause new block allocations which can recurse
   into request cleanup.
 - While here optimize the ufs locking slightly.  We need only acquire and
   drop once.
 - process_removes() and process_truncates() also is only needed once.
 - Attempt to flush each item on the worklist once but do not loop forever
   if some can not be completed.

Discussed with:	mckusick

jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase