  
  		BMPCE_ULOCK(e);
  
-@@ -1729,6 +1629,12 @@
+@@ -1729,6 +1592,12 @@
  		pscrpc_set_remove_req(r->biorq_rqset, rq);
  		goto error;
  	}

 {
 	struct bmap_pagecache_entry *e,
 	    **bmpces = args->pointer_arg[MSL_CBARG_BMPCE];
@@ -1161,17 +1023,23 @@
 
 		DEBUG_BMPCE(rc ? PLL_ERROR : PLL_INFO, e, "rc=%d", rc);
 

+		psc_waitq_wakeall(&msl_fhent_flush_waitq);
+	}
+	BIORQ_ULOCK(r);
+	if (!q->mfsrq_err && rc)
+		q->mfsrq_err = rc;
+	MFH_URLOCK(q->mfsrq_fh, locked);
 
-	if ((r->biorq_flags & BIORQ_AIOWAIT) && !msl_biorq_aio_decref(r))
