summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2014-08-23 11:38:31 +0000
committertrasz <trasz@FreeBSD.org>2014-08-23 11:38:31 +0000
commitbd42c0dce6e6802e6e1748fed0cb04d9775373dc (patch)
tree10c0455909b3b5e670859d5b56adbf991affd438 /sys/fs
parent5c129e9d8b23fdc4340d4fc5c0b9c9f117a5b122 (diff)
downloadFreeBSD-src-bd42c0dce6e6802e6e1748fed0cb04d9775373dc.zip
FreeBSD-src-bd42c0dce6e6802e6e1748fed0cb04d9775373dc.tar.gz
Add comment explaining one of the quirks in autofs.
MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/autofs/autofs.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/fs/autofs/autofs.c b/sys/fs/autofs/autofs.c
index d3ea03d..d5a6892 100644
--- a/sys/fs/autofs/autofs.c
+++ b/sys/fs/autofs/autofs.c
@@ -595,6 +595,14 @@ autofs_open(struct cdev *dev, int flags, int fmt, struct thread *td)
{
sx_xlock(&sc->sc_lock);
+ /*
+ * We must never block automountd(8) and its descendants, and we use
+ * session ID to determine that: we store session id of the process
+ * that opened the device, and then compare it with session ids
+ * of triggering processes. This means running a second automountd(8)
+ * instance would break the previous one. The check below prevents
+ * it from happening.
+ */
if (sc->sc_dev_opened) {
sx_xunlock(&sc->sc_lock);
return (EBUSY);
OpenPOWER on IntegriCloud