Leaked source code of windows server 2003
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.

70 lines
1.9 KiB

  1. /* structure used by BMExpungelink to fix indexes
  2. /**/
  3. typedef struct _bmfix {
  4. PIB *ppib; /* bm cleanup thread */
  5. FUCB *pfucb; /* cursor to node */
  6. FUCB *pfucbSrc; /* cursor to backlink */
  7. BF **rgpbf; /* wait latched buffers required for bmfix */
  8. INT cpbf;
  9. INT cpbfMax;
  10. SRID sridOld;
  11. SRID sridNew;
  12. } BMFIX;
  13. /* structure used by BMDeleteNode
  14. /**/
  15. typedef struct _bmdelnode {
  16. SRID sridFather;
  17. PN pn;
  18. INT fUndeletableNodeSeen :1;
  19. INT fConflictSeen :1;
  20. INT fVersionedNodeSeen :1;
  21. INT fNodeDeleted :1;
  22. INT fPageRemoved :1;
  23. INT fLastNode :1;
  24. INT fLastNodeWithLinks :1;
  25. INT fInternalPage :1; // is the current page leaf-level?
  26. INT fAttemptToDeleteMaxKey :1;
  27. } BMDELNODE;
  28. /* register pages for bookmark cleanup. To register a page, the pn
  29. /* of the page, pgno of domain FDP and srid of visible father are
  30. /* needed.
  31. /**/
  32. ERR ErrMPLInit( VOID );
  33. VOID MPLTerm( VOID );
  34. VOID MPLRegister( FCB *pfcb, SSIB *pssib, PN pn, SRID sridFather );
  35. VOID MPLPurge(DBID dbid);
  36. VOID MPLPurgeFDP( DBID dbid, PGNO pgnoFDP );
  37. VOID MPLPurgePgno( DBID dbid, PGNO pgnoFirst, PGNO pgnoLast );
  38. ERR ErrMPLStatus( VOID );
  39. extern PIB *ppibBMClean;
  40. ERR ErrBMInit( VOID );
  41. ERR ErrBMTerm( VOID );
  42. ERR ErrBMDoEmptyPage(
  43. FUCB *pfucb,
  44. RMPAGE *prmpage,
  45. BOOL fAllocBuf,
  46. BOOL *pfRmParent,
  47. BOOL fSkipDelete);
  48. ERR ErrBMDoMerge( FUCB *pfucb, FUCB *pfucbRight, SPLIT *psplit, LRMERGE *plrmerge );
  49. ERR ErrBMDoMergeParentPageUpdate( FUCB *pfucb, SPLIT *psplit );
  50. ERR ErrBMAddToLatchedBFList( RMPAGE *prmpage, BF *pbfLatched );
  51. ERR ErrBMCleanBeforeSplit( PIB *ppib, FCB *pfcb, PN pn );
  52. ERR ErrBMClean( PIB *ppib );
  53. BOOL FBMMaxKeyInPage( FUCB *pfucb );
  54. #ifdef DEBUG
  55. VOID AssertNotInMPL( DBID dbid, PGNO pgnoFirst, PGNO pgnoLast );
  56. VOID AssertMPLPurgeFDP( DBID dbid, PGNO pgnoFDP );
  57. BOOL FMPLLookupPN( PN pn );
  58. //#define OLC_DEBUG 1
  59. #endif
  60.