24 Oct, 2016

1 commit


26 Jun, 2015

1 commit

  • printk logbuf keeps various metadata and optional key=value dictionary for
    structured messages, both of which are stripped when messages are handed
    to regular console drivers.

    It can be useful to have this metadata and dictionary available to
    netconsole consumers. This obviously makes logging via netconsole more
    complete and the sequence number in particular is useful in environments
    where messages may be lost or reordered in transit - e.g. when netconsole
    is used to collect messages in a large cluster where packets may have to
    travel congested hops to reach the aggregator. The lost and reordered
    messages can easily be identified and handled accordingly using the
    sequence numbers.

    printk recently added extended console support which can be selected by
    setting CON_EXTENDED flag. From console driver side, not much changes.
    The only difference is that the text passed to the write callback is
    formatted the same way as /dev/kmsg.

    This patch implements extended console support for netconsole which can be
    enabled by either prepending "+" to a netconsole boot param entry or
    echoing 1 to "extended" file in configfs. When enabled, netconsole
    transmits extended log messages with headers identical to /dev/kmsg
    output.

    There's one complication due to message fragments. netconsole limits the
    maximum message size to 1k and messages longer than that are split into
    multiple fragments. As all extended console messages should carry
    matching headers and be uniquely identifiable, each extended message
    fragment carries full copy of the metadata and an extra header field to
    identify the specific fragment. The optional header is of the form
    "ncfrag=OFF/LEN" where OFF is the byte offset into the message body and
    LEN is the total length.

    To avoid unnecessarily making printk format extended messages, Extended
    netconsole is registered with printk when the first extended netconsole is
    configured.

    Signed-off-by: Tejun Heo
    Cc: David Miller
    Cc: Kay Sievers
    Cc: Petr Mladek
    Cc: Tetsuo Handa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     

09 Jan, 2013

1 commit


15 Aug, 2012

1 commit


27 Jan, 2009

1 commit


11 Oct, 2007

3 commits

  • Based upon initial work by Keiichi Kii .

    This patch introduces support for dynamic reconfiguration (adding, removing
    and/or modifying parameters of netconsole targets at runtime) using a
    userspace interface exported via configfs. Documentation is also updated
    accordingly.

    Issues and brief design overview:

    (1) Kernel-initiated creation / destruction of kernel objects is not
    possible with configfs -- the lifetimes of the "config items" is managed
    exclusively from userspace. But netconsole must support boot/module
    params too, and these are parsed in kernel and hence netpolls must be
    setup from the kernel. Joel Becker suggested to separately manage the
    lifetimes of the two kinds of netconsole_target objects -- those created
    via configfs mkdir(2) from userspace and those specified from the
    boot/module option string. This adds complexity and some redundancy here
    and also means that boot/module param-created targets are not exposed
    through the configfs namespace (and hence cannot be updated / destroyed
    dynamically). However, this saves us from locking / refcounting
    complexities that would need to be introduced in configfs to support
    kernel-initiated item creation / destroy there.

    (2) In configfs, item creation takes place in the call chain of the
    mkdir(2) syscall in the driver subsystem. If we used an ioctl(2) to
    create / destroy objects from userspace, the special userspace program is
    able to fill out the structure to be passed into the ioctl and hence
    specify attributes such as local interface that are required at the time
    we set up the netpoll. For configfs, this information is not available at
    the time of mkdir(2). So, we keep all newly-created targets (via
    configfs) disabled by default. The user is expected to set various
    attributes appropriately (including the local network interface if
    required) and then write(2) "1" to the "enabled" attribute. Thus,
    netpoll_setup() is then called on the set parameters in the context of
    _this_ write(2) on the "enabled" attribute itself. This design enables
    the user to reconfigure existing netconsole targets at runtime to be
    attached to newly-come-up interfaces that may not have existed when
    netconsole was loaded or when the targets were actually created. All this
    effectively enables us to get rid of custom ioctls.

    (3) Ultra-paranoid configfs attribute show() and store() operations, with
    sanity and input range checking, using only safe string primitives, and
    compliant with the recommendations in Documentation/filesystems/sysfs.txt.

    (4) A new function netpoll_print_options() is created in the netpoll API,
    that just prints out the configured parameters for a netpoll structure.
    netpoll_parse_options() is modified to use that and it is also exported to
    be used from netconsole.

    Signed-off-by: Satyam Sharma
    Acked-by: Keiichi Kii
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Satyam Sharma
     
  • Based upon initial work by Keiichi Kii .

    This patch introduces support for multiple targets, independent of
    CONFIG_NETCONSOLE_DYNAMIC -- this is useful even in the default case and
    (including the infrastructure introduced in previous patches) doesn't really
    add too many bytes to module text. All the complexity (and size) comes with
    the dynamic reconfigurability / userspace interface patch, and so it's
    plausible users may want to keep this enabled but that disabled (say to avoid
    a dependency on CONFIG_CONFIGFS_FS too).

    Also update documentation to mention the use of ";" separator to specify
    multiple logging targets in the boot/module option string.

    Brief overview:

    We maintain a target_list (and corresponding lock). Get rid of the static
    "default_target" and introduce allocation and release functions for our
    netconsole_target objects (but keeping sure to preserve previous behaviour
    such as default values). During init_netconsole(), ";" is used as the
    separator to identify multiple target specifications in the boot/module option
    string. The target specifications are parsed and netpolls setup. During
    exit, the target_list is torn down and all items released.

    Signed-off-by: Satyam Sharma
    Signed-off-by: Keiichi Kii
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Satyam Sharma
     
  • Based upon initial work by Keiichi Kii .

    Add some useful general-purpose tips. Also suggest solution for the frequent
    problem of console loglevel set too low numerically (i.e. for high priority
    messages only) on the sender.

    Signed-off-by: Satyam Sharma
    Acked-by: Keiichi Kii
    Acked-by: Matt Mackall
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Satyam Sharma
     

04 Oct, 2006

1 commit

  • Randy brought it to my attention that in proper english "can not" should always
    be written "cannot". I donot see any reason to argue, even if I mightnot
    understand why this rule exists. This patch fixes "can not" in several
    Documentation files as well as three Kconfigs.

    Signed-off-by: Matt LaPlante
    Acked-by: Randy Dunlap
    Signed-off-by: Adrian Bunk

    Matt LaPlante
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds