2.1.1.4 Per Link

A Link structure connects a file name to a directory containing the file. Additionally, a Link duplicates certain information about the file (timestamps, sizes, etc.), that can be used to satisfy directory query operations (see section 2.1.5.6). Note that for performance reasons an object store MAY delay updating a Link’s duplicated information following modifications to a file, resulting in directory queries returning stale information. Some file modifications require an immediate update of the duplicated information, which will be noted in this document by invoking the algorithm described in section 2.1.4.18.

The object store MUST implement the following persistent attributes:<26>

  • Name: A Unicode string specifying the name of the link. This string MUST be greater than 0 characters and less than 256 characters in length. Valid form for a link name is the same as the pathname specification in [MS-FSCC] section 2.1.5.

  • ShortName: A Unicode string specifying the short name of the link.<27> This value could be empty. If this value is not empty, it MUST be 8.3-compliant as described in [MS-FSCC] section 2.1.5.2.1.

  • File: The File that this link refers to.

  • ParentFile: The parent DirectoryFile that this link resides in.

  • CreationTime: The time that identifies when the file was created in the FILETIME format specified in [MS-FSCC] section 2.1.1.<28>

  • LastModificationTime: The time that identifies when the file contents were last modified in the FILETIME format specified in [MS-FSCC] section 2.1.1.<29>

  • LastChangeTime: The time that identifies when the file metadata or contents were last changed in the FILETIME format specified in [MS-FSCC] section 2.1.1.<30>

  • LastAccessTime: The time that identifies when the file was last accessed in the FILETIME format specified in [MS-FSCC] section 2.1.1. Updating this value when accesses occur is optional.<31><32>

  • AllocationSize: A 64-bit unsigned integer containing the size, in bytes, of space reserved on the disk for the file’s unnamed data stream. This value MUST be a multiple of File.Volume.ClusterSize.

  • FileSize: A 64-bit unsigned integer containing the size of the file’s unnamed data stream, in bytes.

  • FileAttributes: Attributes of the file in the form specified in [MS-FSCC] section 2.6.

  • ExtendedAttributesLength: A 32-bit unsigned integer that contains the combined length of all the ExtendedAttributes.<33>

  • ReparseTag: A 32-bit unsigned integer containing the type of the reparse point, as defined in [MS-FSCC] section 2.1.2.1. If this member is empty, there is no reparse point associated with this file.

Volatile Fields:

  • IsDeleted: A Boolean that is TRUE if there is a pending delete operation on the link. New opens to the associated Stream MUST NOT be allowed.

  • PendingNotifications: A 32-bit unsigned integer composed of flags indicating types of changes to link attributes for which directory change notifications are pending, as specified in [MS-SMB2] section 2.2.35, CompletionFilter field.