On 2/5/20 6:21 PM, Matthew Wilcox wrote:
On Wed, Feb 05, 2020 at 02:19:34PM -0800, John Hubbard wrote:
So if we do this, I think we'd also want something like this (probably with
better wording, this is just a first draft):
diff --git a/Documentation/core-api/xarray.rst b/Documentation/core-api/xarray.rst
index 640934b6f7b4..8adeaa8c012e 100644
--- a/Documentation/core-api/xarray.rst
+++ b/Documentation/core-api/xarray.rst
@@ -66,10 +66,11 @@ pointer at every index.
You can then set entries using xa_store() and get entries
using xa_load(). xa_store will overwrite any entry with the
new entry and return the previous entry stored at that index. You can
-use xa_erase() instead of calling xa_store() with a
+use xa_erase() plus xas_init_marks(), instead of calling xa_store() with a
Woah, woah, woah. xa_erase() re-initialises the marks. Nobody's going
Yes, I get that. But I mis-wrote it, it should have read more like:
You can then set entries using xa_store() and get entries
using xa_load(). xa_store will overwrite any entry with the
new entry and return the previous entry stored at that index. You can
use xa_erase(), instead of calling xa_store() with a
``NULL`` entry followed by xas_init_marks(). There is no difference between
an entry that has never been stored to and one that has been erased. Those,
in turn, are the same as an entry that has had ``NULL`` stored to it and
also had its marks erased via xas_init_marks().
to change that. Don't confuse the porcelain and plumbing APIs.
The API still documents a different behavior than this patchset changes it
to, despite my imperfect attempts to update the documentation. So let's
please keep the porcelain aligned with the plumbing. :)
thanks,
--
John Hubbard
NVIDIA