Index: ufs/ffs/ffs_softdep.c =================================================================== RCS file: /usr/cvs/src/sys/ufs/ffs/ffs_softdep.c,v retrieving revision 1.188 diff -u -r1.188 ffs_softdep.c --- ufs/ffs/ffs_softdep.c 9 Jan 2006 19:32:21 -0000 1.188 +++ ufs/ffs/ffs_softdep.c 23 Feb 2006 20:01:15 -0000 @@ -3565,7 +3565,7 @@ struct buf *bp; /* structure describing disk write to occur */ { struct worklist *wk; - struct worklist marker; + struct worklist *marker; struct indirdep *indirdep; struct inodedep *inodedep; @@ -3576,16 +3576,17 @@ if (bp->b_iocmd != BIO_WRITE) panic("softdep_disk_io_initiation: not write"); - marker.wk_type = D_LAST + 1; /* Not a normal workitem */ - PHOLD(curproc); /* Don't swap out kernel stack */ + MALLOC(marker, struct worklist *, sizeof(struct worklist), + M_BUF, M_SOFTDEP_FLAGS); + marker->wk_type = D_LAST + 1; /* Not a normal workitem */ ACQUIRE_LOCK(&lk); /* * Do any necessary pre-I/O processing. */ for (wk = LIST_FIRST(&bp->b_dep); wk != NULL; - wk = markernext(&marker)) { - LIST_INSERT_AFTER(wk, &marker, wk_list); + wk = markernext(marker)) { + LIST_INSERT_AFTER(wk, marker, wk_list); switch (wk->wk_type) { case D_PAGEDEP: @@ -3650,7 +3651,7 @@ } } FREE_LOCK(&lk); - PRELE(curproc); /* Allow swapout of kernel stack */ + FREE(marker, M_BUF); } /*