We've had a spate of "Busy inodes after umount" problems in recent kernels. With the help of a reproducer that Suresh provided, I tracked down the cause of one of these and wrote it up here: https://bugzilla.samba.org/show_bug.cgi?id=7433 The main problem is that CIFS opens files during create operations, puts these files on a list and then expects that a subsequent open operation will find those on the list and make them full, productive members of society. This expectation is wrong however. There's no guarantee that cifs_open will be called at all after a create. There are several scenarios that can prevent it from occuring. When this happens, these entries get left dangling on the list and nothing will ever clean them up. Recent changes have made it so that cifsFileInfo structs hold an inode reference as well, which is what actually leads to the busy inodes after umount problems. This patch is intended to fix this in the right way. It has the create operations properly use lookup_instantiate_filp to create an open file during the operation that does the actual create. With this, there's no need to have cifs_open scrape these entries off the list. This fixes the busy inodes problem I was able to reproduce. It's not very well tested yet however, and I could stand for someone else to review it and help test it. Jeff Layton (4): cifs: make cifs_lookup return a dentry cifs: don't leave open files dangling cifs: move cifs_new_fileinfo call out of cifs_posix_open cifs: pass instantiated filp back after open call fs/cifs/cifsproto.h | 1 - fs/cifs/dir.c | 88 ++++++++++++++++++++++++++++++--------------------- fs/cifs/file.c | 59 +++++++-------------------------- 3 files changed, 65 insertions(+), 83 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html