11 Nov, 2011
1 commit
-
pNFS-specific code belongs in the pnfs layer. It should not be
hijacking generic NFS read or write code paths.Signed-off-by: Trond Myklebust
20 Oct, 2011
4 commits
-
We don't need a mempool in order to guarantee reliable NFS read performance.
Signed-off-by: Trond Myklebust
-
Don't rely on the PageError flag to tell us if one of the partial reads of
the page failed. Instead, replace that with a dedicated flag in the
struct nfs_page.Then clean out redundant uses of the PageError flag: the VM no longer
checks it for reads.Signed-off-by: Trond Myklebust
-
The generic file read code does that for us anyway.
Signed-off-by: Trond Myklebust
-
It can trivially be replaced with rpc_restart_call_prepare.
Signed-off-by: Trond Myklebust
19 Oct, 2011
1 commit
-
For pnfs pagelist read failure, we need to pg_recoalesce and resend IO to
mds.Signed-off-by: Peng Tao
Signed-off-by: Jim Rees
Cc: stable@kernel.org [3.0]
Signed-off-by: Trond Myklebust
26 Jul, 2011
1 commit
-
vfs/nfs: fixup for nfs_open_context change
Signed-off-by: Stephen Rothwell
Signed-off-by: Trond Myklebust
20 Jul, 2011
1 commit
-
just dentry, please...
Signed-off-by: Al Viro
15 Jul, 2011
6 commits
-
Use nfs_pageio_reset_read_mds and nfs_pageio_reset_write_mds instead of
completely reinitialising the struct nfs_pageio_descriptor.Signed-off-by: Trond Myklebust
-
...and ensure that we recoalese to take into account differences in
block sizes when falling back to read through the MDS.Signed-off-by: Trond Myklebust
-
Instead of looking up the rsize and wsize, the routines that generate the
RPC requests should really be using the pg_bsize, since that is what we
use when deciding whether or not to coalesce write requests...Signed-off-by: Trond Myklebust
-
Signed-off-by: Trond Myklebust
-
...and do the same for nfs_flush_multi/one.
Signed-off-by: Trond Myklebust
-
Signed-off-by: Peng Tao
Signed-off-by: Trond Myklebust
13 Jul, 2011
5 commits
-
Split them up into two parts: one which sets up the struct nfs_read/write_data,
the other which sets up the actual RPC call or pNFS call.Signed-off-by: Trond Myklebust
-
Ask for whole file layouts. Until support for layout segments is fully
supported in the file layout code, discard non-whole file layouts.Signed-off-by: Andy Adamson
Signed-off-by: Fred Isaman
Signed-off-by: Trond Myklebust -
Signed-off-by: Trond Myklebust
-
Ensure that we always get a layout before setting up the i/o request.
Signed-off-by: Trond Myklebust
-
We need to ensure that the layouts are set up before we can decide to
coalesce requests. To do so, we want to further split up the struct
nfs_pageio_descriptor operations into an initialisation callback, a
coalescing test callback, and a 'do i/o' callback.This patch cleans up the existing callback methods before adding the
'initialisation' callback.Signed-off-by: Trond Myklebust
30 May, 2011
2 commits
-
Use common code for pnfs_pageio_init_{read,write} and use
a common generic pg_test function.Note that this function always assumes the the layout driver's
pg_test method is implemented.[Fix BUG]
Signed-off-by: Boaz Harrosh
Signed-off-by: Benny Halevy -
Add offset and count parameters to pnfs_update_layout and use them to get
the layout in the pageio path.Order cache layout segments in the following order:
* offset (ascending)
* length (descending)
* iomode (RW before READ)Test byte range against the layout segment in use in pnfs_{read,write}_pg_test
so not to coalesce pages not using the same layout segment.[fix lseg ordering]
[clean up pnfs_find_lseg lseg arg]
[remove unnecessary FIXME]
[fix ordering in pnfs_insert_layout]
[clean up pnfs_insert_layout]
Signed-off-by: Benny Halevy
12 May, 2011
1 commit
-
Currently, writebacks may end up recursing back into the filesystem due to
GFP_KERNEL direct reclaims in the pnfs subsystem.Signed-off-by: Trond Myklebust
15 Mar, 2011
1 commit
-
Signed-off-by: Stephen Rothwell
Signed-off-by: Trond Myklebust
12 Mar, 2011
7 commits
-
Now that we have access to the pointer, clear it immediately after
the put, instead of in caller.Signed-off-by: Fred Isaman
Signed-off-by: Trond Myklebust -
This will make it possible to clear the lseg pointer in the same
function as it is put, instead of in the caller nfs_pageio_doio().Signed-off-by: Fred Isaman
Signed-off-by: Trond Myklebust -
Use our own async error handler.
Mark the layout as failed and retry i/o through the MDS on specified errors.Update the mds_offset in nfs_readpage_retry so that a failed short-read retry
to a DS gets correctly resent through the MDS.Signed-off-by: Andy Adamson
Signed-off-by: Trond Myklebust -
Attempt a pNFS file layout read by setting up the nfs_read_data struct and
calling nfs_initiate_read with the data server rpc client and the
filelayout rpc call ops.Error handling is implemented in a subsequent patch.
Signed-off-by: Andy Adamson
Signed-off-by: Dean Hildebrand
Signed-off-by: Fred Isaman
Signed-off-by: Fred Isaman
Signed-off-by: Mingyang Guo
Signed-off-by: Oleg Drokin
Signed-off-by: Ricardo Labiaga
Tested-by: Guo Mingyang
Signed-off-by: Andy Adamson
Signed-off-by: Benny Halevy
Signed-off-by: Trond Myklebust -
Separate the rpc run portion of nfs_read_rpcsetup into a new function
nfs_initiate_read that is called for normal NFS I/O.Add a pNFS read_pagelist function that is called instead of nfs_intitate_read
for pNFS reads.Signed-off-by: Andy Adamson
Signed-off-by: Boaz Harrosh
Signed-off-by: Dean Hildebrand
Signed-off-by: Fred Isaman
Signed-off-by: Fred Isaman
Signed-off-by: Mike Sager
Signed-off-by: Mingyang Guo
Signed-off-by: Ricardo Labiaga
Signed-off-by: Tao Guo
Signed-off-by: Andy Adamson
Signed-off-by: Benny Halevy
Signed-off-by: Trond Myklebust -
Move the pnfs_update_layout call location to nfs_pageio_do_add_request().
Grab the lseg sent in the doio function to nfs_read_rpcsetup and attach
it to each nfs_read_data so it can be sent to the layout driver.Signed-off-by: Andy Adamson
Signed-off-by: Andy Adamson
Signed-off-by: Dean Hildebrand
Signed-off-by: Fred Isaman
Signed-off-by: Fred Isaman
Signed-off-by: Benny Halevy
Signed-off-by: Boaz Harrosh
Signed-off-by: Oleg Drokin
Signed-off-by: Tao Guo
Signed-off-by: Trond Myklebust -
Add a pg_test layout driver hook which is used to avoid coelescing I/O across
layout stripes.Signed-off-by: Andy Adamson
Signed-off-by: Andy Adamson
Signed-off-by: Dean Hildebrand
Signed-off-by: Fred Isaman
Signed-off-by: Fred Isaman
Signed-off-by: Benny Halevy
Signed-off-by: Boaz Harrosh
Signed-off-by: Oleg Drokin
Signed-off-by: Tao Guo
Signed-off-by: Trond Myklebust
08 Dec, 2010
1 commit
-
When a nfs_page is freed, nfs_free_request is called which also calls
nfs_clear_request to clean out the lock and open contexts and free the
pagecache page.However, a couple of places in the nfs code call nfs_clear_request
themselves. What happens here if the refcount on the request is still high?
We'll be releasing contexts and freeing pointers while the request is
possibly still in use.Remove those bare calls to nfs_clear_context. That should only be done when
the request is being freed.Note that when doing this, we need to watch out for tests of req->wb_page.
Previously, nfs_set_page_tag_locked() and nfs_clear_page_tag_locked()
would check the value of req->wb_page to figure out if the page is mapped
into the nfsi->nfs_page_tree. We now indicate the page is mapped using
the new bit PG_MAPPED in req->wb_flags .Reported-by: Jeff Layton
Signed-off-by: Trond Myklebust
25 Oct, 2010
1 commit
-
At the start of the io paths, try to grab the relevant layout
information. This will initiate the inode's layout cache, but
stubs ensure the cache stays empty.Signed-off-by: Benny Halevy
Signed-off-by: Dean Hildebrand
Signed-off-by: Marc Eshel
Signed-off-by: Tao Guo
Signed-off-by: Ricardo Labiaga
Signed-off-by: Boaz Harrosh
Signed-off-by: Andy Adamson
Signed-off-by: Fred Isaman
Signed-off-by: Trond Myklebust
24 Sep, 2010
1 commit
-
Having to explicitly initialize sr_slotid to NFS4_MAX_SLOT_TABLE
resulted in numerous bugs. Keeping the current slot as a pointer
to the slot table is more straight forward and robust as it's
implicitly set up to NULL wherever the seq_res member is initialized
to zeroes.Signed-off-by: Benny Halevy
Signed-off-by: Trond Myklebust
31 Jul, 2010
1 commit
-
This patch fixes bugzilla entry 14501:
https://bugzilla.kernel.org/show_bug.cgi?id=14501Signed-off-by: Trond Myklebust
23 Jun, 2010
1 commit
-
In anticipation of the day when we have per-filesystem sessions, and also
in order to allow the session to change in the event of a filesystem
migration event.Signed-off-by: Trond Myklebust
15 May, 2010
1 commit
-
There is no danger of deadlock should the allocation trigger page
writeback.Signed-off-by: Trond Myklebust
07 Dec, 2009
1 commit
-
Also rename it: it is used in generic code, and so should not have a 'nfs4'
prefix.Reported-by: Stephen Rothwell
Signed-off-by: Trond Myklebust
06 Dec, 2009
1 commit
-
We no longer need to maintain a distinction between nfs41_sequence_done and
nfs41_sequence_free_slot.This fixes a number of slot table leakages in the NFSv4.1 code.
Signed-off-by: Trond Myklebust
05 Dec, 2009
1 commit
-
nfs41_sequence_free_slot can be called multiple times on SEQUENCE operation
errors.
No reason to inline nfs4_restart_rpcReported-by: Trond Myklebust
nfs_writeback_done and nfs_readpage_retry call nfs4_restart_rpc outside the
error handler, and the slot is not freed prior to restarting in the rpc_prepare
state during session reset.Fix this by moving the call to nfs41_sequence_free_slot from the error
path of nfs41_sequence_done into nfs4_restart_rpc, and by removing the test
for NFS4CLNT_SESSION_SETUP.
Always free slot and goto the rpc prepare state on async errors.Signed-off-by: Andy Adamson
Signed-off-by: Trond Myklebust
12 Aug, 2009
1 commit
-
We can't call nfs_readdata_release()/nfs_writedata_release() without
first initialising and referencing args.context. Doing so inside
nfs_direct_read_schedule_segment()/nfs_direct_write_schedule_segment()
causes an Oops.We should rather be calling nfs_readdata_free()/nfs_writedata_free() in
those cases.Looking at the O_DIRECT code, the "struct nfs_direct_req" is already
referencing the nfs_open_context for us. Since the readdata and writedata
structures carry a reference to that, we can simplify things by getting rid
of the extra nfs_open_context references, so that we can replace all
instances of nfs_readdata_release()/nfs_writedata_release().Reported-by: Catalin Marinas
Signed-off-by: Trond Myklebust
Tested-by: Catalin Marinas
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds