| Kernel v2.4.13-ac4 /mm/shmem.c |
|---|
 2.4.13-ac4
 mm
 shmem.c
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla/mm/shmem.c linux.ac/mm/shmem.c
--- linux.vanilla/mm/shmem.c Thu Oct 25 16:26:39 2001
+++ linux.ac/mm/shmem.c Fri Oct 26 22:29:37 2001
@@ -47,10 +47,15 @@
LIST_HEAD (shmem_inodes);
static spinlock_t shmem_ilock = SPIN_LOCK_UNLOCKED;
-atomic_t shmem_nrpages = ATOMIC_INIT(0); /* Not used right now */
+atomic_t shmem_nrpages = ATOMIC_INIT(0);
#define BLOCKS_PER_PAGE (PAGE_CACHE_SIZE/512)
+static void shmem_removepage(struct page *page)
+{
+ atomic_dec(&shmem_nrpages);
+}
+
/*
* shmem_recalc_inode - recalculate the size of an inode
*
@@ -388,6 +393,7 @@
found:
delete_from_swap_cache(page);
add_to_page_cache(page, info->inode->i_mapping, offset + idx);
+ atomic_inc(&shmem_nrpages);
SetPageDirty(page);
SetPageUptodate(page);
info->swapped--;
@@ -465,6 +471,7 @@
* Add page back to page cache, unref swap, try again.
*/
add_to_page_cache_locked(page, mapping, index);
+ atomic_inc(&shmem_nrpages);
spin_unlock(&info->lock);
swap_free(swap);
goto getswap;
@@ -587,6 +594,7 @@
}
/* We have the page */
+ atomic_inc(&shmem_nrpages);
SetPageUptodate(page);
if (info->locked)
page_cache_get(page);
@@ -1351,6 +1359,7 @@
static struct address_space_operations shmem_aops = {
+ removepage: shmem_removepage,
writepage: shmem_writepage,
};
|