summaryrefslogtreecommitdiff
path: root/runit
diff options
context:
space:
mode:
authorEric Lammerts2010-12-06 01:26:26 +0100
committerDenys Vlasenko2010-12-06 01:26:26 +0100
commit31905f94777ae6e7181e9fbcc0cc7c4cf70abfaf (patch)
tree0d54c18cbd2b34e554a3e959bd153e689cfc74ff /runit
parentc60e88a5b9d750993f8e25a322ad7f6f09db8bda (diff)
downloadbusybox-31905f94777ae6e7181e9fbcc0cc7c4cf70abfaf.zip
busybox-31905f94777ae6e7181e9fbcc0cc7c4cf70abfaf.tar.gz
runsvdir: do not miss closely spaced service dir changes
Signed-off-by: Eric Lammerts <busybox@lists.lammerts.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'runit')
-rw-r--r--runit/runsvdir.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/runit/runsvdir.c b/runit/runsvdir.c
index e77eeff..1666642 100644
--- a/runit/runsvdir.c
+++ b/runit/runsvdir.c
@@ -312,8 +312,11 @@ int runsvdir_main(int argc UNUSED_PARAM, char **argv)
last_mtime = s.st_mtime;
last_dev = s.st_dev;
last_ino = s.st_ino;
- //if (now <= mtime)
- // sleep(1);
+ /* if the svdir changed this very second, wait until the
+ * next second, because we won't be able to detect more
+ * changes within this second */
+ while (time(NULL) == last_mtime)
+ usleep(100000);
need_rescan = do_rescan();
while (fchdir(curdir) == -1) {
warn2_cannot("change directory, pausing", "");