9878 zio_free_sync() should recognize gang block size

Review Request #1225 - Created Oct. 7, 2018 and updated

Toomas Soome
the zio_free_sync() in illumos tree does not recognize gang block size
while freebsd does via passing extra size argument (http://src.illumos.org/source/xref/freebsd-head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c#997).

Using extra argument there seems like unneeded overhead, we can use
BP_IS_GANG() to select between SPA_GANGBLOCKSIZE and BP_GET_PSIZE(bp) in
zio_free_sync() and avoid introducing size argument.

Toomas Soome
Review request changed

Change Summary:

attach issue #


-zio_free_sync() should recognize gang block size
+9878 zio_free_sync() should recognize gang block size


Matthew Ahrens

Does this fix a bug, or is it essentially code cleanup? Seems like this would depend on if the free pipeline looks at io_size/orig_size/lsize?

  1. I did figure it is a bug, but, I havent been able to test it or even to get actual numeric value from regular zfs use. I am not really even convinced either way - so I do keep looking for a way to understand exactly what is going on there:) Unfortunately I havent received any answer from original author either - this change is not in ZoL, it is only in the FreeBSD.

Jerry Jelinek

I'd like to see a response to Matt's question before I give a +1, but the code change seems ok.