Lines Matching refs:be

71 #define	IS_VOLATILE(be)		((be)->be_ppath != NULL)  argument
493 sqlite_backend_t *be = arg; in backend_trace_sql() local
496 (void) fprintf(stderr, "%d: %s\n", be->be_type, sql); in backend_trace_sql()
602 backend_error(sqlite_backend_t *be, int error, char *errmsg) in backend_error() argument
619 backend_panic("%s: db error: %s", be->be_path, errmsg); in backend_error()
794 backend_backup_base(sqlite_backend_t *be, const char *name, in backend_backup_base() argument
804 (void) strlcpy(out, IS_VOLATILE(be) ? be->be_ppath : be->be_path, in backend_backup_base()
846 backend_checkpoint_repository(sqlite_backend_t *be) in backend_checkpoint_repository() argument
850 assert(be->be_readonly); /* Only need a checkpoint if / is ro */ in backend_checkpoint_repository()
851 assert(be->be_type == BACKEND_TYPE_NORMAL); in backend_checkpoint_repository()
852 assert(be->be_checkpoint == NULL); /* Only 1 checkpoint */ in backend_checkpoint_repository()
854 r = backend_copy_repository(be->be_path, REPOSITORY_CHECKPOINT, 0); in backend_checkpoint_repository()
856 be->be_checkpoint = REPOSITORY_CHECKPOINT; in backend_checkpoint_repository()
997 backend_create_backup_locked(sqlite_backend_t *be, const char *name) in backend_create_backup_locked() argument
1032 if (be->be_readonly) { in backend_create_backup_locked()
1038 result = backend_backup_base(be, name, finalpath, PATH_MAX); in backend_create_backup_locked()
1048 if (be->be_checkpoint && name && in backend_create_backup_locked()
1052 src = be->be_checkpoint; in backend_create_backup_locked()
1056 src = be->be_path; in backend_create_backup_locked()
1174 (void) unlink(be->be_checkpoint); in backend_create_backup_locked()
1175 be->be_checkpoint = NULL; in backend_create_backup_locked()
1200 backend_check_upgrade(sqlite_backend_t *be, boolean_t do_upgrade) in backend_check_upgrade() argument
1211 r = sqlite_exec(be->be_db, "SELECT value_order FROM value_tbl LIMIT 1;", in backend_check_upgrade()
1216 r = sqlite_exec(be->be_db, in backend_check_upgrade()
1242 be->be_path, errp); in backend_check_upgrade()
1253 backend_check_readonly(sqlite_backend_t *be, int writing, hrtime_t t) in backend_check_readonly() argument
1260 assert(be->be_readonly); in backend_check_readonly()
1261 assert(be == bes[BACKEND_TYPE_NORMAL]); in backend_check_readonly()
1268 if ((uint64_t)(t - be->be_lastcheck) < in backend_check_readonly()
1271 be->be_lastcheck = t; in backend_check_readonly()
1280 check_path = IS_VOLATILE(be) ? be->be_ppath : be->be_path; in backend_check_readonly()
1299 if (writing && (IS_VOLATILE(be) == 0)) in backend_check_readonly()
1309 be->be_readonly = 0; in backend_check_readonly()
1311 if (IS_VOLATILE(be)) { in backend_check_readonly()
1327 sqlite_close(be->be_db); in backend_check_readonly()
1328 be->be_db = new; in backend_check_readonly()
1331 if (be->be_type == BACKEND_TYPE_NORMAL) in backend_check_readonly()
1332 backend_check_upgrade(be, B_TRUE); in backend_check_readonly()
1334 if (backend_create_backup_locked(be, REPOSITORY_BOOT_BACKUP) != in backend_check_readonly()
1338 REPOSITORY_BOOT_BACKUP, be->be_path); in backend_check_readonly()
1354 sqlite_backend_t *be = NULL; in backend_lock() local
1362 be = bes[t]; in backend_lock()
1364 assert(be != NULL); /* should always be there */ in backend_lock()
1366 if (be == NULL) in backend_lock()
1374 (void) pthread_mutex_lock(&be->be_lock); in backend_lock()
1375 UPDATE_TOTALS_WR(be, writing, bt_lock, ts, vts); in backend_lock()
1378 (void) pthread_mutex_unlock(&be->be_lock); in backend_lock()
1381 be->be_thread = pthread_self(); in backend_lock()
1383 if (be->be_readonly) { in backend_lock()
1387 r = backend_check_readonly(be, writing, ts); in backend_lock()
1389 be->be_thread = 0; in backend_lock()
1390 (void) pthread_mutex_unlock(&be->be_lock); in backend_lock()
1396 (void) sqlite_trace(be->be_db, backend_trace_sql, be); in backend_lock()
1398 (void) sqlite_trace(be->be_db, NULL, NULL); in backend_lock()
1400 be->be_writing = writing; in backend_lock()
1401 *bep = be; in backend_lock()
1406 backend_unlock(sqlite_backend_t *be) in backend_unlock() argument
1408 be->be_writing = 0; in backend_unlock()
1409 be->be_thread = 0; in backend_unlock()
1410 (void) pthread_mutex_unlock(&be->be_lock); in backend_unlock()
1414 backend_destroy(sqlite_backend_t *be) in backend_destroy() argument
1416 if (be->be_db != NULL) { in backend_destroy()
1417 sqlite_close(be->be_db); in backend_destroy()
1418 be->be_db = NULL; in backend_destroy()
1420 be->be_thread = 0; in backend_destroy()
1421 (void) pthread_mutex_unlock(&be->be_lock); in backend_destroy()
1422 (void) pthread_mutex_destroy(&be->be_lock); in backend_destroy()
1426 backend_create_finish(backend_type_t backend_id, sqlite_backend_t *be) in backend_create_finish() argument
1428 assert(MUTEX_HELD(&be->be_lock)); in backend_create_finish()
1429 assert(be == &be_info[backend_id]); in backend_create_finish()
1431 bes[backend_id] = be; in backend_create_finish()
1432 (void) pthread_mutex_unlock(&be->be_lock); in backend_create_finish()
1464 sqlite_backend_t *be; in backend_create_backup() local
1467 result = backend_lock(BACKEND_TYPE_NORMAL, 0, &be); in backend_create_backup()
1470 result = backend_create_backup_locked(be, name); in backend_create_backup()
1471 backend_unlock(be); in backend_create_backup()
1628 sqlite_backend_t *be; in backend_switch() local
1640 &be); in backend_switch()
1657 if (strcmp(be->be_path, dst) == 0) { in backend_switch()
1664 result = backend_copy_repository(be->be_path, dst, dir); in backend_switch()
1678 free((char *)be->be_path); in backend_switch()
1679 be->be_path = strdup(dst); in backend_switch()
1680 if (be->be_path == NULL) { in backend_switch()
1687 sqlite_close(be->be_db); in backend_switch()
1688 be->be_db = new; in backend_switch()
1691 be->be_ppath = NULL; in backend_switch()
1698 be->be_ppath = REPOSITORY_DB; in backend_switch()
1720 backend_unlock(be); in backend_switch()
1835 sqlite_backend_t *be; in backend_create() local
1843 be = &be_info[backend_id]; in backend_create()
1845 assert(be->be_db == NULL); in backend_create()
1847 (void) pthread_mutex_init(&be->be_lock, NULL); in backend_create()
1848 (void) pthread_mutex_lock(&be->be_lock); in backend_create()
1850 be->be_type = backend_id; in backend_create()
1851 be->be_path = strdup(db_file); in backend_create()
1852 if (be->be_path == NULL) { in backend_create()
1857 be->be_db = sqlite_open(be->be_path, 0600, &errp); in backend_create()
1859 if (be->be_db == NULL) { in backend_create()
1880 r = sqlite_exec(be->be_db, "SELECT schema_version FROM schema_version;", in backend_create()
1889 r = sqlite_exec(be->be_db, "SELECT count() FROM id_tbl;", in backend_create()
1894 *bep = be; in backend_create()
1904 backend_destroy(be); in backend_create()
1933 r = sqlite_exec(be->be_db, "PRAGMA integrity_check;", in backend_create()
1939 backend_destroy(be); in backend_create()
2016 backend_check_upgrade(be, B_FALSE); in backend_create()
2020 r = backend_is_readonly(be->be_db, be->be_path); in backend_create()
2025 backend_destroy(be); in backend_create()
2030 be->be_readonly = 1; in backend_create()
2031 *bep = be; in backend_create()
2035 *bep = be; in backend_create()
2040 backend_destroy(be); in backend_create()
2075 sqlite_backend_t *be; in backend_run() local
2081 if ((ret = backend_lock(t, 0, &be)) != REP_PROTOCOL_SUCCESS) in backend_run()
2086 ret = sqlite_exec(be->be_db, q->bq_buf, cb, data, &errmsg); in backend_run()
2087 UPDATE_TOTALS(be, bt_exec, ts, vts); in backend_run()
2088 ret = backend_error(be, ret, errmsg); in backend_run()
2089 backend_unlock(be); in backend_run()
2111 sqlite_backend_t *be; in backend_tx_begin_common() local
2120 if ((r = backend_lock(t, writable, &be)) != REP_PROTOCOL_SUCCESS) { in backend_tx_begin_common()
2125 ret->bt_be = be; in backend_tx_begin_common()
2143 sqlite_backend_t *be; in backend_tx_end() local
2145 be = tx->bt_be; in backend_tx_end()
2155 new = sqlite_open(be->be_path, 0600, NULL); in backend_tx_end()
2157 sqlite_close(be->be_db); in backend_tx_end()
2158 be->be_db = new; in backend_tx_end()
2161 backend_unlock(be); in backend_tx_end()
2218 sqlite_backend_t *be; in backend_tx_rollback() local
2222 be = tx->bt_be; in backend_tx_rollback()
2226 r = sqlite_exec(be->be_db, "ROLLBACK TRANSACTION", NULL, NULL, in backend_tx_rollback()
2228 UPDATE_TOTALS(be, bt_exec, ts, vts); in backend_tx_rollback()
2231 (void) backend_error(be, r, errmsg); in backend_tx_rollback()
2245 sqlite_backend_t *be; in backend_tx_commit() local
2249 be = tx->bt_be; in backend_tx_commit()
2252 r = sqlite_exec(be->be_db, "COMMIT TRANSACTION", NULL, NULL, in backend_tx_commit()
2254 UPDATE_TOTALS(be, bt_exec, ts, vts); in backend_tx_commit()
2258 r = backend_error(be, r, errmsg); in backend_tx_commit()
2262 r2 = sqlite_exec(be->be_db, "ROLLBACK TRANSACTION", NULL, NULL, in backend_tx_commit()
2264 r2 = backend_error(be, r2, errmsg); in backend_tx_commit()
2312 sqlite_backend_t *be; in backend_new_id() local
2316 be = tx->bt_be; in backend_new_id()
2323 ret = sqlite_exec_printf(be->be_db, in backend_new_id()
2327 UPDATE_TOTALS(be, bt_exec, ts, vts); in backend_new_id()
2331 ret = backend_error(be, ret, errmsg); in backend_new_id()
2352 sqlite_backend_t *be; in backend_tx_run() local
2356 be = tx->bt_be; in backend_tx_run()
2363 ret = sqlite_exec(be->be_db, q->bq_buf, cb, data, &errmsg); in backend_tx_run()
2364 UPDATE_TOTALS(be, bt_exec, ts, vts); in backend_tx_run()
2367 ret = backend_error(be, ret, errmsg); in backend_tx_run()
2406 sqlite_backend_t *be; in backend_tx_run_update() local
2410 be = tx->bt_be; in backend_tx_run_update()
2415 ret = sqlite_exec_vprintf(be->be_db, format, NULL, NULL, &errmsg, a); in backend_tx_run_update()
2416 UPDATE_TOTALS(be, bt_exec, ts, vts); in backend_tx_run_update()
2420 ret = backend_error(be, ret, errmsg); in backend_tx_run_update()
2435 sqlite_backend_t *be; in backend_tx_run_update_changed() local
2439 be = tx->bt_be; in backend_tx_run_update_changed()
2444 ret = sqlite_exec_vprintf(be->be_db, format, NULL, NULL, &errmsg, a); in backend_tx_run_update_changed()
2445 UPDATE_TOTALS(be, bt_exec, ts, vts); in backend_tx_run_update_changed()
2450 ret = backend_error(be, ret, errmsg); in backend_tx_run_update_changed()
2455 #define BACKEND_ADD_SCHEMA(be, file, tbls, idxs) \ argument
2456 (backend_add_schema((be), (file), \
2461 backend_add_schema(sqlite_backend_t *be, const char *file, in backend_add_schema() argument
2477 ret = sqlite_exec_printf(be->be_db, in backend_add_schema()
2499 ret = sqlite_exec_printf(be->be_db, in backend_add_schema()
2516 backend_init_schema(sqlite_backend_t *be, const char *db_file, backend_type_t t) in backend_init_schema() argument
2525 ret = BACKEND_ADD_SCHEMA(be, db_file, tbls_normal, idxs_normal); in backend_init_schema()
2527 ret = BACKEND_ADD_SCHEMA(be, db_file, tbls_np, idxs_np); in backend_init_schema()
2536 ret = BACKEND_ADD_SCHEMA(be, db_file, tbls_common, idxs_common); in backend_init_schema()
2544 ret = sqlite_exec_printf(be->be_db, in backend_init_schema()
2559 ret = sqlite_exec_printf(be->be_db, in backend_init_schema()
2574 ret = sqlite_exec_printf(be->be_db, in backend_init_schema()
2591 sqlite_backend_t *be; in backend_init() local
2638 r = backend_create(BACKEND_TYPE_NORMAL, db_file, &be); in backend_init()
2650 if (backend_init_schema(be, db_file, BACKEND_TYPE_NORMAL)) { in backend_init()
2651 backend_destroy(be); in backend_init()
2659 backend_create_finish(BACKEND_TYPE_NORMAL, be); in backend_init()
2687 sqlite_close(be->be_db); in backend_init()
2688 be->be_db = fast_db; in backend_init()
2689 be->be_ppath = be->be_path; in backend_init()
2690 be->be_path = db_name_copy; in backend_init()
2699 r = backend_create(BACKEND_TYPE_NONPERSIST, npdb_file, &be); in backend_init()
2711 if (backend_init_schema(be, db_file, in backend_init()
2713 backend_destroy(be); in backend_init()
2721 backend_create_finish(BACKEND_TYPE_NONPERSIST, be); in backend_init()
2738 backend_lock(BACKEND_TYPE_NORMAL, 0, &be) == in backend_init()
2740 if (backend_create_backup_locked(be, in backend_init()
2745 be->be_path); in backend_init()
2747 backend_unlock(be); in backend_init()
2763 backend_lock(BACKEND_TYPE_NORMAL, 0, &be) == in backend_init()
2765 r = backend_checkpoint_repository(be); in backend_init()
2768 "of \"%s\"\n", be->be_path); in backend_init()
2770 backend_unlock(be); in backend_init()
2780 backend_lock(BACKEND_TYPE_NORMAL, 0, &be) == in backend_init()
2786 be->be_checkpoint = REPOSITORY_CHECKPOINT; in backend_init()
2796 if (be->be_checkpoint && writable_persist) { in backend_init()
2797 if (backend_create_backup_locked(be, in backend_init()
2803 be->be_path); in backend_init()
2806 backend_unlock(be); in backend_init()
2820 r = backend_lock(BACKEND_TYPE_NORMAL, 1, &be); in backend_init()
2822 backend_check_upgrade(be, B_TRUE); in backend_init()
2823 backend_unlock(be); in backend_init()