as files, in memory, or on other hosts across the network. This
driver can safely coexist with the existing blockback driver.
+config XEN_BLKBACK_PAGEMAP
+ tristate
+ depends on XEN_BLKDEV_BACKEND != n && XEN_BLKDEV_TAP2 != n
+ default XEN_BLKDEV_BACKEND || XEN_BLKDEV_TAP2
+
config XEN_NETDEV_BACKEND
tristate "Network-device backend driver"
depends on XEN_BACKEND && NET
obj-$(CONFIG_XEN_BLKDEV_BACKEND) := blkbk.o
+obj-$(CONFIG_XEN_BLKBACK_PAGEMAP) += blkback-pagemap.o
-blkbk-y := blkback.o xenbus.o interface.o vbd.o blkback-pagemap.o
+blkbk-y := blkback.o xenbus.o interface.o vbd.o
-#include "common.h"
+#include <linux/module.h>
#include "blkback-pagemap.h"
static int blkback_pagemap_size;
blkback_pagemap_size = pages;
return 0;
}
+EXPORT_SYMBOL_GPL(blkback_pagemap_init);
void
blkback_pagemap_set(int idx, struct page *page,
entry->busid = busid;
entry->gref = gref;
}
+EXPORT_SYMBOL_GPL(blkback_pagemap_set);
void
blkback_pagemap_clear(struct page *page)
memset(entry, 0, sizeof(*entry));
}
+EXPORT_SYMBOL_GPL(blkback_pagemap_clear);
struct blkback_pagemap
blkback_pagemap_read(struct page *page)
return *entry;
}
EXPORT_SYMBOL(blkback_pagemap_read);
+
+MODULE_LICENSE("Dual BSD/GPL");
#ifndef _BLKBACK_PAGEMAP_H_
#define _BLKBACK_PAGEMAP_H_
+#include <linux/mm.h>
#include <xen/interface/xen.h>
#include <xen/interface/grant_table.h>
grant_ref_t gref;
};
+#if defined(CONFIG_XEN_BLKBACK_PAGEMAP) || defined(CONFIG_XEN_BLKBACK_PAGEMAP_MODULE)
+
+int blkback_pagemap_init(int);
+void blkback_pagemap_set(int, struct page *, domid_t, busid_t, grant_ref_t);
+void blkback_pagemap_clear(struct page *);
struct blkback_pagemap blkback_pagemap_read(struct page *);
+#else /* CONFIG_XEN_BLKBACK_PAGEMAP */
+
+static inline int blkback_pagemap_init(int pages) { return 0; }
+static inline void blkback_pagemap_set(int idx, struct page *page, domid_t dom,
+ busid_t bus, grant_ref_t gnt) {}
+static inline void blkback_pagemap_clear(struct page *page) {}
+static inline struct blkback_pagemap blkback_pagemap_read(struct page *page)
+{
+ BUG();
+ return (struct blkback_pagemap){-1, -1, -1};
+}
+
+#endif /* CONFIG_XEN_BLKBACK_PAGEMAP */
+
#endif
int blkback_barrier(struct xenbus_transaction xbt,
struct backend_info *be, int state);
-int blkback_pagemap_init(int);
-void blkback_pagemap_set(int, struct page *, domid_t, busid_t, grant_ref_t);
-void blkback_pagemap_clear(struct page *);
-
#endif /* __BLKIF__BACKEND__COMMON_H__ */
#include "blktap.h"
-#if defined(CONFIG_XEN_BLKDEV_BACKEND) || \
- (defined(CONFIG_XEN_BLKDEV_BACKEND_MODULE) && defined(MODULE))
#include "../blkback/blkback-pagemap.h"
-#else
-struct blkback_pagemap { };
-#define blkback_pagemap_read(page) BUG();
-#endif
#if 0
#define DPRINTK_IOCTL(_f, _a...) printk(KERN_ALERT _f, ## _a)