[PATCH 2/6] Adjust watch_queue documentation to mention mount and superblock watches. [ver #5]

David Howells
2019-06-28T15:50:40Z

Documentation/watch_queue.rst | 20 +++++++++++++++++++-
drivers/misc/Kconfig | 5 +++--
2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/Documentation/watch_queue.rst b/Documentation/watch_queue.rst
index 4087a8e670a8..1bec2018d549 100644
--- a/Documentation/watch_queue.rst
+++ b/Documentation/watch_queue.rst
@@ -13,6 +13,10 @@ receive notifications from the kernel. This can be used in conjunction with::

* USB subsystem event notifications

+ * Mount topology change notifications
+
+ * Superblock event notifications
+

The notifications buffers can be enabled by:

@@ -324,6 +328,19 @@ Any particular buffer can be fed from multiple sources. Sources include:
for buses and devices. Watchpoints of this type are set on the global
device watch list.

+ * WATCH_TYPE_MOUNT_NOTIFY
+
+ Notifications of this type indicate mount tree topology changes and mount
+ attribute changes. A watch can be set on a particular file or directory
+ and notifications from the path subtree rooted at that point will be
+ intercepted.
+
+ * WATCH_TYPE_SB_NOTIFY
+
+ Notifications of this type indicate superblock events, such as quota limits
+ being hit, I/O errors being produced or network server loss/reconnection.
+ Watches of this type are set directly on superblocks.
+

Event Filtering
===============
@@ -365,7 +382,8 @@ Where:
(watch.info & info_mask) == info_filter

This could be used, for example, to ignore events that are not exactly on
- the watched point in a mount tree.
+ the watched point in a mount tree by specifying NOTIFY_MOUNT_IN_SUBTREE
+ must be 0.

* ``subtype_filter`` is a bitmask indicating the subtypes that are of
interest. Bit 0 of subtype_filter[0] corresponds to subtype 0, bit 1 to
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index e53f88783fe7..8b13103b17c0 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -11,8 +11,9 @@ config WATCH_QUEUE
help
This is a general notification queue for the kernel to pass events to
userspace through a mmap()'able ring buffer. It can be used in
- conjunction with watches for key/keyring change notifications and device
- notifications.
+ conjunction with watches for key/keyring change notifications, device
+ notifications, mount topology change notifications, and superblock
+ change notifications.

Note that in theory this should work fine with NOMMU, but I'm not
sure how to make that work.