projects
/
linux-2.6-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'acpica'
[linux-2.6-block.git]
/
mm
/
page_io.c
diff --git
a/mm/page_io.c
b/mm/page_io.c
index 18aac7819cc97b4f2b9fe834600a30614d3e8b33..985f23cfa79b75d3b38fad9bfa5cdf4385f7c8e4 100644
(file)
--- a/
mm/page_io.c
+++ b/
mm/page_io.c
@@
-252,7
+252,7
@@
out:
static sector_t swap_page_sector(struct page *page)
{
static sector_t swap_page_sector(struct page *page)
{
- return (sector_t)__page_file_index(page) << (PAGE_
CACHE_
SHIFT - 9);
+ return (sector_t)__page_file_index(page) << (PAGE_SHIFT - 9);
}
int __swap_writepage(struct page *page, struct writeback_control *wbc,
}
int __swap_writepage(struct page *page, struct writeback_control *wbc,
@@
-353,7
+353,11
@@
int swap_readpage(struct page *page)
ret = bdev_read_page(sis->bdev, swap_page_sector(page), page);
if (!ret) {
ret = bdev_read_page(sis->bdev, swap_page_sector(page), page);
if (!ret) {
- swap_slot_free_notify(page);
+ if (trylock_page(page)) {
+ swap_slot_free_notify(page);
+ unlock_page(page);
+ }
+
count_vm_event(PSWPIN);
return 0;
}
count_vm_event(PSWPIN);
return 0;
}