1 | The following changes since commit 41feb5b955f0d7c9d071b2c5adbc404ae2895c7a: | 1 | The following changes since commit ac5f7bf8e208cd7893dbb1a9520559e569a4677c: |
---|---|---|---|
2 | 2 | ||
3 | Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-3.0-pull-request' into staging (2018-06-05 10:38:33 +0100) | 3 | Merge tag 'migration-20230424-pull-request' of https://gitlab.com/juan.quintela/qemu into staging (2023-04-24 15:00:39 +0100) |
4 | 4 | ||
5 | are available in the git repository at: | 5 | are available in the Git repository at: |
6 | 6 | ||
7 | git://github.com/codyprime/qemu-kvm-jtc.git tags/block-pull-request | 7 | https://gitlab.com/stefanha/qemu.git tags/block-pull-request |
8 | 8 | ||
9 | for you to fetch changes up to 68acc99f143b60ec4faa2903065b187d4d3c4bf3: | 9 | for you to fetch changes up to 9d672e290475001fcecdcc9dc79ad088ff89d17f: |
10 | 10 | ||
11 | sheepdog: remove huge BSS object (2018-06-05 10:15:12 -0400) | 11 | tracetool: use relative paths for '#line' preprocessor directives (2023-04-24 13:53:44 -0400) |
12 | 12 | ||
13 | ---------------------------------------------------------------- | 13 | ---------------------------------------------------------------- |
14 | Sheepdog patches | 14 | Pull request (v2) |
15 | |||
16 | I dropped the zoned storage patches that had CI failures. This pull request | ||
17 | only contains fixes now. | ||
18 | |||
15 | ---------------------------------------------------------------- | 19 | ---------------------------------------------------------------- |
16 | 20 | ||
17 | Paolo Bonzini (2): | 21 | Philippe Mathieu-Daudé (1): |
18 | sheepdog: cleanup repeated expression | 22 | block/dmg: Declare a type definition for DMG uncompress function |
19 | sheepdog: remove huge BSS object | ||
20 | 23 | ||
21 | block/sheepdog.c | 28 +++++++++++++++------------- | 24 | Thomas De Schampheleire (1): |
22 | 1 file changed, 15 insertions(+), 13 deletions(-) | 25 | tracetool: use relative paths for '#line' preprocessor directives |
26 | |||
27 | block/dmg.h | 8 ++++---- | ||
28 | block/dmg.c | 7 ++----- | ||
29 | scripts/tracetool/backend/ftrace.py | 4 +++- | ||
30 | scripts/tracetool/backend/log.py | 4 +++- | ||
31 | scripts/tracetool/backend/syslog.py | 4 +++- | ||
32 | 5 files changed, 15 insertions(+), 12 deletions(-) | ||
23 | 33 | ||
24 | -- | 34 | -- |
25 | 2.13.6 | 35 | 2.39.2 |
26 | 36 | ||
27 | 37 | diff view generated by jsdifflib |
1 | From: Paolo Bonzini <pbonzini@redhat.com> | 1 | From: Philippe Mathieu-Daudé <philmd@linaro.org> |
---|---|---|---|
2 | 2 | ||
3 | block/sheepdog.o has a 4M static variable that is 90% of QEMU's whole .bss | 3 | Introduce the BdrvDmgUncompressFunc type defintion. To emphasis |
4 | section. Replace it with a heap-allocated block, and make it smaller too | 4 | dmg_uncompress_bz2 and dmg_uncompress_lzfse are pointer to functions, |
5 | since only the inode header is actually being used. | 5 | declare them using this new typedef. |
6 | 6 | ||
7 | bss size goes down from 4464280 to 269976. | 7 | Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> |
8 | Message-id: 20230320152610.32052-1-philmd@linaro.org | ||
9 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
10 | --- | ||
11 | block/dmg.h | 8 ++++---- | ||
12 | block/dmg.c | 7 ++----- | ||
13 | 2 files changed, 6 insertions(+), 9 deletions(-) | ||
8 | 14 | ||
9 | Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> | 15 | diff --git a/block/dmg.h b/block/dmg.h |
10 | Reviewed-by: Jeff Cody <jcody@redhat.com> | ||
11 | Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | ||
12 | Message-Id: <20180523160721.14018-3-pbonzini@redhat.com> | ||
13 | Signed-off-by: Jeff Cody <jcody@redhat.com> | ||
14 | --- | ||
15 | block/sheepdog.c | 22 ++++++++++++---------- | ||
16 | 1 file changed, 12 insertions(+), 10 deletions(-) | ||
17 | |||
18 | diff --git a/block/sheepdog.c b/block/sheepdog.c | ||
19 | index XXXXXXX..XXXXXXX 100644 | 16 | index XXXXXXX..XXXXXXX 100644 |
20 | --- a/block/sheepdog.c | 17 | --- a/block/dmg.h |
21 | +++ b/block/sheepdog.c | 18 | +++ b/block/dmg.h |
22 | @@ -XXX,XX +XXX,XX @@ static int sd_snapshot_list(BlockDriverState *bs, QEMUSnapshotInfo **psn_tab) | 19 | @@ -XXX,XX +XXX,XX @@ typedef struct BDRVDMGState { |
23 | QEMUSnapshotInfo *sn_tab = NULL; | 20 | z_stream zstream; |
24 | unsigned wlen, rlen; | 21 | } BDRVDMGState; |
25 | int found = 0; | 22 | |
26 | - static SheepdogInode inode; | 23 | -extern int (*dmg_uncompress_bz2)(char *next_in, unsigned int avail_in, |
27 | + SheepdogInode *inode; | 24 | - char *next_out, unsigned int avail_out); |
28 | unsigned long *vdi_inuse; | 25 | +typedef int BdrvDmgUncompressFunc(char *next_in, unsigned int avail_in, |
29 | unsigned int start_nr; | 26 | + char *next_out, unsigned int avail_out); |
30 | uint64_t hval; | 27 | |
31 | uint32_t vid; | 28 | -extern int (*dmg_uncompress_lzfse)(char *next_in, unsigned int avail_in, |
32 | 29 | - char *next_out, unsigned int avail_out); | |
33 | vdi_inuse = g_malloc(max); | 30 | +extern BdrvDmgUncompressFunc *dmg_uncompress_bz2; |
34 | + inode = g_malloc(SD_INODE_HEADER_SIZE); | 31 | +extern BdrvDmgUncompressFunc *dmg_uncompress_lzfse; |
35 | 32 | ||
36 | fd = connect_to_sdog(s, &local_err); | 33 | #endif |
37 | if (fd < 0) { | 34 | diff --git a/block/dmg.c b/block/dmg.c |
38 | @@ -XXX,XX +XXX,XX @@ static int sd_snapshot_list(BlockDriverState *bs, QEMUSnapshotInfo **psn_tab) | 35 | index XXXXXXX..XXXXXXX 100644 |
39 | } | 36 | --- a/block/dmg.c |
40 | 37 | +++ b/block/dmg.c | |
41 | /* we don't need to read entire object */ | 38 | @@ -XXX,XX +XXX,XX @@ |
42 | - ret = read_object(fd, s->bs, (char *)&inode, | 39 | #include "qemu/memalign.h" |
43 | + ret = read_object(fd, s->bs, (char *)inode, | 40 | #include "dmg.h" |
44 | vid_to_vdi_oid(vid), | 41 | |
45 | 0, SD_INODE_HEADER_SIZE, 0, | 42 | -int (*dmg_uncompress_bz2)(char *next_in, unsigned int avail_in, |
46 | s->cache_flags); | 43 | - char *next_out, unsigned int avail_out); |
47 | @@ -XXX,XX +XXX,XX @@ static int sd_snapshot_list(BlockDriverState *bs, QEMUSnapshotInfo **psn_tab) | 44 | - |
48 | continue; | 45 | -int (*dmg_uncompress_lzfse)(char *next_in, unsigned int avail_in, |
49 | } | 46 | - char *next_out, unsigned int avail_out); |
50 | 47 | +BdrvDmgUncompressFunc *dmg_uncompress_bz2; | |
51 | - if (!strcmp(inode.name, s->name) && is_snapshot(&inode)) { | 48 | +BdrvDmgUncompressFunc *dmg_uncompress_lzfse; |
52 | - sn_tab[found].date_sec = inode.snap_ctime >> 32; | 49 | |
53 | - sn_tab[found].date_nsec = inode.snap_ctime & 0xffffffff; | 50 | enum { |
54 | - sn_tab[found].vm_state_size = inode.vm_state_size; | 51 | /* Limit chunk sizes to prevent unreasonable amounts of memory being used |
55 | - sn_tab[found].vm_clock_nsec = inode.vm_clock_nsec; | ||
56 | + if (!strcmp(inode->name, s->name) && is_snapshot(inode)) { | ||
57 | + sn_tab[found].date_sec = inode->snap_ctime >> 32; | ||
58 | + sn_tab[found].date_nsec = inode->snap_ctime & 0xffffffff; | ||
59 | + sn_tab[found].vm_state_size = inode->vm_state_size; | ||
60 | + sn_tab[found].vm_clock_nsec = inode->vm_clock_nsec; | ||
61 | |||
62 | snprintf(sn_tab[found].id_str, sizeof(sn_tab[found].id_str), | ||
63 | - "%" PRIu32, inode.snap_id); | ||
64 | + "%" PRIu32, inode->snap_id); | ||
65 | pstrcpy(sn_tab[found].name, | ||
66 | - MIN(sizeof(sn_tab[found].name), sizeof(inode.tag)), | ||
67 | - inode.tag); | ||
68 | + MIN(sizeof(sn_tab[found].name), sizeof(inode->tag)), | ||
69 | + inode->tag); | ||
70 | found++; | ||
71 | } | ||
72 | } | ||
73 | @@ -XXX,XX +XXX,XX @@ out: | ||
74 | *psn_tab = sn_tab; | ||
75 | |||
76 | g_free(vdi_inuse); | ||
77 | + g_free(inode); | ||
78 | |||
79 | if (ret < 0) { | ||
80 | return ret; | ||
81 | -- | 52 | -- |
82 | 2.13.6 | 53 | 2.39.2 |
83 | 54 | ||
84 | 55 | diff view generated by jsdifflib |
1 | From: Paolo Bonzini <pbonzini@redhat.com> | 1 | From: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> |
---|---|---|---|
2 | 2 | ||
3 | The expression "SD_INODE_SIZE - sizeof(inode.data_vdi_id)" already has a macro | 3 | The event filename is an absolute path. Convert it to a relative path when |
4 | defined for the same value (though with a nicer definition using offsetof). | 4 | writing '#line' directives, to preserve reproducibility of the generated |
5 | Replace it. | 5 | output when different base paths are used. |
6 | 6 | ||
7 | Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> | 7 | Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> |
8 | Reviewed-by: Fam Zheng <famz@redhat.com> | 8 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> |
9 | Reviewed-by: Jeff Cody <jcody@redhat.com> | 9 | Message-Id: <20230406080045.21696-1-thomas.de_schampheleire@nokia.com> |
10 | Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | ||
11 | Message-Id: <20180523160721.14018-2-pbonzini@redhat.com> | ||
12 | Signed-off-by: Jeff Cody <jcody@redhat.com> | ||
13 | --- | 10 | --- |
14 | block/sheepdog.c | 6 +++--- | 11 | scripts/tracetool/backend/ftrace.py | 4 +++- |
15 | 1 file changed, 3 insertions(+), 3 deletions(-) | 12 | scripts/tracetool/backend/log.py | 4 +++- |
13 | scripts/tracetool/backend/syslog.py | 4 +++- | ||
14 | 3 files changed, 9 insertions(+), 3 deletions(-) | ||
16 | 15 | ||
17 | diff --git a/block/sheepdog.c b/block/sheepdog.c | 16 | diff --git a/scripts/tracetool/backend/ftrace.py b/scripts/tracetool/backend/ftrace.py |
18 | index XXXXXXX..XXXXXXX 100644 | 17 | index XXXXXXX..XXXXXXX 100644 |
19 | --- a/block/sheepdog.c | 18 | --- a/scripts/tracetool/backend/ftrace.py |
20 | +++ b/block/sheepdog.c | 19 | +++ b/scripts/tracetool/backend/ftrace.py |
21 | @@ -XXX,XX +XXX,XX @@ static int sd_truncate(BlockDriverState *bs, int64_t offset, | 20 | @@ -XXX,XX +XXX,XX @@ |
22 | } | 21 | __email__ = "stefanha@redhat.com" |
23 | 22 | ||
24 | /* we don't need to update entire object */ | 23 | |
25 | - datalen = SD_INODE_SIZE - sizeof(s->inode.data_vdi_id); | 24 | +import os.path |
26 | + datalen = SD_INODE_HEADER_SIZE; | 25 | + |
27 | s->inode.vdi_size = offset; | 26 | from tracetool import out |
28 | ret = write_object(fd, s->bs, (char *)&s->inode, | 27 | |
29 | vid_to_vdi_oid(s->inode.vdi_id), s->inode.nr_copies, | 28 | |
30 | @@ -XXX,XX +XXX,XX @@ static int sd_snapshot_create(BlockDriverState *bs, QEMUSnapshotInfo *sn_info) | 29 | @@ -XXX,XX +XXX,XX @@ def generate_h(event, group): |
31 | */ | 30 | args=event.args, |
32 | strncpy(s->inode.tag, sn_info->name, sizeof(s->inode.tag)); | 31 | event_id="TRACE_" + event.name.upper(), |
33 | /* we don't need to update entire object */ | 32 | event_lineno=event.lineno, |
34 | - datalen = SD_INODE_SIZE - sizeof(s->inode.data_vdi_id); | 33 | - event_filename=event.filename, |
35 | + datalen = SD_INODE_HEADER_SIZE; | 34 | + event_filename=os.path.relpath(event.filename), |
36 | inode = g_malloc(datalen); | 35 | fmt=event.fmt.rstrip("\n"), |
37 | 36 | argnames=argnames) | |
38 | /* refresh inode. */ | 37 | |
39 | @@ -XXX,XX +XXX,XX @@ static int sd_snapshot_list(BlockDriverState *bs, QEMUSnapshotInfo **psn_tab) | 38 | diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py |
40 | /* we don't need to read entire object */ | 39 | index XXXXXXX..XXXXXXX 100644 |
41 | ret = read_object(fd, s->bs, (char *)&inode, | 40 | --- a/scripts/tracetool/backend/log.py |
42 | vid_to_vdi_oid(vid), | 41 | +++ b/scripts/tracetool/backend/log.py |
43 | - 0, SD_INODE_SIZE - sizeof(inode.data_vdi_id), 0, | 42 | @@ -XXX,XX +XXX,XX @@ |
44 | + 0, SD_INODE_HEADER_SIZE, 0, | 43 | __email__ = "stefanha@redhat.com" |
45 | s->cache_flags); | 44 | |
46 | 45 | ||
47 | if (ret) { | 46 | +import os.path |
47 | + | ||
48 | from tracetool import out | ||
49 | |||
50 | |||
51 | @@ -XXX,XX +XXX,XX @@ def generate_h(event, group): | ||
52 | ' }', | ||
53 | cond=cond, | ||
54 | event_lineno=event.lineno, | ||
55 | - event_filename=event.filename, | ||
56 | + event_filename=os.path.relpath(event.filename), | ||
57 | name=event.name, | ||
58 | fmt=event.fmt.rstrip("\n"), | ||
59 | argnames=argnames) | ||
60 | diff --git a/scripts/tracetool/backend/syslog.py b/scripts/tracetool/backend/syslog.py | ||
61 | index XXXXXXX..XXXXXXX 100644 | ||
62 | --- a/scripts/tracetool/backend/syslog.py | ||
63 | +++ b/scripts/tracetool/backend/syslog.py | ||
64 | @@ -XXX,XX +XXX,XX @@ | ||
65 | __email__ = "stefanha@redhat.com" | ||
66 | |||
67 | |||
68 | +import os.path | ||
69 | + | ||
70 | from tracetool import out | ||
71 | |||
72 | |||
73 | @@ -XXX,XX +XXX,XX @@ def generate_h(event, group): | ||
74 | ' }', | ||
75 | cond=cond, | ||
76 | event_lineno=event.lineno, | ||
77 | - event_filename=event.filename, | ||
78 | + event_filename=os.path.relpath(event.filename), | ||
79 | name=event.name, | ||
80 | fmt=event.fmt.rstrip("\n"), | ||
81 | argnames=argnames) | ||
48 | -- | 82 | -- |
49 | 2.13.6 | 83 | 2.39.2 |
50 | |||
51 | diff view generated by jsdifflib |