[pnfs] [PATCH 04/11] pnfs: nfs_redirty_request
Benny Halevy
bhalevy at panasas.com
Sun Apr 13 09:57:20 EDT 2008
On Apr. 10, 2008, 17:05 +0300, Fred Isaman <iisaman at citi.umich.edu> wrote:
> If a request fails to flush and needs to be redirtied, make sure
> we retry using straight NFS.
>
> Note that some drivers may prefer to have better control over whether
> a retry goes to mds or data server...will a policy op be needed here?
Yes, we do. We'll get there later.
>
> Signed-off-by: Fred Isaman <iisaman at citi.umich.edu>
> Signed-off-by: Benny Halevy <bhalevy at panasas.com>
> ---
> fs/nfs/write.c | 3 +++
> include/linux/nfs_page.h | 3 +++
> 2 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/fs/nfs/write.c b/fs/nfs/write.c
> index 5616f48..2779fcb 100644
> --- a/fs/nfs/write.c
> +++ b/fs/nfs/write.c
> @@ -881,6 +881,9 @@ static int nfs_write_rpcsetup(struct nfs_page *req,
> */
> static void nfs_redirty_request(struct nfs_page *req)
> {
> +#ifdef CONFIG_PNFS
> + clear_bit(PG_USE_PNFS, &req->wb_flags);
> +#endif
How about defining a pnfs_redirty_request() static inline function
to do this when CONFIG_PNFS is defined and nothing otherwise?
This seem like the right place to put more logic there later,
like calling an optional LD policy method.
> nfs_mark_request_dirty(req);
> nfs_end_page_writeback(req->wb_page);
> nfs_clear_page_tag_locked(req);
> diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h
> index fa769ef..a3adb35 100644
> --- a/include/linux/nfs_page.h
> +++ b/include/linux/nfs_page.h
> @@ -30,6 +30,9 @@
> #define PG_BUSY 0
> #define PG_NEED_COMMIT 1
> #define PG_NEED_RESCHED 2
> +#ifdef CONFIG_PNFS
> +#define PG_USE_PNFS 3
> +#endif
Let's define the constant unconditionally. This can simplify using
it in the !defined(CONFIG_PNFS) case without having to use ifdefs all over
the place and it costs nothing.
>
> struct nfs_inode;
> struct nfs_page {
More information about the pNFS
mailing list