perf lock contention: Handle error in a single place
It has some duplicate codes to do the same job. Let's add a label and goto there to handle errors in a single place. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Song Liu <song@kernel.org> Cc: bpf@vger.kernel.org Link: https://lore.kernel.org/r/20240830065150.1758962-1-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
ccb9004656
commit
10d6c57c82
@ -439,11 +439,8 @@ int contention_end(u64 *ctx)
|
|||||||
|
|
||||||
duration = bpf_ktime_get_ns() - pelem->timestamp;
|
duration = bpf_ktime_get_ns() - pelem->timestamp;
|
||||||
if ((__s64)duration < 0) {
|
if ((__s64)duration < 0) {
|
||||||
pelem->lock = 0;
|
|
||||||
if (need_delete)
|
|
||||||
bpf_map_delete_elem(&tstamp, &pid);
|
|
||||||
__sync_fetch_and_add(&time_fail, 1);
|
__sync_fetch_and_add(&time_fail, 1);
|
||||||
return 0;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (aggr_mode) {
|
switch (aggr_mode) {
|
||||||
@ -477,11 +474,8 @@ int contention_end(u64 *ctx)
|
|||||||
data = bpf_map_lookup_elem(&lock_stat, &key);
|
data = bpf_map_lookup_elem(&lock_stat, &key);
|
||||||
if (!data) {
|
if (!data) {
|
||||||
if (data_map_full) {
|
if (data_map_full) {
|
||||||
pelem->lock = 0;
|
|
||||||
if (need_delete)
|
|
||||||
bpf_map_delete_elem(&tstamp, &pid);
|
|
||||||
__sync_fetch_and_add(&data_fail, 1);
|
__sync_fetch_and_add(&data_fail, 1);
|
||||||
return 0;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct contention_data first = {
|
struct contention_data first = {
|
||||||
@ -502,10 +496,7 @@ int contention_end(u64 *ctx)
|
|||||||
data_map_full = 1;
|
data_map_full = 1;
|
||||||
__sync_fetch_and_add(&data_fail, 1);
|
__sync_fetch_and_add(&data_fail, 1);
|
||||||
}
|
}
|
||||||
pelem->lock = 0;
|
goto out;
|
||||||
if (need_delete)
|
|
||||||
bpf_map_delete_elem(&tstamp, &pid);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__sync_fetch_and_add(&data->total_time, duration);
|
__sync_fetch_and_add(&data->total_time, duration);
|
||||||
@ -517,6 +508,7 @@ int contention_end(u64 *ctx)
|
|||||||
if (data->min_time > duration)
|
if (data->min_time > duration)
|
||||||
data->min_time = duration;
|
data->min_time = duration;
|
||||||
|
|
||||||
|
out:
|
||||||
pelem->lock = 0;
|
pelem->lock = 0;
|
||||||
if (need_delete)
|
if (need_delete)
|
||||||
bpf_map_delete_elem(&tstamp, &pid);
|
bpf_map_delete_elem(&tstamp, &pid);
|
||||||
|
Loading…
Reference in New Issue
Block a user