On Sun, Jan 08, 2006 at 09:13:21PM -0800, Andrew Morton wrote: > It should be using set_page_dirty_lock(). As should st_unmap_user_pages(). > I doubt if this would explain a refcounting problem though. > > Ryan, It might be worth poisoning the thing, see if the completion is being > called twice: > > > diff -puN drivers/scsi/st.c~a drivers/scsi/st.c > --- devel/drivers/scsi/st.c~a 2006-01-08 21:11:47.000000000 -0800 > +++ devel-akpm/drivers/scsi/st.c 2006-01-08 21:12:13.000000000 -0800 > @@ -4482,11 +4482,12 @@ static int sgl_unmap_user_pages(struct s > struct page *page = sgl[i].page; > > if (dirtied) > - SetPageDirty(page); > + set_page_dirty_lock(page); > /* FIXME: cache flush missing for rw==READ > * FIXME: call the correct reference counting function > */ > page_cache_release(page); > + sgl[i].page = NULL; > } > > return 0; > _ > Which version does this patch apply to? Thanks, -ryan - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html