mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-25 02:58:54 +00:00
When service starts page server all the preparations (log, wdir, img dir, etc.) happen in parent task, then we fork page server. This is OK for now, but when we will serve several requests per connection, all these resources would be leaked in parent. Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
38 lines
1.1 KiB
C
38 lines
1.1 KiB
C
#ifndef __CR_PAGE_XFER__H__
|
|
#define __CR_PAGE_XFER__H__
|
|
#include "page-read.h"
|
|
|
|
extern int cr_page_server(bool daemon_mode, int cfd);
|
|
|
|
/*
|
|
* page_xfer -- transfer pages into image file.
|
|
* Two images backends are implemented -- local image file
|
|
* and page-server image file.
|
|
*/
|
|
|
|
struct page_xfer {
|
|
/* transfers one vaddr:len entry */
|
|
int (*write_pagemap)(struct page_xfer *self, struct iovec *iov);
|
|
/* transfers pages related to previous pagemap */
|
|
int (*write_pages)(struct page_xfer *self, int pipe, unsigned long len);
|
|
/* transfers one hole -- vaddr:len entry w/o pages */
|
|
int (*write_hole)(struct page_xfer *self, struct iovec *iov);
|
|
void (*close)(struct page_xfer *self);
|
|
|
|
/* private data for every page-xfer engine */
|
|
int fd;
|
|
union {
|
|
int fd_pg;
|
|
u64 dst_id;
|
|
};
|
|
struct page_read *parent;
|
|
};
|
|
|
|
extern int open_page_xfer(struct page_xfer *xfer, int fd_type, long id);
|
|
struct page_pipe;
|
|
extern int page_xfer_dump_pages(struct page_xfer *, struct page_pipe *,
|
|
unsigned long off);
|
|
extern int connect_to_page_server(void);
|
|
extern int disconnect_from_page_server(void);
|
|
|
|
#endif /* __CR_PAGE_XFER__H__ */
|