]> granicus.if.org Git - zfs/commit
Illumos 4873 - zvol unmap calls can take a very long time for larger datasets
authorAlex Reece <alex@delphix.com>
Fri, 3 Apr 2015 03:14:28 +0000 (14:14 +1100)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 28 Apr 2015 23:24:03 +0000 (16:24 -0700)
commit8951cb8dfb8dcf410a237656c1f9c9767e4a9e6c
treee057d73086a975a0e22eae721ddb332ec5c81e6b
parent58c4aa00c65e09f254de0b939b2c1aa720c204a1
Illumos 4873 - zvol unmap calls can take a very long time for larger datasets

4873 zvol unmap calls can take a very long time for larger datasets
Author: Alex Reece <alex@delphix.com>
Reviewed by: George Wilson <george@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Paul Dagnelie <paul.dagnelie@delphix.com>
Reviewed by: Basil Crow <basil.crow@delphix.com>
Reviewed by: Dan McDonald <danmcd@omniti.com>
Approved by: Robert Mustacchi <rm@joyent.com>

References:
  https://www.illumos.org/issues/4873
  https://github.com/illumos/illumos-gate/commit/0f6d88a

Porting Notes:

dbuf_free_range():
  - reduce stack usage using kmem_alloc()
  - the sorted AVL tree will handle the spill block case correctly
    without all the special handling in the for() loop

Ported-by: Chris Dunlop <chris@onthe.net.au>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
include/sys/avl.h
include/sys/dbuf.h
include/sys/dnode.h
module/avl/avl.c
module/zfs/dbuf.c
module/zfs/dnode.c
module/zfs/dnode_sync.c