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