Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
2.0 KiB

  1. /*++
  2. Copyright (c) 1990 Microsoft Corporation
  3. Module Name:
  4. LfsData.c
  5. Abstract:
  6. This module declares the global data used by the Logging File Service.
  7. Author:
  8. Brian Andrew [BrianAn] 20-June-1991
  9. Revision History:
  10. --*/
  11. #include "lfsprocs.h"
  12. //
  13. // The debug trace level
  14. //
  15. #define Dbg (DEBUG_TRACE_CATCH_EXCEPTIONS)
  16. //
  17. // The global Lfs data record
  18. //
  19. LFS_DATA LfsData;
  20. //
  21. // Various large integer constants.
  22. //
  23. LARGE_INTEGER LfsLi0 = {0x00000000, 0x00000000};
  24. LARGE_INTEGER LfsLi1 = {0x00000001, 0x00000000};
  25. //
  26. // The following Lsn will never occur in a file, it is used to indicate
  27. // a non-lsn.
  28. //
  29. LSN LfsZeroLsn = {0x00000000, 0x00000000};
  30. #ifdef LFSDBG
  31. LONG LfsDebugTraceLevel = 0x0000000F;
  32. LONG LfsDebugTraceIndent = 0;
  33. #endif // LFSDBG
  34. #ifdef LFS_CLUSTER_CHECK
  35. //
  36. // Check for gaps in the log.
  37. //
  38. BOOLEAN LfsTestBreakOnAnyError = TRUE;
  39. BOOLEAN LfsTestCheckLbcb = TRUE;
  40. #endif
  41. LONG
  42. LfsExceptionFilter (
  43. IN PEXCEPTION_POINTERS ExceptionPointer
  44. )
  45. /*++
  46. Routine Description:
  47. This routine is used to decide if we should or should not handle
  48. an exception status that is being raised. It indicates that we should handle
  49. the exception or bug check the system.
  50. Arguments:
  51. ExceptionCode - Supplies the exception code to being checked.
  52. Return Value:
  53. ULONG - returns EXCEPTION_EXECUTE_HANDLER or bugchecks
  54. --*/
  55. {
  56. NTSTATUS ExceptionCode = ExceptionPointer->ExceptionRecord->ExceptionCode;
  57. #ifdef NTFS_RESTART
  58. ASSERT( (ExceptionCode != STATUS_DISK_CORRUPT_ERROR) &&
  59. (ExceptionCode != STATUS_FILE_CORRUPT_ERROR) );
  60. #endif
  61. //if (ExceptionCode != STATUS_LOG_FILE_FULL) {
  62. //
  63. // DbgPrint("Status not LOGFILE FULL, ExceptionPointers = %08lx\n", ExceptionPointer);
  64. // DbgBreakPoint();
  65. //}
  66. if (!FsRtlIsNtstatusExpected( ExceptionCode )) {
  67. return EXCEPTION_CONTINUE_SEARCH;
  68. } else {
  69. return EXCEPTION_EXECUTE_HANDLER;
  70. }
  71. }