Show
Ignore:
Timestamp:
07/13/08 20:52:42 (4 months ago)
Author:
mwhitworth
Message:

Add to filesystem and journal structures.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Whitix/branches/fs/include/fs/journal.h

    r776 r795  
    3838#define JOURN_METADATA  2 
    3939#define JOURN_LOGCTL    3 
     40#define JOURN_SHADOW    4 
     41#define JOURN_IO                5 
     42#define JOURN_FORGET    6 
    4043 
    4144struct JournalHead 
    4245{ 
    4346        struct Buffer* buffer; 
    44         struct JournalTrans* transaction; 
     47        struct JournalTrans* transaction, *nextTransaction; 
    4548        int list; 
    4649        struct ListHead next; 
     50        WaitQueue wait; 
    4751}; 
    4852 
    4953#define JTRANS_RUNNING  1 
     54#define JTRANS_COMMIT   2 
    5055 
    5156struct JournalTrans 
     
    5358        struct Journal* journal; 
    5459        int state, transId, outstandingBlocks; 
    55         DWORD expires; 
     60        DWORD expires, logStart; 
    5661        int updates, handleCount; 
    5762 
     
    6065        struct ListHead metaDataList; 
    6166        struct ListHead logControlList; 
     67        struct ListHead shadowList; 
     68        struct ListHead ioList; 
     69        struct ListHead forgetList; 
     70         
     71        struct ListHead next; 
    6272}; 
    6373 
     
    7080 
    7181#define JOURN_COMMIT_INTERVAL   2 /* seconds */ 
     82 
     83#define JOURN_UNMOUNT   1 
    7284 
    7385struct Journal 
     
    7688        int version; 
    7789        DWORD maxLength, sectorSize, maxTransactionBuffers; 
     90        BYTE uuid[16]; 
    7891 
    7992        /* Sequence numbers. */ 
    80         DWORD transSequence, commitSequence, commitRequest; 
     93        DWORD transSequence, commitSequence, tailSequence, commitRequest; 
    8194 
    8295        /* Block management. */ 
    83         DWORD head, free; 
     96        DWORD head, tail, free; 
     97         
     98        /* Checkpoints. */ 
     99        struct ListHead checkpointTrans; 
    84100 
    85101        struct JournalTrans* currTransaction, *committingTrans; 
    86102        struct Thread* commitThread; 
    87         WaitQueue commitWait, commitWaitDone; 
    88         int commitInterval; 
     103        WaitQueue commitWait, commitWaitDone, waitUpdates; 
     104        int commitInterval, flags; 
     105}; 
     106 
     107#define JOURN_PASS_SCAN         0 
     108#define JOURN_PASS_REVOKE       1 
     109#define JOURN_PASS_REPLAY       2 
     110 
     111struct JournalRecovery 
     112{ 
     113        DWORD firstTransaction, endTransaction; 
    89114}; 
    90115 
     
    98123}PACKED; 
    99124 
     125#define JOURN_FLAG_SAME_UUID    2 
     126#define JOURN_FLAG_LAST_TAG             8 
     127 
     128struct JournalBlockTag 
     129{ 
     130        DWORD blockNum; 
     131        DWORD flags; 
     132}; 
     133 
    100134/* Block types. */ 
    101135#define JFS_DESC_BLOCK          1 
     136#define JFS_COMMIT_BLOCK        2 
    102137#define JFS_SUPERBLOCK_V1       3 
    103138#define JFS_SUPERBLOCK_V2       4 
     
    126161struct JournalHead* JournalAddHeader(struct Buffer* buffer); 
    127162struct JournalHead* JournalGetDescriptorBuffer(struct Journal* journal); 
     163void JournalUpdateSuperBlock(struct Journal* journal); 
     164int JournalBlockMap(struct Journal* journal, DWORD blockNo, DWORD* ret); 
    128165 
    129166/* transaction.c */ 
     
    131168int JournalDirtyMetadata(struct JournalHandle* handle, struct Buffer* buffer); 
    132169int JournalForceCommit(struct Journal* journal); 
     170void JournalFileBuffer(struct JournalHead* head, struct JournalTrans* trans, int type); 
     171void JournalUnfileBuffer(struct JournalHead* head); 
    133172 
    134173/* commit.c */ 
     
    140179int JournalRecover(struct Journal* journal, struct JournalSuperBlock* jSb); 
    141180 
     181/* checkpoint.c */ 
     182int JournalCheckpoint(struct Journal* journal); 
     183 
    142184/* Defines */ 
    143185