public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
From: zkabelac@sourceware.org
To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org
Subject: LVM2/lib/mm memlock.c
Date: Tue, 30 Mar 2010 14:41:00 -0000	[thread overview]
Message-ID: <20100330144159.19588.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac@sourceware.org	2010-03-30 14:41:58

Modified files:
	lib/mm         : memlock.c 

Log message:
	Count only readable size for memlock stats.
	
	As we mlock() only readable pages, makes statistics only
	for readable bytes.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/mm/memlock.c.diff?cvsroot=lvm2&r1=1.23&r2=1.24

--- LVM2/lib/mm/memlock.c	2010/03/30 14:41:23	1.23
+++ LVM2/lib/mm/memlock.c	2010/03/30 14:41:58	1.24
@@ -80,12 +80,7 @@
 static char _procselfmaps[PATH_MAX] = "";
 #define SELF_MAPS "/self/maps"
 
-struct maps_stats {
-	size_t r_size;
-	size_t w_size;
-	size_t x_size;
-};
-static struct maps_stats _mstats; /* statistic for maps locking */
+static size_t _mstats; /* statistic for maps locking */
 
 static void _touch_memory(void *mem, size_t size)
 {
@@ -125,7 +120,7 @@
  * format described in kernel/Documentation/filesystem/proc.txt
  */
 static int _maps_line(struct cmd_context *cmd, lvmlock_t lock,
-		      const char* line, struct maps_stats* mstats)
+		      const char* line, size_t* mstats)
 {
 	const struct config_node *cn;
 	struct config_value *cv;
@@ -175,13 +170,7 @@
 		}
 	}
 
-	if (fr == 'r')
-		mstats->r_size += sz;
-	if (fw == 'w')
-		mstats->w_size += sz;
-	if (fx == 'x')
-		mstats->x_size += sz;
-
+	*mstats += sz;
 	log_debug("%s %10ldKiB %12lx - %12lx %c%c%c%c %s",
 		  (lock == LVM_MLOCK) ? "mlock" : "munlock",
 		  ((long)sz + 1023) / 1024, from, to, fr, fw, fx, fp, line + pos);
@@ -201,7 +190,7 @@
 	return 1;
 }
 
-static int _memlock_maps(struct cmd_context *cmd, lvmlock_t lock, struct maps_stats *mstats)
+static int _memlock_maps(struct cmd_context *cmd, lvmlock_t lock, size_t *mstats)
 {
 	char *line = NULL;
 	size_t len;
@@ -228,19 +217,18 @@
 	}
 
 	/* Reset statistic counters */
-	memset(mstats, 0, sizeof(*mstats));
+	*mstats = 0;
 	rewind(_mapsh);
 
 	while ((n = getline(&line, &len, _mapsh)) != -1) {
 		line[n > 0 ? n - 1 : 0] = '\0'; /* remove \n */
-		if (!(ret = _maps_line(cmd, lock, line, mstats)))
-			break;
+		if (!_maps_line(cmd, lock, line, mstats))
+                        ret = 0;
 	}
 
 	free(line);
 
-	log_debug("Mapped sizes: r=%ld, w=%ld, x=%ld",
-		  (long)mstats->r_size,  (long)mstats->w_size, (long)mstats->x_size);
+	log_debug("Mapped size: %ld", (long)*mstats);
 
 	return ret;
 }
@@ -288,7 +276,7 @@
 
 static void _unlock_mem(struct cmd_context *cmd)
 {
-	struct maps_stats unlock_mstats;
+	size_t unlock_mstats;
 
 	log_very_verbose("Unlocking memory");
 
@@ -299,10 +287,9 @@
 		if (fclose(_mapsh))
 			log_sys_error("fclose", _procselfmaps);
 
-		if (_mstats.r_size < unlock_mstats.r_size)
-			log_error(INTERNAL_ERROR "Maps lock(%ld,%ld,%ld) < unlock(%ld,%ld,%ld)",
-				  (long)_mstats.r_size, (long)_mstats.w_size, (long)_mstats.x_size,
-				  (long)unlock_mstats.r_size, (long)unlock_mstats.w_size, (long)unlock_mstats.x_size);
+		if (_mstats < unlock_mstats)
+			log_error(INTERNAL_ERROR "Maps lock %ld < unlock %ld",
+				  (long)_mstats, (long)unlock_mstats);
 	}
 
 	if (setpriority(PRIO_PROCESS, 0, _priority))


             reply	other threads:[~2010-03-30 14:41 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-30 14:41 zkabelac [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-03-01 21:19 zkabelac
2012-02-01 10:48 zkabelac
2011-06-01 19:26 agk
2011-03-06 17:52 zkabelac
2011-02-18 14:51 zkabelac
2010-10-25 13:00 zkabelac
2010-10-15  9:48 zkabelac
2010-07-08 14:47 zkabelac
2010-07-08 13:05 zkabelac
2010-04-01 14:53 zkabelac
2010-04-01 13:43 zkabelac
2010-03-30 14:41 zkabelac
2010-03-09 12:31 agk
2010-03-09 10:25 zkabelac
2010-03-08 17:14 zkabelac
2010-03-08 15:55 zkabelac
2010-03-05 15:14 zkabelac
2009-11-18 18:22 mornfall
2008-05-28 23:12 agk

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=20100330144159.19588.qmail@sourceware.org \
    --to=zkabelac@sourceware.org \
    --cc=lvm-devel@redhat.com \
    --cc=lvm2-cvs@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 read-only IMAP folder(s) and NNTP newsgroup(s).