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