Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> --- fs/namei.c | 2 ++ include/linux/fs.h | 4 +++- kernel/sysctl.c | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/fs/namei.c b/fs/namei.c index 6886630..1ae2c06 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -110,6 +110,8 @@ * any extra contention... */ +unsigned int estale_retries __read_mostly = 1; + /* In order to reduce some races, while at the same time doing additional * checking and hopefully speeding things up, we copy filenames to the * kernel data space before using them.. diff --git a/include/linux/fs.h b/include/linux/fs.h index 01ff902..119a0f0 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2023,6 +2023,8 @@ extern int finish_open(struct file *file, struct dentry *dentry, int *opened); extern int finish_no_open(struct file *file, struct dentry *dentry); +extern unsigned int estale_retries; + /** * retry_estale - determine whether the caller should retry an operation * @@ -2041,7 +2043,7 @@ retry_estale(const long error, const unsigned int try) if (likely(error != -ESTALE)) return false; - return !try; + return (try <= estale_retries); } /* fs/ioctl.c */ diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 26f65ea..24735db 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -1545,6 +1545,13 @@ static struct ctl_table fs_table[] = { .proc_handler = &pipe_proc_fn, .extra1 = &pipe_min_size, }, + { + .procname = "estale_retries", + .data = &estale_retries, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = proc_dointvec, + }, { } }; -- 1.7.11.7 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html