Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[linux-2.6-microblaze.git] / fs / inode.c
index 9d78c37..6442d97 100644 (file)
@@ -155,7 +155,6 @@ int inode_init_always(struct super_block *sb, struct inode *inode)
        inode->i_bytes = 0;
        inode->i_generation = 0;
        inode->i_pipe = NULL;
-       inode->i_bdev = NULL;
        inode->i_cdev = NULL;
        inode->i_link = NULL;
        inode->i_dir_seq = 0;
@@ -580,8 +579,6 @@ static void evict(struct inode *inode)
                truncate_inode_pages_final(&inode->i_data);
                clear_inode(inode);
        }
-       if (S_ISBLK(inode->i_mode) && inode->i_bdev)
-               bd_forget(inode);
        if (S_ISCHR(inode->i_mode) && inode->i_cdev)
                cd_forget(inode);
 
@@ -1627,7 +1624,9 @@ static void iput_final(struct inode *inode)
        else
                drop = generic_drop_inode(inode);
 
-       if (!drop && (sb->s_flags & SB_ACTIVE)) {
+       if (!drop &&
+           !(inode->i_state & I_DONTCACHE) &&
+           (sb->s_flags & SB_ACTIVE)) {
                inode_add_lru(inode);
                spin_unlock(&inode->i_lock);
                return;