17 Jul, 2009

3 commits

  • In blk-sysfs.c, queue_var_store uses unsigned long to store data,
    but queue_var_show uses unsigned int to show data. This causes,

    # echo 70000000000 > /sys/block//queue/read_ahead_kb
    # cat /sys/block//queue/read_ahead_kb => get wrong value

    Fix it by using unsigned long.

    While at it, convert queue_rq_affinity_show() such that it uses bool
    variable instead of explicit != 0 testing.

    Signed-off-by: Xiaotian Feng
    Signed-off-by: Tejun Heo

    Xiaotian Feng
     
  • dtp is derefenced on the lines above the test !dtp, and so it cannot be
    NULL at this point.

    A simplified version of the semantic match that finds this problem is as
    follows: (http://www.emn.fr/x-info/coccinelle/)

    //
    @r@
    expression x,E,E1;
    identifier f,l;
    position p1,p2;
    @@

    *x@p1->f = E1;
    ... when != x = E
    when != goto l;
    (
    *x@p2 == NULL
    |
    *x@p2 != NULL
    )
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Tejun Heo

    Julia Lawall
     
  • Commit ab0fd1debe730ec9998678a0c53caefbd121ed10 tries to prevent merge
    of requests with different failfast settings. In elv_rq_merge_ok(),
    it compares new bio's failfast flags against the merge target
    request's. However, the flag testing accessors for bio and blk don't
    return boolean but the tested bit value directly and FAILFAST on bio
    and blk don't match, so directly comparing them with == results in
    false negative unnecessary preventing merge of readahead requests.

    This patch convert the results to boolean by negating them before
    comparison.

    Signed-off-by: Tejun Heo
    Cc: Jens Axboe
    Cc: Boaz Harrosh
    Cc: FUJITA Tomonori
    Cc: James Bottomley
    Cc: Jeff Garzik

    Tejun Heo
     

15 Jul, 2009

1 commit


11 Jul, 2009

4 commits

  • In case memory is scarce, we now default to oom_cfqq. Once memory is
    available again, we should allocate a new cfqq and stop using oom_cfqq for
    a particular io context.

    Once a new request comes in, check if we are using oom_cfqq, and if yes,
    try to allocate a new cfqq.

    Tested the patch by forcing the use of oom_cfqq and upon next request thread
    realized that it was using oom_cfqq and it allocated a new cfqq.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Jens Axboe

    Vivek Goyal
     
  • I overlooked SG_DXFER_TO_FROM_DEV support when I converted sg to use
    the block layer mapping API (2.6.28).

    Douglas Gilbert explained SG_DXFER_TO_FROM_DEV:

    http://www.spinics.net/lists/linux-scsi/msg37135.html

    =
    The semantics of SG_DXFER_TO_FROM_DEV were:
    - copy user space buffer to kernel (LLD) buffer
    - do SCSI command which is assumed to be of the DATA_IN
    (data from device) variety. This would overwrite
    some or all of the kernel buffer
    - copy kernel (LLD) buffer back to the user space.

    The idea was to detect short reads by filling the original
    user space buffer with some marker bytes ("0xec" it would
    seem in this report). The "resid" value is a better way
    of detecting short reads but that was only added this century
    and requires co-operation from the LLD.
    =

    This patch changes the block layer mapping API to support this
    semantics. This simply adds another field to struct rq_map_data and
    enables __bio_copy_iov() to copy data from user space even with READ
    requests.

    It's better to add the flags field and kills null_mapped and the new
    from_user fields in struct rq_map_data but that approach makes it
    difficult to send this patch to stable trees because st and osst
    drivers use struct rq_map_data (they were converted to use the block
    layer in 2.6.29 and 2.6.30). Well, I should clean up the block layer
    mapping API.

    zhou sf reported this regiression and tested this patch:

    http://www.spinics.net/lists/linux-scsi/msg37128.html
    http://www.spinics.net/lists/linux-scsi/msg37168.html

    Reported-by: zhou sf
    Tested-by: zhou sf
    Cc: stable@kernel.org
    Signed-off-by: FUJITA Tomonori
    Signed-off-by: Jens Axboe

    FUJITA Tomonori
     
  • Currently, blk_scsi_ioctl_init() is not called since it lacks
    an initcall marking. This causes the command table to be
    unitialized, hence somce commands are block when they should
    not have been.

    This fixes a regression introduced by commit
    018e0446890661504783f92388ecce7138c1566d

    Signed-off-by: FUJITA Tomonori
    Signed-off-by: Jens Axboe

    FUJITA Tomonori
     
  • Commit 1faa16d22877f4839bd433547d770c676d1d964c accidentally broke
    the bdi congestion wait queue logic, causing us to wait on congestion
    for WRITE (== 1) when we really wanted BLK_RW_ASYNC (== 0) instead.

    Signed-off-by: Jens Axboe

    Jens Axboe
     

10 Jul, 2009

15 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
    cifs: when ATTR_READONLY is set, only clear write bits on non-directories
    cifs: remove cifsInodeInfo->inUse counter
    cifs: convert cifs_get_inode_info and non-posix readdir to use cifs_iget
    [CIFS] update cifs version number
    cifs: add and use CIFSSMBUnixSetFileInfo for setattr calls
    cifs: make a separate function for filling out FILE_UNIX_BASIC_INFO
    cifs: rename CIFSSMBUnixSetInfo to CIFSSMBUnixSetPathInfo
    cifs: add pid of initiating process to spnego upcall info
    cifs: fix regression with O_EXCL creates and optimize away lookup
    cifs: add new cifs_iget function and convert unix codepath to use it

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (29 commits)
    cxgb3: Fix crash caused by stashing wrong netdev_queue
    ixgbe: Fix coexistence of FCoE and Flow Director in 82599
    memory barrier: adding smp_mb__after_lock
    net: adding memory barrier to the poll and receive callbacks
    netpoll: Fix carrier detection for drivers that are using phylib
    includecheck fix: include/linux, rfkill.h
    p54: tx refused but queue active
    Atheros Kconfig needs to be dependent on WLAN_80211
    mac80211: fix docbook
    mac80211_hwsim: avoid NULL access
    ssb: Add support for 4318E
    b43: Add support for 4318E
    zd1211rw: adding SONY IFU-WLM2 (054c:0257) as a zd1211b device
    zd1211rw: 07b8:6001 is a ZD1211B
    r6040: bump driver version to 0.24 and date to 08 July 2009
    r6040: restore MIER register correctly when IRQ line is shared
    ipv4: Fix fib_trie rebalancing, part 4 (root thresholds)
    davinci_emac: fix kernel oops when changing MAC address while interface is down
    igb: set lan id prior to configuring phy
    mac80211: minstrel: avoid accessing negative indices in rix_to_ndx()
    ...

    Linus Torvalds
     
  • Looks like the change in ad361c9884e809340f6daca80d56a9e9c871690a
    wasn't compile tested.

    Signed-off-by: Dave Jones
    Acked-by: David S. Miller
    Signed-off-by: Linus Torvalds

    Dave Jones
     
  • Commit c3a8c5b6 ("cxgb3: move away from LLTX") exposed a bug in how
    cxgb3 looks up the netdev_queue it stashes away in a qset during
    initialization. For multiport devices, the TX queue index it uses is
    offset by the first_qset index of each port. This leads to a crash
    once LLTX is removed, since hard_start_xmit is called with one TX
    queue lock held, while the TX reclaim timer task grabs a different
    (wrong) TX queue lock when it frees skbs.

    Fix this by removing the first_qset offset used to look up the TX
    queue passed into t3_sge_alloc_qset() from setup_sge_qsets().

    Signed-off-by: Roland Dreier
    Acked-by: Divy Le Ray
    Signed-off-by: David S. Miller

    Roland Dreier
     
  • Fix coexistence of Fiber Channel over Ethernet (FCoE) and Flow Director (FDIR)
    in 82599 and remove the disabling of FDIR when FCoE is enabled.

    Currently, FDIR is turned off when FCoE is enabled under the assumption that
    FCoE is always enabled with DCB being turned on. However, FDIR does not have
    to be turned off all the time when FCoE is enabled since FCoE can be enabled
    without DCB being turned on, e.g., use link pause only. This patch makes sure
    that when DCB is turned on or off, FDIR is turned on or off correspondingly;
    and when FCoE is enabled, it does not disable FDIR, rather, it will have FDIR
    set up properly so FCoE and FDIR can coexist regardless of DCB being on or off.

    Signed-off-by: Yi Zou
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Yi Zou
     
  • Adding smp_mb__after_lock define to be used as a smp_mb call after
    a lock.

    Making it nop for x86, since {read|write|spin}_lock() on x86 are
    full memory barriers.

    Signed-off-by: Jiri Olsa
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Jiri Olsa
     
  • Adding memory barrier after the poll_wait function, paired with
    receive callbacks. Adding fuctions sock_poll_wait and sk_has_sleeper
    to wrap the memory barrier.

    Without the memory barrier, following race can happen.
    The race fires, when following code paths meet, and the tp->rcv_nxt
    and __add_wait_queue updates stay in CPU caches.

    CPU1 CPU2

    sys_select receive packet
    ... ...
    __add_wait_queue update tp->rcv_nxt
    ... ...
    tp->rcv_nxt check sock_def_readable
    ... {
    schedule ...
    if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
    wake_up_interruptible(sk->sk_sleep)
    ...
    }

    If there was no cache the code would work ok, since the wait_queue and
    rcv_nxt are opposit to each other.

    Meaning that once tp->rcv_nxt is updated by CPU2, the CPU1 either already
    passed the tp->rcv_nxt check and sleeps, or will get the new value for
    tp->rcv_nxt and will return with new data mask.
    In both cases the process (CPU1) is being added to the wait queue, so the
    waitqueue_active (CPU2) call cannot miss and will wake up CPU1.

    The bad case is when the __add_wait_queue changes done by CPU1 stay in its
    cache, and so does the tp->rcv_nxt update on CPU2 side. The CPU1 will then
    endup calling schedule and sleep forever if there are no more data on the
    socket.

    Calls to poll_wait in following modules were ommited:
    net/bluetooth/af_bluetooth.c
    net/irda/af_irda.c
    net/irda/irnet/irnet_ppp.c
    net/mac80211/rc80211_pid_debugfs.c
    net/phonet/socket.c
    net/rds/af_rds.c
    net/rfkill/core.c
    net/sunrpc/cache.c
    net/sunrpc/rpc_pipe.c
    net/tipc/socket.c

    Signed-off-by: Jiri Olsa
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Jiri Olsa
     
  • cifs: when ATTR_READONLY is set, only clear write bits on non-directories

    On windows servers, ATTR_READONLY apparently either has no meaning or
    serves as some sort of queue to certain applications for unrelated
    behavior. This MS kbase article has details:

    http://support.microsoft.com/kb/326549/

    Don't clear the write bits directory mode when ATTR_READONLY is set.

    Reported-by: pouchat@peewiki.net
    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     
  • cifs: remove cifsInodeInfo->inUse counter

    It was purported to be a refcounter of some sort, but was never
    used that way. It never served any purpose that wasn't served equally well
    by the I_NEW flag.

    Signed-off-by: Jeff Layton
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Steve French

    Jeff Layton
     
  • cifs: convert cifs_get_inode_info and non-posix readdir to use cifs_iget

    Rather than allocating an inode and filling it out, have
    cifs_get_inode_info fill out a cifs_fattr and call cifs_iget. This means
    a pretty hefty reorganization of cifs_get_inode_info.

    For the readdir codepath, add a couple of new functions for filling out
    cifs_fattr's from different FindFile response infolevels.

    Finally, remove cifs_new_inode since there are no more callers.

    Signed-off-by: Jeff Layton
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Steve French

    Jeff Layton
     
  • Signed-off-by: Steve French

    Steve French
     
  • cifs: add and use CIFSSMBUnixSetFileInfo for setattr calls

    When there's an open filehandle, SET_FILE_INFO is apparently preferred
    over SET_PATH_INFO. Add a new variant that sets a FILE_UNIX_INFO_BASIC
    infolevel via SET_FILE_INFO and switch cifs_setattr_unix to use the
    new call when there's an open filehandle available.

    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     
  • cifs: make a separate function for filling out FILE_UNIX_BASIC_INFO

    The SET_FILE_INFO variant will need to do the same thing here. Break
    this code out into a separate function that both variants can call.

    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     
  • cifs: rename CIFSSMBUnixSetInfo to CIFSSMBUnixSetPathInfo

    ...in preparation of adding a SET_FILE_INFO variant.

    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     
  • cifs: add pid of initiating process to spnego upcall info

    This will allow the upcall to poke in /proc//environ and get
    the value of the $KRB5CCNAME env var for the process.

    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     

09 Jul, 2009

17 commits

  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
    [CPUFREQ] Fix compile failure in cpufreq.c

    Linus Torvalds
     
  • Using early netconsole and gianfar driver this error pops up:

    netconsole: timeout waiting for carrier

    It appears that net/core/netpoll.c:netpoll_setup() is using
    cond_resched() in a loop waiting for a carrier.

    The thing is that cond_resched() is a no-op when system_state !=
    SYSTEM_RUNNING, and so drivers/net/phy/phy.c's state_queue is never
    scheduled, therefore link detection doesn't work.

    I belive that the main problem is in cond_resched()[1], but despite
    how the cond_resched() story ends, it might be a good idea to call
    msleep(1) instead of cond_resched(), as suggested by Andrew Morton.

    [1] http://lkml.org/lkml/2009/7/7/463

    Signed-off-by: Anton Vorontsov
    Signed-off-by: David S. Miller

    Anton Vorontsov
     
  • David S. Miller
     
  • Commit ad361c98 ("Remove multiple KERN_ prefixes from printk formats")
    broke the build for fealnx because it added some "printk(PR_CONT ..."
    calls, when PR_CONT doesn't exist; it should be "printk(KERN_CONT ..."

    Signed-off-by: Roland Dreier
    Cc: Joe Perches
    Signed-off-by: Linus Torvalds

    Roland Dreier
     
  • managed_policy is out of scope for the non-smp case.
    Declare it locally where used (twice)

    Signed-off-by: Dave Jones

    Dave Jones
     
  • cifs: fix regression with O_EXCL creates and optimize away lookup

    Signed-off-by: Jeff Layton
    Tested-by: Shirish Pargaonkar
    CC: Stable Kernel
    Signed-off-by: Steve French

    Jeff Layton
     
  • Remove not needed locking of the fb_info->mm_lock mutex before a
    frambuffer is registered.

    This fixes a problem with uninitialized the fb_info->mm_lock mutex
    introduced by the commit 537a1bf059f " fbdev: add mutex for fb_mmap
    locking"

    Signed-off-by: Krzysztof Helt
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • Remove call to the fsl_diu_set_par before the register_framebuffer().

    This fixes a problem with uninitialized the fb_info->mm_lock mutex
    introduced by the commit 537a1bf059f " fbdev: add mutex for fb_mmap
    locking"

    Signed-off-by: Krzysztof Helt
    Tested-by: "Kai Jiang"
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • fix the following 'make includecheck' warning:

    include/linux/rfkill.h: linux/types.h is included more than once.

    Signed-off-by: Jaswinder Singh Rajput
    Signed-off-by: John W. Linville

    Jaswinder Singh Rajput
     
  • In the mainline kernel, p54usb will fail because the TX queue length can
    become < 0. This problem has been reported as Bugzilla #13725. The failure
    is expressed by the following message in the logs:

    WARNING: at net/mac80211/tx.c:1325 ieee80211_tx+0x23c/0x298 [mac80211]()
    Hardware name: HP Pavilion dv2700 Notebook PC
    tx refused but queue active

    This problem has been recently observed in the wireless-testing tree, where
    a full solution is being tested. That fix is too invasive for 2.6.31-rcX,
    but the simple change supplied here will prevent the failure.

    Signed-off-by: Larry Finger
    Signed-off-by: John W. Linville

    Larry Finger
     
  • Atheros top level menu needs a "depends WLAN_80211" to properly indent
    within menuconfig and xconfig interfaces.

    This is purely a visual issue but it effects all subsequent drivers.
    The issue is the top level menu does not include a dependency on
    WLAN_80211 so within the tree structure, Atheros is at the same level as
    WLAN_80211 but when WLAN_80211 collapsed, the menu disappears along with
    all subsequent drives, so it is really a subordinate.

    Signed-off-by: Jay Sternberg
    Signed-off-by: John W. Linville

    Jay Sternberg
     
  • These two functions no longer exist in mac80211,
    so trying to insert them generates warnings in
    the document.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • There's a race condition -- started can be set to true
    before channel is set due to the way mac80211 callbacks
    currently work (->start should probably pass the channel
    we would like to have initially). For now simply add a
    check to hwsim to avoid dereferencing the NULL channel
    pointer.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Added support for the Broadcom 4318E chipset on PCMCIA/CF cards. The
    4318E can do 802.11A/B/G, only B and G mode are supported in b43.

    Signed-off-by: Clyde McPherson
    Signed-off-by: Larry Finger
    Signed-off-by: John W. Linville

    Clyde McPherson
     
  • Added support for the Broadcom 4318E chipset on PCMCIA/CF cards. The
    4318E can do 802.11A/B/G, only B and G mode are supported in b43.

    Signed-off-by: Clyde McPherson
    Signed-off-by: Larry Finger
    Signed-off-by: John W. Linville

    Clyde McPherson
     
  • Yevgen Kotikov reported success on the sourceforge zd1211-devs list
    with the following details:

    Brand/retail: SONY IFU-WLM2
    USB-IDs: Vendor: 0x054C Device: 0x0257
    chip ID: zd1211b chip 054c:0257 v4802 high 00-0b-6b AL2230_RF pa0 -----
    FCC ID: unknown

    Signed-off-by: Hin-Tak Leung
    Tested-by: Yevgen Kotikov
    Signed-off-by: John W. Linville

    Hin-Tak Leung
     
  • On a shuttle machine here we got 07b8:6001 device, handled by zd1211rw, which does not work.
    Scanning is OK but association does not work, we get "direct probe to AP xxx timed out"

    It appears that this simple patch makes the device work perfectly.

    This id was already there in initial import of the driver so I don't know if it has ever been
    working as ZD1211 (which would mean they changed it and kept the id :( ).

    Signed-off-by: Pascal Terjan
    Signed-off-by: John W. Linville

    Pascal Terjan