1. 11 10月, 2007 9 次提交
    • J
      [NET]: Introduce and use print_mac() and DECLARE_MAC_BUF() · 0795af57
      Joe Perches 提交于
      This is nicer than the MAC_FMT stuff.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0795af57
    • S
      [NET] netconsole: Support dynamic reconfiguration using configfs · 0bcc1816
      Satyam Sharma 提交于
      Based upon initial work by Keiichi Kii <k-keiichi@bx.jp.nec.com>.
      
      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: NSatyam Sharma <satyam@infradead.org>
      Acked-by: NKeiichi Kii <k-keiichi@bx.jp.nec.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0bcc1816
    • S
      [NET] netconsole: Support multiple logging targets · b5427c27
      Satyam Sharma 提交于
      Based upon initial work by Keiichi Kii <k-keiichi@bx.jp.nec.com>.
      
      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: NSatyam Sharma <satyam@infradead.org>
      Signed-off-by: NKeiichi Kii <k-keiichi@bx.jp.nec.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b5427c27
    • S
      [NET] netconsole: Introduce netconsole_netdev_notifier · 17951f34
      Satyam Sharma 提交于
      Based upon initial work by Keiichi Kii <k-keiichi@bx.jp.nec.com>.
      
      To update fields of underlying netpoll structure at runtime on corresponding
      NETDEV_CHANGEADDR or NETDEV_CHANGENAME notifications.
      
      ioctl(SIOCSIFHWADDR or SIOCSIFNAME) could be used to change the hardware/MAC
      address or name of the local interface that our netpoll is attached to.
      Whenever this happens, netdev notifier chain is called out with the
      NETDEV_CHANGEADDR or NETDEV_CHANGENAME event message.  We respond to that and
      update the local_mac or dev_name field of the struct netpoll.  This makes
      sense anyway, but is especially required for dynamic netconsole because the
      netpoll structure's internal members become user visible files when either
      sysfs or configfs are used.  So this helps us to keep up with the MAC
      address/name changes and keep values in struct netpoll uptodate.
      
      [ Note that ioctl(SIOCSIFADDR) to change IP address of interface at
        runtime is not handled (to update local_ip of netpoll) on purpose --
        some setups may set the local_ip to a private address, not necessary
        the actual IP address of the sender host, as presently allowed. ]
      Signed-off-by: NSatyam Sharma <satyam@infradead.org>
      Signed-off-by: NKeiichi Kii <k-keiichi@bx.jp.nec.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      17951f34
    • S
      [NET] netconsole: Introduce netconsole_target · df180e36
      Satyam Sharma 提交于
      Based upon initial work by Keiichi Kii <k-keiichi@bx.jp.nec.com>.
      
      Introduce a wrapper structure over netpoll to represent logging targets
      configured in netconsole.  This will get extended with other members in
      further patches.
      
      This is done independent of the (to-be-introduced) NETCONSOLE_DYNAMIC config
      option so that we're able to drastically cut down on the #ifdef complexity of
      final netconsole.c.  Also, struct netconsole_target would be required for
      multiple targets support also, and not just dynamic reconfigurability.
      Signed-off-by: NSatyam Sharma <satyam@infradead.org>
      Signed-off-by: NKeiichi Kii <k-keiichi@bx.jp.nec.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      df180e36
    • S
      [NET] netconsole: Use netif_running() in write_msg() · 0cc120be
      Satyam Sharma 提交于
      Based upon initial work by Keiichi Kii <k-keiichi@bx.jp.nec.com>.
      
      Avoid unnecessarily disabling interrupts and calling netpoll_send_udp() if the
      corresponding local interface is not up.
      Signed-off-by: NSatyam Sharma <satyam@infradead.org>
      Acked-by: NKeiichi Kii <k-keiichi@bx.jp.nec.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0cc120be
    • S
      [NET] netconsole: Simplify boot/module option setup logic · d2b60881
      Satyam Sharma 提交于
      Based upon initial work by Keiichi Kii <k-keiichi@bx.jp.nec.com>.
      
      Presently, boot/module parameters are set up quite differently for the case of
      built-in netconsole (__setup() -> obsolete_checksetup() ->
      netpoll_parse_options() -> strlen(config) == 0 in init_netconsole()) vs
      modular netconsole (module_param_string() -> string copied to the config
      variable -> strlen(config) != 0 init_netconsole() -> netpoll_parse_options()).
      
      This patch makes both of them similar by doing exactly the equivalent of a
      module_param_string() in option_setup() also -- just copying the param string
      passed from the kernel command line into "config" variable.  So,
      strlen(config) != 0 in both cases, and netpoll_parse_options() is always
      called from init_netconsole(), thus making the setup logic for both cases
      similar.
      
      Now, option_setup() is only ever called / used for the built-in case, so we
      put it inside a #ifndef MODULE, otherwise gcc will complain about
      option_setup() being "defined but not used".  Also, the "configured" variable
      is redundant with this patch and hence removed.
      Signed-off-by: NSatyam Sharma <satyam@infradead.org>
      Signed-off-by: NKeiichi Kii <k-keiichi@bx.jp.nec.com>
      Acked-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d2b60881
    • S
      [NET] netconsole: Remove bogus check · d133ccbd
      Satyam Sharma 提交于
      Based upon initial work by Keiichi Kii <k-keiichi@bx.jp.nec.com>.
      
      The (!np.dev) check in write_msg() is bogus (always false), because: np.dev is
      set by netpoll_setup(), which is called by init_netconsole() before
      register_console(), so write_msg() cannot be triggered unless netpoll_setup()
      successfully set np.dev.  Also np.dev cannot go away from under us, because
      netpoll_setup() grabs us reference on it.  So let's remove the bogus check.
      Signed-off-by: NSatyam Sharma <satyam@infradead.org>
      Acked-by: NKeiichi Kii <k-keiichi@bx.jp.nec.com>
      Acked-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d133ccbd
    • S
      [NET] netconsole: Cleanups, codingstyle, prettyfication · d39badf0
      Satyam Sharma 提交于
      Based upon initial work by Keiichi Kii <k-keiichi@bx.jp.nec.com>.
      
      (1) Remove unwanted headers.
      (2) Mark __init and __exit as appropriate.
      (3) Various trivial codingstyle and prettification stuff.
      Signed-off-by: NSatyam Sharma <satyam@infradead.org>
      Signed-off-by: NKeiichi Kii <k-keiichi@bx.jp.nec.com>
      Acked-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d39badf0
  2. 03 12月, 2006 2 次提交
    • S
      netpoll queue cleanup · 5de4a473
      Stephen Hemminger 提交于
      The beast had a long and not very happy history. At one
      point, a friend (netdump) had asked that he open up a little.
      Well, the friend was long gone now, and the beast had
      this dangling piece hanging (netpoll_queue).
      
      It wasn't hard to stitch the netpoll_queue back in
      where it belonged and make everything tidy.
      Signed-off-by: NStephen Hemminger <shemminger@osdl.org>
      5de4a473
    • S
      netpoll setup error handling · b41848b6
      Stephen Hemminger 提交于
      The beast was not always healthy. When it was sick,
      it tended to be laconic and not tell anyone the real problem.
      A few small changes had it telling the world about its
      problems, if they really wanted to hear.
      Signed-off-by: NStephen Hemminger <shemminger@osdl.org>
      b41848b6
  3. 06 6月, 2006 1 次提交
  4. 10 4月, 2006 1 次提交
  5. 01 4月, 2006 1 次提交
    • O
      [PATCH] Don't pass boot parameters to argv_init[] · 9b41046c
      OGAWA Hirofumi 提交于
      The boot cmdline is parsed in parse_early_param() and
      parse_args(,unknown_bootoption).
      
      And __setup() is used in obsolete_checksetup().
      
      	start_kernel()
      		-> parse_args()
      			-> unknown_bootoption()
      				-> obsolete_checksetup()
      
      If __setup()'s callback (->setup_func()) returns 1 in
      obsolete_checksetup(), obsolete_checksetup() thinks a parameter was
      handled.
      
      If ->setup_func() returns 0, obsolete_checksetup() tries other
      ->setup_func().  If all ->setup_func() that matched a parameter returns 0,
      a parameter is seted to argv_init[].
      
      Then, when runing /sbin/init or init=app, argv_init[] is passed to the app.
      If the app doesn't ignore those arguments, it will warning and exit.
      
      This patch fixes a wrong usage of it, however fixes obvious one only.
      Signed-off-by: NOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      9b41046c
  6. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      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!
      1da177e4