Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs

Pull vfs fixes from Al Viro:
"A couple of fixes: Fix for my dumb braino in ncpfs and a long-standing
breakage on recovery from failed rename() in jffs2"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
jffs2: reduce the breakage on recovery from halfway failed rename()
ncpfs: fix a braino in OOM handling in ncp_fill_cache()

+9 -4
+8 -3
fs/jffs2/dir.c
··· 843 843 844 844 pr_notice("%s(): Link succeeded, unlink failed (err %d). You now have a hard link\n", 845 845 __func__, ret); 846 - /* Might as well let the VFS know */ 847 - d_instantiate(new_dentry, d_inode(old_dentry)); 848 - ihold(d_inode(old_dentry)); 846 + /* 847 + * We can't keep the target in dcache after that. 848 + * For one thing, we can't afford dentry aliases for directories. 849 + * For another, if there was a victim, we _can't_ set new inode 850 + * for that sucker and we have to trigger mount eviction - the 851 + * caller won't do it on its own since we are returning an error. 852 + */ 853 + d_invalidate(new_dentry); 849 854 new_dir_i->i_mtime = new_dir_i->i_ctime = ITIME(now); 850 855 return ret; 851 856 }
+1 -1
fs/ncpfs/dir.c
··· 633 633 d_rehash(newdent); 634 634 } else { 635 635 spin_lock(&dentry->d_lock); 636 - NCP_FINFO(inode)->flags &= ~NCPI_DIR_CACHE; 636 + NCP_FINFO(dir)->flags &= ~NCPI_DIR_CACHE; 637 637 spin_unlock(&dentry->d_lock); 638 638 } 639 639 } else {