Loading fs/jfs/jfs_metapage.c +5 −15 Original line number Diff line number Diff line Loading @@ -542,7 +542,7 @@ static int metapage_readpage(struct file *fp, struct page *page) static int metapage_releasepage(struct page *page, gfp_t gfp_mask) { struct metapage *mp; int busy = 0; int ret = 1; unsigned int offset; for (offset = 0; offset < PAGE_CACHE_SIZE; offset += PSIZE) { Loading @@ -552,30 +552,20 @@ static int metapage_releasepage(struct page *page, gfp_t gfp_mask) continue; jfs_info("metapage_releasepage: mp = 0x%p", mp); if (mp->count || mp->nohomeok) { if (mp->count || mp->nohomeok || test_bit(META_dirty, &mp->flag)) { jfs_info("count = %ld, nohomeok = %d", mp->count, mp->nohomeok); busy = 1; ret = 0; continue; } wait_on_page_writeback(page); //WARN_ON(test_bit(META_dirty, &mp->flag)); if (test_bit(META_dirty, &mp->flag)) { dump_mem("dirty mp in metapage_releasepage", mp, sizeof(struct metapage)); dump_mem("page", page, sizeof(struct page)); dump_stack(); } if (mp->lsn) remove_from_logsync(mp); remove_metapage(page, mp); INCREMENT(mpStat.pagefree); free_metapage(mp); } if (busy) return -1; return 0; return ret; } static void metapage_invalidatepage(struct page *page, unsigned long offset) Loading Loading
fs/jfs/jfs_metapage.c +5 −15 Original line number Diff line number Diff line Loading @@ -542,7 +542,7 @@ static int metapage_readpage(struct file *fp, struct page *page) static int metapage_releasepage(struct page *page, gfp_t gfp_mask) { struct metapage *mp; int busy = 0; int ret = 1; unsigned int offset; for (offset = 0; offset < PAGE_CACHE_SIZE; offset += PSIZE) { Loading @@ -552,30 +552,20 @@ static int metapage_releasepage(struct page *page, gfp_t gfp_mask) continue; jfs_info("metapage_releasepage: mp = 0x%p", mp); if (mp->count || mp->nohomeok) { if (mp->count || mp->nohomeok || test_bit(META_dirty, &mp->flag)) { jfs_info("count = %ld, nohomeok = %d", mp->count, mp->nohomeok); busy = 1; ret = 0; continue; } wait_on_page_writeback(page); //WARN_ON(test_bit(META_dirty, &mp->flag)); if (test_bit(META_dirty, &mp->flag)) { dump_mem("dirty mp in metapage_releasepage", mp, sizeof(struct metapage)); dump_mem("page", page, sizeof(struct page)); dump_stack(); } if (mp->lsn) remove_from_logsync(mp); remove_metapage(page, mp); INCREMENT(mpStat.pagefree); free_metapage(mp); } if (busy) return -1; return 0; return ret; } static void metapage_invalidatepage(struct page *page, unsigned long offset) Loading