On Mon, Aug 10, 2015 at 12:31:20PM -0400, Gabriel L. Somlo wrote:
From: "Gabriel Somlo" <somlo@cmu.edu>
Each fw_cfg entry of type "file" has an associated 56-char, nul-terminated ASCII string which represents its name. While the fw_cfg device doesn't itself impose any specific naming convention, QEMU developers have traditionally used path name semantics (i.e. "etc/acpi/rsdp") to descriptively name the various fw_cfg "blobs" passed into the guest.
This patch attempts, on a best effort basis, to create a directory hierarchy representing the content of fw_cfg file names, under /sys/firmware/fw_cfg/by_name.
Upon successful creation of all directories representing the "dirname" portion of a fw_cfg file, a symlink will be created to represent the "basename", pointing at the appropriate /sys/firmware/fw_cfg/by_select entry. If a file name is not suitable for this procedure (e.g., if its basename or dirname components collide with an already existing dirname component or basename, respectively) the corresponding fw_cfg blob is skipped and will remain available in sysfs only by its selector key value.
Shouldn't all of this be done in userspace with the symlinks and all? It seems like you are trying to duplicate the /dev/block/by-name and such. Policy decisions like symlinks and naming should be done there, in userspace, and not directly in sysfs if at all possible. Again, why can't this be a bunch of character device nodes? It seems like you want to access them that way (read/write, ioctl, etc.) thanks, greg k-h