Skip site navigation (1)Skip section navigation (2)
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>