MS-FSA: Per Open (Volatile): RootOpen - Share FileName - absolute/relative to root? File Link Stream Privileges - (backup/restore/symlink/manage volume/is_admin) GrantedAccess RemainingDesiredAccess SharingAccess Per Directory: search mask, search index... some more stuff... UserSetModTime UserSetWriteTime NextEAEntry OplockKey (guid) Per Brlock (Volatile): LockOffset LockLength IsExclusive OwnerOpen Per NotifyEntryWatch (Volatile): ... Per RHOpcontext (Volatile): Open BreakingToRead Per Oplock (Volatile per Stream): ExclusiveOpen: 1 Open Level2Opens: 0..x Opens ReadOpens: 0..x Opens ReadHandleOpens: 0..x Opens ReadHandleBreakQueue: 0..x RHOpContexts WaitList: 0..x Opens waiting for Breaks State: all kind of flags NO_OPLOCK LEVEL_ONE_OPLOCK BATCH_OPLOCK LEVEL_TWO_OPLOCK EXCLUSIVE BREAK_TO_TWO BREAK_TO_NONE BREAK_TO_TWO_TO_NONE READ_CACHING HANDLE_CACHING WRITE_CACHING ??? Per File (Persistent): FileType: file or directory FileID: uint64_t unique (inode?) FileNumber: uint64_t unique (seqnum?) LinkList: 1..x links (dir => x == 1) SecurityDescriptor: FileAttributes: CreationTime: LastModificationTime: LastChangeTime: LastAccessTime: ExtendedAttributes: ExtendedAttributesLength: ObjectId: guid maybe NULL BirthVolumeId: guid BirthObjectId: guid maybe NULL StreamList: ReparseTag: uint32_t ReparseGUID: guid ReparseData: DirectoryList: for directories only Volume: Usn: uint64_t IsSymbolicLink: UserCertificateList: Volatile Fields: OpenList: PendingNotifications: uint32_t ??? for directories only Per Link (Persistent): Name: 1..256 chars (UTF16 or UCS2?) ShortName: maybe NULL File: ParentFile: IsDeleted: Volatile Fields: PendingNotifications: uint32_t ??? for directories only Per Stream (Persistent): StreamType: data or directory stream Name: 256 chars (UTF16 or UCS2) Size: uint64_t AllocationSize: uint64_t multiple of File.Volume.ClusterSize. ValidDataLength: uint64_t (optional) File: IsCompressed: IsSparse: IsTemporary: IsEncrypted: ExtentList: Volatile Fields: Oplock: maybe NULL ByteRangeLockList: IsDeleted: IsDefectManagementDisabled: PendingNotifications: uint32_t ??? for directories only ZeroOnDeallocate: SMB 2.10: - session reauth - branch cache hash - multi-credit on port 445 - lease and resilience - lock replay!!! The SMB 2.1 dialect introduces the following enhancements: - Allowing a client to indicate support for multiple SMB 2 dialects in a multi-protocol negotiate request. - Allowing a client to obtain and preserve client caching state across multiple opens from the same client. - Allowing a client to mark individual write operations on unbuffered handles to be treated as write-through. - Allowing a client to retrieve hashes of a file for use in branch cache retrieval, as specified in [MS- PCCRC]. SMB 2.22: channel epoch number... channel bind should distribute the fd's related to the session via fd passing. cluster: witness discovery witness monitoring. register/unregister. async rpc. net name offline ip offline net name online ip online loadbalancing client side failover client cluster: application move