diff --git a/src/task_find.bpf.c b/src/task_find.bpf.c index e1f395ad18760fc02b499822039f7fc07ede8b8c..d81e6f6d4a4219e54986accf79600e2150252cb3 100644 --- a/src/task_find.bpf.c +++ b/src/task_find.bpf.c @@ -16,9 +16,8 @@ struct { } state_map SEC(".maps"); int pdpf; -unsigned long curr_depth = 0; unsigned long disk_usage = 0; -int dfd[MAX_DEPTH*2]; +int dfd[1]; void *u_descend; void *u_ascend; @@ -38,15 +37,8 @@ static long iter_dir(uint32_t d_type, size_t namelen, bool match) { goto end; } - unsigned long depth = curr_depth; - if (depth >= MAX_DEPTH) { - bpf_printk("Error: max_depth exceeded"); - err = -1; - goto end; - } int parent_dfd = dfd[0]; - /* void *name_user = u_iterdents64_buf + depth * PATHLEN; */ void *name_user = u_iterdents64_buf; if (match) { if (flags & PRINT_MATCHES) { @@ -84,21 +76,15 @@ static long iter_dir(uint32_t d_type, size_t namelen, bool match) { write(STDOUT_FILENO, u_descend, 2); } - unsigned long child_depth = depth + 1; - /* void *child_name_user = u_iterdents64_buf + child_depth * PATHLEN; */ void *child_name_user = name_user; - curr_depth = child_depth; dfd[0] = child_dfd; err = bpf_task_iterdents64(child_dfd, pdpf, child_name_user, PATHLEN); dfd[0] = parent_dfd; if (err) { bpf_printk("Error: iterdents64(%d, %d) = %d", child_dfd, pdpf, err); - goto reset_depth; } -reset_depth: - curr_depth = depth; close: if (flags & PRINT_MATCHES) { write(STDOUT_FILENO, u_ascend, 3); diff --git a/src/task_find.h b/src/task_find.h index 67e9314449ccf5f69bf5939d5843763d9fbd5205..548c32c55a6a0619e4cd23c4f7c6509b8b52e044 100644 --- a/src/task_find.h +++ b/src/task_find.h @@ -1,7 +1,9 @@ #ifndef __TASK_H_ #define __TASK_H_ -#define MAX_DEPTH 16 +/* legacy */ +#define MAX_DEPTH 1 + #define UBUF_SIZE 1024 #define PATHLEN 512