First off, a million thanks for writing tests! I would love to see whatever you come up with become part of the test suite.
Your analysis is correct. A fix for this was approved last year, I don't know why it has not been integrated yet. I guess I'll do it myself. https://reviews.csiden.org/r/143/ --matt On Mon, Apr 13, 2015 at 11:01 PM, Andriy Gapon <[email protected]> wrote: > On 14/04/2015 08:04, Andriy Gapon wrote: > > So, I pass the following bookmarks nvlist to lzc_bookmark(): > > { > > "pool/fs#bookmark": "pool/fs@snap", > > "pool/fs#another_bookmark": "pool/fs@snap" > > } > > > > That is, I am trying to create in one go two valid bookmarks that point > to the > > same snapshot. > > > > This results in the following panic: > > assert: dsl_dataset_hold(dp, fnvpair_value_string(pair), ((char > *)__func__), > > &snapds) == 0 (0x2 == 0x0), file: .../dsl_bookmark.c, line: ... > > > > A stack trace: > > panic() > > assfail3() > > dsl_bookmark_create_sync() > > dsl_sync_task_sync() > > dsl_pool_sync() > > spa_sync() > > txg_sync_thread() > > > > The panic confuses me a lot, because I couldn't figure out how > dsl_dataset_hold > > could return ENOENT. I only have a guess: I think that the way of how > > dsl_dataset_zapify() works might cause this. > > After a debugging session I think that I see a problem. It's not in the > "zapification" as I guessed, but the "zapification" is a trigger. > > dsl_dataset_hold_obj() has a check for the large blocks support and that > check > has a small but quite nasty bug. The check leaks an error code in the > case the > support has not been enabled for a dataset: > > if (doi.doi_type == DMU_OTN_ZAP_METADATA) { > err = zap_contains(mos, dsobj, > DS_FIELD_LARGE_BLOCKS); > if (err == 0) > ds->ds_large_blocks = B_TRUE; > else > ASSERT3U(err, ==, ENOENT); > } > > This ENOENT causes dsl_dataset_hold_obj() to fail. > > > Additional note: the panic happens on FreeBSD, but I couldn't reproduce > it on Linux. > > Seems like ZoL hasn't imported the large blocks support and so it doesn't > have > the bug. > > -- > Andriy Gapon > _______________________________________________ > developer mailing list > [email protected] > http://lists.open-zfs.org/mailman/listinfo/developer >
_______________________________________________ developer mailing list [email protected] http://lists.open-zfs.org/mailman/listinfo/developer
