[PATCH 0/1] NFSv4.1 resend LAYOUTGET on data server invalid layout errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Andy Adamson <andros@xxxxxxxxxx>

>From patch comments:

The "invalid layout" class of errors is handled by destroying the layout and
getting a new layout from the server.  Currently, the layout must be
destroyed before a new layout can be obtained.

This means that all references (e.g.lsegs) to the "to be destroyed" layout
header must be dropped before it can be destroyed. This in turn means waiting
for all in flight RPC's using the old layout as well as draining the data
server session slot table wait queue.

Set the NFS_LAYOUT_INVALID flag to redirect I/O to the MDS while waiting for
the old layout to be destroyed.

Testing:

Tested against a modified pynfs filelayout server with one DS. I mount the DS,
set an NFS4ERR_BADHANDLE error in config/ops/write file which triggers the
error on the "first" write. Umount the DS. Mount the MDS and run
"dd if=/dev/zero of=/mnt/dd.out bs=4096 count=200". This results in a maxreqs
worth of writes to the DS (8 for pynfs) before the NFS4ERR_BADHANDLE gets
sent whereon writes are redirected to the MDS. Once the DS on the wire RPC's
have all returned, and all the DS slot_tbl_waitq tasks are redirected to the
MDS, the layout is destroyed, a new layout is obtained, and the writes return
to pNFS before the 'dd' command finishes.

Andy Adamson (1):
  NFSv4.1 resend LAYOUTGET on data server invalid layout errors

 fs/nfs/nfs4filelayout.c |   27 +++++++++++++++++++++++----
 fs/nfs/nfs4filelayout.h |   13 +++++++++++++
 fs/nfs/pnfs.c           |    1 +
 fs/nfs/pnfs.h           |    1 +
 4 files changed, 38 insertions(+), 4 deletions(-)

-- 
1.7.6.4

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux