2011-12-23 11:22:12

by Vishal Thanki

[permalink] [raw]
Subject: LAYOUTGET failure handling

Hi,

I am learning NFS (and pNFS) and not much familiar with its
implementation in Linux kernel. I have a question on the LAYOUTGET
operation.

I have a pNFS server setup which fakes most of the pNFS operations.
The "layout_get" implementation simply returns "-ENOENT". I am not
sure how this should be treated on the pNFS client side. In my
experiment, I am mounting the pNFS server and trying to read a file
(using "cat"). On wireshark trace (attached with the mail), I could
see that LAYOUTGET fails with NFS4ERR_BADLAYOUT error, but afterwards
I see the READ request from client and it is handled gracefully (and I
can see the contents of the file). Is this appropriate behavior?

I am using RHEL6.1 (with pNFS patch for kernel 2.6.32 applied) on
server, and client is RHEL6.1 stock kernel.

I am sorry if this is not the appropriate forum for such kind of
questions, and pardon my ignorance/lack of knowledge in the domain.

Thanks,
Vishal


Attachments:
pnfs_layoutget_failure.cap (26.50 kB)

2011-12-23 14:26:16

by Fred Isaman

[permalink] [raw]
Subject: Re: LAYOUTGET failure handling

On Fri, Dec 23, 2011 at 6:21 AM, Vishal Thanki <[email protected]> wrote:
> Hi,
>
> I am learning NFS (and pNFS) and not much familiar with its
> implementation in Linux kernel. I have a question on the LAYOUTGET
> operation.
>
> I have a pNFS server setup which fakes most of the pNFS operations.
> The "layout_get" implementation simply returns "-ENOENT". I am not
> sure how this should be treated on the pNFS client side. In my
> experiment, I am mounting the pNFS server and trying to read a file
> (using "cat"). On wireshark trace (attached with the mail), I could
> see that LAYOUTGET fails with NFS4ERR_BADLAYOUT error, but afterwards
> I see the READ request from client and it is handled gracefully (and I
> can see the contents of the file). Is this appropriate behavior?
>

Yes. The client asked for a layout. The server said no. So the
client fell back to using standard io to the MDS.
Right now this is basically how the linux client responds to almost all errors.

Fred

> I am using RHEL6.1 (with pNFS patch for kernel 2.6.32 applied) on
> server, and client is RHEL6.1 stock kernel.
>
> I am sorry if this is not the appropriate forum for such kind of
> questions, and pardon my ignorance/lack of knowledge in the domain.
>
> Thanks,
> Vishal

2011-12-23 11:39:23

by Vishal Thanki

[permalink] [raw]
Subject: Re: LAYOUTGET failure handling

On Fri, Dec 23, 2011 at 4:51 PM, Vishal Thanki <[email protected]> wrote:
> Hi,
>
> I am learning NFS (and pNFS) and not much familiar with its
> implementation in Linux kernel. I have a question on the LAYOUTGET
> operation.
>
> I have a pNFS server setup which fakes most of the pNFS operations.
> The "layout_get" implementation simply returns "-ENOENT". I am not
> sure how this should be treated on the pNFS client side. In my
> experiment, I am mounting the pNFS server and trying to read a file
> (using "cat"). On wireshark trace (attached with the mail), I could
> see that LAYOUTGET fails with NFS4ERR_BADLAYOUT error, but afterwards
> I see the READ request from client and it is handled gracefully (and I
> can see the contents of the file). Is this appropriate behavior?
>
> I am using RHEL6.1 (with pNFS patch for kernel 2.6.32 applied) on
> server, and client is RHEL6.1 stock kernel.
>
> I am sorry if this is not the appropriate forum for such kind of
> questions, and pardon my ignorance/lack of knowledge in the domain.
>
> Thanks,
> Vishal

I noticed that "send_layoutget" function is invoked from
pnfs_update_layout. All the callers of pnfs_update_layout seem to
ignore the return value (struct pnfs_layout_segment *). The callers of
this functions are following (if i am not missing any other places):

nfs_write_begin,
nfs_readpage_async,
nfs_readpages

Vishal