simple_recursive_removal(): kernel-side rm -rf for ramfs-style filesystems
two requirements: no file creations in IS_DEADDIR and no cross-directory renames whatsoever. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -8496,7 +8496,7 @@ static struct trace_array *trace_array_create(const char *name)
|
||||
|
||||
ret = event_trace_add_tracer(tr->dir, tr);
|
||||
if (ret) {
|
||||
tracefs_remove_recursive(tr->dir);
|
||||
tracefs_remove(tr->dir);
|
||||
goto out_free_tr;
|
||||
}
|
||||
|
||||
@@ -8605,7 +8605,7 @@ static int __remove_instance(struct trace_array *tr)
|
||||
event_trace_del_tracer(tr);
|
||||
ftrace_clear_pids(tr);
|
||||
ftrace_destroy_function_files(tr);
|
||||
tracefs_remove_recursive(tr->dir);
|
||||
tracefs_remove(tr->dir);
|
||||
free_trace_buffers(tr);
|
||||
|
||||
for (i = 0; i < tr->nr_topts; i++) {
|
||||
|
||||
@@ -697,7 +697,7 @@ static void remove_subsystem(struct trace_subsystem_dir *dir)
|
||||
return;
|
||||
|
||||
if (!--dir->nr_events) {
|
||||
tracefs_remove_recursive(dir->entry);
|
||||
tracefs_remove(dir->entry);
|
||||
list_del(&dir->list);
|
||||
__put_system_dir(dir);
|
||||
}
|
||||
@@ -716,7 +716,7 @@ static void remove_event_file_dir(struct trace_event_file *file)
|
||||
}
|
||||
spin_unlock(&dir->d_lock);
|
||||
|
||||
tracefs_remove_recursive(dir);
|
||||
tracefs_remove(dir);
|
||||
}
|
||||
|
||||
list_del(&file->list);
|
||||
@@ -3064,7 +3064,7 @@ int event_trace_del_tracer(struct trace_array *tr)
|
||||
|
||||
down_write(&trace_event_sem);
|
||||
__trace_remove_event_dirs(tr);
|
||||
tracefs_remove_recursive(tr->event_dir);
|
||||
tracefs_remove(tr->event_dir);
|
||||
up_write(&trace_event_sem);
|
||||
|
||||
tr->event_dir = NULL;
|
||||
|
||||
@@ -556,7 +556,7 @@ static int init_tracefs(void)
|
||||
return 0;
|
||||
|
||||
err:
|
||||
tracefs_remove_recursive(top_dir);
|
||||
tracefs_remove(top_dir);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user