K 10 svn:author V 7 oshogbo K 8 svn:date V 27 2021-07-06T18:26:43.479584Z K 7 svn:log V 965 libnv: optimize nvlist size calculation If we had a multiple nvlist, during nvlist_pack, we calculated the size of every nvlist separately. For example, if we had a nvlist with three nodes each containing another (A contains B, and B contains C), we first calculated the size of nvlist A (which contains B, C), then we calculate the size of B (which contains C, notice that we already did the calculation of B, when we calculate A), and finally C. This means that this calculation was O(N!). This was done because each time we pack nvlist, we have to put its size in the header (the separate header for A, B, and C). To not break the ABI and to reduce the complexity of nvlist_size, instead of calculating the nvlist size when requested, we track the size of each nvlist. Reported by: pjd, kp Tested by: kp (cherry picked from commit 89d5cbb82294c8624e66f920d50353057ccab14b) Git Hash: eed85dd1ad31fc83aa3bc1bd8b4c9249616c8b78 Git Author: oshogbo@FreeBSD.org END