15 Oct, 2012

3 commits


29 Sep, 2012

5 commits


17 Jul, 2012

2 commits


29 Jun, 2012

1 commit


28 May, 2012

1 commit


23 May, 2012

5 commits


20 May, 2012

10 commits


28 Apr, 2012

13 commits

  • This is a bugfix that applies on top of the previous directio patches,
    that fixes a bug introduced in "NFS: create struct nfs_commit_info".

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • This also has the advantage that it allows directio to use pnfs.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • Factors out the code that needs to change when directio
    starts using these code paths.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • It is COMMIT that is handled the most differently between
    the paged and direct paths. Create a structure that encapsulates
    everything either path needs to know about the commit state.

    We could use void to hide some of the layout driver stuff, but
    Trond suggests pulling it out to ensure type checking, given the
    huge changes being made, and the fact that it doesn't interfere
    with other drivers.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • The coalesce code made assumptions that will no longer be true once
    non-page aligned io occurs. This introduces no change in
    current behavior, but allows for more general situations to come.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • Decouple nfs_pgio_header and nfs_write_data, and have (possibly
    multiple) nfs_write_datas each take a refcount on nfs_pgio_header.

    For the moment keeps nfs_write_header as a way to preallocate a single
    nfs_write_data with the nfs_pgio_header. The code doesn't need this,
    and would be prettier without, but given the amount of churn I am
    already introducing I didn't want to play with tuning new mempools.

    This also fixes bug in pnfs_ld_handle_write_error. In the case of
    desc->pg_bsize < PAGE_CACHE_SIZE, the pages list was empty, causing
    replay attempt to do nothing.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • Decouple nfs_pgio_header and nfs_read_data, and have (possibly
    multiple) nfs_read_datas each take a refcount on nfs_pgio_header.

    For the moment keeps nfs_read_header as a way to preallocate a single
    nfs_read_data with the nfs_pgio_header. The code doesn't need this,
    and would be prettier without, but given the amount of churn I am
    already introducing I didn't want to play with tuning new mempools.

    This also fixes bug in pnfs_ld_handle_read_error. In the case of
    desc->pg_bsize < PAGE_CACHE_SIZE, the pages list was empty, causing
    replay attempt to do nothing.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • In order to avoid duplicating all the data in nfs_read_data whenever we
    split it up into multiple RPC calls (either due to a short read result
    or due to rsize < PAGE_SIZE), we split out the bits that are the same
    per RPC call into a separate "header" structure.

    The goal this patch moves towards is to have a single header
    refcounted by several rpc_data structures. Thus, want to always refer
    from rpc_data to the header, and not the other way. This patch comes
    close to that ideal, but the directio code currently needs some
    special casing, isolated in the nfs_direct_[read_write]hdr_release()
    functions. This will be dealt with in a future patch.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • Make it consistent with nfs_initiate_commit.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • Commits don't need the vectors of pages, etc. that writes do. Split out
    a separate structure for the commit operation.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • Also create a commit_info structure to hold the bucket array and push
    it up from the lseg to the layout where it really belongs.

    While we are at it, fix a refcounting bug due to an (incorrect)
    implicit assumption that filelayout_scan_ds_commit_list always
    completely emptied the src list.

    This clarifies refcounting, removes the ugly find_only_write_lseg
    functions, and pushes the file layout commit code along on the path to
    supporting multiple lsegs.

    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Fred Isaman