On Thu, Feb 18, 2010 at 01:15:34AM -0500, Pavel Roskin wrote: > On Wed, 2010-02-17 at 23:23 -0500, Pavel Roskin wrote: > > > The idea is to descend the directory structure from the top (i.e. the > > directory to be removed) to look for a child that is a file or an empty > > directory and remove it. Then start from the top and do the same until > > the top directory has no children. Then remove the top directory. > > Here it is. I tested it by actually replacing the original function in > wireless-testing. I checked unloading all wireless drivers. I also > tested error handling by keeping a file in debugfs open while removing > the modules. > > I could compile it against Linux 2.6.26, so it's portable enough for our > purposes. > > > void debugfs_remove_recursive(struct dentry *dentry) > { > struct dentry *last = NULL; > > /* Sanity checks */ > if (!dentry || !dentry->d_parent || !dentry->d_parent->d_inode) > return; > > while (dentry != last) { > struct dentry *child = dentry; > > /* Find a child without children */ > while (!list_empty(&child->d_subdirs)) > child = list_entry(child->d_subdirs.next, struct dentry, > d_u.d_child); > > /* Bail out if we already tried to remove that entry */ > if (child == last) > return; > > last = child; > debugfs_remove(child); > } > } Sweeet, thanks a lot! I've sucked this into all the respective git trees. This means we now have backporting re-enabled on bleeding edge for kernels older than 2.6.27 (whoopdi-free'kin-doo for those who are on those ancient kernels). Luis -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html