projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] vm: add per-zone writeout counter
[linux-2.6-microblaze.git]
/
mm
/
truncate.c
diff --git
a/mm/truncate.c
b/mm/truncate.c
index
cf1b015
..
c6ab55e
100644
(file)
--- a/
mm/truncate.c
+++ b/
mm/truncate.c
@@
-68,10
+68,10
@@
invalidate_complete_page(struct address_space *mapping, struct page *page)
return 0;
write_lock_irq(&mapping->tree_lock);
return 0;
write_lock_irq(&mapping->tree_lock);
- if (PageDirty(page))
{
-
write_unlock_irq(&mapping->tree_lock)
;
- return 0;
- }
+ if (PageDirty(page))
+
goto failed
;
+ if (page_count(page) != 2) /* caller's ref + pagecache ref */
+ goto failed;
BUG_ON(PagePrivate(page));
__remove_from_page_cache(page);
BUG_ON(PagePrivate(page));
__remove_from_page_cache(page);
@@
-79,6
+79,9
@@
invalidate_complete_page(struct address_space *mapping, struct page *page)
ClearPageUptodate(page);
page_cache_release(page); /* pagecache ref */
return 1;
ClearPageUptodate(page);
page_cache_release(page); /* pagecache ref */
return 1;
+failed:
+ write_unlock_irq(&mapping->tree_lock);
+ return 0;
}
/**
}
/**