Project

General

Profile

Bug #6089

Merge ZFS unmap improvements to TrueOS 9.2.1-BRANCH

Added by Xin Li about 6 years ago. Updated about 6 years ago.

Status:
Resolved
Priority:
Nice to have
Assignee:
Xin Li
Category:
-
Target version:
Severity:
New
Reason for Closing:
Reason for Blocked:
Needs QA:
Yes
Needs Doc:
Yes
Needs Merging:
Yes
Needs Automation:
No
Support Suite Ticket:
n/a
Hardware Configuration:
ChangeLog Required:
No

Description

Requested by mav@. This ticket is used to track the corresponding revisions.

Associated revisions

Revision 51739d97 (diff)
Added by Xin Li about 6 years ago

MFV r269223: Change dn->dn_dbufs from linked list to AVL tree. Illumos issues: 4873 zvol unmap calls can take a very long time for larger datasets MFC after: 2 weeks (cherry picked from commit 1747d793b5742aae99af6a1caf438bbb5e76b892) Ticket: #6089

Revision 51739d97 (diff)
Added by Xin Li about 6 years ago

MFV r269223: Change dn->dn_dbufs from linked list to AVL tree. Illumos issues: 4873 zvol unmap calls can take a very long time for larger datasets MFC after: 2 weeks (cherry picked from commit 1747d793b5742aae99af6a1caf438bbb5e76b892) Ticket: #6089

Revision 4f36f8b1 (diff)
Added by Xin Li about 6 years ago

Split gethrtime() and gethrtime_waitfree() and make the former use nanouptime() instead of getnanouptime(). nanouptime(9) provides more precise result at expense of being slower. In r269223, gethrtime() is used as creation time of dbuf, which in turn acts as portion of lookup key to maintain AVL invariant where there can not be duplicate items. Before this change, gethrtime() have preferred better execution time by sacrificing precision, which may lead to panic on busy systems with: panic: avl_find() succeeded inside avl_add() Reported by: allanjude, mav PR: kern/192284 MFC after: 11 days X-MFC-with: r269223 (cherry picked from commit 3582d4b4c2b42c1ec0bcb73779e4f08ec87cbf4d) This intermediate commit is merged only for completeness. Ticket: #6089

Revision 4f36f8b1 (diff)
Added by Xin Li about 6 years ago

Split gethrtime() and gethrtime_waitfree() and make the former use nanouptime() instead of getnanouptime(). nanouptime(9) provides more precise result at expense of being slower. In r269223, gethrtime() is used as creation time of dbuf, which in turn acts as portion of lookup key to maintain AVL invariant where there can not be duplicate items. Before this change, gethrtime() have preferred better execution time by sacrificing precision, which may lead to panic on busy systems with: panic: avl_find() succeeded inside avl_add() Reported by: allanjude, mav PR: kern/192284 MFC after: 11 days X-MFC-with: r269223 (cherry picked from commit 3582d4b4c2b42c1ec0bcb73779e4f08ec87cbf4d) This intermediate commit is merged only for completeness. Ticket: #6089

Revision e6200804 (diff)
Added by Xin Li about 6 years ago

Revert r269404 and use cpu_ticks() for dbuf allocation. Encode CPU's number by XOR'ing the CPU ID against the 64-bit cpu_ticks(). Reviewed by: mav, gibbs Differential Revision: https://phabric.freebsd.org/D521 MFC after: 2 weeks (cherry picked from commit 6ba22f8d1a754be2ddd46bea93f513a0980caa7c) This intermediate commit is merged only for completeness. Ticket: #6089

Revision e6200804 (diff)
Added by Xin Li about 6 years ago

Revert r269404 and use cpu_ticks() for dbuf allocation. Encode CPU's number by XOR'ing the CPU ID against the 64-bit cpu_ticks(). Reviewed by: mav, gibbs Differential Revision: https://phabric.freebsd.org/D521 MFC after: 2 weeks (cherry picked from commit 6ba22f8d1a754be2ddd46bea93f513a0980caa7c) This intermediate commit is merged only for completeness. Ticket: #6089

Revision c82f554a (diff)
Added by Xin Li about 6 years ago

Instead of using timestamp in the AVL, use the memory address when comparing. Illumos issue: 5095 panic when adding a duplicate dbuf to dn_dbufs MFC after: 3 days (cherry picked from commit d89e74165bb75cd2e02693e8f18d45101f63014b) Ticket: #6089

Revision c82f554a (diff)
Added by Xin Li about 6 years ago

Instead of using timestamp in the AVL, use the memory address when comparing. Illumos issue: 5095 panic when adding a duplicate dbuf to dn_dbufs MFC after: 3 days (cherry picked from commit d89e74165bb75cd2e02693e8f18d45101f63014b) Ticket: #6089

History

#1 Updated by Xin Li about 6 years ago

  • Status changed from Fix In Progress to Resolved
  • % Done changed from 0 to 100

The 4 revisions have been merged.

Also available in: Atom PDF