patch-2.4.3 linux/mm/filemap.c
Next file: linux/mm/memory.c
Previous file: linux/lib/vsprintf.c
Back to the patch index
Back to the overall index
- Lines: 118
- Date:
Fri Mar 23 14:38:48 2001
- Orig file:
v2.4.2/linux/mm/filemap.c
- Orig date:
Wed Feb 21 18:20:46 2001
diff -u --recursive --new-file v2.4.2/linux/mm/filemap.c linux/mm/filemap.c
@@ -559,7 +559,7 @@
if (page)
return 0;
- page = page_cache_alloc();
+ page = page_cache_alloc(mapping);
if (!page)
return -ENOMEM;
@@ -659,7 +659,7 @@
/*
* a rather lightweight function, finding and getting a reference to a
- * hashed page atomically, waiting for it if it's locked.
+ * hashed page atomically.
*/
struct page * __find_get_page(struct address_space *mapping,
unsigned long offset, struct page **hash)
@@ -679,7 +679,8 @@
}
/*
- * Get the lock to a page atomically.
+ * Same as the above, but lock the page too, verifying that
+ * it's still valid once we own it.
*/
struct page * __find_lock_page (struct address_space *mapping,
unsigned long offset, struct page **hash)
@@ -1174,7 +1175,7 @@
*/
if (!cached_page) {
spin_unlock(&pagecache_lock);
- cached_page = page_cache_alloc();
+ cached_page = page_cache_alloc(mapping);
if (!cached_page) {
desc->error = -ENOMEM;
break;
@@ -1474,7 +1475,7 @@
*/
old_page = page;
if (no_share) {
- struct page *new_page = page_cache_alloc();
+ struct page *new_page = alloc_page(GFP_HIGHUSER);
if (new_page) {
copy_user_highpage(new_page, old_page, address);
@@ -1752,7 +1753,7 @@
struct vm_area_struct * vma;
int unmapped_error, error = -EINVAL;
- down(¤t->mm->mmap_sem);
+ down_read(¤t->mm->mmap_sem);
if (start & ~PAGE_MASK)
goto out;
len = (len + ~PAGE_MASK) & PAGE_MASK;
@@ -1798,7 +1799,7 @@
vma = vma->vm_next;
}
out:
- up(¤t->mm->mmap_sem);
+ up_read(¤t->mm->mmap_sem);
return error;
}
@@ -2097,7 +2098,7 @@
int unmapped_error = 0;
int error = -EINVAL;
- down(¤t->mm->mmap_sem);
+ down_write(¤t->mm->mmap_sem);
if (start & ~PAGE_MASK)
goto out;
@@ -2148,7 +2149,7 @@
}
out:
- up(¤t->mm->mmap_sem);
+ up_write(¤t->mm->mmap_sem);
return error;
}
@@ -2250,7 +2251,7 @@
int unmapped_error = 0;
long error = -EINVAL;
- down(¤t->mm->mmap_sem);
+ down_read(¤t->mm->mmap_sem);
if (start & ~PAGE_CACHE_MASK)
goto out;
@@ -2302,7 +2303,7 @@
}
out:
- up(¤t->mm->mmap_sem);
+ up_read(¤t->mm->mmap_sem);
return error;
}
@@ -2319,7 +2320,7 @@
page = __find_get_page(mapping, index, hash);
if (!page) {
if (!cached_page) {
- cached_page = page_cache_alloc();
+ cached_page = page_cache_alloc(mapping);
if (!cached_page)
return ERR_PTR(-ENOMEM);
}
@@ -2382,7 +2383,7 @@
page = __find_lock_page(mapping, index, hash);
if (!page) {
if (!*cached_page) {
- *cached_page = page_cache_alloc();
+ *cached_page = page_cache_alloc(mapping);
if (!*cached_page)
return NULL;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)