linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] cifs: fix "Busy inodes after umount" issues (RFC)
@ 2010-05-21 18:25 Jeff Layton
  2010-05-21 18:25 ` [PATCH 1/4] cifs: make cifs_lookup return a dentry Jeff Layton
                   ` (4 more replies)
  0 siblings, 5 replies; 17+ messages in thread
From: Jeff Layton @ 2010-05-21 18:25 UTC (permalink / raw)
  To: linux-cifs-client; +Cc: linux-fsdevel

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(-)


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2010-05-24 10:51 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-21 18:25 [PATCH 0/4] cifs: fix "Busy inodes after umount" issues (RFC) Jeff Layton
2010-05-21 18:25 ` [PATCH 1/4] cifs: make cifs_lookup return a dentry Jeff Layton
2010-05-21 18:45   ` Josef Bacik
2010-05-21 18:42     ` Jeff Layton
2010-05-22 13:30   ` Al Viro
2010-05-22 14:08     ` Jeff Layton
2010-05-22 14:46       ` Al Viro
2010-05-22 15:23         ` Jeff Layton
2010-05-21 18:25 ` [PATCH 2/4] cifs: don't leave open files dangling Jeff Layton
2010-05-24  6:50   ` [linux-cifs-client] " Suresh Jayaraman
2010-05-24 10:49     ` Jeff Layton
2010-05-21 18:25 ` [PATCH 3/4] cifs: move cifs_new_fileinfo call out of cifs_posix_open Jeff Layton
2010-05-24  6:50   ` [linux-cifs-client] " Suresh Jayaraman
2010-05-24 10:48     ` Jeff Layton
2010-05-21 18:25 ` [PATCH 4/4] cifs: pass instantiated filp back after open call Jeff Layton
2010-05-24  7:13 ` [PATCH 0/4] cifs: fix "Busy inodes after umount" issues (RFC) Suresh Jayaraman
2010-05-24 10:52   ` [linux-cifs-client] " Jeff Layton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).