Re: [PATCH 00/40] Replace various string helpers (and fixes for surrounding code)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/6/21 9:32 AM, Peter Krempa wrote:
This series mainly focuses on removal of virStringListAdd which tries
to promote the use of a string list without counter variable as a
dynamic array. This means that every operation counts the number of
elements and when used in a loop resutls in O(n^2) algorithms.

To discourage it's future buggy use remove the helpers completely.

The end of the series then replaces some libvirt helpers for string
lists by the glib equivalents.

Patches:
  1-3,18,24-25,28: cleanups
  4-6: fix buggy iteration and memory handling in qemuNamespaceUnlinkPaths
  7: helpers for easy use of GSList + char *
  8-17,19-20: Don't use virStringListAdd inside of loops and prepare for
              removal
  21: Remove virStringListAdd and virStringListRemove
  22-23: Open-code and remove virStringListGetFirstWithPrefix
  26-27: Replace virStringListHasString by g_strv_contains
  29-34: Preparation and removal of virStringListLength
         (mostly inefficient iteration)
  35-37,40: Replace/reimplement virStringSplit(Count) by g_strsplit
  38-39: Replace virStringListJoin by g_strjoinv

Peter Krempa (40):
   qemuMonitorJSONObjectProperty: Make 'str' member const
   util: virmacmap: Use g_autofree for virJSONValue
   util: macmap: Remove unused cleanup labels and 'ret' variables
   qemuDomainGetPreservedMounts: Refactor to return NULL-terminated
     string lists
   qemuNamespaceUnlinkPaths: Fix wrong use of iterator variable
   qemuNamespaceUnlinkPaths: Fix inconsistent cleanup handling
   util: Add helpers for auto-freeing GSList filled with strings
   qemu: namespace: Don't use 'virStringListAdd' inside loops
   virHookCall: Don't use 'virStringListAdd' to construct list in loop
   qemuInteropFetchConfigs: Don't use 'virStringListAdd' to construct
     list
   virCPUDefCheckFeatures: Don't use 'virStringListAdd' to construct list
   x86ModelParseFeatures: Don't construct list using 'virStringListAdd'
   virResctrlInfoGetMonitorPrefix: Don't use 'virStringListAdd' to
     construct list
   virResctrlMonitorGetStats: Don't use 'virStringListAdd'
   qemu: Convert 'priv->dbusVMStateIds' to a GSList
   util: macmap: Convert to use GSList for storing macs instead of string
     lists
   xenParseXLNamespaceData: Pre-calculate the length of array
   virfirewalltest: Shuffle the code around to remove a loop
   virfirewalltest: Avoid use of 'virStringListAdd'
   qemusecuritytest: Store 'notRestored' files in a hash table
   util: virstring: Remove virStringListAdd and virStringListRemove
   virCgroupGetValueForBlkDev: Rewrite lookup of returned string
   virStringListGetFirstWithPrefix: Remove unused helper
   vz: Replace virStringSplitCount(, , , NULL) with virStringSplit
   qemuProcessUpdateDevices: Refactor cleanup and memory handling
   Replace virStringListHasString by g_strv_contains
   util: virstring: Remove virStringListHasString
   virStorageBackendSheepdogAddVolume: Clean up memory handling
   qemufirmwaretest: Base iteration on string lists
   qemuvhostusertest: Base iteration on string lists
   Replace virStringListLength where actual lenght is not needed
   virPolkitCheckAuth: Avoid virStringListLength in loop condition
   Replace virStringListLength by g_strv_length
   util: virstring: Remove virStringListLength
   Replace virStringSplit with g_strsplit
   util: virstring: Remove virStringSplit
   virStringSplitCount: Reimplement using g_strsplit and g_strv_length
   Replace virStringListJoin by g_strjoinv
   util: virstring: Remove virStringListJoin
   virstringtest: Remove testing of virStringSplitCount

  src/bhyve/bhyve_command.c                     |   2 +-
  src/bhyve/bhyve_parse_command.c               |   4 +-
  src/conf/cpu_conf.c                           |  14 +-
  src/conf/storage_conf.c                       |   2 +-
  src/cpu/cpu_arm.c                             |   2 +-
  src/cpu/cpu_x86.c                             |   8 +-
  src/libvirt_private.syms                      |  11 +-
  src/libxl/libxl_conf.c                        |   8 +-
  src/libxl/xen_common.c                        |   8 +-
  src/libxl/xen_xl.c                            |  49 +--
  src/lxc/lxc_native.c                          |  14 +-
  src/qemu/qemu_capabilities.c                  |   8 +-
  src/qemu/qemu_command.c                       |   2 +-
  src/qemu/qemu_conf.c                          |   4 +-
  src/qemu/qemu_dbus.c                          |  19 +-
  src/qemu/qemu_dbus.h                          |   2 +-
  src/qemu/qemu_domain.c                        |   4 +-
  src/qemu/qemu_domain.h                        |   2 +-
  src/qemu/qemu_driver.c                        |   4 +-
  src/qemu/qemu_firmware.c                      |   5 +-
  src/qemu/qemu_interop_config.c                |  13 +-
  src/qemu/qemu_migration.c                     |  10 +-
  src/qemu/qemu_monitor.c                       |  19 +-
  src/qemu/qemu_monitor.h                       |   2 +-
  src/qemu/qemu_monitor_json.c                  |   5 +-
  src/qemu/qemu_monitor_json.h                  |   4 +-
  src/qemu/qemu_namespace.c                     | 283 +++++++++---------
  src/qemu/qemu_process.c                       |  37 +--
  src/qemu/qemu_qapi.c                          |   2 +-
  src/qemu/qemu_slirp.c                         |   7 +-
  src/qemu/qemu_vhost_user.c                    |   4 +-
  src/rpc/virnetsocket.c                        |   4 +-
  src/storage/storage_backend_sheepdog.c        |  15 +-
  src/storage/storage_backend_zfs.c             |   6 +-
  .../storage_source_backingstore.c             |   8 +-
  src/util/meson.build                          |   1 +
  src/util/vircgroup.c                          |  26 +-
  src/util/vircgroupv2.c                        |   2 +-
  src/util/vircommand.c                         |   2 +-
  src/util/virdevmapper.c                       |   2 +-
  src/util/virfile.c                            |   2 +-
  src/util/virfirewall.c                        |   2 +-
  src/util/virfirmware.c                        |   4 +-
  src/util/virglibutil.c                        |  27 ++
  src/util/virglibutil.h                        |  28 ++
  src/util/virhook.c                            |  15 +-
  src/util/virmacmap.c                          | 175 ++++++-----
  src/util/virmacmap.h                          |   6 +-
  src/util/virpolkit.c                          |  13 +-
  src/util/virprocess.c                         |   5 +-
  src/util/virresctrl.c                         |  17 +-
  src/util/virstring.c                          | 226 +-------------
  src/util/virstring.h                          |  24 +-
  src/vz/vz_sdk.c                               |   2 +-
  tests/qemufirmwaretest.c                      |  24 +-
  tests/qemumonitorjsontest.c                   |   6 +-
  tests/qemusecuritymock.c                      |  19 +-
  tests/qemusecuritytest.c                      |  14 +-
  tests/qemusecuritytest.h                      |   4 +-
  tests/qemuvhostusertest.c                     |  24 +-
  tests/qemuxml2argvtest.c                      |   2 +-
  tests/vboxsnapshotxmltest.c                   |   2 +-
  tests/virconftest.c                           |   4 +-
  tests/virfirewalltest.c                       |  30 +-
  tests/virmacmaptest.c                         |  21 +-
  tests/virstringtest.c                         | 211 +------------
  tools/virsh-completer.c                       |   7 +-
  tools/virsh-domain.c                          |  14 +-
  tools/virsh-host.c                            |   4 +-
  tools/virt-login-shell-helper.c               |   2 +-
  tools/vsh.c                                   |   2 +-
  71 files changed, 595 insertions(+), 965 deletions(-)
  create mode 100644 src/util/virglibutil.c
  create mode 100644 src/util/virglibutil.h


Reviewed-by: Michal Privoznik <mprivozn@xxxxxxxxxx>

except for the first patch.

Michal




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux