diff options
Diffstat (limited to 'fs/inode.c')
| -rw-r--r-- | fs/inode.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/fs/inode.c b/fs/inode.c index 3a2446a27d2c..abf77471e6c4 100644 --- a/fs/inode.c +++ b/fs/inode.c | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | * (C) 1997 Linus Torvalds | 4 | * (C) 1997 Linus Torvalds |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #include <linux/config.h> | ||
| 8 | #include <linux/fs.h> | 7 | #include <linux/fs.h> |
| 9 | #include <linux/mm.h> | 8 | #include <linux/mm.h> |
| 10 | #include <linux/dcache.h> | 9 | #include <linux/dcache.h> |
| @@ -102,7 +101,7 @@ static kmem_cache_t * inode_cachep __read_mostly; | |||
| 102 | 101 | ||
| 103 | static struct inode *alloc_inode(struct super_block *sb) | 102 | static struct inode *alloc_inode(struct super_block *sb) |
| 104 | { | 103 | { |
| 105 | static struct address_space_operations empty_aops; | 104 | static const struct address_space_operations empty_aops; |
| 106 | static struct inode_operations empty_iops; | 105 | static struct inode_operations empty_iops; |
| 107 | static const struct file_operations empty_fops; | 106 | static const struct file_operations empty_fops; |
| 108 | struct inode *inode; | 107 | struct inode *inode; |
| @@ -134,7 +133,6 @@ static struct inode *alloc_inode(struct super_block *sb) | |||
| 134 | inode->i_bdev = NULL; | 133 | inode->i_bdev = NULL; |
| 135 | inode->i_cdev = NULL; | 134 | inode->i_cdev = NULL; |
| 136 | inode->i_rdev = 0; | 135 | inode->i_rdev = 0; |
| 137 | inode->i_security = NULL; | ||
| 138 | inode->dirtied_when = 0; | 136 | inode->dirtied_when = 0; |
| 139 | if (security_inode_alloc(inode)) { | 137 | if (security_inode_alloc(inode)) { |
| 140 | if (inode->i_sb->s_op->destroy_inode) | 138 | if (inode->i_sb->s_op->destroy_inode) |
| @@ -164,7 +162,7 @@ static struct inode *alloc_inode(struct super_block *sb) | |||
| 164 | bdi = sb->s_bdev->bd_inode->i_mapping->backing_dev_info; | 162 | bdi = sb->s_bdev->bd_inode->i_mapping->backing_dev_info; |
| 165 | mapping->backing_dev_info = bdi; | 163 | mapping->backing_dev_info = bdi; |
| 166 | } | 164 | } |
| 167 | memset(&inode->u, 0, sizeof(inode->u)); | 165 | inode->i_private = 0; |
| 168 | inode->i_mapping = mapping; | 166 | inode->i_mapping = mapping; |
| 169 | } | 167 | } |
| 170 | return inode; | 168 | return inode; |
| @@ -255,9 +253,9 @@ void clear_inode(struct inode *inode) | |||
| 255 | DQUOT_DROP(inode); | 253 | DQUOT_DROP(inode); |
| 256 | if (inode->i_sb && inode->i_sb->s_op->clear_inode) | 254 | if (inode->i_sb && inode->i_sb->s_op->clear_inode) |
| 257 | inode->i_sb->s_op->clear_inode(inode); | 255 | inode->i_sb->s_op->clear_inode(inode); |
| 258 | if (inode->i_bdev) | 256 | if (S_ISBLK(inode->i_mode) && inode->i_bdev) |
| 259 | bd_forget(inode); | 257 | bd_forget(inode); |
| 260 | if (inode->i_cdev) | 258 | if (S_ISCHR(inode->i_mode) && inode->i_cdev) |
| 261 | cd_forget(inode); | 259 | cd_forget(inode); |
| 262 | inode->i_state = I_CLEAR; | 260 | inode->i_state = I_CLEAR; |
| 263 | } | 261 | } |
| @@ -452,15 +450,14 @@ static void prune_icache(int nr_to_scan) | |||
| 452 | nr_pruned++; | 450 | nr_pruned++; |
| 453 | } | 451 | } |
| 454 | inodes_stat.nr_unused -= nr_pruned; | 452 | inodes_stat.nr_unused -= nr_pruned; |
| 453 | if (current_is_kswapd()) | ||
| 454 | __count_vm_events(KSWAPD_INODESTEAL, reap); | ||
| 455 | else | ||
| 456 | __count_vm_events(PGINODESTEAL, reap); | ||
| 455 | spin_unlock(&inode_lock); | 457 | spin_unlock(&inode_lock); |
| 456 | 458 | ||
| 457 | dispose_list(&freeable); | 459 | dispose_list(&freeable); |
| 458 | mutex_unlock(&iprune_mutex); | 460 | mutex_unlock(&iprune_mutex); |
| 459 | |||
| 460 | if (current_is_kswapd()) | ||
| 461 | mod_page_state(kswapd_inodesteal, reap); | ||
| 462 | else | ||
| 463 | mod_page_state(pginodesteal, reap); | ||
| 464 | } | 461 | } |
| 465 | 462 | ||
| 466 | /* | 463 | /* |
