29int apaJournalFlush(s32 device)
31 if(blkIoFlushCache(device))
33 if(blkIoDmaTransfer(device, &journalBuf, APA_SECTOR_APAL, 1, BLKIO_DIR_WRITE))
35 if(blkIoFlushCache(device))
40int apaJournalReset(s32 device)
43 journalBuf.magic=APAL_MAGIC;
44 return apaJournalFlush(device);
49 clink->header->checksum=journalCheckSum(clink->header);
50 if(blkIoDmaTransfer(clink->device, clink->header,
51 (journalBuf.num << 1)+APA_SECTOR_APAL_HEADERS, 2, BLKIO_DIR_WRITE))
53 journalBuf.sectors[journalBuf.num]=clink->sector;
58int apaJournalRestore(s32 device)
63 APA_PRINTF(APA_DRV_NAME
": checking log...\n");
64 ret = blkIoDmaTransfer(device, &journalBuf, APA_SECTOR_APAL,
sizeof(
apa_journal_t)/512, BLKIO_DIR_READ) == 0 ? 0 : -
EIO;
65 if((ret == 0) && (journalBuf.magic == APAL_MAGIC))
70 if(journalBuf.num == 0)
73 clink=apaCacheAlloc();
74 for(i=0, sector=APA_SECTOR_APAL_HEADERS;i<journalBuf.num;i++, sector+=2)
76 ret = (blkIoDmaTransfer(device, clink->header, sector, 2, BLKIO_DIR_READ) == 0) ? 0 : -
EIO;
80 ret = (blkIoDmaTransfer(device, clink->header, journalBuf.sectors[i], 2, BLKIO_DIR_WRITE) == 0) ? 0 : -
EIO;
87 return apaJournalReset(device);