Lines Matching refs:pPg

400 static void page_add_to_ckpt_list(PgHdr *pPg){  in page_add_to_ckpt_list()  argument
401 Pager *pPager = pPg->pPager; in page_add_to_ckpt_list()
402 if( pPg->inCkpt ) return; in page_add_to_ckpt_list()
403 assert( pPg->pPrevCkpt==0 && pPg->pNextCkpt==0 ); in page_add_to_ckpt_list()
404 pPg->pPrevCkpt = 0; in page_add_to_ckpt_list()
406 pPager->pCkpt->pPrevCkpt = pPg; in page_add_to_ckpt_list()
408 pPg->pNextCkpt = pPager->pCkpt; in page_add_to_ckpt_list()
409 pPager->pCkpt = pPg; in page_add_to_ckpt_list()
410 pPg->inCkpt = 1; in page_add_to_ckpt_list()
412 static void page_remove_from_ckpt_list(PgHdr *pPg){ in page_remove_from_ckpt_list() argument
413 if( !pPg->inCkpt ) return; in page_remove_from_ckpt_list()
414 if( pPg->pPrevCkpt ){ in page_remove_from_ckpt_list()
415 assert( pPg->pPrevCkpt->pNextCkpt==pPg ); in page_remove_from_ckpt_list()
416 pPg->pPrevCkpt->pNextCkpt = pPg->pNextCkpt; in page_remove_from_ckpt_list()
418 assert( pPg->pPager->pCkpt==pPg ); in page_remove_from_ckpt_list()
419 pPg->pPager->pCkpt = pPg->pNextCkpt; in page_remove_from_ckpt_list()
421 if( pPg->pNextCkpt ){ in page_remove_from_ckpt_list()
422 assert( pPg->pNextCkpt->pPrevCkpt==pPg ); in page_remove_from_ckpt_list()
423 pPg->pNextCkpt->pPrevCkpt = pPg->pPrevCkpt; in page_remove_from_ckpt_list()
425 pPg->pNextCkpt = 0; in page_remove_from_ckpt_list()
426 pPg->pPrevCkpt = 0; in page_remove_from_ckpt_list()
427 pPg->inCkpt = 0; in page_remove_from_ckpt_list()
449 PgHdr *pPg, *pNext; in pager_reset() local
450 for(pPg=pPager->pAll; pPg; pPg=pNext){ in pager_reset()
451 pNext = pPg->pNextAll; in pager_reset()
452 sqliteFree(pPg); in pager_reset()
482 PgHdr *pPg; in pager_unwritelock() local
495 for(pPg=pPager->pAll; pPg; pPg=pPg->pNextAll){ in pager_unwritelock()
496 pPg->inJournal = 0; in pager_unwritelock()
497 pPg->dirty = 0; in pager_unwritelock()
498 pPg->needSync = 0; in pager_unwritelock()
537 PgHdr *pPg; /* An existing page in the cache */ in pager_playback_one_page() local
568 pPg = pager_lookup(pPager, pgRec.pgno); in pager_playback_one_page()
572 if( pPg ){ in pager_playback_one_page()
580 memcpy(PGHDR_TO_DATA(pPg), pgRec.aData, SQLITE_PAGE_SIZE); in pager_playback_one_page()
581 memset(PGHDR_TO_EXTRA(pPg), 0, pPager->nExtra); in pager_playback_one_page()
582 pPg->dirty = 0; in pager_playback_one_page()
583 pPg->needSync = 0; in pager_playback_one_page()
584 CODEC(pPager, PGHDR_TO_DATA(pPg), pPg->pgno, 3); in pager_playback_one_page()
737 PgHdr *pPg; in pager_playback() local
738 for(pPg=pPager->pAll; pPg; pPg=pPg->pNextAll){ in pager_playback()
740 if( !pPg->dirty ) continue; in pager_playback()
741 if( (int)pPg->pgno <= pPager->origDbSize ){ in pager_playback()
742 sqliteOsSeek(&pPager->fd, SQLITE_PAGE_SIZE*(off_t)(pPg->pgno-1)); in pager_playback()
744 TRACE2("REFETCH %d\n", pPg->pgno); in pager_playback()
745 CODEC(pPager, zBuf, pPg->pgno, 2); in pager_playback()
750 if( pPg->nRef==0 || memcmp(zBuf, PGHDR_TO_DATA(pPg), SQLITE_PAGE_SIZE) ){ in pager_playback()
751 memcpy(PGHDR_TO_DATA(pPg), zBuf, SQLITE_PAGE_SIZE); in pager_playback()
752 memset(PGHDR_TO_EXTRA(pPg), 0, pPager->nExtra); in pager_playback()
754 pPg->needSync = 0; in pager_playback()
755 pPg->dirty = 0; in pager_playback()
1077 PgHdr *pPg, *pNext; in sqlitepager_close() local
1094 for(pPg=pPager->pAll; pPg; pPg=pNext){ in sqlitepager_close()
1095 pNext = pPg->pNextAll; in sqlitepager_close()
1096 sqliteFree(pPg); in sqlitepager_close()
1130 static void _page_ref(PgHdr *pPg){ in _page_ref() argument
1131 if( pPg->nRef==0 ){ in _page_ref()
1133 if( pPg==pPg->pPager->pFirstSynced ){ in _page_ref()
1134 PgHdr *p = pPg->pNextFree; in _page_ref()
1136 pPg->pPager->pFirstSynced = p; in _page_ref()
1138 if( pPg->pPrevFree ){ in _page_ref()
1139 pPg->pPrevFree->pNextFree = pPg->pNextFree; in _page_ref()
1141 pPg->pPager->pFirst = pPg->pNextFree; in _page_ref()
1143 if( pPg->pNextFree ){ in _page_ref()
1144 pPg->pNextFree->pPrevFree = pPg->pPrevFree; in _page_ref()
1146 pPg->pPager->pLast = pPg->pPrevFree; in _page_ref()
1148 pPg->pPager->nRef++; in _page_ref()
1150 pPg->nRef++; in _page_ref()
1151 REFINFO(pPg); in _page_ref()
1159 PgHdr *pPg = DATA_TO_PGHDR(pData); in sqlitepager_ref() local
1160 page_ref(pPg); in sqlitepager_ref()
1185 PgHdr *pPg; in syncJournal() local
1233 for(pPg=pPager->pAll; pPg; pPg=pPg->pNextAll){ in syncJournal()
1234 pPg->needSync = 0; in syncJournal()
1245 for(pPg=pPager->pAll; pPg; pPg=pPg->pNextAll){ in syncJournal()
1246 assert( pPg->needSync==0 ); in syncJournal()
1321 PgHdr *pPg; in sqlitepager_get() local
1385 pPg = 0; in sqlitepager_get()
1388 pPg = pager_lookup(pPager, pgno); in sqlitepager_get()
1390 if( pPg==0 ){ in sqlitepager_get()
1396 pPg = sqliteMallocRaw( sizeof(*pPg) + SQLITE_PAGE_SIZE in sqlitepager_get()
1398 if( pPg==0 ){ in sqlitepager_get()
1403 memset(pPg, 0, sizeof(*pPg)); in sqlitepager_get()
1404 pPg->pPager = pPager; in sqlitepager_get()
1405 pPg->pNextAll = pPager->pAll; in sqlitepager_get()
1407 pPager->pAll->pPrevAll = pPg; in sqlitepager_get()
1409 pPg->pPrevAll = 0; in sqlitepager_get()
1410 pPager->pAll = pPg; in sqlitepager_get()
1416 pPg = pPager->pFirstSynced; in sqlitepager_get()
1423 if( pPg==0 ){ in sqlitepager_get()
1429 pPg = pPager->pFirst; in sqlitepager_get()
1431 assert( pPg->nRef==0 ); in sqlitepager_get()
1435 if( pPg->dirty ){ in sqlitepager_get()
1436 assert( pPg->needSync==0 ); in sqlitepager_get()
1437 pPg->pDirty = 0; in sqlitepager_get()
1438 rc = pager_write_pagelist( pPg ); in sqlitepager_get()
1444 assert( pPg->dirty==0 ); in sqlitepager_get()
1454 if( pPg->alwaysRollback ){ in sqlitepager_get()
1460 if( pPg==pPager->pFirstSynced ){ in sqlitepager_get()
1461 PgHdr *p = pPg->pNextFree; in sqlitepager_get()
1465 if( pPg->pPrevFree ){ in sqlitepager_get()
1466 pPg->pPrevFree->pNextFree = pPg->pNextFree; in sqlitepager_get()
1468 assert( pPager->pFirst==pPg ); in sqlitepager_get()
1469 pPager->pFirst = pPg->pNextFree; in sqlitepager_get()
1471 if( pPg->pNextFree ){ in sqlitepager_get()
1472 pPg->pNextFree->pPrevFree = pPg->pPrevFree; in sqlitepager_get()
1474 assert( pPager->pLast==pPg ); in sqlitepager_get()
1475 pPager->pLast = pPg->pPrevFree; in sqlitepager_get()
1477 pPg->pNextFree = pPg->pPrevFree = 0; in sqlitepager_get()
1478 if( pPg->pNextHash ){ in sqlitepager_get()
1479 pPg->pNextHash->pPrevHash = pPg->pPrevHash; in sqlitepager_get()
1481 if( pPg->pPrevHash ){ in sqlitepager_get()
1482 pPg->pPrevHash->pNextHash = pPg->pNextHash; in sqlitepager_get()
1484 h = pager_hash(pPg->pgno); in sqlitepager_get()
1485 assert( pPager->aHash[h]==pPg ); in sqlitepager_get()
1486 pPager->aHash[h] = pPg->pNextHash; in sqlitepager_get()
1488 pPg->pNextHash = pPg->pPrevHash = 0; in sqlitepager_get()
1491 pPg->pgno = pgno; in sqlitepager_get()
1495 pPg->inJournal = (pPager->aInJournal[pgno/8] & (1<<(pgno&7)))!=0; in sqlitepager_get()
1496 pPg->needSync = 0; in sqlitepager_get()
1498 pPg->inJournal = 0; in sqlitepager_get()
1499 pPg->needSync = 0; in sqlitepager_get()
1503 page_add_to_ckpt_list(pPg); in sqlitepager_get()
1505 page_remove_from_ckpt_list(pPg); in sqlitepager_get()
1507 pPg->dirty = 0; in sqlitepager_get()
1508 pPg->nRef = 1; in sqlitepager_get()
1509 REFINFO(pPg); in sqlitepager_get()
1512 pPg->pNextHash = pPager->aHash[h]; in sqlitepager_get()
1513 pPager->aHash[h] = pPg; in sqlitepager_get()
1514 if( pPg->pNextHash ){ in sqlitepager_get()
1515 assert( pPg->pNextHash->pPrevHash==0 ); in sqlitepager_get()
1516 pPg->pNextHash->pPrevHash = pPg; in sqlitepager_get()
1519 memset(PGHDR_TO_EXTRA(pPg), 0, pPager->nExtra); in sqlitepager_get()
1523 sqlitepager_unref(PGHDR_TO_DATA(pPg)); in sqlitepager_get()
1528 memset(PGHDR_TO_DATA(pPg), 0, SQLITE_PAGE_SIZE); in sqlitepager_get()
1532 rc = sqliteOsRead(&pPager->fd, PGHDR_TO_DATA(pPg), SQLITE_PAGE_SIZE); in sqlitepager_get()
1533 TRACE2("FETCH %d\n", pPg->pgno); in sqlitepager_get()
1534 CODEC(pPager, PGHDR_TO_DATA(pPg), pPg->pgno, 3); in sqlitepager_get()
1539 sqlitepager_unref(PGHDR_TO_DATA(pPg)); in sqlitepager_get()
1542 memset(PGHDR_TO_DATA(pPg), 0, SQLITE_PAGE_SIZE); in sqlitepager_get()
1549 page_ref(pPg); in sqlitepager_get()
1551 *ppPage = PGHDR_TO_DATA(pPg); in sqlitepager_get()
1567 PgHdr *pPg; in sqlitepager_lookup() local
1578 pPg = pager_lookup(pPager, pgno); in sqlitepager_lookup()
1579 if( pPg==0 ) return 0; in sqlitepager_lookup()
1580 page_ref(pPg); in sqlitepager_lookup()
1581 return PGHDR_TO_DATA(pPg); in sqlitepager_lookup()
1593 PgHdr *pPg; in sqlitepager_unref() local
1597 pPg = DATA_TO_PGHDR(pData); in sqlitepager_unref()
1598 assert( pPg->nRef>0 ); in sqlitepager_unref()
1599 pPg->nRef--; in sqlitepager_unref()
1600 REFINFO(pPg); in sqlitepager_unref()
1605 if( pPg->nRef==0 ){ in sqlitepager_unref()
1607 pPager = pPg->pPager; in sqlitepager_unref()
1608 pPg->pNextFree = 0; in sqlitepager_unref()
1609 pPg->pPrevFree = pPager->pLast; in sqlitepager_unref()
1610 pPager->pLast = pPg; in sqlitepager_unref()
1611 if( pPg->pPrevFree ){ in sqlitepager_unref()
1612 pPg->pPrevFree->pNextFree = pPg; in sqlitepager_unref()
1614 pPager->pFirst = pPg; in sqlitepager_unref()
1616 if( pPg->needSync==0 && pPager->pFirstSynced==0 ){ in sqlitepager_unref()
1617 pPager->pFirstSynced = pPg; in sqlitepager_unref()
1724 PgHdr *pPg = DATA_TO_PGHDR(pData); in sqlitepager_begin() local
1725 Pager *pPager = pPg->pPager; in sqlitepager_begin()
1727 assert( pPg->nRef>0 ); in sqlitepager_begin()
1763 PgHdr *pPg = DATA_TO_PGHDR(pData); in sqlitepager_write() local
1764 Pager *pPager = pPg->pPager; in sqlitepager_write()
1779 pPg->dirty = 1; in sqlitepager_write()
1780 if( pPg->inJournal && (pPg->inCkpt || pPager->ckptInUse==0) ){ in sqlitepager_write()
1809 if( !pPg->inJournal && pPager->useJournal ){ in sqlitepager_write()
1810 if( (int)pPg->pgno <= pPager->origDbSize ){ in sqlitepager_write()
1814 u32 cksum = pager_cksum(pPager, pPg->pgno, pData); in sqlitepager_write()
1815 saved = *(u32*)PGHDR_TO_EXTRA(pPg); in sqlitepager_write()
1816 store32bits(cksum, pPg, SQLITE_PAGE_SIZE); in sqlitepager_write()
1821 store32bits(pPg->pgno, pPg, -4); in sqlitepager_write()
1822 CODEC(pPager, pData, pPg->pgno, 7); in sqlitepager_write()
1824 TRACE3("JOURNAL %d %d\n", pPg->pgno, pPg->needSync); in sqlitepager_write()
1825 CODEC(pPager, pData, pPg->pgno, 0); in sqlitepager_write()
1827 *(u32*)PGHDR_TO_EXTRA(pPg) = saved; in sqlitepager_write()
1836 pPager->aInJournal[pPg->pgno/8] |= 1<<(pPg->pgno&7); in sqlitepager_write()
1837 pPg->needSync = !pPager->noSync; in sqlitepager_write()
1838 pPg->inJournal = 1; in sqlitepager_write()
1840 pPager->aInCkpt[pPg->pgno/8] |= 1<<(pPg->pgno&7); in sqlitepager_write()
1841 page_add_to_ckpt_list(pPg); in sqlitepager_write()
1844 pPg->needSync = !pPager->journalStarted && !pPager->noSync; in sqlitepager_write()
1845 TRACE3("APPEND %d %d\n", pPg->pgno, pPg->needSync); in sqlitepager_write()
1847 if( pPg->needSync ){ in sqlitepager_write()
1857 if( pPager->ckptInUse && !pPg->inCkpt && (int)pPg->pgno<=pPager->ckptSize ){ in sqlitepager_write()
1858 assert( pPg->inJournal || (int)pPg->pgno>pPager->origDbSize ); in sqlitepager_write()
1859 store32bits(pPg->pgno, pPg, -4); in sqlitepager_write()
1860 CODEC(pPager, pData, pPg->pgno, 7); in sqlitepager_write()
1862 TRACE2("CKPT-JOURNAL %d\n", pPg->pgno); in sqlitepager_write()
1863 CODEC(pPager, pData, pPg->pgno, 0); in sqlitepager_write()
1871 pPager->aInCkpt[pPg->pgno/8] |= 1<<(pPg->pgno&7); in sqlitepager_write()
1872 page_add_to_ckpt_list(pPg); in sqlitepager_write()
1877 if( pPager->dbSize<(int)pPg->pgno ){ in sqlitepager_write()
1878 pPager->dbSize = pPg->pgno; in sqlitepager_write()
1889 PgHdr *pPg = DATA_TO_PGHDR(pData); in sqlitepager_iswriteable() local
1890 return pPg->dirty; in sqlitepager_iswriteable()
1937 PgHdr *pPg; in sqlitepager_dont_write() local
1939 pPg = pager_lookup(pPager, pgno); in sqlitepager_dont_write()
1940 pPg->alwaysRollback = 1; in sqlitepager_dont_write()
1941 if( pPg && pPg->dirty ){ in sqlitepager_dont_write()
1942 if( pPager->dbSize==(int)pPg->pgno && pPager->origDbSize<pPager->dbSize ){ in sqlitepager_dont_write()
1953 pPg->dirty = 0; in sqlitepager_dont_write()
1965 PgHdr *pPg = DATA_TO_PGHDR(pData); in sqlitepager_dont_rollback() local
1966 Pager *pPager = pPg->pPager; in sqlitepager_dont_rollback()
1969 if( pPg->alwaysRollback || pPager->alwaysRollback ) return; in sqlitepager_dont_rollback()
1970 if( !pPg->inJournal && (int)pPg->pgno <= pPager->origDbSize ){ in sqlitepager_dont_rollback()
1972 pPager->aInJournal[pPg->pgno/8] |= 1<<(pPg->pgno&7); in sqlitepager_dont_rollback()
1973 pPg->inJournal = 1; in sqlitepager_dont_rollback()
1975 pPager->aInCkpt[pPg->pgno/8] |= 1<<(pPg->pgno&7); in sqlitepager_dont_rollback()
1976 page_add_to_ckpt_list(pPg); in sqlitepager_dont_rollback()
1978 TRACE2("DONT_ROLLBACK %d\n", pPg->pgno); in sqlitepager_dont_rollback()
1980 if( pPager->ckptInUse && !pPg->inCkpt && (int)pPg->pgno<=pPager->ckptSize ){ in sqlitepager_dont_rollback()
1981 assert( pPg->inJournal || (int)pPg->pgno>pPager->origDbSize ); in sqlitepager_dont_rollback()
1983 pPager->aInCkpt[pPg->pgno/8] |= 1<<(pPg->pgno&7); in sqlitepager_dont_rollback()
1984 page_add_to_ckpt_list(pPg); in sqlitepager_dont_rollback()
1997 PgHdr *pPg; in sqlitepager_commit() local
2027 pPg = pager_get_all_dirty_pages(pPager); in sqlitepager_commit()
2028 if( pPg ){ in sqlitepager_commit()
2029 rc = pager_write_pagelist(pPg); in sqlitepager_commit()
2164 PgHdr *pPg, *pNext; in sqlitepager_ckpt_commit() local
2171 for(pPg=pPager->pCkpt; pPg; pPg=pNext){ in sqlitepager_ckpt_commit()
2172 pNext = pPg->pNextCkpt; in sqlitepager_ckpt_commit()
2173 assert( pPg->inCkpt ); in sqlitepager_ckpt_commit()
2174 pPg->inCkpt = 0; in sqlitepager_ckpt_commit()
2175 pPg->pPrevCkpt = pPg->pNextCkpt = 0; in sqlitepager_ckpt_commit()
2222 PgHdr *pPg; in sqlitepager_refdump() local
2223 for(pPg=pPager->pAll; pPg; pPg=pPg->pNextAll){ in sqlitepager_refdump()
2224 if( pPg->nRef<=0 ) continue; in sqlitepager_refdump()
2226 pPg->pgno, (int)PGHDR_TO_DATA(pPg), pPg->nRef); in sqlitepager_refdump()