Hi Jerry, thanks you very much!
do you have changes on illumos-joyent tree for cherry-pick ? -Igor > On Oct 10, 2018, at 7:26 PM, Jerry Jelinek <jerry.jeli...@joyent.com> wrote: > > I have taken the Nexenta TRIM work that was originally out for code review > last year and updated it to work with the latest version of ZFS. The code > passes the new trim tests and I have done some additional manual testing with > DTrace to verify that the trim requests pass down into the scsi driver and > that the proper unmapping is taking place. We have not run this in production > yet. I currently have a code review up at: > > https://cr.joyent.us/#/c/4929/ <https://cr.joyent.us/#/c/4929/> > > Anyone with a github account should be able to set themselves up to comment > on this CR, or you can just send me feedback in email. I know this is a large > review, but it has already gotten a lot of feedback last year when Nexenta > put it out, and hopefully people will be able to take another look so we can > get this integrated. > > The following is a summary of the changes I made from the original 2017 > Nexenta work to bring it up to date with the latest ZFS code. > > The names of many of the AVL trees were changed with commit 86714001. Here is > the mapping between what was in the Nexenta code and what the new names are: > ms_tree -> ms_allocatable > ms_freeingtree -> ms_freeing > ms_freedtree -> ms_freed > ms_defertree -> ms_defer > ms_size_tree -> ms_allocatable_by_size > > usr/src/uts/common/fs/zfs/metaslab.c > range_tree_create() calls had the wrong number of args, lock parameter no > longer used. > > metaslab_trim_remove changes; in orig diff it was called in: > metaslab_load range_tree_walk defertree name changed to > defer > metaslab_block_alloc ok > metaslab_claim_dva this has heavy modifications. now > -> metaslab_claim_impl -> > metaslab_claim_concrete > I added the metaslab_trim_remove in > metaslab_claim_concrete > > In orig patch, had spa_get_auto_trim() and metaslab_trim_add() calls in > metaslab_free_dva() > metaslab_free_dva has heavy modifications; now the call path looks like: > -> metaslab_free_impl -> metaslab_free_concrete > > I don't think the spa_get_auto_trim() and metaslab_trim_add() should be in > metaslab_free_concrete() though, due to new checkpoint handling. > > In the Nexenta patch, metaslab_free calls metaslab_free_dva but in > metaslab_free for the current code, it calls metaslab_unalloc_dva for the > "now" case - this matches the "now" case for the patched metaslab_trim_add() > code. metaslab_unalloc_dva doesn't exist in the patch, but this looks like > the right place to add the spa_get_auto_trim() and metaslab_trim_add() at end. > > In metaslab_check_free(), I did not include the debugging code which depended > on the debug changes we omitted from the driver changes we've already > committed. > > usr/src/uts/common/fs/zfs/range_tree.c > 332 Removed invalid assert. > > usr/src/uts/common/fs/zfs/spa.c > spa_load_impl - changes here added to spa_ld_get_props instead > spa_load_impl - added 3rd arg to spa_dir_prop calls > Fixed spa_event_notify parameters throughout. > > usr/src/uts/common/fs/zfs/spa_misc.c > Some minor change, but nothing substantial. > > usr/src/uts/common/fs/zfs/vdev_raidz.c > Fixed up vdev_raidz_map_alloc. > Added correct ops initialization. > In vdev_raidz_map_free(), fixed code to use the new abd_free() behavior which > was added in commit 4ee0199ec (due to backout and reimpl). I also removed the > size variable which is no longer used, but wasn't cleaned up from this commit. > > usr/src/uts/common/fs/zfs/vdev_indirect.c > Was not included in Nexenta patch. Added correct ops initialization. > > usr/src/uts/common/fs/zfs/zio.c > Removed dfl_ck_func related debug code. > > usr/src/lib/libzpool > Fixed Makefile.com > KERNEL_OBJS was including taskq.o which didn't build right in user-land, but > was unnecessary so removed it. > > zpool.1m > Fixed all of the new format errors highlighted during the build. > > Thanks, > Jerry > > illumos <https://illumos.topicbox.com/latest> / illumos-developer / see > discussions <https://illumos.topicbox.com/groups/developer> + participants > <https://illumos.topicbox.com/groups/developer/members> + delivery options > <https://illumos.topicbox.com/groups/developer/subscription>Permalink > <https://illumos.topicbox.com/groups/developer/T6b2060bf39b5f383-M8297cc833b4712fc16a3a50c> ------------------------------------------ openzfs: openzfs-developer Permalink: https://openzfs.topicbox.com/groups/developer/Tce91d507e14ab14a-M7c2699f6e9536d04070abf4b Delivery options: https://openzfs.topicbox.com/groups/developer/subscription