Nadav, thank you for tip to look at mkfs.cc.
I tried to export/import, print pool status etc, just before/after
the 'zpool create' call.
Export attempt just after zpoll create says"
cannot export 'osv': pool is busy
After rerunning same iamge (eg zfs was already created), the import
part says:
cannot import 'osv': no such pool available
I plan to stop looking at that (and sorry for stealing your time).
The changed code in mkfs.cc (just FYI)
int run_ret;
fprintf(stderr, "/*---------------------------*/\n");
run_cmd("/zpool.so", {"zpool", "status"});
fprintf(stderr, "/*---------------------------*/\n");
run("/zpool.so", {"zpool", "import", "osv"}, &run_ret);
fprintf(stderr, "/*---------------------------*/\n");
run_cmd("/zpool.so", {"zpool", "status"});
fprintf(stderr, "/*---------------------------*/\n");
run("/zfs.so", {"zfs", "list"}, &run_ret);
fprintf(stderr, "/*---------------------------*/\n");
fprintf(stderr, "/*------*/\n");
// Create zpool named osv
run_cmd("/zpool.so", zpool_args);
fprintf(stderr, "/*------*/\n");
fprintf(stderr, "/*---------------------------*/\n");
//run("/zfs.so", {"zfs", "umount", "-a"}, &run_ret);
//run("/zfs.so", {"zfs", "umount", "osv"}, &run_ret);
//run("/zfs.so", {"zfs", "umount", "zfs"}, &run_ret);
run("/zpool.so", {"zpool", "export", "osv"}, &run_ret);
fprintf(stderr, "/*---------------------------*/\n");
run("/zpool.so", {"zpool", "import", "osv"}, &run_ret);
fprintf(stderr, "/*---------------------------*/\n");
run_cmd("/zpool.so", {"zpool", "status"});
fprintf(stderr, "/*---------------------------*/\n");
run("/zfs.so", {"zfs", "list"}, &run_ret);
fprintf(stderr, "/*---------------------------*/\n");