* @gpa: the physical address written by guest.
         * @new: the data was written to the address.
         * @bytes: the written length.
+        * @node: this node
         */
        void (*track_write)(struct kvm_vcpu *vcpu, gpa_t gpa, const u8 *new,
-                           int bytes);
+                           int bytes, struct kvm_page_track_notifier_node *node);
        /*
         * It is called when memory slot is being moved or removed
         * users can drop write-protection for the pages in that memory slot
         *
         * @kvm: the kvm where memory slot being moved or removed
         * @slot: the memory slot being moved or removed
+        * @node: this node
         */
-       void (*track_flush_slot)(struct kvm *kvm, struct kvm_memory_slot *slot);
+       void (*track_flush_slot)(struct kvm *kvm, struct kvm_memory_slot *slot,
+                           struct kvm_page_track_notifier_node *node);
 };
 
 void kvm_page_track_init(struct kvm *kvm);
 
 }
 
 static void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
-                             const u8 *new, int bytes)
+                             const u8 *new, int bytes,
+                             struct kvm_page_track_notifier_node *node)
 {
        gfn_t gfn = gpa >> PAGE_SHIFT;
        struct kvm_mmu_page *sp;
 }
 
 static void kvm_mmu_invalidate_zap_pages_in_memslot(struct kvm *kvm,
-                       struct kvm_memory_slot *slot)
+                       struct kvm_memory_slot *slot,
+                       struct kvm_page_track_notifier_node *node)
 {
        kvm_mmu_invalidate_zap_all_pages(kvm);
 }
 
        idx = srcu_read_lock(&head->track_srcu);
        hlist_for_each_entry_rcu(n, &head->track_notifier_list, node)
                if (n->track_write)
-                       n->track_write(vcpu, gpa, new, bytes);
+                       n->track_write(vcpu, gpa, new, bytes, n);
        srcu_read_unlock(&head->track_srcu, idx);
 }
 
        idx = srcu_read_lock(&head->track_srcu);
        hlist_for_each_entry_rcu(n, &head->track_notifier_list, node)
                if (n->track_flush_slot)
-                       n->track_flush_slot(kvm, slot);
+                       n->track_flush_slot(kvm, slot, n);
        srcu_read_unlock(&head->track_srcu, idx);
 }