cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: teigland@sourceware.org <teigland@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/group/gfs_controld plock.c
Date: 20 Nov 2006 18:12:55 -0000	[thread overview]
Message-ID: <20061120181255.27918.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL5
Changes by:	teigland at sourceware.org	2006-11-20 18:12:54

Modified files:
	group/gfs_controld: plock.c 

Log message:
	The plock rate limiting code should use the full timeval to measure
	the 1 sec limit interval instead of just the rough difference in
	tv_sec values.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/gfs_controld/plock.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.25.2.1&r2=1.25.2.2

--- cluster/group/gfs_controld/plock.c	2006/11/14 20:33:32	1.25.2.1
+++ cluster/group/gfs_controld/plock.c	2006/11/20 18:12:54	1.25.2.2
@@ -311,6 +311,21 @@
 	return control_fd;
 }
 
+static unsigned long time_diff_ms(struct timeval *begin, struct timeval *end)
+{
+	unsigned long a_us, b_us, c_us, s, us, ms;
+
+	a_us = begin->tv_sec * 1000000 + begin->tv_usec;
+	b_us = end->tv_sec * 1000000 + end->tv_usec;
+	c_us = b_us - a_us;
+
+	s = c_us / 1000000;
+	us = c_us % 1000000;
+	ms = us / 1000;
+
+	return (s * 1000 + ms);
+}
+
 int process_plocks(void)
 {
 	struct mountgroup *mg;
@@ -324,13 +339,13 @@
 	if (message_flow_control_on)
 		return 0;
 
-	/* do we want to do something a little more accurate than tv_sec? */
+	/* Every N ops we check how long it's taken to do those N ops.
+	   If it's less than 1000 ms, we don't take any more. */
 
-	/* limit plock rate within one second */
 	if (plock_rate_limit && plock_read_count &&
 	    !(plock_read_count % plock_rate_limit)) {
 		gettimeofday(&now, NULL);
-		if (now.tv_sec - plock_rate_last.tv_sec <= 0) {
+		if (time_diff_ms(&plock_rate_last, &now) < 1000) {
 			plock_rate_delays++;
 			return -EBUSY;
 		}



             reply	other threads:[~2006-11-20 18:12 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-20 18:12 teigland [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-01-21 20:21 [Cluster-devel] cluster/group/gfs_controld plock.c teigland
2008-01-21 20:19 teigland
2008-01-21 20:17 teigland
2007-11-30 16:20 teigland
2007-11-29 21:27 teigland
2007-06-08 21:31 teigland
2007-06-08 21:30 teigland
2006-11-20 21:29 teigland
2006-11-20 21:29 teigland
2006-11-20 21:28 teigland
2006-11-20 18:13 teigland
2006-11-20 18:10 teigland
2006-11-03 15:33 teigland
2006-10-09 21:51 teigland
2006-08-17 19:39 teigland
2006-08-16 19:30 teigland
2006-08-16 17:05 teigland
2006-08-15 22:21 rpeterso
2006-08-14 20:15 teigland
2006-08-08 19:37 teigland
2006-08-08 18:43 teigland
2006-08-02 19:23 teigland

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20061120181255.27918.qmail@sourceware.org \
    --to=teigland@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).