13 Jan, 2012

1 commit


13 Jul, 2011

4 commits

  • We support IPv4 and IPv6 now.

    Signed-off-by: Weston Andros Adamson
    Signed-off-by: Trond Myklebust

    Weston Andros Adamson
     
  • Don't just use the first addr in the multipath list - instead, loop
    over addresses when calling nfs4_set_ds_client() (which calls connect)
    until it is successful.

    Although this is not real multipath support, it's a quick fix to handle when
    an MDS sends a list of addresses for a DS and some of the addr families are
    unsupported or misconfigured (like no routable ipv6 addr assigned).
    This will attempt all paths to the DS before giving up, instead of immediately
    falling back to the MDS.

    As before, an error encountered after a successful connect() will cause all
    i/o to fall back to the MDS.

    Signed-off-by: Weston Andros Adamson
    Signed-off-by: Trond Myklebust

    Weston Andros Adamson
     
  • This parses and stores all addresses associated with each data server,
    laying the groundwork for supporting multipath to data servers.

    - Skips over addresses that cannot be parsed (ie IPv6 addrs if v6 is not
    enabled). Only fails if none of the addresses are recognizable
    - Currently only uses the first address that parsed cleanly
    - Tested against pynfs server (modified to support multipath)

    Signed-off-by: Weston Andros Adamson
    Signed-off-by: Trond Myklebust

    Weston Andros Adamson
     
  • Handle ipv6 remote addresses from GETDEVICEINFO

    - supports netid "tcp" for ipv4 and "tcp6" for ipv6 as rfc 5665 specifies
    - added ds_remotestr to avoid having to handle different AFs in every dprintk
    - tested against pynfs 4.1 server, submitting ipv6 support patch to pynfs
    - tested with IPv6 disabled, it compiles cleanly and relies on rpc_pton to
    refuse to accept IPv6 addresses

    Signed-off-by: Weston Andros Adamson
    Signed-off-by: Trond Myklebust

    Weston Andros Adamson
     

30 May, 2011

2 commits

  • Initialize xdr_stream and xdr_buf using an array of page pointers
    and length of buffer.

    Signed-off-by: Benny Halevy

    Benny Halevy
     
  • Use the pnfs_layoutdriver_type both as a qualifier for the deviceid,
    distinguishing deviceid from different layout types on the server,
    and for freeing the layout-driver allocated structure containing the
    nfs4_deviceid_node.

    [BUG in _deviceid_purge_client]
    [layout_driver MUST set free_deviceid_node if using dev-cache]
    [let ver < 4.1 compile]
    Signed-off-by: Boaz Harrosh
    [removed EXPORT_SYMBOL_GPL(nfs4_deviceid_purge_client)]
    Signed-off-by: Benny Halevy

    Benny Halevy
     

29 May, 2011

2 commits

  • Move deviceid cache from the pnfs files layout driver to the
    generic layer in preparation for the objects layout driver.

    Signed-off-by: Benny Halevy

    Benny Halevy
     
  • deviceids are unique per server, per layout type.
    Therefore, in the global cache in the files layout driver
    deviceids from different servers may clash so we need
    to qualify them with a struct nfs_client that represents
    the nfs server that returned the deviceid.

    Introduced in 2.6.39 commit ea8eecdd
    "NFSv4.1 move deviceid cache to filelayout driver"

    Signed-off-by: Benny Halevy

    Benny Halevy
     

12 May, 2011

1 commit


25 Mar, 2011

1 commit


12 Mar, 2011

4 commits

  • If a data server is unavailable, go through MDS.

    Mark the deviceid containing the data server as a negative cache entry.
    Do not try to connect to any data server on a deviceid marked as a negative
    cache entry. Mark any layout that tries to use the marked deviceid as failed.

    Inodes with a layout marked as fails will not use the layout for I/O, and will
    not perform any more layoutgets.
    Inodes without a layout will still do layoutget, but the layout will get
    marked immediately.

    Signed-off-by: Andy Adamson
    Signed-off-by: Trond Myklebust

    Andy Adamson
     
  • No need for generic cache with only one user.
    Keep a simple hash of deviceids in the filelayout driver.

    Signed-off-by: Christoph Hellwig
    Acked-by: Andy Adamson
    Signed-off-by: Trond Myklebust

    Christoph Hellwig
     
  • Prepare for filelayout_read_pagelist with helper functions that find the correct
    data server, filehandle, and offset.

    Signed-off-by: Andy Adamson
    Signed-off-by: Dean Hildebrand
    Signed-off-by: Fred Isaman
    Signed-off-by: Marc Eshel
    Signed-off-by: Mike Sager
    Signed-off-by: Oleg Drokin
    Signed-off-by: Tao Guo
    Signed-off-by: Tigran Mkrtchyan
    Signed-off-by: Tigran Mkrtchyan
    Signed-off-by: Andy Adamson
    Signed-off-by: Benny Halevy
    Signed-off-by: Trond Myklebust

    Fred Isaman
     
  • Introduce a data server set_client and init session following the
    nfs4_set_client and nfs4_init_session convention.

    Once a new nfs_client is on the nfs_client_list, the nfs_client cl_cons_state
    serializes access to creating an nfs_client struct with matching properties.

    Use the new nfs_get_client() that initializes new clients.

    Signed-off-by: Andy Adamson
    Signed-off-by: Trond Myklebust

    Andy Adamson
     

11 Mar, 2011

1 commit


26 Jan, 2011

1 commit

  • On Mon, 17 Jan 2011, Mi Jinlong wrote:

    >
    >
    > Jesper Juhl:
    > > strrchr() can return NULL if nothing is found. If this happens we'll
    > > dereference a NULL pointer in
    > > fs/nfs/nfs4filelayoutdev.c::decode_and_add_ds().
    > >
    > > I tried to find some other code that guarantees that this can never
    > > happen but I was unsuccessful. So, unless someone else can point to some
    > > code that ensures this can never be a problem, I believe this patch is
    > > needed.
    > >
    > > While I was changing this code I also noticed that all the dprintk()
    > > statements, except one, start with "%s:". The one missing the ":" I added
    > > it to.
    >
    > Maybe another one also should be changed at decode_and_add_ds() at line 243:
    >
    > 243 printk("%s Decoded address and port %s\n", __func__, buf);
    >
    Missed that one. Thanks.

    Signed-off-by: Jesper Juhl
    Signed-off-by: Trond Myklebust

    Jesper Juhl
     

25 Oct, 2010

1 commit

  • Implement the driver's io_ops->alloc_lseg and free_lseg functions,
    which integrate into the deviceid cache and calls out to
    nfs4_proc_getdeviceinfo when necessary.

    Signed-off-by: Andy Adamson
    Signed-off-by: Dean Hildebrand
    Signed-off-by: Marc Eshel
    Signed-off-by: Mike Sager
    Signed-off-by: Oleg Drokin
    Signed-off-by: Ricardo Labiaga
    Signed-off-by: Tao Guo
    Signed-off-by: Boaz Harrosh
    Signed-off-by: Fred Isaman
    Signed-off-by: Trond Myklebust

    Andy Adamson