Messages in this thread | | | Date | Mon, 28 Dec 2015 13:11:53 -0800 | Subject | Re: debugfs_remove_recursive() while a file is in use by userspace | From | Rajat Jain <> |
| |
On Mon, Dec 28, 2015 at 12:58 PM, Greg Kroah-Hartman <greg@kroah.com> wrote: > On Mon, Dec 28, 2015 at 12:51:32PM -0800, Rajat Jain wrote: >> Thanks Greg and Al for the quick turnaround. >> >> Essentially I have a device that supports something called "contexts" >> that can be "created" and "destroyed" during the life of the device. I >> want to expose some debug files for the context when it is created, >> and destroy the files when the context is destroyed. However, I'm not >> sure how do I ensure that the user is not in the middle of reading / >> writing / mmaping to those files. Also how do I know that user is >> still not holding a reference to the file structure. > > You don't. > >> It seems like debugfs is currently not a good choice for this? Would >> you recommend me to any other fs or subsystem that I should use for >> this? > > What exactly do you need to export to userspace and for what purpose? > For debugging-only stuff, sure, use debugfs, but don't rely on it for > any "real" tools, only your own debugging.
I'm actually writing a driver that would expose a "dummy device" to a real driver. The dummy driver relies on user space to feed in the device attributes (no of supported contexts etc). I am now thinking that a character device interface to user space may actually be a better choice. Question: Does cdev_del() ensure that all references to the file are dropped before it returns?
Thanks,
Rajat
> >> Would hanging those files under the sysfs node for the device sound >> any better (by representing each "context" using an embedded kobject)? > > That would ensure that things work properly. But you don't need a whole > kobject, just use a named group and a subdir will be created properly > for you. > > good luck, > > greg k-h
| |