mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-17 21:26:13 -07:00
Machine queue, 2019-03-11
* memfd fixes (Ilya Maximets) * Move nvdimms state into struct MachineState (Eric Auger) * hostmem-file: reject invalid pmem file sizes (Stefan Hajnoczi) -----BEGIN PGP SIGNATURE----- iQIcBAABCAAGBQJchwQFAAoJECgHk2+YTcWmhkMP/iyHjvM7eTXcbs+5xidkQpX8 mc9ElHmX/W2ZK1TUeopz2hUuOG12qkt3G4bOKEKgD07h/O5J7HPXSRvT1TU7UbA/ ZkNQiF/TpuyB8JtxIgbYtgh4ZDFIGFy5o/phjCEuejyHMxZXVL8PNKCm9ZUPKgfG XYH1Q7Y+uHH7qQDhLRPdfs5/v8hOKdmHK/SuUn/dq2CqA4GoNjnC9IfxnuvIpDU6 F2Hj2YhPC35zFgR3bIh2Fqz4qv37u50a1L4VPKaCQpPY5YNGj6jPaOVPQbMrviFI 1/yaNr5RGdNrS7aQLcDKKVeclSuFHC7x3uo27JF1RbP8p4tAQi0M89E/RLyBV5lY Y7a9fInmJbxJQifgct6dv8yzTiNoniX5yph81RMXk0CzV74sP+yeKkwkIK2dWAsn 2zsM6qCHFvIv3F7iIy+ONl6TJ/RALvyP4F3Vhd3lT2Y+nwnQOvUdrX6eL4yeYGfZ 4OPCEHIn+xhb3ApYbG+4OrDBYZrPVpr6yYcqc8Ob9paeR08DgaghDX3E23bASwSl e9Cz19nvnIse/zHIAYoWhPFMfSTkWgREzCs+VA07bqPCb1/PNHBQmxv2mvdpB8Rw r/FjZyptCNyXRSfU28HEImAA7dsB9VtZAVK9oVRXaIOk2G6W5bFfAmQmAPETBRaA K9ZExT9oQhQdjKIaya0l =6nAH -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging Machine queue, 2019-03-11 * memfd fixes (Ilya Maximets) * Move nvdimms state into struct MachineState (Eric Auger) * hostmem-file: reject invalid pmem file sizes (Stefan Hajnoczi) # gpg: Signature made Tue 12 Mar 2019 00:57:41 GMT # gpg: using RSA key 2807936F984DC5A6 # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>" [full] # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF D1AA 2807 936F 984D C5A6 * remotes/ehabkost/tags/machine-next-pull-request: memfd: improve error messages memfd: set up correct errno if not supported memfd: always check for MFD_CLOEXEC hostmem-memfd: disable for systems without sealing support machine: Move nvdimms state into struct MachineState nvdimm: Rename AcpiNVDIMMState into NVDIMMState hostmem-file: reject invalid pmem file sizes Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
2cb73afa6a
16 changed files with 206 additions and 91 deletions
|
|
@ -512,6 +512,59 @@ void os_mem_prealloc(int fd, char *area, size_t memory, int smp_cpus,
|
|||
}
|
||||
}
|
||||
|
||||
uint64_t qemu_get_pmem_size(const char *filename, Error **errp)
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
if (stat(filename, &st) < 0) {
|
||||
error_setg(errp, "unable to stat pmem file \"%s\"", filename);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(__linux__)
|
||||
/* Special handling for devdax character devices */
|
||||
if (S_ISCHR(st.st_mode)) {
|
||||
char *subsystem_path = NULL;
|
||||
char *subsystem = NULL;
|
||||
char *size_path = NULL;
|
||||
char *size_str = NULL;
|
||||
uint64_t ret = 0;
|
||||
|
||||
subsystem_path = g_strdup_printf("/sys/dev/char/%d:%d/subsystem",
|
||||
major(st.st_rdev), minor(st.st_rdev));
|
||||
subsystem = g_file_read_link(subsystem_path, NULL);
|
||||
if (!subsystem) {
|
||||
error_setg(errp, "unable to read subsystem for pmem file \"%s\"",
|
||||
filename);
|
||||
goto devdax_err;
|
||||
}
|
||||
|
||||
if (!g_str_has_suffix(subsystem, "/dax")) {
|
||||
error_setg(errp, "pmem file \"%s\" is not a dax device", filename);
|
||||
goto devdax_err;
|
||||
}
|
||||
|
||||
size_path = g_strdup_printf("/sys/dev/char/%d:%d/size",
|
||||
major(st.st_rdev), minor(st.st_rdev));
|
||||
if (!g_file_get_contents(size_path, &size_str, NULL, NULL)) {
|
||||
error_setg(errp, "unable to read size for pmem file \"%s\"",
|
||||
size_path);
|
||||
goto devdax_err;
|
||||
}
|
||||
|
||||
ret = g_ascii_strtoull(size_str, NULL, 0);
|
||||
|
||||
devdax_err:
|
||||
g_free(size_str);
|
||||
g_free(size_path);
|
||||
g_free(subsystem);
|
||||
g_free(subsystem_path);
|
||||
return ret;
|
||||
}
|
||||
#endif /* defined(__linux__) */
|
||||
|
||||
return st.st_size;
|
||||
}
|
||||
|
||||
char *qemu_get_pid_name(pid_t pid)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue