journal: change omap remove func to handle multiple keys at once

For any function that removes more than one key on a single oid removing
them as a batch will be more efficient.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
This commit is contained in:
John Mulligan 2020-05-21 14:59:09 -04:00 committed by mergify[bot]
parent 0ac5f40d09
commit a8409eccc8
2 changed files with 10 additions and 10 deletions

View File

@ -77,10 +77,10 @@ func getOMapValues(
return results, nil
}
func removeOneOMapKey(
func removeMapKeys(
ctx context.Context,
conn *Connection,
poolName, namespace, oMapName, oMapKey string) error {
poolName, namespace, oid string, keys []string) error {
// fetch and configure the rados ioctx
ioctx, err := conn.conn.GetIoctx(poolName)
if err != nil {
@ -92,15 +92,15 @@ func removeOneOMapKey(
ioctx.SetNamespace(namespace)
}
err = ioctx.RmOmapKeys(oMapName, []string{oMapKey})
err = ioctx.RmOmapKeys(oid, keys)
if err != nil {
klog.Errorf(
util.Log(ctx, "failed removing omap key (pool=%q, namespace=%q, name=%q, key=%q): %v"),
poolName, namespace, oMapName, oMapKey, err)
util.Log(ctx, "failed removing omap keys (pool=%q, namespace=%q, name=%q): %v"),
poolName, namespace, oid, err)
} else {
klog.Infof(
util.Log(ctx, "XXX removed omap key (pool=%q, namespace=%q, name=%q, key=%q, ): %v"),
poolName, namespace, oMapName, oMapKey, err)
klog.V(4).Infof(
util.Log(ctx, "removed omap keys (pool=%q, namespace=%q, name=%q): %+v"),
poolName, namespace, oid, keys)
}
return err
}

View File

@ -411,8 +411,8 @@ func (conn *Connection) UndoReservation(ctx context.Context,
}
// delete the request name key (last, inverse of create order)
err := removeOneOMapKey(ctx, conn, csiJournalPool, cj.namespace, cj.csiDirectory,
cj.csiNameKeyPrefix+reqName)
err := removeMapKeys(ctx, conn, csiJournalPool, cj.namespace, cj.csiDirectory,
[]string{cj.csiNameKeyPrefix + reqName})
if err != nil {
klog.Errorf(util.Log(ctx, "failed removing oMap key %s (%s)"), cj.csiNameKeyPrefix+reqName, err)
return err