Project

General

Profile

Actions

Bug #7200

closed

no blocks must be born in a txg after a snapshot is created

Added by Andriy Gapon about 6 years ago. Updated almost 6 years ago.

Status:
Closed
Priority:
High
Assignee:
-
Category:
zfs - Zettabyte File System
Start date:
2016-07-20
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage
Gerrit CR:
External Bug:

Description

No new blocks must be born in a dataset in the same TXG after a snapshot of the dataset is taken.
Those blocks would have the same blk_birth as the dataset's ds_prev_snap_txg and as such they would be presumed to belong o the snapshot while in fact they do not.
All the datasets must be clean before sync tasks are run, so the described scenario may happen only if one of the sync tasks dirties the dataset and another sync task takes its snapshot.
Then, there will be another sync pass because of the dirty data and the new blocks will be born in the same TXG when the data is written out.

It seems that almost all of the existing sync tasks modify only MOS and do not dirty any objsets.
The only exception that I've been able to identify so far is the rollback which can modify an objset when it zeroes out the objset's ZIL.


Related issues

Related to illumos gate - Feature #7197: ztest should test rollbackNew2016-07-20

Actions
Related to illumos gate - Bug #7199: dsl_dataset_rollback_sync may try to free already free blocksClosed2016-07-20

Actions
Actions

Also available in: Atom PDF