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 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html