Messages in this thread | | | Subject | Re: [RFC] Hack to use mkdir/rmdir in debugfs | From | Steven Rostedt <> | Date | Tue, 22 Jan 2013 22:47:01 -0500 |
| |
On Tue, 2013-01-22 at 22:01 -0500, Steven Rostedt wrote:
> As you can see, I haven't implemented the rmdir yet.
I decided to implement this too :-)
static int instance_rmdir(struct inode *inode, struct dentry *dentry) { struct dentry *parent; int ret;
/* Paranoid: Make sure the parent is the "instances" directory */ parent = hlist_entry(inode->i_dentry.first, struct dentry, d_alias); if (WARN_ON_ONCE(parent != trace_instance_dir)) return -ENOENT;
/* The caller did a dget() on dentry */ mutex_unlock(&dentry->d_inode->i_mutex);
/* * The inode mutex is locked, but debugfs_create_dir() will also * take the mutex. As the instances directory can not be destroyed * or changed in any other way, it is safe to unlock it, and * let the dentry try. If two users try to make the same dir at * the same time, then the instance_delete() will determine the * winner. */ mutex_unlock(&inode->i_mutex);
ret = instance_delete(dentry->d_iname);
mutex_lock_nested(&inode->i_mutex, I_MUTEX_PARENT); mutex_lock(&dentry->d_inode->i_mutex);
return ret; }
static const struct inode_operations instance_dir_inode_operations = { .lookup = simple_lookup, .mkdir = instance_mkdir, .rmdir = instance_rmdir, };
I ran it under lockdep and it didn't complain.
-- Steve
| |