All of lore.kernel.org
 help / color / mirror / Atom feed
From: wysochanski@sourceware.org <wysochanski@sourceware.org>
To: lvm-devel@redhat.com
Subject: LVM2 lib/format_text/format-text.c ./WHATS_NEW ...
Date: 16 Jul 2008 21:32:39 -0000	[thread overview]
Message-ID: <20080716213239.7402.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	wysochanski at sourceware.org	2008-07-16 21:32:39

Modified files:
	lib/format_text: format-text.c 
	.              : WHATS_NEW 
Added files:
	test           : t-pvcreate-usage.sh 

Log message:
	Add pvcreate sanity tests, check for label_write() failure in _text_pv_write().
	
	Failure to check for label_write() return code caused the following test
	to indicate it passed when it really failed:
	pvcreate rejects labelsector > 1000000000000

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/format-text.c.diff?cvsroot=lvm2&r1=1.90&r2=1.91
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-pvcreate-usage.sh.diff?cvsroot=lvm2&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.930&r2=1.931

--- LVM2/lib/format_text/format-text.c	2008/03/17 16:51:31	1.90
+++ LVM2/lib/format_text/format-text.c	2008/07/16 21:32:38	1.91
@@ -1363,7 +1363,10 @@
 		}
 	}
 
-	label_write(pv->dev, label);
+	if (!label_write(pv->dev, label)) {
+		dev_close(pv->dev);
+		return_0;
+	}
 
 	if (!dev_close(pv->dev))
 		return_0;
/cvs/lvm2/LVM2/test/t-pvcreate-usage.sh,v  -->  standard output
revision 1.1
--- LVM2/test/t-pvcreate-usage.sh
+++ -	2008-07-16 21:32:39.280246000 +0000
@@ -0,0 +1,115 @@
+#!/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
+
+test_description='Test pvcreate option values'
+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"
+  rm -f "$f1" "$f2" "$f3" "$f4"
+}
+
+test_expect_success \
+  'set up temp files, loopback devices, PVs, vgname' \
+  '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")'
+
+# x. negative setphysicalvolumesize, metadatasize
+test_expect_success \
+  'pvcreate rejects negative setphysicalvolumesize' \
+  'pvcreate --setphysicalvolumesize -1024 $d1;
+   status=$?; echo status=$status; test $status != 0'
+
+test_expect_success \
+  'pvcreate rejects negative metadatasize' \
+  'pvcreate --metadatasize -1024 $d1;
+   status=$?; echo status=$status; test $status != 0'
+
+# x. metadatasize 0, defaults to 255
+# FIXME: unable to check default value, not in reporting cmds
+# should default to 255 according to code
+#   check_pv_field_ pv_mda_size 255 &&
+test_expect_success \
+  'pvcreate accepts metadatasize 0' \
+  'pvcreate --metadatasize 0 $d1 &&
+   pvremove $d1'
+
+# x. metadatasize too large
+# For some reason we allow this, even though there's no room for data?
+#test_expect_success \
+#  'pvcreate rejects metadatasize too large' \
+#  'pvcreate --metadatasize 100000000000000 $d1;
+#   status=$?; echo status=$status; test $status != 0'
+
+# x. metadatacopies < 0, defaults to 1
+test_expect_success \
+  'pvcreate rejects metadatacopies < 0' \
+  'pvcreate --metadatacopies -1 $d1;
+   status=$?; echo status=$status; test $status != 0'
+
+# x. metadatacopies = 0, 1, 2 pass, > 2 fail
+test_expect_success \
+  'pvcreate accepts metadatacopies = 0, 1, 2' \
+  'pvcreate --metadatacopies 0 $d1 &&
+   pvcreate --metadatacopies 1 $d2 &&
+   pvcreate --metadatacopies 2 $d3 &&
+   check_pv_field_ $d1 pv_mda_count 0 &&
+   check_pv_field_ $d2 pv_mda_count 1 &&
+   check_pv_field_ $d3 pv_mda_count 2 &&
+   pvremove $d1 &&
+   pvremove $d2 &&
+   pvremove $d3'
+
+# x. metadatacopies > 2 fail
+test_expect_success \
+  'pvcreate rejects metadatacopies > 2' \
+  'pvcreate --metadatacopies 3 $d1 &&
+   status=$?; echo status=$status; test $status != 0'
+
+# x. bogus device given
+test_expect_success \
+  'pvcreate rejects invalid device' \
+  'pvcreate $d1bogus &&
+   status=$?; echo status=$status; test $status != 0'
+
+# x. labelsector out of range (< 0 or > deviceSizeInSectors)
+test_expect_success \
+  'pvcreate rejects labelsector < 0' \
+  'pvcreate --labelsector -1 $d1;
+   status=$?; echo status=$status; test $status != 0'
+
+test_expect_success \
+  'pvcreate rejects labelsector > 1000000000000' \
+  'pvcreate --labelsector 1000000000000 $d1;
+   status=$?; echo status=$status; test $status != 0'
+
+# other possibilites based on code inspection (not sure how hard)
+# x. device too small (min of 512 * 1024 KB)
+# x. device filtered out
+# x. unable to open /dev/urandom RDONLY
+# x. device too large (pe_count > UINT32_MAX)
+# x. device read-only
+# x. unable to open device readonly
+# x. BLKGETSIZE64 fails
+# x. set size to value inconsistent with device / PE size
+
+test_done
+# Local Variables:
+# indent-tabs-mode: nil
+# End:
--- LVM2/WHATS_NEW	2008/07/16 10:46:12	1.930
+++ LVM2/WHATS_NEW	2008/07/16 21:32:38	1.931
@@ -1,5 +1,6 @@
 Version 2.02.40 - 
 ================================
+  Add pvcreate sanity tests, check for label_write() failure in _text_pv_write().
   Fix pvchange -M1 -u to preserve existing extent locations when there's a VG.
   Cease recognising snapshot-in-use percentages returned by early devt kernels.
   Add backward-compatible flags field to on-disk format_text metadata.



                 reply	other threads:[~2008-07-16 21:32 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20080716213239.7402.qmail@sourceware.org \
    --to=wysochanski@sourceware.org \
    --cc=lvm-devel@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.