X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=fs%2Finode.c;h=6442d97d9a4ab37a82f55dda5801c5067ef9bf01;hb=40f78232f97344afbbeb5b0008615f17c4b93466;hp=9d78c37b00b817d0f4061441806e4d0aa5400f4b;hpb=0461a1ae98bc3045492333bebf6e79d4e859d3a1;p=linux-2.6-microblaze.git diff --git a/fs/inode.c b/fs/inode.c index 9d78c37b00b8..6442d97d9a4a 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -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;