Subject: [nfsv4] server to server copy draft 5

From: Tom Haynes <[email-masked]>
Date: Wed, 14 Jul 2010 11:58:53 -0500

http://www.ietf.org/id/draft-lentini-nfsv4-server-side-copy-05.txt

> 5.1.3.  Inter-Server Copy via ONC RPC but without RPCSEC_GSSv3
>
> ...
>
>    For example, suppose the network topology is as shown in Figure 3.
>    If the source filehandle is 0x12345, the source server may respond to
>    a COPY_NOTIFY for destination 10.11.78.56 with the URLs:
>
>       nfs://10.11.78.18//_COPY/10.11.78.56/_FH/0x12345
>
>       nfs://192.168.33.18//_COPY/10.11.78.56/_FH/0x12345
>
>    The client will then send these URLs to the destination server in the
>    COPY operation.  Suppose that the 192.168.33.0/24 network is a high
>    speed network and the destination server decides to transfer the file
>    over this network.  If the destination contacts the source server
>    from 192.168.33.56 over this network using NFSv4.1, it does the
>    following:
>
>    COMPOUND  { PUTROOTFH, LOOKUP "_COPY" ; LOOKUP "10.11.78.56"; LOOKUP
>       "_FH" ; OPEN "0x12345" ; GETFH }
>
>    The source server will therefore know that these NFSv4.1 operations
>    are being issued by the destination server identified in the
>    COPY_NOTIFY.

While the example is in a specific section, I think it applies to any and
all NFSv4.x server implementations. A problem with this example is that it
sets the precedence that rooted names beginning with an underscore ('_')
are special in the namespace of the server.

The pathless object draft
(http://tools.ietf.org/id/draft-dipankar-nfsv4-pathless-objects-00.txt)
faces a similar namespace issue and introduces PUTOBJROOTFH.

I'd like to see a consistent approach to adding new types of namespaces.
That might mean PUTCOPYROOTFH or it might mean a new operator that gets the
filehandle for a namespace component.

SETROOTFH files           ; equivalent to PUTROOTFH
SETROOTFH public          ; equivalent to PUTPUBFH
SETROOTFH copy
SETROOTFH object

I wouldn't want "SETROOTFH files" to obsolete PUTROOTFH, but I do want to be
able to express the root of the files namespace in this operation.