NFSv4.1: add generic layer hooks for pnfs COMMIT
authorFred Isaman <iisaman@netapp.com>
Wed, 23 Mar 2011 13:27:51 +0000 (13:27 +0000)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 23 Mar 2011 19:29:03 +0000 (15:29 -0400)
commita861a1e1c398fe34701569fd8ac9225dfe0a9a7e
treefe28b8cfa4b8a6066ee6f2feeaa2b61e9bfaa0c0
parent425eb736cd905181a4dd4dc8d66342a7c7ab2f27
NFSv4.1: add generic layer hooks for pnfs COMMIT

We create three major hooks for the pnfs code.

pnfs_mark_request_commit() is called during writeback_done from
nfs_mark_request_commit, which gives the driver an opportunity to
claim it wants control over commiting a particular req.

pnfs_choose_commit_list() is called from nfs_scan_list
to choose which list a given req should be added to, based on
where we intend to send it for COMMIT.  It is up to the driver
to have preallocated list headers for each destination it may need.

pnfs_commit_list() is how the driver actually takes control, it is
used instead of nfs_commit_list().

In order to pass information between the above functions, we create
a union in nfs_page to hold a lseg (which is possible because the req is
not on any list while in transition), and add some flags to indicate
if we need to use the pnfs code.

Signed-off-by: Fred Isaman <iisaman@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/pagelist.c
fs/nfs/pnfs.h
fs/nfs/write.c
include/linux/nfs_fs.h
include/linux/nfs_page.h