Module Name:    src
Committed By:   riastradh
Date:           Sat May  7 16:01:00 UTC 2016

Modified Files:
        src/share/man/man9: wapbl.9

Log Message:
Clarify wording about shared and exclusive locks.

Maybe this isn't important for users of wapbl, but it likely is
helpful for working in wapbl internals.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/share/man/man9/wapbl.9

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/share/man/man9/wapbl.9
diff -u src/share/man/man9/wapbl.9:1.12 src/share/man/man9/wapbl.9:1.13
--- src/share/man/man9/wapbl.9:1.12	Sat May  7 06:47:44 2016
+++ src/share/man/man9/wapbl.9	Sat May  7 16:01:00 2016
@@ -1,4 +1,4 @@
-.\"	$NetBSD: wapbl.9,v 1.12 2016/05/07 06:47:44 riastradh Exp $
+.\"	$NetBSD: wapbl.9,v 1.13 2016/05/07 16:01:00 riastradh Exp $
 .\"
 .\" Copyright (c) 2015 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -156,22 +156,31 @@ method should call
 .Pp
 Before issuing any
 .Xr buffercache 9
-writes, the file system must lock the current
+writes, the file system must acquire a shared lock on the current
 .Nm
 transaction with
 .Fn wapbl_begin ,
 which may sleep until there is room in the transaction for new writes.
-After issuing the writes, the file system must unlock the transaction
-with
+After issuing the writes, the file system must release its shared lock
+on the transaction with
 .Fn wapbl_end .
 Either all writes issued between
 .Fn wapbl_begin
 and
 .Fn wapbl_end
 will complete, or none of them will.
+.Pp
+File systems may also witness an
+.Em exclusive
+lock on the current transaction when
+.Nm
+is flushing the transaction to disk, or aborting a flush, and invokes a
+file system's callback.
 File systems can assert that the transaction is locked with
 .Fn wapbl_jlock_assert ,
-or not exclusively locked, with
+or not
+.Em exclusively
+locked, with
 .Fn wapbl_junlock_assert .
 .Pp
 If a file system requires multiple transactions to initialize an
@@ -271,8 +280,8 @@ is a callback that
 .Nm
 will invoke as
 .Fa flushfn Ns ( Fa mp , Fa deallocblks , Fa dealloclens , Fa dealloccnt )
-just before it flushes a transaction to disk, with the transaction
-locked exclusively, where
+just before it flushes a transaction to disk, with the an exclusive
+lock held on the transaction, where
 .Fa mp
 is the mount point passed to
 .Fn wapbl_start ,
@@ -312,9 +321,10 @@ free memory associated with
 and return zero.
 .It Fn wapbl_begin wl file line
 Wait for space in the current transaction for new writes, flushing it
-if necessary, and lock it.
+if necessary, and acquire a shared lock on it.
 .Pp
-The lock is not exclusive: other threads may lock the transaction too.
+The lock is not exclusive: other threads may acquire shared locks on
+the transaction too.
 The lock is not recursive: a thread may not acquire it again without
 calling
 .Fa wapbl_end
@@ -328,15 +338,20 @@ and
 are the file name and line number of the caller for debugging
 purposes.
 .It Fn wapbl_end wl
-Unlock the transaction.
+Release a shared lock on the transaction acquired with
+.Fn wapbl_begin .
 .It Fn wapbl_flush wl wait
 Flush the current transaction to disk.
 If
 .Fa wait
 is nonzero, wait for all writes in the current transaction to
 complete.
+.Pp
+The current transaction must not be locked.
 .It Fn wapbl_discard wl
 Discard the current transaction, permanently losing any writes in it.
+.Pp
+The current transaction must not be locked.
 .It Fn wapbl_add_buf wl bp
 Add the buffer
 .Fa bp
@@ -421,7 +436,8 @@ and
 .Fn wapbl_end .
 .Pp
 There is no way to assert that the current transaction is not locked at
-all -- i.e., that the caller may lock the transaction with
+all -- i.e., that the caller may acquire a shared lock on the
+transaction with
 .Fn wapbl_begin
 without danger of deadlock.
 .El

Reply via email to