Changeset 141

Show
Ignore:
Timestamp:
05/16/06 09:44:49 (3 years ago)
Author:
ludo
Message:

lvm backup bug fixed (from r3400)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/client/revimage/lvm.c

    r75 r141  
    7373      { 
    7474        __u64 off; 
    75         int state = 0
    76         int pe_count = 0, extent = 0
     75        int state = 0, pe_count = 0, extent = 0
     76        __u64 *pv
    7777 
    7878        /* lvm2 */ 
     79        /* buf[128] = label_header */ 
    7980        if (buf[128] != 0x4542414C || buf[129] != 0x454E4F4C)  
    8081          { 
     
    8889            return; 
    8990          } 
    90         fseek(fi, 0x800, SEEK_SET); 
     91        /* buf[133] = label_header.offset_xl */ 
     92        /* pv_header */ 
     93        pv = (__u64 *)(((__u8 *)&buf[128]) + buf[133]); 
     94        debug("LVM2 pv UUID: %32s\n", (char *)pv); 
     95        /* skip data */ 
     96        pv += 5; 
     97        while (*pv) { 
     98            pv += 2; 
     99        } 
     100        pv += 2; 
     101        debug("LVM2: Mdh offset: 0x%llX\n", *pv); 
     102        fseek(fi, *pv, SEEK_SET); 
    91103        fread(buf, 128*4, 1, fi); 
    92104        if (strncmp((char *)&buf[1], (char *)FMTT_MAGIC, 16)) 
     
    98110        off = buf[10] + ((__u64)buf[11] << 32); 
    99111        debug("LVM2: Meta offset: 0x%llX\n", off); 
     112        if (off == 0) return; 
    100113        off += 0x800; 
    101114        fseek(fi, off, SEEK_SET);