Files
mirror_zfs/include/sys
Matthew Ahrens 6c59307a3c Illumos 3693 - restore_object uses at least two transactions to restore an object
Restore_object should not use two transactions to restore an object:
  * one transaction is used for dmu_object_claim
  * another transaction is used to set compression, checksum and most
    importantly bonus data
  * furthermore dmu_object_reclaim internally uses multiple transactions
  * dmu_free_long_range frees chunks in separate transactions
  * dnode_reallocate is executed in a distinct transaction

The fact the dnode_allocate/dnode_reallocate are executed in one
transaction and bonus (re-)population is executed in a different
transaction may lead to violation of ZFS consistency assertions if the
transactions are assigned to different transaction groups.  Also, if
the first transaction group is successfully written to a permanent
storage, but the second transaction is lost, then an invalid dnode may
be created on the stable storage.

3693 restore_object uses at least two transactions to restore an object
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Andriy Gapon <andriy.gapon@hybridcluster.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Original authors: Matthew Ahrens and Andriy Gapon

References:
  https://www.illumos.org/issues/3693
  https://github.com/illumos/illumos-gate/commit/e77d42e

Ported by: Turbo Fredriksson <turbo@bayour.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2689
2014-10-21 15:26:50 -07:00
..
2014-08-20 10:45:16 -07:00
2014-08-01 14:28:05 -07:00
2013-01-08 10:35:43 -08:00
2014-08-01 14:28:05 -07:00
2014-01-07 10:33:11 -08:00
2014-08-01 14:28:05 -07:00
2014-08-01 14:28:05 -07:00
2014-03-04 12:22:24 -08:00
2013-12-10 10:09:27 -08:00
2014-07-30 09:20:35 -07:00
2014-07-29 10:55:29 -07:00
2014-07-29 10:55:29 -07:00
2014-07-29 10:55:29 -07:00
2013-11-04 11:18:14 -08:00
2013-09-04 16:01:24 -07:00
2013-09-04 16:01:24 -07:00
2013-11-04 11:17:48 -08:00
2014-08-01 14:28:05 -07:00
2014-08-13 10:35:00 -07:00
2014-07-30 09:20:35 -07:00
2013-09-04 16:01:24 -07:00
2013-09-04 16:01:24 -07:00
2012-03-07 16:28:00 -08:00
2011-02-10 09:21:43 -08:00
2013-11-04 10:55:25 -08:00
2013-12-18 16:46:35 -08:00
2014-07-28 14:29:58 -07:00
2011-03-02 11:43:50 -08:00
2013-11-04 10:55:25 -08:00
2014-07-25 16:40:07 -07:00
2014-07-28 14:29:58 -07:00
2013-11-04 10:55:25 -08:00
2014-10-17 14:58:57 -07:00
2013-12-18 16:46:35 -08:00
2011-02-10 09:27:21 -08:00
2014-08-01 14:28:05 -07:00
2013-11-04 10:55:25 -08:00
2013-12-18 16:46:35 -08:00
2014-01-29 15:50:44 -08:00
2014-08-11 16:11:43 -07:00
2014-07-17 15:15:07 -07:00
2013-12-18 16:46:35 -08:00
2013-12-18 16:46:35 -08:00
2013-11-04 10:55:25 -08:00
2013-11-05 12:14:56 -08:00
2014-09-08 13:52:25 -07:00
2013-12-16 09:15:57 -08:00