Files
linux/include/linux
Miklos Szeredi 848ac114e8 vfs: check submounts and drop atomically
We check submounts before doing d_drop() on a non-empty directory dentry in
NFS (have_submounts()), but we do not exclude a racing mount.

 Process A: have_submounts() -> returns false
 Process B: mount() -> success
 Process A: d_drop()

This patch prepares the ground for the fix by doing the following
operations all under the same rename lock:

  have_submounts()
  shrink_dcache_parent()
  d_drop()

This is actually an optimization since have_submounts() and
shrink_dcache_parent() both traverse the same dentry tree separately.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
CC: David Howells <dhowells@redhat.com>
CC: Steven Whitehouse <swhiteho@redhat.com>
CC: Trond Myklebust <Trond.Myklebust@netapp.com>
CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2013-09-05 16:23:41 -04:00
..
2013-06-27 13:42:16 -04:00
2013-06-17 14:38:54 -04:00
2013-05-07 19:46:02 -07:00
2013-05-29 15:50:34 -04:00
2013-04-29 15:40:23 -04:00
2013-07-03 16:07:39 -07:00
2013-08-26 18:40:56 -04:00
2013-08-27 01:44:40 +02:00
2013-07-10 23:41:18 +01:00
2013-05-01 16:36:22 +05:30
2013-07-23 16:01:28 -07:00
2013-07-15 11:25:00 +09:30
2013-05-07 18:38:27 -07:00
2013-04-29 18:28:40 -07:00
2013-06-17 16:38:57 -07:00
2013-06-19 23:32:07 -04:00
2013-05-06 13:07:33 +02:00
2013-07-03 16:07:32 -07:00
2013-08-02 11:34:30 +08:00
2013-08-23 10:22:29 +02:00
2013-06-13 17:51:04 -07:00
2013-07-18 13:05:23 -07:00
2013-08-22 20:30:15 -07:00
2013-06-17 16:38:57 -07:00
2013-07-26 16:19:48 -07:00
2013-04-30 17:04:06 -07:00
2013-04-01 11:04:50 -07:00
2013-07-16 22:00:14 -07:00
2013-07-09 10:33:30 -07:00
2013-05-31 00:48:22 -07:00
2013-08-12 17:54:05 +02:00
2013-07-03 16:08:05 -07:00
2013-06-08 16:20:14 -04:00
2013-05-04 14:47:26 -04:00
2013-06-12 12:37:30 +01:00
2013-04-29 15:54:28 -07:00
2013-08-28 20:55:41 -06:00
2013-05-31 17:19:05 -07:00
2013-06-21 11:32:51 +02:00
2013-04-29 15:54:28 -07:00
2013-04-12 10:26:23 +02:00
2013-07-03 16:08:05 -07:00
2013-06-17 16:38:57 -07:00
2013-06-17 18:09:53 +09:00
2013-06-20 13:08:01 -07:00
2013-04-30 15:50:12 +05:30
2013-08-13 17:57:48 -07:00
2013-05-21 12:25:02 -05:00
2013-07-24 15:12:53 -07:00
2013-04-29 15:54:37 -07:00
2013-05-27 10:57:53 +09:00
2013-07-10 18:11:34 -07:00