[PATCH 00/15] util: hash: Use glib's GHashTable - preparation (part 1)

Peter Krempa posted 15 patches 3 years, 6 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/cover.1603358617.git.pkrempa@redhat.com
src/conf/domain_addr.c                        | 125 +++--------
src/conf/domain_addr.h                        |   4 +-
src/conf/domain_conf.c                        |   4 +-
src/conf/domain_nwfilter.c                    |   2 +-
src/conf/nwfilter_ipaddrmap.c                 |   2 +-
src/conf/nwfilter_params.c                    |  14 +-
src/conf/nwfilter_params.h                    |   2 +-
src/conf/virchrdev.c                          |   4 +-
src/conf/virdomainmomentobjlist.c             |   8 +-
src/conf/virdomainobjlist.c                   |  16 +-
src/conf/virinterfaceobj.c                    |  12 +-
src/conf/virnetworkobj.c                      |  21 +-
src/conf/virnodedeviceobj.c                   |  20 +-
src/conf/virnwfilterbindingdef.c              |   2 +-
src/conf/virnwfilterbindingobjlist.c          |   6 +-
src/conf/virsecretobj.c                       |  10 +-
src/conf/virstorageobj.c                      |  32 +--
src/hyperv/hyperv_wmi.c                       |   2 +-
src/hypervisor/virclosecallbacks.c            |   4 +-
src/libvirt_private.syms                      |   5 +-
src/libxl/libxl_logger.c                      |   2 +-
src/locking/lock_daemon.c                     |  10 +-
src/nwfilter/nwfilter_dhcpsnoop.c             |  12 +-
src/nwfilter/nwfilter_ebiptables_driver.c     |   4 +-
src/nwfilter/nwfilter_gentech_driver.c        |  14 +-
src/nwfilter/nwfilter_learnipaddr.c           |   4 +-
src/qemu/qemu_block.c                         |   6 +-
src/qemu/qemu_blockjob.c                      |   2 +-
src/qemu/qemu_capabilities.c                  |   6 +-
src/qemu/qemu_checkpoint.c                    |   2 +-
src/qemu/qemu_domain.c                        |   8 +-
src/qemu/qemu_domain.h                        |   2 +-
src/qemu/qemu_driver.c                        |   2 +-
src/qemu/qemu_interop_config.c                |   2 +-
src/qemu/qemu_migration.c                     |   2 +-
src/qemu/qemu_migration_cookie.c              |   2 +-
src/qemu/qemu_monitor.c                       |  10 +-
src/qemu/qemu_monitor_json.c                  |   2 +-
src/qemu/qemu_process.c                       |   2 +-
src/qemu/qemu_qapi.c                          |   2 +-
src/qemu/qemu_snapshot.c                      |   4 +-
src/rpc/virnetdaemon.c                        |  16 +-
src/security/security_selinux.c               |   4 +-
src/test/test_driver.c                        |   6 +-
src/util/vircgroup.c                          |  76 ++-----
src/util/vircgroupbackend.h                   |   3 +-
src/util/vircgrouppriv.h                      |   2 +-
src/util/vircgroupv1.c                        |   2 +-
src/util/vircgroupv2.c                        |   2 +-
src/util/virfilecache.c                       |   4 +-
src/util/virhash.c                            | 201 +++---------------
src/util/virhash.h                            |  94 ++------
src/util/viriptables.c                        |   4 +-
src/util/virlockspace.c                       |   8 +-
src/util/virmacmap.c                          |   6 +-
src/util/virstoragefile.c                     |   4 +-
src/util/virsystemd.c                         |   2 +-
tests/nwfilterxml2firewalltest.c              |   6 +-
tests/qemumonitorjsontest.c                   |  12 +-
tests/qemusecuritymock.c                      |  12 +-
.../blockjob-blockdev-in.xml                  | 110 +++++-----
tests/testutilsqemu.c                         |   2 +-
tests/virhashtest.c                           |  52 ++---
63 files changed, 340 insertions(+), 683 deletions(-)
[PATCH 00/15] util: hash: Use glib's GHashTable - preparation (part 1)
Posted by Peter Krempa 3 years, 6 months ago
Glib provides a hash table implementation called GHashTable.

In this part of the series we'll refactor two instances of code which
use non-string keys for hashtable to use GHashTable directly which
simplifies the code (glib provides int hashing functions).

Since GHashTable is not a direct replacement for virHashTable without
code modification (glib's functions don't accept NULL hash table, ours
do) the next step will be to use virHashTable as a shim to provide NULL
compatibility and adapt to our slightly different style of iterators.

For this step we modify the variable type for the key to be 'char *' as
there's no other option left and remove various internals which won't be
compatible with GHashTable.

Second part (WIP, [1]) will then rewrite virHashTable internals to use
GHashTable, which will be used as an intermediate step before removal
which requires audit of all callers.

[1]: https://gitlab.com/pipo.sk/libvirt/-/commits/glib-hash-part2
 - needs auditing of all callers of virHashForeach to ensure that they
   don't modify the hash table itself from the callback

Peter Krempa (15):
  virCgroupKillRecursive: Return -1 on failure condition
  util: virhash: Remove virHashTableSize
  util: cgroup: Use GHashTable instead of virHashTable
  virCgroupKillRecursive: Refactor cleanup
  conf: domain_addr: Refactor hash usage in zpci reservation code
  virHashAtomicNew: Remove 'size' argument
  conf: nwfilter: Replace 'virNWFilterHashTableCreate' with 'virHashNew'
  tests: hash: Prepare for replacement of virHashCreate
  qemuDomainObjPrivateAlloc: Use virHashNew instead of virHashCreate
  Replace all instances of 'virHashCreate' with 'virHashNew'
  util: hash: Remove virHashValueFree
  util: hash: Remove virHashCreateFull
  util: hash: Change type of hash table name/key to 'char'
  util: virhash: Remove key handling callbacks
  virHashRemoveAll: Don't return number of removed items

 src/conf/domain_addr.c                        | 125 +++--------
 src/conf/domain_addr.h                        |   4 +-
 src/conf/domain_conf.c                        |   4 +-
 src/conf/domain_nwfilter.c                    |   2 +-
 src/conf/nwfilter_ipaddrmap.c                 |   2 +-
 src/conf/nwfilter_params.c                    |  14 +-
 src/conf/nwfilter_params.h                    |   2 +-
 src/conf/virchrdev.c                          |   4 +-
 src/conf/virdomainmomentobjlist.c             |   8 +-
 src/conf/virdomainobjlist.c                   |  16 +-
 src/conf/virinterfaceobj.c                    |  12 +-
 src/conf/virnetworkobj.c                      |  21 +-
 src/conf/virnodedeviceobj.c                   |  20 +-
 src/conf/virnwfilterbindingdef.c              |   2 +-
 src/conf/virnwfilterbindingobjlist.c          |   6 +-
 src/conf/virsecretobj.c                       |  10 +-
 src/conf/virstorageobj.c                      |  32 +--
 src/hyperv/hyperv_wmi.c                       |   2 +-
 src/hypervisor/virclosecallbacks.c            |   4 +-
 src/libvirt_private.syms                      |   5 +-
 src/libxl/libxl_logger.c                      |   2 +-
 src/locking/lock_daemon.c                     |  10 +-
 src/nwfilter/nwfilter_dhcpsnoop.c             |  12 +-
 src/nwfilter/nwfilter_ebiptables_driver.c     |   4 +-
 src/nwfilter/nwfilter_gentech_driver.c        |  14 +-
 src/nwfilter/nwfilter_learnipaddr.c           |   4 +-
 src/qemu/qemu_block.c                         |   6 +-
 src/qemu/qemu_blockjob.c                      |   2 +-
 src/qemu/qemu_capabilities.c                  |   6 +-
 src/qemu/qemu_checkpoint.c                    |   2 +-
 src/qemu/qemu_domain.c                        |   8 +-
 src/qemu/qemu_domain.h                        |   2 +-
 src/qemu/qemu_driver.c                        |   2 +-
 src/qemu/qemu_interop_config.c                |   2 +-
 src/qemu/qemu_migration.c                     |   2 +-
 src/qemu/qemu_migration_cookie.c              |   2 +-
 src/qemu/qemu_monitor.c                       |  10 +-
 src/qemu/qemu_monitor_json.c                  |   2 +-
 src/qemu/qemu_process.c                       |   2 +-
 src/qemu/qemu_qapi.c                          |   2 +-
 src/qemu/qemu_snapshot.c                      |   4 +-
 src/rpc/virnetdaemon.c                        |  16 +-
 src/security/security_selinux.c               |   4 +-
 src/test/test_driver.c                        |   6 +-
 src/util/vircgroup.c                          |  76 ++-----
 src/util/vircgroupbackend.h                   |   3 +-
 src/util/vircgrouppriv.h                      |   2 +-
 src/util/vircgroupv1.c                        |   2 +-
 src/util/vircgroupv2.c                        |   2 +-
 src/util/virfilecache.c                       |   4 +-
 src/util/virhash.c                            | 201 +++---------------
 src/util/virhash.h                            |  94 ++------
 src/util/viriptables.c                        |   4 +-
 src/util/virlockspace.c                       |   8 +-
 src/util/virmacmap.c                          |   6 +-
 src/util/virstoragefile.c                     |   4 +-
 src/util/virsystemd.c                         |   2 +-
 tests/nwfilterxml2firewalltest.c              |   6 +-
 tests/qemumonitorjsontest.c                   |  12 +-
 tests/qemusecuritymock.c                      |  12 +-
 .../blockjob-blockdev-in.xml                  | 110 +++++-----
 tests/testutilsqemu.c                         |   2 +-
 tests/virhashtest.c                           |  52 ++---
 63 files changed, 340 insertions(+), 683 deletions(-)

-- 
2.26.2