  	return (0);
  
   error:
-@@ -1832,13 +1701,11 @@
+@@ -1759,7 +1635,6 @@
+ 		BMPCE_LOCK(e);
+ 		e->bmpce_flags |= BMPCE_EIO;
+ 		DEBUG_BMPCE(PLL_WARN, e, "set BMPCE_EIO");
+-		BMPCE_WAKE(e);
+ 		/*
+ 		 * XXX XXX could this cause a potential dangling
+ 		 * reference problem?
+@@ -1832,13 +1707,11 @@
  __static int
  msl_pages_prefetch(struct bmpc_ioreq *r)
  {

 	DEBUG_BMAP(PLL_INFO, b, "remove biorq=%p nitems_pndg(%d)",
 		   r, pll_nitems(&bmpc->bmpc_pndg_biorqs));
 
@@ -480,82 +436,12 @@
 {
 	struct bmap_pagecache_entry *e;
 	struct bmap_pagecache *bmpc = bmap_2_bmpc(r->biorq_bmap);

     struct pscrpc_async_args *av)
 {
 	struct bmpc_ioreq *r = av->pointer_arg[MSL_CBARG_BIORQ];
@@ -801,34 +662,39 @@
 		OPSTAT_INCR(SLC_OPST_READ_CB_ADD);
 		DYNARRAY_FOREACH(e, i, &r->biorq_pages) {
 			BMPCE_LOCK(e);
