int se_reqwrite(sereq *r) { sereqarg *arg = &r->arg; svlog *log = r->arg.log; se *e = se_of(r->object); /* set lsn */ sl_prepare(&e->lp, log, arg->lsn); /* log write */ if (! arg->recover) { sltx tl; sl_begin(&e->lp, &tl); int rc = sl_write(&tl, log); if (ssunlikely(rc == -1)) { sl_rollback(&tl); r->rc = -1; return -1; } sl_commit(&tl); } /* commit */ if (sslikely(arg->vlsn_generate)) arg->vlsn = sx_vlsn(&e->xm); uint64_t now = ss_utime(); svlogindex *i = (svlogindex*)log->index.s; svlogindex *end = (svlogindex*)log->index.p; while (i < end) { sedb *db = i->ptr; sitx ti; si_begin(&ti, &db->index, arg->vlsn, now, log, i); si_write(&ti, arg->recover); si_commit(&ti); i++; } return 0; }
.rotatewm = 1000 }; slpool lp; t( sl_poolinit(&lp, &st_r.r) == 0 ); t( sl_poolopen(&lp, &conf) == 0 ); t( sl_poolrotate(&lp) == 0 ); svlog log; sv_loginit(&log); alloclogv(&log, &st_r.r, 0, 0, 7); sltx ltx; t( sl_begin(&lp, <x) == 0 ); t( sl_write(<x, &log) == 0 ); t( sl_commit(<x) == 0 ); freelog(&log, &st_r.r); t( sl_poolshutdown(&lp) == 0 ); } static void sl_itertx_read_empty(void) { slconf conf = { .path = st_r.conf->log_dir, .enable = 1, .rotatewm = 1000 }; slpool lp; t( sl_poolinit(&lp, &st_r.r) == 0 );