Date: Sat, 28 Feb 2015 06:31:44 +0200 From: Konstantin Belousov <kostikbel@gmail.com> To: fs@freebsd.org Cc: threads@freebsd.org Subject: ZFS port and thread_exit() Message-ID: <20150228043144.GQ2379@kib.kiev.ua>
next in thread | raw e-mail | index | archive | help
While looking for some change to thread_exit(), I noted that ZFS on FreeBSD directly calls thread_exit(). It simply cannot work, thread_exit() is the internal function which requires the thread and process state prepared for it call. Among most obvious things, process spin lock must be held, but also several cleanups and accounting have to be done before the call. I believe the function just happens to have the same name as the Solaris counterpart, and for some reasons it is never called. If this is true, kthread_exit() should be used instead. Also, I noted that the userspace port defines thread_exit() as thr_exit(NULL). Again, the direct invocation of the syscall does not look right. The libthr library must do some cleanups on the thread exit, which are not done if syscall is invoked by an application code. Also, the thread itself gets no destructor calls. Could somebody interested in ZFS look into the issues ?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150228043144.GQ2379>