From bf75909a55b2efbe96ab2fe820866fc77fab58c9 Mon Sep 17 00:00:00 2001 From: Patrick Mooney Date: Tue, 8 Mar 2016 16:44:15 +0000 Subject: 6732 epoll fails to wake when fd added Reviewed by: Jerry Jelinek Reviewed by: Bryan Cantrill Reviewed by: Dan McDonald Reviewed by: Toomas Soome Reviewed by: Richard PALO Approved by: Richard Lowe --- usr/src/uts/common/io/devpoll.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'usr/src') diff --git a/usr/src/uts/common/io/devpoll.c b/usr/src/uts/common/io/devpoll.c index a63e1f1a08..e00ac1d1e9 100644 --- a/usr/src/uts/common/io/devpoll.c +++ b/usr/src/uts/common/io/devpoll.c @@ -25,7 +25,7 @@ /* * Copyright (c) 2012 by Delphix. All rights reserved. - * Copyright (c) 2015, Joyent, Inc. All rights reserved. + * Copyright 2016 Joyent, Inc. */ #include @@ -951,12 +951,15 @@ dpwrite(dev_t dev, struct uio *uiop, cred_t *credp) } } /* + * Wake any pollcache waiters so they can check the new descriptors. + * * Any fds added to an recursive-capable pollcache could themselves be * /dev/poll handles. To ensure that proper event propagation occurs, - * parent pollcaches are woken so that they can create any needed + * parent pollcaches are woken too, so that they can create any needed * pollcache links. */ if (fds_added) { + cv_broadcast(&pcp->pc_cv); pcache_wake_parents(pcp); } pollstate_exit(pcp); -- cgit v1.2.3