diff options
Diffstat (limited to 'fs/inode.c')
| -rw-r--r-- | fs/inode.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/fs/inode.c b/fs/inode.c index b03c71957246..14084b72b259 100644 --- a/fs/inode.c +++ b/fs/inode.c | |||
| @@ -165,7 +165,7 @@ int inode_init_always(struct super_block *sb, struct inode *inode) | |||
| 165 | mapping->host = inode; | 165 | mapping->host = inode; |
| 166 | mapping->flags = 0; | 166 | mapping->flags = 0; |
| 167 | mapping_set_gfp_mask(mapping, GFP_HIGHUSER_MOVABLE); | 167 | mapping_set_gfp_mask(mapping, GFP_HIGHUSER_MOVABLE); |
| 168 | mapping->assoc_mapping = NULL; | 168 | mapping->private_data = NULL; |
| 169 | mapping->backing_dev_info = &default_backing_dev_info; | 169 | mapping->backing_dev_info = &default_backing_dev_info; |
| 170 | mapping->writeback_index = 0; | 170 | mapping->writeback_index = 0; |
| 171 | 171 | ||
| @@ -408,6 +408,19 @@ static void inode_lru_list_add(struct inode *inode) | |||
| 408 | spin_unlock(&inode->i_sb->s_inode_lru_lock); | 408 | spin_unlock(&inode->i_sb->s_inode_lru_lock); |
| 409 | } | 409 | } |
| 410 | 410 | ||
| 411 | /* | ||
| 412 | * Add inode to LRU if needed (inode is unused and clean). | ||
| 413 | * | ||
| 414 | * Needs inode->i_lock held. | ||
| 415 | */ | ||
| 416 | void inode_add_lru(struct inode *inode) | ||
| 417 | { | ||
| 418 | if (!(inode->i_state & (I_DIRTY | I_SYNC | I_FREEING | I_WILL_FREE)) && | ||
| 419 | !atomic_read(&inode->i_count) && inode->i_sb->s_flags & MS_ACTIVE) | ||
| 420 | inode_lru_list_add(inode); | ||
| 421 | } | ||
| 422 | |||
| 423 | |||
| 411 | static void inode_lru_list_del(struct inode *inode) | 424 | static void inode_lru_list_del(struct inode *inode) |
| 412 | { | 425 | { |
| 413 | spin_lock(&inode->i_sb->s_inode_lru_lock); | 426 | spin_lock(&inode->i_sb->s_inode_lru_lock); |
| @@ -1390,8 +1403,7 @@ static void iput_final(struct inode *inode) | |||
| 1390 | 1403 | ||
| 1391 | if (!drop && (sb->s_flags & MS_ACTIVE)) { | 1404 | if (!drop && (sb->s_flags & MS_ACTIVE)) { |
| 1392 | inode->i_state |= I_REFERENCED; | 1405 | inode->i_state |= I_REFERENCED; |
| 1393 | if (!(inode->i_state & (I_DIRTY|I_SYNC))) | 1406 | inode_add_lru(inode); |
| 1394 | inode_lru_list_add(inode); | ||
| 1395 | spin_unlock(&inode->i_lock); | 1407 | spin_unlock(&inode->i_lock); |
| 1396 | return; | 1408 | return; |
| 1397 | } | 1409 | } |
