diff options
Diffstat (limited to 'src/btree/rec_write.c')
-rw-r--r-- | src/btree/rec_write.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/btree/rec_write.c b/src/btree/rec_write.c index 30281e93b22..8c4926386ca 100644 --- a/src/btree/rec_write.c +++ b/src/btree/rec_write.c @@ -296,7 +296,7 @@ __wt_rec_write( break; } WT_RET(__wt_page_modify_init(session, page)); - __wt_page_modify_set(session, page); + __wt_page_modify_set(page); return (0); } @@ -344,7 +344,7 @@ __wt_rec_write( WT_VERBOSE_RET(session, reconcile, "root page split %p -> %p", page, page->modify->u.split); page = page->modify->u.split; - __wt_page_modify_set(session, page); + __wt_page_modify_set(page); F_CLR(page->modify, WT_PM_REC_SPLIT_MERGE); WT_RET(__wt_rec_write(session, page, NULL)); @@ -1167,7 +1167,7 @@ __wt_rec_bulk_wrapup(WT_CURSOR_BULK *cbulk) /* Mark the page's parent dirty. */ WT_RET(__wt_page_modify_init(session, page->parent)); - __wt_page_modify_set(session, page->parent); + __wt_page_modify_set(page->parent); return (0); } @@ -3062,15 +3062,17 @@ err: __wt_scr_free(&tkey); } /* - * Success: if modifications were skipped, the tree cannot be clean. As - * the checkpoint initiation code might have cleared the tree's modified - * flag, explicitly dirty the page, which includes setting the tree's - * modified flag. If modifications were not skipped, the page might be - * clean, update the disk generation to the write generation as of when - * reconciliation started. + * Success. + * If modifications were skipped, the tree isn't clean. The checkpoint + * call cleared the tree's modified value before it called the eviction + * thread, so we must explicitly reset the tree's modified flag. + * + * If modifications were not skipped, the page might be clean; update + * the disk generation to the write generation as of when reconciliation + * started. */ if (r->upd_skipped) - __wt_page_modify_set(session, page); + __wt_tree_modify_set(btree); else mod->disk_gen = r->orig_write_gen; |