From 6c4b34bf750efec94cdb1b5b4851d46ea21dfffc Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 4 Feb 2002 20:08:16 -0800 Subject: v2.4.7.7 -> v2.4.7.8 - Jeff Hartmann: serverworks AGP gart unload memory leak fix - Marcelo Tosatti: make zone_inactive_shortage() return how big the shortage is. - Hugh Dickins: tidy up age_page_down() - Al Viro: super block handling cleanups --- include/linux/fs.h | 9 ++++++--- include/linux/mount.h | 1 - include/linux/pagemap.h | 4 +++- include/linux/swap.h | 3 --- 4 files changed, 9 insertions(+), 8 deletions(-) (limited to 'include/linux') diff --git a/include/linux/fs.h b/include/linux/fs.h index a2d4abe3daf6..2512dbe7393b 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -61,7 +61,6 @@ struct inodes_stat_t { }; extern struct inodes_stat_t inodes_stat; -extern int max_super_blocks, nr_super_blocks; extern int leases_enable, dir_notify_enable, lease_break_time; #define NR_FILE 8192 /* this can well be larger on a larger system */ @@ -663,6 +662,7 @@ struct quota_mount_options #include extern struct list_head super_blocks; +extern spinlock_t sb_lock; #define sb_entry(list) list_entry((list), struct super_block, s_list) struct super_block { @@ -680,13 +680,14 @@ struct super_block { struct dentry *s_root; struct rw_semaphore s_umount; struct semaphore s_lock; + int s_count; + atomic_t s_active; struct list_head s_dirty; /* dirty inodes */ struct list_head s_locked_inodes;/* inodes being synced */ struct list_head s_files; struct block_device *s_bdev; - struct list_head s_mounts; /* vfsmount(s) of this one */ struct quota_mount_options s_dquot; /* Diskquota specific options */ union { @@ -1161,6 +1162,7 @@ extern void write_inode_now(struct inode *, int); extern void sync_dev(kdev_t); extern int fsync_dev(kdev_t); extern int fsync_super(struct super_block *); +extern int fsync_no_super(kdev_t); extern void sync_inodes_sb(struct super_block *); extern int fsync_inode_buffers(struct inode *); extern int osync_inode_buffers(struct inode *); @@ -1358,11 +1360,12 @@ extern int dcache_readdir(struct file *, void *, filldir_t); extern struct file_system_type *get_fs_type(const char *name); extern struct super_block *get_super(kdev_t); +extern void drop_super(struct super_block *sb); static inline int is_mounted(kdev_t dev) { struct super_block *sb = get_super(dev); if (sb) { - /* drop_super(sb); will go here */ + drop_super(sb); return 1; } return 0; diff --git a/include/linux/mount.h b/include/linux/mount.h index 6d36acbc4c95..2fee6724727a 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h @@ -18,7 +18,6 @@ struct vfsmount struct vfsmount *mnt_parent; /* fs we are mounted on */ struct dentry *mnt_mountpoint; /* dentry of mountpoint */ struct dentry *mnt_root; /* root of the mounted tree */ - struct list_head mnt_instances; /* other vfsmounts of the same fs */ struct super_block *mnt_sb; /* pointer to superblock */ struct list_head mnt_mounts; /* list of children, anchored here */ struct list_head mnt_child; /* and going through their mnt_child */ diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 47845c644dba..aaa89db79be4 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -72,7 +72,9 @@ static inline unsigned long _page_hashfn(struct address_space * mapping, unsigne #define page_hash(mapping,index) (page_hash_table+_page_hashfn(mapping,index)) extern struct page * __find_get_page(struct address_space *mapping, - unsigned long offset, struct page **hash); + unsigned long index, struct page **hash); +#define find_get_page(mapping, index) \ + __find_get_page(mapping, index, page_hash(mapping, index)) extern struct page * __find_lock_page (struct address_space * mapping, unsigned long index, struct page **hash); extern void lock_page(struct page *page); diff --git a/include/linux/swap.h b/include/linux/swap.h index 60e43d5519b0..1d4b0a07d285 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -100,9 +100,6 @@ struct zone_t; /* linux/mm/swap.c */ extern int memory_pressure; -extern void age_page_down(struct page *); -extern void age_page_down_nolock(struct page *); -extern void age_page_down_ageonly(struct page *); extern void deactivate_page(struct page *); extern void deactivate_page_nolock(struct page *); extern void activate_page(struct page *); -- cgit v1.2.3