* Question-patch
@ 2016-01-06 16:51 Tigran Mkrtchyan
2016-01-06 16:51 ` [PATCH] nfs: set RPC_TASK_TIMEOUT on rpc task to separate TIMEOUT from IO errors Tigran Mkrtchyan
0 siblings, 1 reply; 3+ messages in thread
From: Tigran Mkrtchyan @ 2016-01-06 16:51 UTC (permalink / raw)
To: trond.myklebust; +Cc: linux-nfs
[PATCH] nfs: set RPC_TASK_TIMEOUT on rpc task to separate TIMEOUT
This is more or less a patch-question: will this break something and if not,
why we don't have it? Currently we always get EIO and cant really tell what it was
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] nfs: set RPC_TASK_TIMEOUT on rpc task to separate TIMEOUT from IO errors
2016-01-06 16:51 Question-patch Tigran Mkrtchyan
@ 2016-01-06 16:51 ` Tigran Mkrtchyan
2016-01-06 17:31 ` Trond Myklebust
0 siblings, 1 reply; 3+ messages in thread
From: Tigran Mkrtchyan @ 2016-01-06 16:51 UTC (permalink / raw)
To: trond.myklebust; +Cc: linux-nfs, Tigran Mkrtchyan
to help debug nfs problems
Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
---
fs/nfs/read.c | 2 +-
fs/nfs/write.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index 0a5e33f..0fae3f3 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -191,7 +191,7 @@ static void nfs_initiate_read(struct nfs_pgio_header *hdr,
struct inode *inode = hdr->inode;
int swap_flags = IS_SWAPFILE(inode) ? NFS_RPC_SWAPFLAGS : 0;
- task_setup_data->flags |= swap_flags;
+ task_setup_data->flags |= swap_flags | RPC_TASK_TIMEOUT;
rpc_ops->read_setup(hdr, msg);
}
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 7b93164..05c9963 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1296,6 +1296,7 @@ static void nfs_initiate_write(struct nfs_pgio_header *hdr,
int priority = flush_task_priority(how);
task_setup_data->priority = priority;
+ task_setup_data->flags |= RPC_TASK_TIMEOUT;
rpc_ops->write_setup(hdr, msg);
nfs4_state_protect_write(NFS_SERVER(hdr->inode)->nfs_client,
@@ -1578,7 +1579,7 @@ int nfs_initiate_commit(struct rpc_clnt *clnt, struct nfs_commit_data *data,
.callback_ops = call_ops,
.callback_data = data,
.workqueue = nfsiod_workqueue,
- .flags = RPC_TASK_ASYNC | flags,
+ .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT | flags,
.priority = priority,
};
/* Set up the initial task struct. */
--
2.5.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] nfs: set RPC_TASK_TIMEOUT on rpc task to separate TIMEOUT from IO errors
2016-01-06 16:51 ` [PATCH] nfs: set RPC_TASK_TIMEOUT on rpc task to separate TIMEOUT from IO errors Tigran Mkrtchyan
@ 2016-01-06 17:31 ` Trond Myklebust
0 siblings, 0 replies; 3+ messages in thread
From: Trond Myklebust @ 2016-01-06 17:31 UTC (permalink / raw)
To: Tigran Mkrtchyan; +Cc: Linux NFS Mailing List
On Wed, Jan 6, 2016 at 11:51 AM, Tigran Mkrtchyan
<tigran.mkrtchyan@desy.de> wrote:
> to help debug nfs problems
>
> Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
> ---
> fs/nfs/read.c | 2 +-
> fs/nfs/write.c | 3 ++-
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/fs/nfs/read.c b/fs/nfs/read.c
> index 0a5e33f..0fae3f3 100644
> --- a/fs/nfs/read.c
> +++ b/fs/nfs/read.c
> @@ -191,7 +191,7 @@ static void nfs_initiate_read(struct nfs_pgio_header *hdr,
> struct inode *inode = hdr->inode;
> int swap_flags = IS_SWAPFILE(inode) ? NFS_RPC_SWAPFLAGS : 0;
>
> - task_setup_data->flags |= swap_flags;
> + task_setup_data->flags |= swap_flags | RPC_TASK_TIMEOUT;
> rpc_ops->read_setup(hdr, msg);
> }
>
> diff --git a/fs/nfs/write.c b/fs/nfs/write.c
> index 7b93164..05c9963 100644
> --- a/fs/nfs/write.c
> +++ b/fs/nfs/write.c
> @@ -1296,6 +1296,7 @@ static void nfs_initiate_write(struct nfs_pgio_header *hdr,
> int priority = flush_task_priority(how);
>
> task_setup_data->priority = priority;
> + task_setup_data->flags |= RPC_TASK_TIMEOUT;
> rpc_ops->write_setup(hdr, msg);
>
> nfs4_state_protect_write(NFS_SERVER(hdr->inode)->nfs_client,
> @@ -1578,7 +1579,7 @@ int nfs_initiate_commit(struct rpc_clnt *clnt, struct nfs_commit_data *data,
> .callback_ops = call_ops,
> .callback_data = data,
> .workqueue = nfsiod_workqueue,
> - .flags = RPC_TASK_ASYNC | flags,
> + .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT | flags,
> .priority = priority,
> };
> /* Set up the initial task struct. */
> --
> 2.5.0
>
This can cause read() write() and fsync() to fail with an ETIMEDOUT
error, which is not allowed by POSIX.
Cheers,
Trond
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-01-06 17:31 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-06 16:51 Question-patch Tigran Mkrtchyan
2016-01-06 16:51 ` [PATCH] nfs: set RPC_TASK_TIMEOUT on rpc task to separate TIMEOUT from IO errors Tigran Mkrtchyan
2016-01-06 17:31 ` Trond Myklebust
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.