Document a locking constraint that applies to barriers.
authorvisa <visa@openbsd.org>
Wed, 22 Jun 2022 14:10:49 +0000 (14:10 +0000)
committervisa <visa@openbsd.org>
Wed, 22 Jun 2022 14:10:49 +0000 (14:10 +0000)
OK cheloha@

share/man/man9/smr_call.9
share/man/man9/task_add.9
share/man/man9/timeout.9

index c735088..2bce55e 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: smr_call.9,v 1.3 2020/02/25 16:53:25 visa Exp $
+.\"    $OpenBSD: smr_call.9,v 1.4 2022/06/22 14:10:49 visa Exp $
 .\"
 .\" Copyright (c) 2019 Visa Hankala
 .\"
@@ -14,7 +14,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: February 25 2020 $
+.Dd $Mdocdate: June 22 2022 $
 .Dt SMR_CALL 9
 .Os
 .Sh NAME
@@ -96,6 +96,12 @@ but the system is forced to process the request as soon as possible.
 The use of this function is discouraged because of the heavy impact
 on system performance.
 .Pp
+To avoid deadlocks, the caller of
+.Fn smr_barrier
+or
+.Fn smr_flush
+must not hold locks that can block the processing of SMR callbacks.
+.Pp
 The SMR implementation does not limit the number of deferred calls.
 It is important to prevent arbitrary call rate of
 .Fn smr_call .
index aaf752f..1d27044 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: task_add.9,v 1.22 2020/06/08 00:29:51 dlg Exp $
+.\"    $OpenBSD: task_add.9,v 1.23 2022/06/22 14:10:49 visa Exp $
 .\"
 .\" Copyright (c) 2013 David Gwynne <dlg@openbsd.org>
 .\"
@@ -14,7 +14,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: June 8 2020 $
+.Dd $Mdocdate: June 22 2022 $
 .Dt TASK_ADD 9
 .Os
 .Sh NAME
@@ -108,6 +108,13 @@ from the list of pending tasks on the
 .Fa tq
 taskq, or waits until any running task has completed.
 .Pp
+The caller of
+.Fn taskq_barrier
+or
+.Fn taskq_del_barrier
+must not hold locks that can block the taskq.
+Otherwise, the system will deadlock.
+.Pp
 It is the responsibility of the caller to provide the
 .Fn task_set ,
 .Fn task_add ,
index e1acee1..7cd51f3 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: timeout.9,v 1.54 2022/03/31 17:27:23 naddy Exp $
+.\"    $OpenBSD: timeout.9,v 1.55 2022/06/22 14:10:49 visa Exp $
 .\"
 .\" Copyright (c) 2000 Artur Grabowski <art@openbsd.org>
 .\" All rights reserved.
@@ -23,7 +23,7 @@
 .\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd $Mdocdate: March 31 2022 $
+.Dd $Mdocdate: June 22 2022 $
 .Dt TIMEOUT_SET 9
 .Os
 .Sh NAME
@@ -195,6 +195,13 @@ ensures that any current execution of the timeout in the argument
 .Fa to
 has completed before returning.
 .Pp
+The caller of
+.Fn timeout_barrier
+or
+.Fn timeout_del_barrier
+must not hold locks that can block processing in the timeout's context.
+Otherwise, the system will deadlock.
+.Pp
 The
 .Fn timeout_pending
 macro can be used to check if a timeout is scheduled to run.