05 Mar, 2010

13 commits

  • Currenly sync_quota_sb does a lot of sync and truncate action that only
    applies to "VFS" style quotas and is actively harmful for the sync
    performance in XFS. Move it into vfs_quota_sync and add a wait parameter
    to ->quota_sync to tell if we need it or not.

    My audit of the GFS2 code says it's also not needed given the way GFS2
    implements quotas, but I'd be happy if this can get a detailed review.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jan Kara

    Christoph Hellwig
     
  • Currently Q_XQUOTASYNC calls into the quota_sync method, but XFS does something
    entirely different in it than the rest of the filesystems. xfs_quota which
    calls Q_XQUOTASYNC expects an asynchronous data writeout to flush delayed
    allocations, while the "VFS" quota support wants to flush changes to the quota
    file.

    So make Q_XQUOTASYNC call into the writeback code directly and make the
    quota_sync method optional as XFS doesn't need in the sense expected by the
    rest of the quota code.

    GFS2 was using limited XFS-style quota and has a quota_sync method fitting
    neither the style used by vfs_quota_sync nor xfs_fs_quota_sync. I left it
    in for now as per discussion with Steve it expects to be called from the
    sync path this way.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jan Kara

    Christoph Hellwig
     
  • Stop having complicated different routines for checking permissions for
    XQM vs "VFS" quotas. Instead do the checks for having sb->s_qcop and
    a valid type directly in do_quotactl, and munge the *quotactl_valid functions
    into a check_quotactl_permission helper that only checks for permissions.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jan Kara

    Christoph Hellwig
     
  • The Q_SYNC command can be called without the path to a device, in which case
    it iterates over all superblocks. Special case this variant directly in
    sys_quotactl so that the other code always gets a superblock and doesn't
    need to deal with this case.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jan Kara

    Christoph Hellwig
     
  • Move the checks for sb->s_qcop->foo next to the actual calls for them, same
    for sb_has_quota_active checks where applicable.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jan Kara

    Christoph Hellwig
     
  • Split out a helper for each non-trivial command from do_quotactl.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jan Kara

    Christoph Hellwig
     
  • If a delayed-allocation write happens before quota is enabled, the
    kernel spits out a warning:
    WARNING: at fs/quota/dquot.c:988 dquot_claim_space+0x77/0x112()

    because the fact that user has some delayed allocation is not recorded
    in quota structure.

    Make dquot_initialize() update amount of reserved space for user if it sees
    inode has some space reserved. Also make sure that reserved quota space does
    not go negative and we warn about the filesystem bug just once.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • Since we implemented generic reserved space management interface,
    then it is possible to account reserved space even when quota
    is not active (similar to i_blocks/i_bytes).

    Without this patch following testcase result in massive comlain from
    WARN_ON in dquot_claim_space()

    TEST_CASE:
    mount /dev/sdb /mnt -oquota
    dd if=/dev/zero of=/mnt/test bs=1M count=1
    quotaon /mnt
    # fs_reserved_spave == 1Mb
    # quota_reserved_space == 0, because quota was disabled
    dd if=/dev/zero of=/mnt/test seek=1 bs=1M count=1
    # fs_reserved_spave == 2Mb
    # quota_reserved_space == 1Mb
    sync # ->dquot_claim_space() -> WARN_ON

    Signed-off-by: Dmitry Monakhov
    Signed-off-by: Jan Kara

    Dmitry Monakhov
     
  • CONFIG_BUFFER_DEBUG seems to have been removed from the documentation
    somewhere around 2.4.15 and seemingly hasn't been available even
    longer. It is, however, still referenced at one place from the jbd
    code (one is a copy of the other header). Time to clean it up

    Signed-off-by: Christoph Egger
    Signed-off-by: Jan Kara

    Christoph Egger
     
  • The patch is aimed to reorganize and simplify quota code a bit.
    Quota code is itself complex enouth, but we can make it more readable
    in some places:
    - Move quota option parsing to separate functions.
    - Simplify old-quota and journaled-quota mix check.

    Signed-off-by: Dmitry Monakhov
    Signed-off-by: Jan Kara

    Dmitry Monakhov
     
  • Replace intermediate EXT3_MOUNT_XXX flags manipulation to
    corresponding macro.

    Signed-off-by: Dmitry Monakhov
    Signed-off-by: Jan Kara

    Dmitry Monakhov
     
  • At several places we modify EXT3_I(inode)->i_state without holding i_mutex
    (ext3_release_file, ext3_bmap, ext3_journalled_writepage, ext3_do_update_inode,
    ...). These modifications are racy and we can lose updates to i_state. So
    convert handling of i_state to use bitops which are atomic.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • Cleanup handling of S_NOQUOTA inode flag and document it a bit. The flag
    does not have to be set under dqptr_sem. Only functions modifying inode's
    dquot pointers have to check the flag under dqptr_sem before going forward
    with the modification. This way we are sure that we cannot add new dquot
    pointers to the inode which is just becoming a quota file.

    The good thing about this cleanup is that there are no more places in quota
    code which enforce i_mutex vs. dqptr_sem lock ordering (in particular that
    dqptr_sem -> i_mutex of quota file). This should silence some (false) lockdep
    warnings with ext4 + quota and generally make life of some filesystems easier.

    Signed-off-by: Jan Kara

    Jan Kara
     

03 Mar, 2010

4 commits

  • * 'for-linus' of git://gitorious.org/linux-omap-dss2/linux: (49 commits)
    OMAP: DSS2: Taal: Fix TE when resuming
    OMAP: DSS2: Taal: Fix ESD check
    OMAP: DSS2: OMAPFB: Constify some function parameters
    OMAP: DSS2: OMAPFB: install omapfb.h
    OMAP: DSS2: DSI: add error prints
    OMAP: DSS2: TPO-TD03MTEA1: fix function names
    OMAP: DSS2: DSI: add dsi_vc_dcs_read_2() helper
    OMAP: DSS2: OMAPFB: Remove FB_OMAP2_FORCE_AUTO_UPDATE
    OMAP: DSS2: DSI: remove external TE support
    OMAP: DSS2: move timing functions
    OMAP: DSS2: move set/get_wss()
    OMAP: DSS2: move enable/disable/suspend/resume
    OMAP: DSS2: move update() and sync()
    OMAP: DSS2: move set/get_update_mode()
    OMAP: DSS2: move enable/get_te()
    OMAP: DSS2: move get_recommended_bpp()
    OMAP: DSS2: move get_resolution()
    OMAP: DSS2: move enable/disable_channel to overlay manager
    OMAP: DSS2: move wait_vsync()
    OMAP: DSS2: move get/set_rotate()
    ...

    Linus Torvalds
     
  • * 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (214 commits)
    omap2: Initialize Menelaus and MMC for N8X0
    AM3517 EVM: correct typo - tca6416 mispelt as tca6516
    AM3517 EVM: Enable I2C support
    AM35x: Enable OMAP_MUX in defconfig
    AM35x: Add missing GPIO mux config for EHCI port
    Zoom3: Defconfig update
    omap: i2c: Fix muxing for command line enabled bus
    OMAP4: clock: Remove clock hacks from timer-gp.c
    OMAP4: clock: Add dummy clock nodes for interface clocks
    OMAP4: clock: Rename leaf clock nodes to end with a _ick or _fck
    OMAP2+ clock: revise omap2_clk_{disable,enable}()
    OMAP2/3 clock: combine OMAP2 & 3 boot-time MPU rate change code
    OMAP clockdomain: if no autodeps exist, don't try to add or remove them
    OMAP hwmod: add hwmod class support
    OMAP hwmod: convert header files with static allocations into C files
    OMAP hwmod: convert hwmod to use hardware clock names rather than clkdev dev+con
    OMAP clock: add omap_clk_get_by_name() for use by OMAP hwmod core code
    OMAP3: clock: add capability to change rate of dpll4_m5_ck_3630
    OMAP4 clock: drop the ALWAYS_ENABLED clock flag
    OMAP clock: drop RATE_FIXED clock flag
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
    Revert "blkdev: fix merge_bvec_fn return value checks"

    Linus Torvalds
     
  • This reverts commit 9f7cdbc33f36d28e57eaba0093f68f0d14c38c5b.

    It's causing oopses om dm setups, so revert it until we investigate.

    Reported-by: Dmitry Torokhov
    Tested-by: Steven Rostedt
    Signed-off-by: Jens Axboe

    Jens Axboe
     

02 Mar, 2010

23 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6:
    sparc: Support show_unhandled_signals.
    sparc: use __ratelimit
    sunxvr500: Additional PCI id for sunxvr500 driver
    sparc: use asm-generic/scatterlist.h
    sparc64: If 'slot-names' property exist, create sysfs PCI slot information.
    sparc: remove trailing space in messages
    sparc: remove redundant return statements

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1341 commits)
    virtio_net: remove forgotten assignment
    be2net: fix tx completion polling
    sis190: fix cable detect via link status poll
    net: fix protocol sk_buff field
    bridge: Fix build error when IGMP_SNOOPING is not enabled
    bnx2x: Tx barriers and locks
    scm: Only support SCM_RIGHTS on unix domain sockets.
    vhost-net: restart tx poll on sk_sndbuf full
    vhost: fix get_user_pages_fast error handling
    vhost: initialize log eventfd context pointer
    vhost: logging thinko fix
    wireless: convert to use netdev_for_each_mc_addr
    ethtool: do not set some flags, if others failed
    ipoib: returned back addrlen check for mc addresses
    netlink: Adding inode field to /proc/net/netlink
    axnet_cs: add new id
    bridge: Make IGMP snooping depend upon BRIDGE.
    bridge: Add multicast count/interval sysfs entries
    bridge: Add hash elasticity/max sysfs entries
    bridge: Add multicast_snooping sysfs toggle
    ...

    Trivial conflicts in Documentation/feature-removal-schedule.txt

    Linus Torvalds
     
  • TE was not initialized properly on power on, which broke TE when resuming
    from suspend.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • This is no longer needed. I missed to remove this in
    567ec874d15b478c8eda7e9a5d2dcb05f13f1fb5 ("net: convert multiple
    drivers to use netdev_for_each_mc_addr, part6")

    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Jiri Pirko
     
  • In tx/mcc polling, napi_complete() is being incorrectly called
    before reaping tx completions. This can cause tx compl processing
    to be scheduled on another cpu concurrently which can result in a panic.
    This if fixed by calling napi complete() after tx/mcc compl processing
    but before re-enabling interrupts (via a cq notify).

    Signed-off-by: Sathya Perla
    Signed-off-by: David S. Miller

    Sathya Perla
     
  • Some sis190 devices don't report LinkChange, so do polling for
    link status.

    Fixes http://bugzilla.kernel.org/show_bug.cgi?id=11926

    Signed-off-by: Herton Ronaldo Krzesinski
    Signed-off-by: David S. Miller

    Herton Ronaldo Krzesinski
     
  • Commit e992cd9b72a18 (kmemcheck: make bitfield annotations truly no-ops
    when disabled) allows us to revert a workaround we did in the past to
    not add holes in sk_buff structure.

    This patch partially reverts commit 14d18a81b5171
    (net: fix kmemcheck annotations) so that sparse doesnt complain:

    include/linux/skbuff.h:357:41: error: invalid bitfield specifier for
    type restricted __be16.

    Reported-by: Stefan Richter
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Fix the following build error when IGMP_SNOOPING is not enabled.
    In file included from net/bridge/br.c:24:
    net/bridge/br_private.h: In function 'br_multicast_is_router':
    net/bridge/br_private.h:361: error: 'struct net_bridge' has no member named 'multicast_router'
    net/bridge/br_private.h:362: error: 'struct net_bridge' has no member named 'multicast_router'
    net/bridge/br_private.h:363: error: 'struct net_bridge' has no member named 'multicast_router_timer'

    Signed-off-by: Sridhar Samudrala
    Acked-by: Randy Dunlap
    Acked-by: Herbert Xu
    Signed-off-by: David S. Miller

    Sridhar Samudrala
     
  • Conflicts:
    arch/arm/plat-omap/Kconfig

    Tony Lindgren
     
  • …t/khilman/linux-davinci

    * 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci: (40 commits)
    DaVinci DM365: Adding support for SPI EEPROM
    DaVinci DM365: Adding DM365 SPI support
    DaVinci DM355: Modifications to DM355 SPI support
    DaVinci: SPI: Adding header file for SPI support.
    davinci: dm646x: CDCE clocks: davinci_clk converted to clk_lookup
    davinci: clkdev cleanup: remove clk_lookup wrapper, use clkdev_add_table()
    DaVinci: DM365: Voice codec support for the DM365 SoC
    davinci: clock: let clk->set_rate function sleep
    Add SDA and SCL pin numbers to i2c platform data
    davinci: da8xx/omap-l1xx: Add EDMA platform data for da850/omap-l138
    davinci: build list of unused EDMA events dynamically
    davinci: Fix edma_alloc_channel api for EDMA_CHANNEL_ANY case
    davinci: Keep count of channel controllers on a platform
    davinci: Correct return value of edma_alloc_channel api
    davinci: add CDCE949 support on DM6467 EVM
    davinci: add support for CDCE949 clock synthesizer
    davinci: da850/omap-l138 EVM: register for suspend support
    davinci: da850/omap-l138: add support for SoC suspend
    davinci: add power management support
    DaVinci: DM365: Changing default queue for DM365.
    ...

    Linus Torvalds
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: (38 commits)
    sata_via: Delay on vt6420 when starting ATAPI DMA write
    ata: Detect Delkin Devices compact flash
    pata_efar: Enable parallel scanning
    pata_atiixp: enable parallel scan
    [libata] pata_atiixp: add locking for parallel scanning
    [libata] pata_efar: add locking for parallel scanning
    libata: Pass host flags into the pci helper
    [libata] pata_marvell: CONFIG_AHCI is really CONFIG_SATA_AHCI
    libata: Allow pata_legacy to be built on non-ISA but PCI systems
    pata_pdc202xx_old: fix UDMA mode for PDC2026x chipsets
    pata_pdc202xx_old: fix UDMA mode for Promise UDMA33 cards
    [libata] pata_at91: fix backslash-continued string
    pata_via: store UDMA masks in via_isa_bridges table
    pata_via: fix address setup timings underlocking
    pata_serverworks: fix error message
    pata_serverworks: fix PIO setup for the second channel
    pata_efar: fix secondary port support
    pata_cypress: fix PIO timings underclocking
    pata_cs5535: use correct values for PIO1 and PIO2 data timings
    pata_cmd64x: remove unused definitions
    ...

    Linus Torvalds
     
  • When writing a disc on certain lite-on dvd-writers (also rebadged
    as optiarc/LG/...) connected to a vt6420, the ATAPI CDB ends
    up in the datastream and on the disc, causing silent corruption.
    Delaying between sending the CDB and starting DMA seems to
    prevent this.

    I do not know if there are burners that do not suffer from
    this, but the patch should be safe for those as well.

    There are many reports of this issue, but AFAICT no solution was
    found before. For example:
    http://lkml.indiana.edu/hypermail/linux/kernel/0802.3/0561.html

    Signed-off-by: Bart Hartgers
    Signed-off-by: Jeff Garzik

    Bart Hartgers
     
  • I have a Delkin Devices compact flash card that isn't being recognized using the
    SATA/PATA drivers.
    The card is recognized and works with the deprecated ATA drivers.

    The error I am seeing is:
    ata1.00: failed to IDENTIFY (device reports invalid type, err_mask=0x0)

    I tracked it down to ata_id_is_cfa() in include/linux/ata.h.
    The Delkin card has id[0] set to 0x844a and id[83] set to 0.
    This isn't what the kernel expects and is probably incorrect.

    The simplest work-around is to add a check for 0x844a to ata_id_is_cfa().

    Signed-off-by: Ben Gardner
    Signed-off-by: Jeff Garzik

    Ben Gardner
     
  • Again originally proposed by Bartlomiej but this does it by using the
    generic helper logic instead.

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • This was originally proposed by Bartlomiej but as a device specific
    expansion of the init_one function rather than making the helper more
    generic.

    Enable the parallel scan via the generic flags.

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • This is similar change as commit 60c3be3 for ata_piix host driver
    and while pata_atiixp doesn't enable parallel scan yet the race
    could probably also be triggered by requesting re-scanning of both
    ports at the same time using SCSI sysfs interface.

    [Ported to current tree without other patch dependancies by Alan Cox]

    Original is
    Signed-off-by: Bartlomiej Zolnierkiewicz

    This one is
    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Bartlomiej Zolnierkiewicz
     
  • Add clearing of UDMA enable bit also for PIO modes and then add
    extra locking for parallel scanning.

    This is similar change as commit 60c3be3 for ata_piix host driver
    and while pata_efar doesn't enable parallel scan yet the race could
    probably also be triggered by requesting re-scanning of both ports
    at the same time using SCSI sysfs interface.

    [Ported to current kernel without other patch dependancies by
    Alan Cox]

    Original is
    Signed-off-by: Bartlomiej Zolnierkiewicz

    This one is
    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Bartlomiej Zolnierkiewicz
     
  • This allows parallel scan and the like to be set without having to stop
    using the existing full helper functions. This patch merely adds the argument
    and fixes up the callers. It doesn't undo the special cases already in the
    tree or add any new parallel callers.

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • The marvell driver comtains a fallback to ahci for the sata ports
    which is incorrectly checked as CONFIG_AHCI while the only AHCI config
    item is actually called SATA_AHCI (which also sounds sensible
    considering it's a fallback for the sata ports).

    Signed-off-by: Christoph Egger
    Signed-off-by: Jeff Garzik

    Christoph Egger
     
  • This is needed for some unsupported hardware setups on strange 64bit
    mainboards where crazy stuff has been done like putting flash ata adapters
    on the LPC bus, or where the real hardware is hidden/confused.

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • PDC2026x chipsets need the same treatment as PDC20246 one.

    This is completely untested but will hopefully fix UDMA issues
    that people have been reporting against pata_pdc202xx_old for
    the last couple of years.

    Signed-off-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Jeff Garzik

    Bartlomiej Zolnierkiewicz
     
  • On Monday 04 January 2010 02:30:24 pm Russell King wrote:

    > Found the problem - getting rid of the read of the alt status register
    > after the command has been written fixes the UDMA CRC errors on write:
    >
    > @@ -676,7 +676,8 @@ void ata_sff_exec_command(struct ata_port *ap, const struct
    > ata_taskfile *tf)
    > DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command);
    >
    > iowrite8(tf->command, ap->ioaddr.command_addr);
    > - ata_sff_pause(ap);
    > + ndelay(400);
    > +// ata_sff_pause(ap);
    > }
    > EXPORT_SYMBOL_GPL(ata_sff_exec_command);
    >
    >
    > This rather makes sense. The PDC20247 handles the UDMA part of the
    > protocol. It has no way to tell the PDC20246 to wait while it suspends
    > UDMA, so that a normal register access can take place - the 246 ploughs
    > on with the register access without any regard to the state of the 247.
    >
    > If the drive immediately starts the UDMA protocol after a write to the
    > command register (as it probably will for the DMA WRITE command), then
    > we'll be accessing the taskfile in the middle of the UDMA setup, which
    > can't be good. It's certainly a violation of the ATA specs.

    Fix it by adding custom ->sff_exec_command method for UDMA33 chipsets.

    Debugged-by: Russell King
    Signed-off-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Jeff Garzik

    Bartlomiej Zolnierkiewicz
     
  • Noticed and rough patch by Joe Perches.

    Signed-off-by: Jeff Garzik

    Jeff Garzik