bitkeeper revision 1.843.1.1 (408e7d81yryzADIp-4VdSvsB20fl9w)
authoriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Tue, 27 Apr 2004 15:34:25 +0000 (15:34 +0000)
committeriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Tue, 27 Apr 2004 15:34:25 +0000 (15:34 +0000)
more shadow log dirty stuff.

xen/common/memory.c
xen/net/dev.c

index 420eb1ea3186e1dc264bfb145c613ae2bb4c6b5e..2e5ef181023c1d4e934f1272c7a2c3465d22b8ee 100644 (file)
@@ -1060,6 +1060,12 @@ int do_mmu_update(mmu_update_t *ureqs, int count)
 
             machine_to_phys_mapping[pfn] = req.val;
             okay = 1;
+
+           /*  if in log dirty shadow mode, mark the corresponding 
+               psuedo-physical page as dirty */
+           if( unlikely(current->mm.shadow_mode == SHM_logdirty) )
+               mark_dirty( &current->mm, pfn );
+
             put_page(&frame_table[pfn]);
             break;
 
index 31d80e2a1476ad15f695a0e8f353fa3fe0a811a3..aefd3a0df14fe13b7af7d198c1c29b5a3904741c 100644 (file)
@@ -555,8 +555,11 @@ void deliver_packet(struct sk_buff *skb, net_vif_t *vif)
 
         // avoid the fault later
        *sptr = new_pte;
-
        unmap_domain_mem(sptr);
+
+       if( p->mm.shadow_mode == SHM_logdirty )
+               mark_dirty( &p->mm, new_page-frame_table );
+
        put_shadow_status(&p->mm);
     }