11 Mar, 2012

5 commits

  • This queue is used for sleeping in kernel and it have to be per-net since we
    don't want to wake any other waiters except in out network nemespace.
    BTW, move wq to per-net data is easy. But some way to handle upcall timeouts
    have to be provided. On message destroy in case of timeout, tasks, waiting for
    message to be delivered, should be awakened. Thus, some data required to
    located the right wait queue. Chosen solution replaces rpc_pipe_msg object with
    new introduced bl_pipe_msg object, containing rpc_pipe_msg and proper wq.

    Signed-off-by: Stanislav Kinsbursky
    Signed-off-by: Trond Myklebust

    Stanislav Kinsbursky
     
  • This global variable is used for blocklayout downcall and thus can be corrupted
    if case of existence of multiple networks namespaces.

    Signed-off-by: Stanislav Kinsbursky
    Signed-off-by: Trond Myklebust

    Stanislav Kinsbursky
     
  • The radix tree is only being used to compile lists of reqs needing commit.
    It is simpler to just put the reqs directly into a list.

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

    Fred Isaman
     
  • The last real use of this tag was removed by
    commit 7f2f12d963 NFS: Simplify nfs_wb_page()

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

    Fred Isaman
     
  • When the NFSv4.0 server tells us that it can no-longer talk to us
    on the callback channel, we should attempt a new SETCLIENTID in
    order to re-transmit the callback channel information.

    Note that as long as we do not change the boot verifier, this is
    a safe procedure; the server is required to keep our state.

    Also move the function nfs_handle_cb_pathdown to fs/nfs/nfs4state.c,
    and change the name in order to mark it as being specific to NFSv4.0.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

09 Mar, 2012

3 commits


08 Mar, 2012

2 commits


07 Mar, 2012

3 commits


06 Mar, 2012

19 commits


04 Mar, 2012

1 commit


03 Mar, 2012

7 commits

  • Get rid of

    encode_compound: tag=

    when XDR debugging is enabled. The current Linux client never sets
    compound tags.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     
  • The fh_expire_type file attribute is a filesystem wide attribute that
    consists of flags that indicate what characteristics file handles
    on this FSID have.

    Our client doesn't support volatile file handles. It should find
    out early (say, at mount time) whether the server is going to play
    shenanighans with file handles during a migration.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     
  • The Linux NFS client must distinguish between referral events (which
    it currently supports) and migration events (which it does not yet
    support).

    In both types of events, an fs_locations array is returned. But upper
    layers, not the XDR layer, should make the distinction between a
    referral and a migration. There really isn't a way for an XDR decoder
    function to distinguish the two, in general.

    Slightly adjust the FATTR flags returned by decode_fs_locations()
    to set NFS_ATTR_FATTR_V4_LOCATIONS only if a non-empty locations
    array was returned from the server. Then have logic in nfs4proc.c
    distinguish whether the locations array is for a referral or
    something else.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     
  • Clean up: pass just the clientid4 to encode_renew(). This enables it
    to be used by callers who might not have an full nfs_client.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     
  • For debugging, introduce a simplistic function to print NFS file
    handles on the system console. The main function is hooked into the
    dprintk debugging facility, but you can directly call the helper,
    _nfs_display_fhandle(), if you want to print a handle unconditionally.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     
  • For NFSv4 mounts, the clientaddr= mount option has always been
    required. Now we have rpc_localaddr() in the kernel, which was
    modeled after the same logic in the mount.nfs command that constructs
    the clientaddr= mount option. If user space doesn't provide a
    clientaddr= mount option, the kernel can now construct its own.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     
  • NFSv4.0 clients must send endpoint information for their callback
    service to NFSv4.0 servers during their first contact with a server.
    Traditionally on Linux, user space provides the callback endpoint IP
    address via the "clientaddr=" mount option.

    During an NFSv4 migration event, it is possible that an FSID may be
    migrated to a destination server that is accessible via a different
    source IP address than the source server was. The client must update
    callback endpoint information on the destination server so that it can
    maintain leases and allow delegation.

    Without a new "clientaddr=" option from user space, however, the
    kernel itself must construct an appropriate IP address for the
    callback update. Provide an API in the RPC client for upper layer
    RPC consumers to acquire a source address for a remote.

    The mechanism used by the mount.nfs command is copied: set up a
    connected UDP socket to the designated remote, then scrape the source
    address off the socket. We are careful to select the correct network
    namespace when setting up the temporary UDP socket.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever