Miklos Szeredi
0ef97dcfce
nfs: don't open in ->d_revalidate
...
NFSv4 can't do reliable opens in d_revalidate, since it cannot know whether a
mount needs to be followed or not. It does check d_mountpoint() on the dentry,
which can result in a weird error if the VFS found that the mount does not in
fact need to be followed, e.g.:
# mount --bind /mnt/nfs /mnt/nfs-clone
# echo something > /mnt/nfs/tmp/bar
# echo x > /tmp/file
# mount --bind /tmp/file /mnt/nfs-clone/tmp/bar
# cat /mnt/nfs/tmp/bar
cat: /mnt/nfs/tmp/bar: Not a directory
Which should, by any sane filesystem, result in "something" being printed.
So instead do the open in f_op->open() and in the unlikely case that the cached
dentry turned out to be invalid, drop the dentry and return EOPENSTALE to let
the VFS retry.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz >
CC: Trond Myklebust <Trond.Myklebust@netapp.com >
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-06-01 12:12:02 -04:00
..
2012-05-29 23:28:34 -04:00
2012-03-20 21:29:35 -04:00
2012-05-29 23:28:34 -04:00
2012-05-06 13:43:41 +08:00
2012-05-28 09:54:45 -07:00
2012-03-20 21:29:35 -04:00
2012-05-06 13:43:41 +08:00
2012-06-01 12:07:52 -04:00
2012-03-20 21:29:41 -04:00
2012-05-29 23:28:33 -04:00
2012-05-29 12:42:10 -07:00
2012-05-06 13:43:41 +08:00
2012-03-20 21:29:48 -04:00
2012-03-21 13:36:41 -07:00
2012-04-17 00:18:36 -04:00
2012-05-15 14:59:26 -07:00
2012-05-15 10:39:28 -05:00
2012-05-29 23:28:40 -04:00
2012-03-20 21:29:35 -04:00
2012-05-28 13:10:41 -07:00
2012-05-29 23:28:33 -04:00
2012-05-28 09:54:45 -07:00
2012-05-28 09:54:45 -07:00
2012-05-28 09:54:45 -07:00
2012-05-29 23:28:33 -04:00
2012-05-06 13:43:41 +08:00
2012-06-01 12:07:25 -04:00
2012-05-29 23:28:33 -04:00
2012-05-06 13:43:41 +08:00
2012-05-28 09:54:45 -07:00
2012-05-06 13:43:41 +08:00
2012-05-29 23:28:39 -04:00
2012-05-06 13:43:41 +08:00
2012-05-28 09:54:45 -07:00
2012-05-29 23:28:33 -04:00
2012-05-15 23:34:37 +02:00
2012-04-23 21:43:41 -04:00
2012-05-30 21:04:52 -04:00
2012-05-06 13:43:41 +08:00
2012-04-13 13:50:52 -04:00
2012-05-06 13:43:41 +08:00
2012-05-06 13:43:41 +08:00
2012-06-01 12:07:25 -04:00
2012-06-01 12:12:02 -04:00
2012-05-23 17:42:39 -07:00
2012-05-29 23:28:33 -04:00
2012-05-30 21:04:53 -04:00
2012-06-01 12:07:25 -04:00
2012-05-29 23:28:40 -04:00
2012-05-06 13:43:41 +08:00
2012-03-20 21:29:35 -04:00
2012-05-28 09:54:45 -07:00
2012-05-28 09:54:45 -07:00
2012-03-20 21:29:52 -04:00
2012-03-20 21:29:38 -04:00
2012-05-15 23:34:39 +02:00
2012-03-20 21:29:37 -04:00
2012-06-01 10:37:36 -04:00
2012-03-30 17:31:56 -07:00
2012-03-28 18:05:54 -07:00
2012-05-28 09:54:45 -07:00
2012-05-06 13:43:41 +08:00
2012-05-29 23:28:32 -04:00
2012-05-29 23:28:33 -04:00
2012-05-28 09:54:45 -07:00
2012-06-01 12:07:25 -04:00
2012-06-01 10:37:17 -04:00
2012-03-20 21:29:45 -04:00
2012-05-30 21:04:53 -04:00
2012-02-28 19:31:58 -05:00
2012-04-20 17:29:13 -07:00
2012-05-23 17:42:39 -07:00
2012-05-30 21:04:55 -04:00
2012-03-20 21:29:46 -04:00
2012-05-30 21:04:56 -04:00
2012-05-06 13:43:41 +08:00
2012-03-20 21:29:46 -04:00
2012-04-20 17:29:13 -07:00
2012-03-20 21:48:21 +08:00
2012-05-11 16:45:12 +02:00
2012-05-28 09:54:45 -07:00
2012-05-30 21:04:52 -04:00
2012-03-24 10:24:31 -07:00
2012-05-29 23:28:29 -04:00
2012-05-30 21:04:54 -04:00
2012-02-28 19:31:58 -05:00
2012-02-23 15:56:21 -08:00
2012-02-28 19:31:58 -05:00
2012-05-22 20:57:06 +02:00
2012-05-31 13:11:54 -04:00
2012-05-29 23:28:30 -04:00
2012-05-29 23:28:41 -04:00
2012-03-29 18:12:23 -07:00
2012-03-24 10:24:31 -07:00
2012-05-06 13:43:41 +08:00
2012-06-01 12:07:25 -04:00
2012-06-01 12:12:00 -04:00
2012-02-28 19:31:58 -05:00
2012-05-03 03:29:34 -07:00
2012-03-21 13:36:41 -07:00
2012-05-15 09:17:34 -04:00
2012-05-10 19:54:35 -07:00
2012-05-29 23:28:31 -04:00
2012-03-20 21:29:38 -04:00
2012-02-28 19:31:58 -05:00
2012-06-01 12:12:01 -04:00
2012-05-30 21:04:55 -04:00
2012-06-01 12:12:01 -04:00
2012-06-01 12:07:25 -04:00
2012-05-29 23:28:41 -04:00
2012-02-28 19:31:58 -05:00
2012-05-29 23:28:41 -04:00
2012-02-28 19:31:58 -05:00
2012-05-29 23:28:29 -04:00
2012-03-29 18:12:23 -07:00
2012-03-24 10:24:31 -07:00
2012-05-29 23:28:30 -04:00
2012-06-01 12:07:25 -04:00
2012-02-28 19:31:58 -05:00
2012-05-23 17:42:39 -07:00
2012-05-29 23:28:31 -04:00
2012-03-24 10:24:31 -07:00
2012-05-29 23:28:29 -04:00
2012-05-29 23:28:32 -04:00
2012-02-28 19:31:58 -05:00
2012-05-29 23:28:30 -04:00