https://bugzilla.novell.com/show_bug.cgi?id=794988 https://bugzilla.novell.com/show_bug.cgi?id=794988#c0 Summary: cifs: don't compare uniqueids in cifs_prime_dcache unless server inode numbers are in use Classification: openSUSE Product: openSUSE 12.2 Version: Final Platform: All OS/Version: openSUSE 12.2 Status: NEW Severity: Major Priority: P5 - None Component: Kernel AssignedTo: kernel-maintainers@forge.provo.novell.com ReportedBy: olivpass@web.de QAContact: qa-bugs@suse.de Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Firefox/17.0 Hi, the discription of this bug is on this site: https://patchwork.kernel.org/patch/1887301/ To reproduce this, you can use this mount command: /bin/mount -tcifs //vincent/lw_n /smb/lw_t/ -ouser=ms,uid=<number>,gid=<number>,noserverino,noperm,nocase,domain=xxx I backported the patch and it works for me. This is the diff to the original OpenSuSE 12.2 kernel: itms2:/lib/modules/3.4.11-2.16-desktop/source/fs/cifs # diff readdir_orig.c readdir.c 78a79
struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
90,94c91,105 < /* update inode in place if i_ino didn't change */ < if (inode && CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) { < cifs_fattr_to_inode(inode, fattr); < return dentry; < } ---
if (inode) { /* * If we're generating inode numbers, then we don't * want to clobber the existing one with the one that * the readdir code created. */ if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)) fattr->cf_uniqueid = CIFS_I(inode)->uniqueid;
/* update inode in place if i_ino didn't change */ if (inode && CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) { cifs_fattr_to_inode(inode, fattr); return dentry; } }
Reproducible: Always Steps to Reproduce: 1. 2. 3. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.