public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
* LVM2 lib/activate/dev_manager.c tools/lvchange ...
@ 2008-06-18 11:32 zkabelac
  0 siblings, 0 replies; 2+ messages in thread
From: zkabelac @ 2008-06-18 11:32 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac@sourceware.org	2008-06-18 11:32:14

Modified files:
	lib/activate   : dev_manager.c 
	tools          : lvchange.c 
	.              : WHATS_NEW 
Added files:
	test           : t-read-ahead.sh 

Log message:
	Improve/Fix read ahead 'auto' calculation for stripe_size
	Fix lvchange output for -r auto setting if auto is already set
	Add testcase for read ahead

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-read-ahead.sh.diff?cvsroot=lvm2&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/dev_manager.c.diff?cvsroot=lvm2&r1=1.137&r2=1.138
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvchange.c.diff?cvsroot=lvm2&r1=1.91&r2=1.92
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.905&r2=1.906

/cvs/lvm2/LVM2/test/t-read-ahead.sh,v  -->  standard output
revision 1.1
--- LVM2/test/t-read-ahead.sh
+++ -	2008-06-18 11:32:14.658366000 +0000
@@ -0,0 +1,68 @@
+#!/bin/sh
+# Copyright (C) 2007 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+#
+# tests basic functionality of read-ahead and ra regressions
+#
+
+test_description='Test read-ahead functionality'
+privileges_required_=1
+
+. ./test-lib.sh
+
+cleanup_()
+{
+  test -n "$d1" && losetup -d "$d1"
+  test -n "$d2" && losetup -d "$d2"
+  test -n "$d3" && losetup -d "$d3"
+  test -n "$d4" && losetup -d "$d4"
+  test -n "$d5" && losetup -d "$d5"
+  rm -f "$f1" "$f2" "$f3" "$f4" "$f5"
+}
+
+get_lvs_()
+{
+   case $(lvs --units s --nosuffix --noheadings -o $1_read_ahead "$vg"/"$lv") in
+    *$2) true ;;
+    *) false ;;
+   esac
+}
+
+test_expect_success "set up temp files, loopback devices" \
+  'f1=$(pwd)/1 && d1=$(loop_setup_ "$f1") &&
+   f2=$(pwd)/2 && d2=$(loop_setup_ "$f2") &&
+   f3=$(pwd)/3 && d3=$(loop_setup_ "$f3") &&
+   f4=$(pwd)/4 && d4=$(loop_setup_ "$f4") &&
+   f5=$(pwd)/5 && d5=$(loop_setup_ "$f5") &&
+   vg=$(this_test_)-test-vg-$$            &&
+   lv=$(this_test_)-test-lv-$$'
+
+test_expect_success "test various read ahead settings" \
+  'pvcreate "$d1"                                    &&
+   pvcreate "$d2"                                    &&
+   pvcreate "$d3"                                    &&
+   pvcreate "$d4"                                    &&
+   pvcreate "$d5"                                    &&
+   vgcreate -c n "$vg" "$d1" "$d2" "$d3" "$d4" "$d5" &&
+   lvcreate -n "$lv" -l 100%FREE -i5 -I256 "$vg"     &&
+   lvdisplay "$vg"/"$lv"                             &&
+   lvchange -r auto "$vg"/"$lv" || true | grep auto  &&
+   get_lvs_ lv auto                                  &&
+   get_lvs_ lv_kernel 5120                           &&
+   lvchange -r 400 "$vg/$lv"                         &&
+   get_lvs_ lv 400                                   &&
+   vgremove -f "$vg"'
+
+test_done
+
+# Local Variables:
+# indent-tabs-mode: nil
+# End:
--- LVM2/lib/activate/dev_manager.c	2008/06/05 12:45:55	1.137
+++ LVM2/lib/activate/dev_manager.c	2008/06/18 11:32:14	1.138
@@ -928,8 +928,8 @@
 			break;
 		if (lv_is_cow(lv) && !layer)
 			break;
-		if (max_stripe_size < seg->stripe_size)
-			max_stripe_size = seg->stripe_size;
+		if (max_stripe_size < seg->stripe_size * seg->area_count)
+			max_stripe_size = seg->stripe_size * seg->area_count;
 	}
 
 	if (read_ahead == DM_READ_AHEAD_AUTO) {
--- LVM2/tools/lvchange.c	2008/05/21 14:10:11	1.91
+++ LVM2/tools/lvchange.c	2008/06/18 11:32:14	1.92
@@ -387,8 +387,11 @@
 	}
 
 	if (lv->read_ahead == read_ahead) {
-		log_error("Read ahead is already %u for \"%s\"",
-			  read_ahead, lv->name);
+		if (read_ahead == DM_READ_AHEAD_AUTO)
+			log_error("Read ahead is already auto for \"%s\"", lv->name);
+		else
+			log_error("Read ahead is already %u for \"%s\"",
+				  read_ahead, lv->name);
 		return 0;
 	}
 
--- LVM2/WHATS_NEW	2008/06/17 14:14:00	1.905
+++ LVM2/WHATS_NEW	2008/06/18 11:32:14	1.906
@@ -1,5 +1,8 @@
 Version 2.02.39 -
 ================================
+  Improve/Fix read ahead 'auto' calculation for stripe_size
+  Fix lvchange output for -r auto setting if auto is already set
+  Add testcase for read ahead
   Fix ambiguous use of identifier 'error_message_produced'.
   Begin syncing configure.in for merge/unification with device-mapper.
   Fix add_mirror_images not to dereference uninitialized log_lv upon failure.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* LVM2 lib/activate/dev_manager.c tools/lvchange ...
@ 2007-12-05 19:24 agk
  0 siblings, 0 replies; 2+ messages in thread
From: agk @ 2007-12-05 19:24 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2007-12-05 19:24:32

Modified files:
	lib/activate   : dev_manager.c 
	tools          : lvchange.c lvcreate.c 

Log message:
	round readahead to multiple of page size in tools

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/dev_manager.c.diff?cvsroot=lvm2&r1=1.130&r2=1.131
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvchange.c.diff?cvsroot=lvm2&r1=1.83&r2=1.84
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvcreate.c.diff?cvsroot=lvm2&r1=1.161&r2=1.162

--- LVM2/lib/activate/dev_manager.c	2007/12/03 18:00:38	1.130
+++ LVM2/lib/activate/dev_manager.c	2007/12/05 19:24:31	1.131
@@ -952,10 +952,10 @@
 			max_stripe_size = seg->stripe_size;
 	}
 
-	if (read_ahead == DM_READ_AHEAD_AUTO)
+	if (read_ahead == DM_READ_AHEAD_AUTO) {
 		read_ahead = max_stripe_size;
-	else
 		read_ahead_flags = DM_READ_AHEAD_MINIMUM_FLAG;
+	}
 
 	dm_tree_node_set_read_ahead(dnode, read_ahead, read_ahead_flags);
 
--- LVM2/tools/lvchange.c	2007/11/12 20:51:54	1.83
+++ LVM2/tools/lvchange.c	2007/12/05 19:24:32	1.84
@@ -372,6 +372,7 @@
 			      struct logical_volume *lv)
 {
 	unsigned read_ahead = 0;
+	unsigned pagesize = (unsigned) lvm_getpagesize() >> SECTOR_SHIFT;
 
 	read_ahead = arg_uint_value(cmd, readahead_ARG, 0);
 
@@ -382,6 +383,13 @@
 		return 0;
 	}
 
+	if (read_ahead != DM_READ_AHEAD_AUTO &&
+	    read_ahead != DM_READ_AHEAD_NONE && read_ahead % pagesize) {
+		read_ahead = (read_ahead / pagesize) * pagesize;
+		log_verbose("Rounding down readahead to %u sectors, a multiple "
+			    "of page size %u.", read_ahead, pagesize);
+	}
+
 	if (lv->read_ahead == read_ahead) {
 		log_error("Read ahead is already %u for \"%s\"",
 			  read_ahead, lv->name);
--- LVM2/tools/lvcreate.c	2007/11/22 14:54:35	1.161
+++ LVM2/tools/lvcreate.c	2007/12/05 19:24:32	1.162
@@ -333,6 +333,7 @@
 			    int argc, char **argv)
 {
 	int contiguous;
+	unsigned pagesize;
 
 	memset(lp, 0, sizeof(*lp));
 
@@ -462,8 +463,17 @@
 	/*
 	 * Read ahead.
 	 */
-	if (arg_count(cmd, readahead_ARG))
+	if (arg_count(cmd, readahead_ARG)) {
 		lp->read_ahead = arg_uint_value(cmd, readahead_ARG, 0);
+		pagesize = lvm_getpagesize() >> SECTOR_SHIFT;
+		if (lp->read_ahead != DM_READ_AHEAD_AUTO &&
+		    lp->read_ahead != DM_READ_AHEAD_NONE &&
+		    lp->read_ahead % pagesize) {
+			lp->read_ahead = (lp->read_ahead / pagesize) * pagesize;
+			log_verbose("Rounding down readahead to %u sectors, a multiple "
+				    "of page size %u.", lp->read_ahead, pagesize);
+		}
+	}
 
 	/*
 	 * Permissions.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-06-18 11:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-18 11:32 LVM2 lib/activate/dev_manager.c tools/lvchange zkabelac
  -- strict thread matches above, loose matches on Subject: below --
2007-12-05 19:24 agk

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).