diff --git a/fs/jfs/jfs_logmgr.c b/fs/jfs/jfs_logmgr.c index b343c5ea1159..e61a7f02b14d 100644 --- a/fs/jfs/jfs_logmgr.c +++ b/fs/jfs/jfs_logmgr.c @@ -1860,6 +1860,7 @@ static void lbmLogShutdown(struct jfs_log * log) lbuf = log->lbuf_free; while (lbuf) { struct lbuf *next = lbuf->l_freelist; + lbmIOWait(lbuf, 0); __free_page(lbuf->l_page); kfree(lbuf); lbuf = next; @@ -2146,10 +2147,9 @@ static int lbmIOWait(struct lbuf * bp, int flag) jfs_info("lbmIOWait1: bp:0x%p flag:0x%x:0x%x", bp, bp->l_flag, flag); - LCACHE_LOCK(flags); /* disable+lock */ - LCACHE_SLEEP_COND(bp->l_ioevent, (bp->l_flag & lbmDONE), flags); + LCACHE_LOCK(flags); /* disable+lock */ rc = (bp->l_flag & lbmERROR) ? -EIO : 0; if (flag & lbmFREE)