• Tom Zanussi's avatar
    [PATCH] relayfs: decouple buffer creation from inode creation · 6625b861
    Tom Zanussi authored
    The patch series implementa or fixes 3 things that were specifically requested
    or suggested by relayfs users:
    
    - support for non-relay files (patches 1-6)
    
    Currently, the relayfs API only supports the creation of directories
    (relayfs_create_dir()) and relay files (relay_open()).  These patches adds
    support for non-relay files (relayfs_create_file()).  This is so relayfs
    applications can create 'control files' in relayfs itself rather than in /proc
    or via a netlink channel, as is currently done in the relay-app examples.
    Basically what this amounts to is exporting relayfs_create_file() with an
    additional file_ops param that clients can use to supply file operations for
    their own special-purpose files in relayfs.
    
    - make exported relay file ops useful (patches 7-8)
    
    The relayfs relay_file_operations have always been exported, the intent being
    to make it possible to create relay files in other filesystems such as
    debugfs.  The problem, though, is that currently the file operations are too
    tightly coupled to relayfs to actually be used for this purpose.  This patch
    fixes that by adding a couple of callback functions that allow a client to
    hook into relay_open()/close() and supply the files that will be used to
    represent the channel buffers; the default implementation if no callbacks are
    defined is to create the files in relayfs.
    
    - add an option to create global relay buffer (patches 9-10) The file creation
    callback also supplies an optional param, is_global, that can be used by
    clients to create a single global relayfs buffer instead of the default
    per-cpu buffers.  This was suggested as being useful for certain debugging
    applications where it's more convenient to be able to get all the data from a
    single channel without having to go to the bother of dealing with per-cpu
    files.
    
    - cleanup, some renaming and Documentation updates (patches 11-12)
    
    There were several comments that the use of netlink in the example code was
    non-intuitive and in fact the whole relay-app business was needlessly
    confusing.  Based on that feedback, the example code has been completely
    converted over to relayfs control files as supported by this patch, and have
    also been made completely self-contained.
    
    The converted examples along with a couple of new examples that demonstrate
    using exported relay files can be found in relay-apps tarball:
    http://prdownloads.sourceforge.net/relayfs/relay-apps-0.9.tar.gz?download
    
    This patch:
    
    Separate buffer create/destroy from inode create/destroy.  We want to be able
    to associate other data and not just relay buffers with inodes.  Buffer
    create/destroy is moved out of inode.c and into relayfs core code.
    Signed-off-by: default avatarTom Zanussi <zanussi@us.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    6625b861
relay.h 333 Bytes