Subject: [nfsv4] Inconsistencies in RFC5661 regarding Device IDs and LAYOUTRECALL4_{FSID, ALL}

From: Benny Halevy <[email-masked]>
Date: Mon, 15 Mar 2010 15:56:53 +0200

Looks like another item on the errata...

Section 12.2.10 says:
   The scope of a device ID is the pair <client ID, layout type>.
   ...
   A device ID lives as long as there is a layout referring to the
   device ID.  If there are no layouts referring to the device ID, the
   server is free to delete the device ID any time.  Once a device ID is
   deleted by the server, the server MUST NOT reuse the device ID for
   the same layout type and client ID again.
   ...
   A server has two
   choices for changing mappings.  It can recall all layouts referring
   to the device ID or it can use a notification mechanism.
   ...
   The NFSv4.1 protocol has no optimal way to recall all layouts that
   referred to a particular device ID (unless the server associates a
   single device ID with a single fsid or a single client ID; in which
   case, CB_LAYOUTRECALL has options for recalling all layouts
   associated with the fsid, client ID pair, or just the client ID).

However, in 20.3. Operation 5: CB_LAYOUTRECALL, the spec says this:
      In addition, LAYOUTRECALL4_FSID and LAYOUTRECALL4_ALL
      specify that all the storage device ID to storage device address
      mappings in the affected file system(s) are also recalled.  The
      respective LAYOUTRETURN with either LAYOUTRETURN4_FSID or
      LAYOUTRETURN4_ALL acknowledges to the server that the client
      invalidated the said device mappings.

Although the latter text was first historically, it needs to be fixed
to reflect the changes made circa draft-18 and later.

Benny