static void zfs_init(void) { /* * Initialize our context globals */ zfs_context_init(); /* * Initialize slab allocator and taskq layers */ kmem_init(); /* * Initialize .zfs directory structures */ #if 0 zfsctl_init(); #endif /* * Initialize znode cache, vnode ops, etc... */ zfs_znode_init(); /* * Initialize /dev/zfs */ zfs_ioctl_init(); }
int do_init() { libsolkerncompat_init(); zfs_vfsinit(zfstype, NULL); init_lzo(); VERIFY(zfs_ioctl_init() == 0); VERIFY(ioctl_fd != -1); // initialization moved to do_init_fusesocket VERIFY(cmd_listener_init() == 0); pthread_attr_t attr; VERIFY(0 == pthread_attr_init(&attr)); if (stack_size) pthread_attr_setstacksize(&attr,stack_size); if(pthread_create(&listener_thread, &attr, listener_loop, (void *) &ioctl_fd) != 0) { VERIFY(0 == pthread_attr_destroy(&attr)); cmn_err(CE_WARN, "Error creating listener thread."); return -1; } VERIFY(0 == pthread_attr_destroy(&attr)); listener_thread_started = B_TRUE; return zfsfuse_listener_init(); }