]> sourceware.org Git - lvm2.git/commitdiff
Fix LVM1 backwards compatibility issue when LV with a low LV number is deleted.
authorAlasdair Kergon <agk@redhat.com>
Thu, 23 May 2002 11:37:51 +0000 (11:37 +0000)
committerAlasdair Kergon <agk@redhat.com>
Thu, 23 May 2002 11:37:51 +0000 (11:37 +0000)
lib/format1/disk-rep.c

index 0ddea822d59372dff1f16ecf2e36de8e4899e37d..d0005b6fdcdc535f111e2c7f6b01e4de392419ed 100644 (file)
@@ -500,7 +500,7 @@ static int _write_lvd(struct device *dev, ulong pos, struct lv_disk *disk)
 static int _write_lvs(struct disk_list *data)
 {
        struct list *lvh;
-       ulong pos;
+       ulong pos, offset;
 
        pos = data->pvd.lv_on_disk.base;
 
@@ -513,10 +513,15 @@ static int _write_lvs(struct disk_list *data)
        list_iterate(lvh, &data->lvds) {
                struct lvd_list *ll = list_item(lvh, struct lvd_list);
 
-               if (!_write_lvd(data->dev, pos, &ll->lvd))
-                       fail;
+               offset = sizeof(struct lv_disk) * ll->lvd.lv_number;
+               if (offset + sizeof(struct lv_disk) >
+                   data->pvd.lv_on_disk.size) {
+                       log_error("lv_number %d too large", ll->lvd.lv_number);
+                       return 0;
+               }
 
-               pos += sizeof(struct lv_disk);
+               if (!_write_lvd(data->dev, pos + offset, &ll->lvd))
+                       fail;
        }
 
        return 1;
This page took 0.041441 seconds and 5 git commands to generate.