31 Jul, 2009

12 commits


30 Jul, 2009

28 commits

  • Commit d01730d74d2b0155da50d44555001706294014f7 didn't completely fix
    the problem since we still take dqio_mutex and i_mutex in the wrong
    order. Move taking of i_mutex further down (luckily it's needed only
    for updating inode flags) below where dqio_mutex is taken.

    Tested-by: Valdis Kletnieks
    Signed-off-by: Jan Kara

    Jan Kara
     
  • VAT inode is located in the last block recorded block of the medium. When the
    drive errorneously reports number of recorded blocks, we failed to load the VAT
    inode and thus mount the medium. This patch makes kernel try to read VAT inode
    from the last block of the device if it is different from the last recorded
    block.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • The semaphore used by the async caching threads can prevent a
    transaction commit, which can make the FS appear to stall. This
    releases the semaphore more often when a transaction commit is
    in progress.

    Signed-off-by: Chris Mason

    Chris Mason
     
  • The async block group caching code uses the commit_root pointer
    to get a stable version of the extent allocation tree for scanning.
    This copy of the tree root isn't going to change and it significantly
    reduces the complexity of the scanning code.

    During a commit, we have a loop where we update the extent allocation
    tree root. We need to loop because updating the root pointer in
    the tree of tree roots may allocate blocks which may change the
    extent allocation tree.

    Right now the commit_root pointer is changed inside this loop. It
    is more correct to change the commit_root pointer only after all the
    looping is done.

    Signed-off-by: Yan Zheng
    Signed-off-by: Chris Mason

    Yan Zheng
     
  • When a file is deleted from a gfs2 filesystem on one node, a dcache
    entry for it may still exist on other nodes in the cluster. If this
    happens, gfs2 will be unable to free this file on disk. Because of this,
    it's possible to have a gfs2 filesystem with no files on it and no free
    space. With this patch, when a node receives a callback notifying it
    that the file is being deleted on another node, it schedules a new
    workqueue thread to remove the file's dcache entry.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • Since both linked and unlinked inodes are counted by rgd->rd_dinodes, It
    makes no sense to count them with the used data blocks (first check that
    I changed), it makes sense to count them with the linked inodes (second
    check), and it makes no sense to care if there are more unlinked inodes
    than linked ones. This fixes these errors.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • GFS2 was placing far too many glocks on the reclaim list that were not good
    candidates for freeing up from cache. These locks would sit there and
    repeatedly get scanned to see if they could be reclaimed, wasting a lot
    of time when there was memory pressure. This fix does more checks on the
    locks to see if they are actually likely to be removable from cache.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • When searching for unlinked, but still allocated inodes during block
    allocation, avoid the block relating to the inode that is doing the
    allocation. This fixes a hang caused when an unlinked, but still
    open, inode tries to allocate some more blocks and lands up
    finding itself during the search for deallocatable inodes.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • It is possible for gfs2_shrink_glock_memory() to check a glock for
    demotion
    that's in the process of being freed by gfs2_glock_put(). In this case,
    gfs2_shrink_glock_memory() will acquire a new reference to this glock,
    and
    then try to free the glock itself when it drops the refernce. To solve
    this, gfs2_shrink_glock_memory() just needs to check if the glock is in
    the process of being freed, and if so skip it without ever unlocking the
    lru_lock.

    Signed-off-by: Benjamin Marzinski
    Acked-by: Bob Peterson
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • GFS2 wasn't syncing its statfs info on grows. This causes a problem
    when you grow the filesystem on multiple nodes. GFS2 would calculate
    the new space based on the resource groups (which are always current),
    and then assume that the filesystem had grown the from the existing
    statfs size. If you grew the filesystem on two different nodes in a
    short time, the second node wouldn't see the statfs size change from the
    first node, and would assume that it was grown by a larger amount than
    it was. When all these changes were synced out, the total fileystem
    size would be incorrect (the first grow would be counted twice).

    This patch syncs makes GFS2 read in the statfs changes from disk before
    a grow, and write them out after the grow, while the master statfs inode
    is locked.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • This patch removes some of the special cases that the shrinker
    was trying to deal with. As a result we leave fewer items on
    the list and none at all which cannot be demoted. This makes
    the list scanning more efficient and solves some issues seen
    with large numbers of inodes.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • I've been doing this for years, and akpm picked me up on it about 12
    months ago. lguest partly serves as example code, so let's do it Right.

    Also, remove two unused fields in struct vblk_info in the example launcher.

    Signed-off-by: Rusty Russell
    Cc: Ingo Molnar

    Rusty Russell
     
  • Every so often, after code shuffles, I need to go through and unbitrot
    the Lguest Journey (see drivers/lguest/README). Since we now use RCU in
    a simple form in one place I took the opportunity to expand that explanation.

    Signed-off-by: Rusty Russell
    Cc: Ingo Molnar
    Cc: Paul McKenney

    Rusty Russell
     
  • I don't really notice it (except to begrudge the extra vertical
    space), but Ingo does. And he pointed out that one excuse of lguest
    is as a teaching tool, it should set a good example.

    Signed-off-by: Rusty Russell
    Cc: Ingo Molnar

    Rusty Russell
     
  • This refactors find_vqs, making it more readable and robust, and fixing
    two regressions from 2.6.30:
    - double free_irq causing BUG_ON on device removal
    - probe failure when vq can't be assigned to msi-x vector
    (reported on old host kernels)

    Tested-by: Amit Shah
    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Rusty Russell

    Michael S. Tsirkin
     
  • This makes delete vq the reverse of find vq.
    This is required to make it possible to retry find_vqs
    after a failure, otherwise the list gets corrupted.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Rusty Russell

    Michael S. Tsirkin
     
  • Make vp_free_vectors do the reverse of vq_request_vectors.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Rusty Russell

    Michael S. Tsirkin
     
  • 1d589bb16b825b3a7b4edd34d997f1f1f953033d "Add serial number support
    for virtio_blk, V4a" extended 'struct virtio_blk_config' to 536 bytes.
    Lguest and S/390 both use an 8 bit value for the feature length, and
    this change broke them (if the code is naive).

    Signed-off-by: Rusty Russell
    Cc: John Cooper
    Cc: Christian Borntraeger

    Rusty Russell
     
  • "new" was freed and then dereferenced. Also the return value wasn't being
    used so I modified the caller as well.

    Compile tested only. Found by smatch (http://repo.or.cz/w/smatch.git).

    regards,
    dan carpenter

    Signed-off-by: Dan Carpenter
    Signed-off-by: Rusty Russell

    Dan Carpenter
     
  • Signed-off-by: Kumar Gala

    Kumar Gala
     
  • General update of defconfig including the following notable changes:
    - Enable Highmem support.
    - Support for PCMCIA based daughter card.

    Signed-off-by: Martyn Welch
    Signed-off-by: Kumar Gala

    Martyn Welch
     
  • General update of defconfig including the following notable changes:
    - Enable GPIO access via sysfs on GE Fanuc's PPC9A.
    - Enable Highmem support.
    - Support for PCMCIA based daughter card.

    Signed-off-by: Martyn Welch
    Signed-off-by: Kumar Gala

    Martyn Welch
     
  • This is another alloc_bootmem() -> kzalloc() change, this time to
    fix the non-fatal badness caused when booting with a cpm2_uart console.

    Signed-off-by: Mark Ware
    Signed-off-by: Kumar Gala

    Mark Ware
     
  • U-Boot maps PCI IO at 0xe0300000, while current dts files specify
    0xe2000000. This leads to the following oops with CONFIG_8139TOO_PIO=y.

    8139too Fast Ethernet driver 0.9.28
    Machine check in kernel mode.
    Caused by (from SRR1=41000): Transfer error ack signal
    Oops: Machine check, sig: 7 [#1]
    MPC837x RDB
    [...]
    NIP [00000900] 0x900
    LR [c0439df8] rtl8139_init_board+0x238/0x524
    Call Trace:
    [cf831d90] [c0439dcc] rtl8139_init_board+0x20c/0x524 (unreliable)
    [cf831de0] [c043a15c] rtl8139_init_one+0x78/0x65c
    [cf831e40] [c0235250] pci_call_probe+0x20/0x30
    [...]

    This patch fixes the issue by specifying the correct PCI IO base
    address.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Kumar Gala

    Anton Vorontsov
     
  • Sometimes (e.g. when there are no UEMs attached to a board)
    fsl_pq_mdio_find_free() fails to find a spare address for a TBI PHY,
    this is because get_phy_id() returns bogus 0x0000ffff values
    (0xffffffff is expected), and therefore mdio bus probing fails with
    the following message:

    fsl-pq_mdio: probe of e0082120.mdio failed with error -16

    And obviously ethernet doesn't work after this.

    This patch solves the problem by adding tbi-phy node into mdio node,
    so that we won't scan for spare addresses, we'll just use a fixed one.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Kumar Gala

    Anton Vorontsov
     
  • Linux isn't able to detect link changes on ethernet ports that were
    used by U-Boot. This is because U-Boot wrongly clears interrupt
    polarity bit (INTPOL, 0x400) in the extended status register (EXT_SR,
    0x1b) of Marvell PHYs.

    There is no easy way for PHY drivers to know IRQ line polarity (we
    could extract it from the device tree and pass it to phydevs, but
    that'll be quite a lot of work), so for now just reset the PHYs to
    their default states.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Kumar Gala

    Anton Vorontsov
     
  • In switch_mmu_context() if we call steal_context_smp() to get a context
    to use we shouldn't fall through and than call steal_context_up(). Doing
    so can be problematic in that the 'mm' that steal_context_up() ends up
    using will not get marked dirty in the stale_map[] for other CPUs that
    might have used that mm. Thus we could end up with stale TLB entries in
    the other CPUs that can cause all kinda of havoc.

    Signed-off-by: Kumar Gala

    Kumar Gala
     
  • * 'i2c-fixes-rc4' of git://aeryn.fluff.org.uk/bjdooks/linux:
    i2c-omap: OMAP3430 Silicon Errata 1.153
    i2c-omap: In case of a NACK|ARDY|AL return from the ISR
    i2c-omap: Bug in reading the RXSTAT/TXSTAT values from the I2C_BUFFSTAT register
    i2c-sh_mobile: change module_init() to subsys_initcall()
    i2c: strncpy does not null terminate string
    i2c-s3c2410: s3c24xx_i2c_init: don't clobber IICLC value

    Linus Torvalds