]> sourceware.org Git - lvm2.git/commitdiff
Do not issue write behind lv size.
authorMilan Broz <mbroz@redhat.com>
Fri, 19 Dec 2008 15:26:01 +0000 (15:26 +0000)
committerMilan Broz <mbroz@redhat.com>
Fri, 19 Dec 2008 15:26:01 +0000 (15:26 +0000)
pvcreate $DEV
vgcreate -s 1k vg_test $DEV
lvcreate -l 1 -n lv1 vg_test
..
/dev/vg_test/lv1: write failed after 1024 of 4096 at 0: No space left on device

Just check for maximum write size in set_lv.

WHATS_NEW
lib/metadata/lv_manip.c

index dbb861d2eefb35bde95cbb8e5785bce499f51a12..f40608d662fc1fe643f82108e11d0b45602ad83c 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.44 - 
 ====================================
+  Check for maximal LV size when wiping device.
   Calculate mirror log size instead of using 1 extent.
   Check if requested major/minor pair is already used.
   Fix incorrect return value in help function.
index 295f8d6142a526d261b715565be6e5052a3b2b72..1a21ad8ee3f3bf3ff18d54801e2336980dab03ce 100644 (file)
@@ -2698,9 +2698,13 @@ int set_lv(struct cmd_context *cmd, struct logical_volume *lv,
        if (!dev_open_quiet(dev))
                return_0;
 
-       dev_set(dev, UINT64_C(0),
-               sectors ? (size_t) sectors << SECTOR_SHIFT : (size_t) 4096,
-               value);
+       if (!sectors)
+               sectors = UINT64_C(4096) >> SECTOR_SHIFT;
+
+       if (sectors > lv->size)
+               sectors = lv->size;
+
+       dev_set(dev, UINT64_C(0), (size_t) sectors << SECTOR_SHIFT, value);
        dev_flush(dev);
        dev_close_immediate(dev);
 
This page took 0.048243 seconds and 5 git commands to generate.