aboutsummaryrefslogtreecommitdiffstats
path: root/fs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/inode.c')
-rw-r--r--fs/inode.c19
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
103static struct inode *alloc_inode(struct super_block *sb) 102static 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/*