mirror of https://github.com/UMSKT/xpmgr.git
89 lines
2.5 KiB
C
89 lines
2.5 KiB
C
/*=============================================================================
|
|
|
|
Copyright (c) 1998 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
clfslsn.h
|
|
|
|
Abstract:
|
|
|
|
Header file containing the private definition for the common log
|
|
file system's log sequence number structure.
|
|
|
|
Author:
|
|
|
|
Dexter Bradshaw [DexterB] 09-Dec-1998
|
|
|
|
|
|
Revision History:
|
|
|
|
=============================================================================*/
|
|
|
|
#ifndef _CLFS_LSN_H_
|
|
#define _CLFS_LSN_H_
|
|
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WS03SP1) || (_WIN32_WINNT >= _WIN32_WINNT_WS03)
|
|
//
|
|
// CLFS_RECORD_INDEX
|
|
//
|
|
// Log record offset on container file. The log record offset consists of a block
|
|
// offset in the container and a bucket identifier indexing the records in the block.
|
|
// Declared up here because including clfs_x.h will try to define the LSN, which needs
|
|
// this.
|
|
//
|
|
|
|
typedef UINT32 CLFS_RECORD_INDEX;
|
|
#endif /* NTDDI_VERSION || _WIN32_WINNT */
|
|
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WS03SP1) || (_WIN32_WINNT >= _WIN32_WINNT_WS03)
|
|
//
|
|
// CLS_LSN
|
|
//
|
|
// The log sequence number (LSN) is a valid log file address. The LSN consists of
|
|
// three (3) parts: (a) a log identifier to identify which physical log the log record
|
|
// belongs to, (b) a container index identifying the log container where the log record
|
|
// lies, and (c) a record offset identified by the offset of the block in the container
|
|
// and an ordinal number for the record within the container.
|
|
//
|
|
//
|
|
// The structure of the LSN poses some inherent limitations of the number of logs,
|
|
// the number of containers, the size of a container, and the number of log records in
|
|
// a log block.
|
|
//
|
|
// Maximum number of physical log files is 64K.
|
|
// Maximum number of container identifiers is 4G.
|
|
// Maximum size of a container is 4G.
|
|
// Maximum number of sector-aligned log blocks is 8M
|
|
// Maximum number of record buckets in a log block is 512
|
|
//
|
|
|
|
typedef union _CLS_LSN
|
|
{
|
|
//
|
|
// Container identifier
|
|
//
|
|
|
|
struct
|
|
{
|
|
CLFS_RECORD_INDEX idxRecord; // Record offset on container.
|
|
CLFS_CONTAINER_ID cidContainer; // Container identifier.
|
|
} offset;
|
|
|
|
__volatile ULONGLONG ullOffset; // Sequence number within physical log.
|
|
|
|
} CLS_LSN, *PCLS_LSN, **PPCLS_LSN;
|
|
|
|
//
|
|
// Alias CLS prefixed types with CLFS prefixes.
|
|
//
|
|
|
|
typedef CLS_LSN CLFS_LSN;
|
|
typedef CLFS_LSN *PCLFS_LSN, **PPCLFS_LSN;
|
|
#endif /* NTDDI_VERSION || _WIN32_WINNT */
|
|
|
|
#endif
|
|
|