Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67e38124 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6:
  JFS: Fix multiple errors in metapage_releasepage
parents 27865454 b964638f
Loading
Loading
Loading
Loading
+5 −15
Original line number Diff line number Diff line
@@ -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) {
@@ -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)