[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] LVM2 Snapshot Problems




Please try adding 'XEN_flush_page_update_queue()' to
mm/vmalloc.c:__vmalloc_area_pages, just before 'return 0':

        .....
        spin_unlock(&init_mm.page_table_lock);
        flush_cache_all();
        XEN_flush_page_update_queue();
        return 0;
err:
        .....

 -- Keir

> Thus is recounted my quest for LVM snapshots in Xen:
> 
> As I mentioned earlier, I've attempted to get snapshots working with
> LVM2 in Xen.  I haven't yet been successful, but it almost works...
> 
> What I've done so far: I'm using a recent version of Xen 2.0.
> (Currently testing with the xen-unstable.tgz snapshot from last night.)
> I'm running XenoLinux 2.4.26 in domain 0, with the device mapper patches
> from http://sources.redhat.com/dm/ applied to the kernel.  Domain 0 is
> running a mostly up-to-date Debian testing installation with the LVM2
> tools installed.
> 
> I've been successfully using this setup to create and destroy LVM
> logical volumes for the other guest domains, so the basics of LVM are
> working.  Snapshots aren't, however.
> 
> I attempted to create a snapshot of an existing logical volume.  The
> command I used was
>     lvcreate -L 256M -s -n xen1-snap vg1/xen1
> and it terminates with a segmentation fault.  The system logs show:
> 
>     Aug  9 17:45:17 localhost kernel: Unable to handle kernel NULL pointer 
> dereference at virtual address 00000018
>     Aug  9 17:45:17 localhost kernel:  printing eip:
>     Aug  9 17:45:17 localhost kernel: c02c8db3
>     Aug  9 17:45:17 localhost kernel: *pde=00000000(55555000)
>     Aug  9 17:45:17 localhost kernel: Oops: 0002
>     Aug  9 17:45:17 localhost kernel: CPU:    0
>     Aug  9 17:45:17 localhost kernel: EIP:    0819:[alloc_area+99/128]    Not 
> tainted
>     Aug  9 17:45:17 localhost kernel: EFLAGS: 00213246
>     Aug  9 17:45:17 localhost kernel: eax: 00000000   ebx: 00000000   ecx: 
> 00000204
>       edx: 011f5000
>     Aug  9 17:45:17 localhost kernel: esi: 00000002   edi: 00000000   ebp: 
> c3267860
>       esp: c2325e88
>     Aug  9 17:45:17 localhost kernel: ds: 0821   es: 0821   ss: 0821
>     Aug  9 17:45:17 localhost kernel: Process lvcreate (pid: 339, 
> stackpage=c2325000)<1>
>     Aug  9 17:45:17 localhost kernel: Stack: c4481000 000001f2 00000063 
> c3267860 fffffff4 00000010 c2ba390c c02c95bb
>     Aug  9 17:45:17 localhost kernel:        c3267860 000001f0 c2ba390c 
> 00000200 c2ba38c0 c4418164 c02c7c6b c2ba390c
>     Aug  9 17:45:17 localhost kernel:        00000010 00000000 00000000 
> 00000003 c2ba38d4 50325ee4 c2ba38c0 c4418170
>     Aug  9 17:45:17 localhost kernel: Call Trace: 
> [dm_create_persistent+155/320] [snapshot_ctr+923/1072] 
> [dm_table_add_target+249/336] [populate_table+130/224] [table_load+104/304]
>     Aug  9 17:45:17 localhost kernel:    [ctl_ioctl+235/336] 
> [table_load+0/304] [sys_ioctl+201/592] [system_call+47/51]
>     Aug  9 17:45:17 localhost kernel:
> 
> The offending line of code is in the alloc_area function (in
> drivers/md/dm-exception-store.c):
> 
>         int r = -ENOMEM;
>         size_t i, len, nr_pages;
>         struct page *page, *last = NULL;
> 
>         len = ps->chunk_size << SECTOR_SHIFT;
> 
>         /*
>          * Allocate the chunk_size block of memory that will hold
>          * a single metadata area.
>          */
>         ps->area = vmalloc(len);
>         if (!ps->area)
>                 return r;
> 
>         nr_pages = sectors_to_pages(ps->chunk_size);
> 
>         /*
>          * We lock the pages for ps->area into memory since
>          * they'll be doing a lot of io.  We also chain them
>          * together ready for dm-io.
>          */
>         for (i = 0; i < nr_pages; i++) {
>                 page = vmalloc_to_page(ps->area + (i * PAGE_SIZE));
>                 LockPage(page);
>                 if (last)
>                         last->list.next = &page->list;
>                 last = page;
>         }
> 
> LockPage is the line causing the fault, so it appears that
> vmalloc_to_page is returning NULL.
> 
> I've had success using a similarly-patched 2.4.26 kernel running on the
> bare hardware, not in Xen--this is where I was doing my testing of
> snapshot functionality last week.
> 
> I don't know the cause of the trouble with snapshots under Xen.  It
> wouldn't surprise me if it were a bug in the device mapper code that is
> somehow being triggered when running under Xen.  I'm posting here in the
> hope that maybe someone does have an idea what the problem is, or
> failing that, to at least give an update on my attempts to use LVM
> snapshots with Xen.
> 
> I'm hoping that the device mapper snapshot functionality in Linux 2.6.8,
> when it is released, will work.  But I'd like to get snapshots working
> with 2.4 if possible.  If I do get this working, I'll send a post with
> instructions for doing so.
> 
> Is anyone else using LVM2 and Xen?
> 
> --Michael Vrable
> 
> 
> -------------------------------------------------------
> SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
> 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
> Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
> http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.sourceforge.net/lists/listinfo/xen-devel



-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.