| .. | .. |
|---|
| 36 | 36 | #include <linux/io.h> |
|---|
| 37 | 37 | #include <linux/rbtree.h> |
|---|
| 38 | 38 | #include <asm/setup.h> |
|---|
| 39 | | -#include <asm/pgalloc.h> |
|---|
| 40 | 39 | #include <asm/hypervisor.h> |
|---|
| 41 | 40 | #include <xen/grant_table.h> |
|---|
| 42 | 41 | #include <xen/page.h> |
|---|
| .. | .. |
|---|
| 227 | 226 | sector_t size; |
|---|
| 228 | 227 | unsigned int flush_support:1; |
|---|
| 229 | 228 | unsigned int discard_secure:1; |
|---|
| 229 | + /* Connect-time cached feature_persistent parameter value */ |
|---|
| 230 | + unsigned int feature_gnt_persistent_parm:1; |
|---|
| 231 | + /* Persistent grants feature negotiation result */ |
|---|
| 230 | 232 | unsigned int feature_gnt_persistent:1; |
|---|
| 231 | 233 | unsigned int overflow_max_grants:1; |
|---|
| 232 | 234 | }; |
|---|
| .. | .. |
|---|
| 289 | 291 | struct work_struct persistent_purge_work; |
|---|
| 290 | 292 | |
|---|
| 291 | 293 | /* Buffer of free pages to map grant refs. */ |
|---|
| 292 | | - spinlock_t free_pages_lock; |
|---|
| 293 | | - int free_pages_num; |
|---|
| 294 | | - struct list_head free_pages; |
|---|
| 294 | + struct gnttab_page_cache free_pages; |
|---|
| 295 | 295 | |
|---|
| 296 | 296 | struct work_struct free_work; |
|---|
| 297 | 297 | /* Thread shutdown wait queue. */ |
|---|
| .. | .. |
|---|
| 316 | 316 | |
|---|
| 317 | 317 | struct work_struct free_work; |
|---|
| 318 | 318 | unsigned int nr_ring_pages; |
|---|
| 319 | + bool multi_ref; |
|---|
| 319 | 320 | /* All rings for this device. */ |
|---|
| 320 | 321 | struct xen_blkif_ring *rings; |
|---|
| 321 | 322 | unsigned int nr_rings; |
|---|
| 323 | + unsigned long buffer_squeeze_end; |
|---|
| 322 | 324 | }; |
|---|
| 323 | 325 | |
|---|
| 324 | 326 | struct seg_buf { |
|---|
| .. | .. |
|---|
| 375 | 377 | struct block_device *bdev; |
|---|
| 376 | 378 | blkif_sector_t sector_number; |
|---|
| 377 | 379 | }; |
|---|
| 380 | + |
|---|
| 378 | 381 | int xen_blkif_interface_init(void); |
|---|
| 382 | +void xen_blkif_interface_fini(void); |
|---|
| 379 | 383 | |
|---|
| 380 | 384 | int xen_blkif_xenbus_init(void); |
|---|
| 385 | +void xen_blkif_xenbus_fini(void); |
|---|
| 381 | 386 | |
|---|
| 382 | 387 | irqreturn_t xen_blkif_be_int(int irq, void *dev_id); |
|---|
| 383 | 388 | int xen_blkif_schedule(void *arg); |
|---|