FSAL read and ERR_FSAL_DELAY
Hello All, We want to serve read in case of a slow backend and would like the client to retry the read op. mdc_read_super_cb() calls mdcache_kill_entry() if FSAL returns eDelay. This ends up cleaning the state for the file including any byte range locks. Does this mean eDealy is not a valid error for FSAL read? How do I return ERR_FSAL_DELAY from FSAL without losing the state? Thanks in advance for your help! Thanks & Regards, Suhrud
Hi Suhrud, NFS_ERR_DELAY is a valid result code for NFSv4.1 READ (https://datatracker.ietf.org/doc/html/rfc8881#section-18.22.4), so most likely this is an omission. Matt On Mon, May 17, 2021 at 5:00 AM Suhrud Patankar <suhrudpatankar@gmail.com> wrote:
Hello All,
We want to serve read in case of a slow backend and would like the client to retry the read op.
mdc_read_super_cb() calls mdcache_kill_entry() if FSAL returns eDelay. This ends up cleaning the state for the file including any byte range locks.
Does this mean eDealy is not a valid error for FSAL read? How do I return ERR_FSAL_DELAY from FSAL without losing the state?
Thanks in advance for your help!
Thanks & Regards, Suhrud
_______________________________________________ Devel mailing list -- devel@lists.nfs-ganesha.org To unsubscribe send an email to devel-leave@lists.nfs-ganesha.org
-- Matt Benjamin Red Hat, Inc. 315 West Huron Street, Suite 140A Ann Arbor, Michigan 48103 http://www.redhat.com/en/technologies/storage tel. 734-821-5101 fax. 734-769-8938 cel. 734-216-5309
It looks like when MDCACHE was introduced, some instances of ERR_FSAL_ STALE got changed to ERR_FSAL_DELAY. Daniel, do you recall if there was a reasoning behind that? Did something else change at the same time? Frank From: Suhrud Patankar [mailto:suhrudpatankar@gmail.com] Sent: Monday, May 17, 2021 1:58 AM To: nfs-ganesha <devel@lists.nfs-ganesha.org> Subject: [NFS-Ganesha-Devel] FSAL read and ERR_FSAL_DELAY Hello All, We want to serve read in case of a slow backend and would like the client to retry the read op. mdc_read_super_cb() calls mdcache_kill_entry() if FSAL returns eDelay. This ends up cleaning the state for the file including any byte range locks. Does this mean eDealy is not a valid error for FSAL read? How do I return ERR_FSAL_DELAY from FSAL without losing the state? Thanks in advance for your help! Thanks & Regards, Suhrud
It looks like, in cache_inode, there was a check for ERR_FSAL_DELAY in order to log a message, and that was conflated with the ERR_FSAL_STALE check that nuked the cache entry. I agree this should be ERR_FSAL_STALE instead. Daniel On 5/17/21 10:46 AM, Frank Filz wrote:
It looks like when MDCACHE was introduced, some instances of ERR_FSAL_ STALE got changed to ERR_FSAL_DELAY.
Daniel, do you recall if there was a reasoning behind that? Did something else change at the same time?
Frank
*From:*Suhrud Patankar [mailto:suhrudpatankar@gmail.com] *Sent:* Monday, May 17, 2021 1:58 AM *To:* nfs-ganesha <devel@lists.nfs-ganesha.org> *Subject:* [NFS-Ganesha-Devel] FSAL read and ERR_FSAL_DELAY
Hello All,
We want to serve read in case of a slow backend and would like the client to retry the read op.
mdc_read_super_cb() calls mdcache_kill_entry() if FSAL returns eDelay. This ends up cleaning the state for the file including any byte range locks.
Does this mean eDealy is not a valid error for FSAL read? How do I return ERR_FSAL_DELAY from FSAL without losing the state?
Thanks in advance for your help!
Thanks & Regards,
Suhrud
Thanks! I have raised review for the same: https://review.gerrithub.io/c/ffilz/nfs-ganesha/+/516839 On Mon, May 17, 2021 at 9:37 PM Daniel Gryniewicz <dang@redhat.com> wrote:
It looks like, in cache_inode, there was a check for ERR_FSAL_DELAY in order to log a message, and that was conflated with the ERR_FSAL_STALE check that nuked the cache entry. I agree this should be ERR_FSAL_STALE instead.
Daniel
On 5/17/21 10:46 AM, Frank Filz wrote:
It looks like when MDCACHE was introduced, some instances of ERR_FSAL_ STALE got changed to ERR_FSAL_DELAY.
Daniel, do you recall if there was a reasoning behind that? Did something else change at the same time?
Frank
*From:*Suhrud Patankar [mailto:suhrudpatankar@gmail.com] *Sent:* Monday, May 17, 2021 1:58 AM *To:* nfs-ganesha <devel@lists.nfs-ganesha.org> *Subject:* [NFS-Ganesha-Devel] FSAL read and ERR_FSAL_DELAY
Hello All,
We want to serve read in case of a slow backend and would like the client to retry the read op.
mdc_read_super_cb() calls mdcache_kill_entry() if FSAL returns eDelay. This ends up cleaning the state for the file including any byte range locks.
Does this mean eDealy is not a valid error for FSAL read? How do I return ERR_FSAL_DELAY from FSAL without losing the state?
Thanks in advance for your help!
Thanks & Regards,
Suhrud
participants (4)
-
Daniel Gryniewicz -
Frank Filz -
Matt Benjamin -
Suhrud Patankar