Re: [PATCH 5/6] On Solaris nanosleep() is not in libc but in librt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dennis Stosberg <dennis@xxxxxxxxxxxx> writes:

> -# Define NEEDS_SOCKET if linking with libc is not enough (SunOS,
> -# Patrick Mauritz).
> +# Define NEEDS_SOCKET if linking with libc is not enough for socket()
> +# (SunOS, Patrick Mauritz).
> +#
> +# Define NEEDS_RT if linking with libc is not enough for nanosleep() (SunOS)

Ah, nanosleep(2) was my fault, and we should be able to just use
straight sleep(3) there.  The purpose of the loop is to wait
until the next filesystem timestamp granularity, and the code
uses subsecond sleep in the hope that it can shorten the delay
to 0.5 seconds on average instead of a full second.

How exotic is -lrt on SunOS?  I suspect it is not worth
depending on it only for that single use in read-cache.c

We might want to yank out the whole "racy-git avoidance is
costly later so let's delay writing the index out" codepath
later, but that is a separate issue and needs some testing on
large trees to figure it out.  After playing with the kernel
tree, I have a feeling that the whole thing may not be worth
it.

In any case, an obvious tentative patch is here.

diff --git a/read-cache.c b/read-cache.c
index b18f9f7..ec4dd5a 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -5,7 +5,6 @@
  */
 #include "cache.h"
 #include "cache-tree.h"
-#include <time.h>
 
 /* Index extensions.
  *
@@ -1033,11 +1032,8 @@ #if 0
 			fprintf(stderr, "now        %lu\n", now);
 #endif
 			while (!fstat(newfd, &st) && st.st_mtime <= now) {
-				struct timespec rq, rm;
 				off_t where = lseek(newfd, 0, SEEK_CUR);
-				rq.tv_sec = 0;
-				rq.tv_nsec = 250000000;
-				nanosleep(&rq, &rm);
+				sleep(1);
 				if ((where == (off_t) -1) ||
 				    (write(newfd, "", 1) != 1) ||
 				    (lseek(newfd, -1, SEEK_CUR) != where) ||

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]