24 Jun, 2005

40 commits

  • The attached patches provides part 3 of an architecture implementation for the
    Tensilica Xtensa CPU series.

    Signed-off-by: Chris Zankel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Zankel
     
  • The attached patches provides part 2 of an architecture implementation for the
    Tensilica Xtensa CPU series.

    Signed-off-by: Chris Zankel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Zankel
     
  • The attached patches provides part 1 of an architecture implementation for the
    Tensilica Xtensa CPU series.

    Signed-off-by: Chris Zankel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Zankel
     
  • Start of a patch series which adds support for the xtensa architecture to
    Linux.

    The Xtensa architecture is highly configurable and usually buried inside an
    SOC device. So, if you buy a new printer, digital camera, or cell phone,
    there is a chance that there is an Xtensa inside even though you don't know it
    (sometimes as a small audio-engine or as a control CPU). Linux hasn't been
    adopted widely with Xtensa yet, but with Linux growing in the embedded space,
    I am sure it will become much more important.

    The attached patch supplies the maintainer record for an architecture
    implementation for the Tensilica Xtensa CPU series.

    Signed-off-by: Chris Zankel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Zankel
     
  • Use improved credits estimates for quota operations. Also reserve space
    for a quota operation in a transaction only if filesystem was mounted with
    some quota option.

    Signed-off-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • Use improved credits estimates for quota operations. Also reserve a space
    for a quota operation in a transaction only if filesystem was mounted with
    some quota options.

    Signed-off-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • Improve estimates on the number of needed credits for quota transaction.
    Now we distinguish blocks that might need to be allocated and blocks that
    only need to be rewritten. Also we distinguish deleting of a quota
    structure and creating of a new one.

    Signed-off-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • Check return values of journal_begin() and journal_end() in the quota code
    for reiserfs.

    Signed-off-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • XFS will have to look at iocb->private to fix aio+dio. No other filesystem
    is using the blockdev_direct_IO* end_io callback.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Export this symbol to GPL modules for eCryptfs: an out-of-tree GPL'ed
    filesystem.

    Signed off by: Michael Halcrow

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael Halcrow
     
  • The attached patch makes the following changes:

    (1) There's a new special key type called ".request_key_auth".

    This is an authorisation key for when one process requests a key and
    another process is started to construct it. This type of key cannot be
    created by the user; nor can it be requested by kernel services.

    Authorisation keys hold two references:

    (a) Each refers to a key being constructed. When the key being
    constructed is instantiated the authorisation key is revoked,
    rendering it of no further use.

    (b) The "authorising process". This is either:

    (i) the process that called request_key(), or:

    (ii) if the process that called request_key() itself had an
    authorisation key in its session keyring, then the authorising
    process referred to by that authorisation key will also be
    referred to by the new authorisation key.

    This means that the process that initiated a chain of key requests
    will authorise the lot of them, and will, by default, wind up with
    the keys obtained from them in its keyrings.

    (2) request_key() creates an authorisation key which is then passed to
    /sbin/request-key in as part of a new session keyring.

    (3) When request_key() is searching for a key to hand back to the caller, if
    it comes across an authorisation key in the session keyring of the
    calling process, it will also search the keyrings of the process
    specified therein and it will use the specified process's credentials
    (fsuid, fsgid, groups) to do that rather than the calling process's
    credentials.

    This allows a process started by /sbin/request-key to find keys belonging
    to the authorising process.

    (4) A key can be read, even if the process executing KEYCTL_READ doesn't have
    direct read or search permission if that key is contained within the
    keyrings of a process specified by an authorisation key found within the
    calling process's session keyring, and is searchable using the
    credentials of the authorising process.

    This allows a process started by /sbin/request-key to read keys belonging
    to the authorising process.

    (5) The magic KEY_SPEC_*_KEYRING key IDs when passed to KEYCTL_INSTANTIATE or
    KEYCTL_NEGATE will specify a keyring of the authorising process, rather
    than the process doing the instantiation.

    (6) One of the process keyrings can be nominated as the default to which
    request_key() should attach new keys if not otherwise specified. This is
    done with KEYCTL_SET_REQKEY_KEYRING and one of the KEY_REQKEY_DEFL_*
    constants. The current setting can also be read using this call.

    (7) request_key() is partially interruptible. If it is waiting for another
    process to finish constructing a key, it can be interrupted. This permits
    a request-key cycle to be broken without recourse to rebooting.

    Signed-Off-By: David Howells
    Signed-Off-By: Benoit Boissinot
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • The attached patch uses RCU to manage the session keyring pointer in struct
    signal_struct. This means that searching need not disable interrupts and get
    a the sighand spinlock to access this pointer. Furthermore, by judicious use
    of rcu_read_(un)lock(), this patch also avoids the need to take and put
    refcounts on the session keyring itself, thus saving on even more atomic ops.

    Signed-Off-By: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • The attached patch makes it possible to pass a session keyring through to the
    process spawned by call_usermodehelper(). This allows patch 3/3 to pass an
    authorisation key through to /sbin/request-key, thus permitting better access
    controls when doing just-in-time key creation.

    Signed-Off-By: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • The attached patch changes the key implementation in a number of ways:

    (1) It removes the spinlock from the key structure.

    (2) The key flags are now accessed using atomic bitops instead of
    write-locking the key spinlock and using C bitwise operators.

    The three instantiation flags are dealt with with the construction
    semaphore held during the request_key/instantiate/negate sequence, thus
    rendering the spinlock superfluous.

    The key flags are also now bit numbers not bit masks.

    (3) The key payload is now accessed using RCU. This permits the recursive
    keyring search algorithm to be simplified greatly since no locks need be
    taken other than the usual RCU preemption disablement. Searching now does
    not require any locks or semaphores to be held; merely that the starting
    keyring be pinned.

    (4) The keyring payload now includes an RCU head so that it can be disposed
    of by call_rcu(). This requires that the payload be copied on unlink to
    prevent introducing races in copy-down vs search-up.

    (5) The user key payload is now a structure with the data following it. It
    includes an RCU head like the keyring payload and for the same reason. It
    also contains a data length because the data length in the key may be
    changed on another CPU whilst an RCU protected read is in progress on the
    payload. This would then see the supposed RCU payload and the on-key data
    length getting out of sync.

    I'm tempted to drop the key's datalen entirely, except that it's used in
    conjunction with quota management and so is a little tricky to get rid
    of.

    (6) Update the keys documentation.

    Signed-Off-By: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • The seccomp check has to happen when entering the syscall and not when
    exiting it or regs->gpr[0] contains garabge during signal handling in
    ppc64_rt_sigreturn (this actually might be a bug too, but an orthogonal
    one, since we really have to run the check before invoking the syscall and
    not after it).

    Signed-off-by: Andrea Arcangeli
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrea Arcangeli
     
  • Linus Torvalds
     
  • Linus Torvalds
     
  • Linus Torvalds
     
  • Linus Torvalds
     
  • Signed-off-by: David Mosberger-Tang
    Signed-off-by: Tony Luck

    David Mosberger-Tang
     
  • Signed-off-by: Russell King

    Russell King
     
  • Patch from Ben Dooks

    Add support for the DM9000 and bring default configuration
    up-to-date with the latest 2.6.12 kernel release

    Signed-off-by: Ben Dooks
    Signed-off-by: Russell King

    Ben Dooks
     
  • Patch from Ben Dooks

    Add platform_device information for DM9000 chip(s) on the
    Simtec BAST and the VR1000 board.

    Signed-off-by: Ben Dooks
    Signed-off-by: Russell King

    Ben Dooks
     
  • Patch from Ben Dooks

    Remove warning of casting `const char *` to a `char *` type.

    Signed-off-by: Ben Dooks
    Signed-off-by: Russell King

    Ben Dooks
     
  • Patch from Nicolas Pitre

    Signed-off-by: Nicolas Pitre
    Signed-off-by: Russell King

    Nicolas Pitre
     
  • Patch from Nicolas Pitre

    Signed-off-by: Nicolas Pitre
    Signed-off-by: Russell King

    Nicolas Pitre
     
  • This patch implements Tom Kelly's Scalable TCP congestion control algorithm
    for the modular framework.

    The algorithm has some nice scaling properties, and has been used a fair bit
    in research, though is known to have significant fairness issues, so it's not
    really suitable for general purpose use.

    Signed-off-by: John Heffner
    Signed-off-by: David S. Miller

    John Heffner
     
  • H-TCP is a congestion control algorithm developed at the Hamilton Institute, by
    Douglas Leith and Robert Shorten. It is extending the standard Reno algorithm
    with mode switching is thus a relatively simple modification.

    H-TCP is defined in a layered manner as it is still a research platform. The
    basic form includes the modification of beta according to the ratio of maxRTT
    to min RTT and the alpha=2*factor*(1-beta) relation, where factor is dependant
    on the time since last congestion.

    The other layers improve convergence by adding appropriate factors to alpha.

    The following patch implements the H-TCP algorithm in it's basic form.

    Signed-Off-By: Baruch Even
    Signed-off-by: David S. Miller

    Baruch Even
     
  • TCP Vegas code modified for the new TCP infrastructure.
    Vegas now uses microsecond resolution timestamps for
    better estimation of performance over higher speed links.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • TCP Hybla congestion avoidance.

    - "In heterogeneous networks, TCP connections that incorporate a
    terrestrial or satellite radio link are greatly disadvantaged with
    respect to entirely wired connections, because of their longer round
    trip times (RTTs). To cope with this problem, a new TCP proposal, the
    TCP Hybla, is presented and discussed in the paper[1]. It stems from an
    analytical evaluation of the congestion window dynamics in the TCP
    standard versions (Tahoe, Reno, NewReno), which suggests the necessary
    modifications to remove the performance dependence on RTT.[...]"[1]

    [1]: Carlo Caini, Rosario Firrincieli, "TCP Hybla: a TCP enhancement for
    heterogeneous networks",
    International Journal of Satellite Communications and Networking
    Volume 22, Issue 5 , Pages 547 - 566. September 2004.

    Signed-off-by: Daniele Lacamera (root at danielinux.net)net
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Daniele Lacamera
     
  • Sally Floyd's high speed TCP congestion control.
    This is useful for comparison and research.

    Signed-off-by: John Heffner
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    John Heffner
     
  • This is the existing 2.6.12 Westwood code moved from tcp_input
    to the new congestion framework. A lot of the inline functions
    have been eliminated to try and make it clearer.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • TCP BIC congestion control reworked to use the new congestion control
    infrastructure. This version is more up to date than the BIC
    code in 2.6.12; it incorporates enhancements from BICTCP 1.1,
    to handle low latency links.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Update the documentation to remove the old sysctl values and
    include the new congestion control infrastructure. Includes
    changes to tcp.txt by Ian McDonald.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Enhancement to the tcp_diag interface used by the iproute2 ss command
    to report the tcp congestion control being used by a socket.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Allow TCP to have multiple pluggable congestion control algorithms.
    Algorithms are defined by a set of operations and can be built in
    or modules. The legacy "new RENO" algorithm is used as a starting
    point and fallback.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Russell King
     
  • This makes the USB_MON less confusing.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • Linus Torvalds