migration: delete QEMUFile buffer implementation
The qemu_bufopen() method is no longer used, so the memory buffer based QEMUFile backend can be deleted entirely. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Message-Id: <1461751518-12128-20-git-send-email-berrange@redhat.com> Signed-off-by: Amit Shah <amit.shah@redhat.com>
This commit is contained in:
parent
8925839f00
commit
8b7c5c0f52
@ -140,7 +140,6 @@ QEMUFile *qemu_fopen_socket(int fd, const char *mode);
|
||||
QEMUFile *qemu_fopen_channel_input(QIOChannel *ioc);
|
||||
QEMUFile *qemu_fopen_channel_output(QIOChannel *ioc);
|
||||
QEMUFile *qemu_popen_cmd(const char *command, const char *mode);
|
||||
QEMUFile *qemu_bufopen(const char *mode, QEMUSizedBuffer *input);
|
||||
void qemu_file_set_hooks(QEMUFile *f, const QEMUFileHooks *hooks);
|
||||
int qemu_get_fd(QEMUFile *f);
|
||||
int qemu_fclose(QEMUFile *f);
|
||||
@ -166,11 +165,6 @@ ssize_t qsb_write_at(QEMUSizedBuffer *qsb, const uint8_t *buf,
|
||||
off_t pos, size_t count);
|
||||
|
||||
|
||||
/*
|
||||
* For use on files opened with qemu_bufopen
|
||||
*/
|
||||
const QEMUSizedBuffer *qemu_buf_get(QEMUFile *f);
|
||||
|
||||
static inline void qemu_put_ubyte(QEMUFile *f, unsigned int v)
|
||||
{
|
||||
qemu_put_byte(f, (int)v);
|
||||
|
@ -366,99 +366,3 @@ ssize_t qsb_write_at(QEMUSizedBuffer *qsb, const uint8_t *source,
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
typedef struct QEMUBuffer {
|
||||
QEMUSizedBuffer *qsb;
|
||||
QEMUFile *file;
|
||||
bool qsb_allocated;
|
||||
} QEMUBuffer;
|
||||
|
||||
static ssize_t buf_get_buffer(void *opaque, uint8_t *buf, int64_t pos,
|
||||
size_t size)
|
||||
{
|
||||
QEMUBuffer *s = opaque;
|
||||
ssize_t len = qsb_get_length(s->qsb) - pos;
|
||||
|
||||
if (len <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (len > size) {
|
||||
len = size;
|
||||
}
|
||||
return qsb_get_buffer(s->qsb, pos, len, buf);
|
||||
}
|
||||
|
||||
static ssize_t buf_put_buffer(void *opaque, const uint8_t *buf,
|
||||
int64_t pos, size_t size)
|
||||
{
|
||||
QEMUBuffer *s = opaque;
|
||||
|
||||
return qsb_write_at(s->qsb, buf, pos, size);
|
||||
}
|
||||
|
||||
static int buf_close(void *opaque)
|
||||
{
|
||||
QEMUBuffer *s = opaque;
|
||||
|
||||
if (s->qsb_allocated) {
|
||||
qsb_free(s->qsb);
|
||||
}
|
||||
|
||||
g_free(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const QEMUSizedBuffer *qemu_buf_get(QEMUFile *f)
|
||||
{
|
||||
QEMUBuffer *p;
|
||||
|
||||
qemu_fflush(f);
|
||||
|
||||
p = f->opaque;
|
||||
|
||||
return p->qsb;
|
||||
}
|
||||
|
||||
static const QEMUFileOps buf_read_ops = {
|
||||
.get_buffer = buf_get_buffer,
|
||||
.close = buf_close,
|
||||
};
|
||||
|
||||
static const QEMUFileOps buf_write_ops = {
|
||||
.put_buffer = buf_put_buffer,
|
||||
.close = buf_close,
|
||||
};
|
||||
|
||||
QEMUFile *qemu_bufopen(const char *mode, QEMUSizedBuffer *input)
|
||||
{
|
||||
QEMUBuffer *s;
|
||||
|
||||
if (mode == NULL || (mode[0] != 'r' && mode[0] != 'w') ||
|
||||
mode[1] != '\0') {
|
||||
error_report("qemu_bufopen: Argument validity check failed");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
s = g_new0(QEMUBuffer, 1);
|
||||
s->qsb = input;
|
||||
|
||||
if (s->qsb == NULL) {
|
||||
s->qsb = qsb_create(NULL, 0);
|
||||
s->qsb_allocated = true;
|
||||
}
|
||||
if (!s->qsb) {
|
||||
g_free(s);
|
||||
error_report("qemu_bufopen: qsb_create failed");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
if (mode[0] == 'r') {
|
||||
s->file = qemu_fopen_ops(s, &buf_read_ops);
|
||||
} else {
|
||||
s->file = qemu_fopen_ops(s, &buf_write_ops);
|
||||
}
|
||||
return s->file;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user