2016-09-21 14:19:40

by Mayur Bajaj

[permalink] [raw]
Subject: NFS client behaviour with soft mount

Hello,

I have a question regarding NFS client behaviour with soft mount. I
have gone through the code but could not figure out. Can someone
please help me.

An application is writing data via NFS client (soft mount, with sync
mount option NOT set). The Application thinks that data written was
successful but that is not the case.
The NFS client will cache all the write request and flush after some
time/threshold. The NFS sever is not responding. NFS client retries
for 3 times (or retrans) and give up as the NFS server is not
responding.

Will this cache pages be pinned in memory for ever or freed up (marked
clean) as the operation has failed?
Will NFS client keep on retrying again?

Thanks in advance
Mayur


2016-09-21 14:42:14

by Trond Myklebust

[permalink] [raw]
Subject: Re: NFS client behaviour with soft mount


> On Sep 21, 2016, at 10:19, Mayur Bajaj <[email protected]> wrote:
>=20
> Hello,
>=20
> I have a question regarding NFS client behaviour with soft mount. I
> have gone through the code but could not figure out. Can someone
> please help me.
>=20
> An application is writing data via NFS client (soft mount, with sync
> mount option NOT set). The Application thinks that data written was
> successful but that is not the case.
> The NFS client will cache all the write request and flush after some
> time/threshold. The NFS sever is not responding. NFS client retries
> for 3 times (or retrans) and give up as the NFS server is not
> responding.
>=20
> Will this cache pages be pinned in memory for ever or freed up (marked
> clean) as the operation has failed?
> Will NFS client keep on retrying again?


The behaviour in the above situation is completely undefined. You may have =
bits and pieces of data persisted on the server or not, and cached data may=
end up getting resent after the EIO was returned to the application.


2016-09-22 04:39:54

by Mayur Bajaj

[permalink] [raw]
Subject: Re: NFS client behaviour with soft mount

Thanks for the response.

Incomplete data on server (NFS) is alright. I wanted to know what
happens to the dirty cache pages (on NFS client with soft mount and
sync flag not set) after the NFS client has retried for 3 times (or
retrans). Will the NFS client retry or give up and clean up the dirty
cache pages (and the dirty inode).

Mayur

On Wed, Sep 21, 2016 at 8:11 PM, Trond Myklebust
<[email protected]> wrote:
>
>> On Sep 21, 2016, at 10:19, Mayur Bajaj <[email protected]> wrote:
>>
>> Hello,
>>
>> I have a question regarding NFS client behaviour with soft mount. I
>> have gone through the code but could not figure out. Can someone
>> please help me.
>>
>> An application is writing data via NFS client (soft mount, with sync
>> mount option NOT set). The Application thinks that data written was
>> successful but that is not the case.
>> The NFS client will cache all the write request and flush after some
>> time/threshold. The NFS sever is not responding. NFS client retries
>> for 3 times (or retrans) and give up as the NFS server is not
>> responding.
>>
>> Will this cache pages be pinned in memory for ever or freed up (marked
>> clean) as the operation has failed?
>> Will NFS client keep on retrying again?
>
>
> The behaviour in the above situation is completely undefined. You may have bits and pieces of data persisted on the server or not, and cached data may end up getting resent after the EIO was returned to the application.
>

2016-09-22 04:55:13

by Trond Myklebust

[permalink] [raw]
Subject: Re: NFS client behaviour with soft mount


> On Sep 22, 2016, at 00:39, Mayur Bajaj <[email protected]> wrote:
>=20
> Thanks for the response.
>=20
> Incomplete data on server (NFS) is alright. I wanted to know what
> happens to the dirty cache pages (on NFS client with soft mount and
> sync flag not set) after the NFS client has retried for 3 times (or
> retrans). Will the NFS client retry or give up and clean up the dirty
> cache pages (and the dirty inode).

As I said below, that behaviour is completely undefined. The page may end u=
p being discarded, or it may end up persisting in the page cache. If you wa=
nt to be certain that any remaining dirty pages in the page cache have been=
cleaned, then you need to successfully fsync() the file to disk.

>=20
> Mayur
>=20
> On Wed, Sep 21, 2016 at 8:11 PM, Trond Myklebust
> <[email protected]> wrote:
>>=20
>>> On Sep 21, 2016, at 10:19, Mayur Bajaj <[email protected]> wrote:
>>>=20
>>> Hello,
>>>=20
>>> I have a question regarding NFS client behaviour with soft mount. I
>>> have gone through the code but could not figure out. Can someone
>>> please help me.
>>>=20
>>> An application is writing data via NFS client (soft mount, with sync
>>> mount option NOT set). The Application thinks that data written was
>>> successful but that is not the case.
>>> The NFS client will cache all the write request and flush after some
>>> time/threshold. The NFS sever is not responding. NFS client retries
>>> for 3 times (or retrans) and give up as the NFS server is not
>>> responding.
>>>=20
>>> Will this cache pages be pinned in memory for ever or freed up (marked
>>> clean) as the operation has failed?
>>> Will NFS client keep on retrying again?
>>=20
>>=20
>> The behaviour in the above situation is completely undefined. You may ha=
ve bits and pieces of data persisted on the server or not, and cached data =
may end up getting resent after the EIO was returned to the application.
>>=20
>=20


2016-09-22 04:59:42

by Mayur Bajaj

[permalink] [raw]
Subject: Re: NFS client behaviour with soft mount

Thanks a lot.

On Thu, Sep 22, 2016 at 10:25 AM, Trond Myklebust
<[email protected]> wrote:
>
>> On Sep 22, 2016, at 00:39, Mayur Bajaj <[email protected]> wrote:
>>
>> Thanks for the response.
>>
>> Incomplete data on server (NFS) is alright. I wanted to know what
>> happens to the dirty cache pages (on NFS client with soft mount and
>> sync flag not set) after the NFS client has retried for 3 times (or
>> retrans). Will the NFS client retry or give up and clean up the dirty
>> cache pages (and the dirty inode).
>
> As I said below, that behaviour is completely undefined. The page may end=
up being discarded, or it may end up persisting in the page cache. If you =
want to be certain that any remaining dirty pages in the page cache have be=
en cleaned, then you need to successfully fsync() the file to disk.
>
>>
>> Mayur
>>
>> On Wed, Sep 21, 2016 at 8:11 PM, Trond Myklebust
>> <[email protected]> wrote:
>>>
>>>> On Sep 21, 2016, at 10:19, Mayur Bajaj <[email protected]> wrote:
>>>>
>>>> Hello,
>>>>
>>>> I have a question regarding NFS client behaviour with soft mount. I
>>>> have gone through the code but could not figure out. Can someone
>>>> please help me.
>>>>
>>>> An application is writing data via NFS client (soft mount, with sync
>>>> mount option NOT set). The Application thinks that data written was
>>>> successful but that is not the case.
>>>> The NFS client will cache all the write request and flush after some
>>>> time/threshold. The NFS sever is not responding. NFS client retries
>>>> for 3 times (or retrans) and give up as the NFS server is not
>>>> responding.
>>>>
>>>> Will this cache pages be pinned in memory for ever or freed up (marked
>>>> clean) as the operation has failed?
>>>> Will NFS client keep on retrying again?
>>>
>>>
>>> The behaviour in the above situation is completely undefined. You may h=
ave bits and pieces of data persisted on the server or not, and cached data=
may end up getting resent after the EIO was returned to the application.
>>>
>>
>