17 Dec, 2011

21 commits

  • Linus Torvalds
     
  • This reverts commit eb1711bb94991e93669c5a1b5f84f11be2d51ea1.

    It blows up the i915 seqno tracking, resulting in the

    BUG_ON(seqno == 0);

    in i915_wait_request() triggering, which will cause lock-ups.

    See for example
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/903010
    https://lkml.org/lkml/2011/12/14/395

    Reported-requested-and-tested-by: Dirk Hohndel
    Reported-by: Richard Eames
    Reported-by: Rocko Requin
    Acked-by: Daniel Vetter
    Cc: Dave Airlie
    Cc: Chris Wilson
    Cc: Keith Packard
    Cc: Eric Anholt
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc32: Be less strict in matching %lo part of relocation.
    sbus: convert drivers/sbus/char/* to use module_platform_driver()
    bbc_i2c: Remove unneeded err variable
    sparc: Use kmemdup rather than duplicating its implementation

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    ipv6: Check dest prefix length on original route not copied one in rt6_alloc_cow().
    sch_gred: should not use GFP_KERNEL while holding a spinlock
    ipip, sit: copy parms.name after register_netdevice
    ipv6: Fix for adding multicast route for loopback device automatically.
    ssb: fix init regression with SoCs
    rtl8192{ce,cu,de,se}: avoid problems because of possible ERFOFF -> ERFSLEEP transition
    mac80211: fix another race in aggregation start
    fsl_pq_mdio: Clean up tbi address configuration
    ppp: fix pptp double release_sock in pptp_bind()
    net/fec: fix the use of pdev->id
    ath9k: fix check for antenna diversity support
    batman-adv: delete global entry in case of roaming
    batman-adv: in case of roaming mark the client with TT_CLIENT_ROAM
    Bluetooth: Correct version check in hci_setup
    btusb: fix a memory leak in btusb_send_frame()
    Bluetooth: bnep: Fix module reference
    Bluetooth: cmtp: Fix module reference
    Bluetooth: btmrvl: support Marvell Bluetooth device SD8797

    Linus Torvalds
     
  • …inux/kernel/git/mason/linux-btrfs

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: unplug every once and a while
    Btrfs: deal with NULL srv_rsv in the delalloc inode reservation code
    Btrfs: only set cache_generation if we setup the block group
    Btrfs: don't panic if orphan item already exists
    Btrfs: fix leaked space in truncate
    Btrfs: fix how we do delalloc reservations and how we free reservations on error
    Btrfs: deal with enospc from dirtying inodes properly
    Btrfs: fix num_workers_starting bug and other bugs in async thread
    BTRFS: Establish i_ops before calling d_instantiate
    Btrfs: add a cond_resched() into the worker loop
    Btrfs: fix ctime update of on-disk inode
    btrfs: keep orphans for subvolume deletion
    Btrfs: fix inaccurate available space on raid0 profile
    Btrfs: fix wrong disk space information of the files
    Btrfs: fix wrong i_size when truncating a file to a larger size
    Btrfs: fix btrfs_end_bio to deal with write errors to a single mirror

    * 'for-linus-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    btrfs: lower the dirty balance poll interval

    Linus Torvalds
     
  • * 'drm-intel-fixes' of git://people.freedesktop.org/~keithp/linux:
    drm/i915/dp: Dither down to 6bpc if it makes the mode fit
    drm/i915: enable semaphores on per-device defaults
    drm/i915: don't set unpin_work if vblank_get fails
    drm/i915: By default, enable RC6 on IVB and SNB when reasonable
    iommu: Export intel_iommu_enabled to signal when iommu is in use
    drm/i915/sdvo: Include LVDS panels for the IS_DIGITAL check
    drm/i915: prevent division by zero when asking for chipset power
    drm/i915: add PCH info to i915_capabilities
    drm/i915: set the right SDVO transcoder for CPT
    drm/i915: no-lvds quirk for ASUS AT5NM10T-I
    drm/i915: Treat pre-gen4 backlight duty cycle value consistently
    drm/i915: Hook up Ivybridge eDP
    drm/i915: add multi-threaded forcewake support

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: HDA: Use LPIB Position fix for Intel SCH Poulsbo
    ALSA: hda: fix mute led polarity for HP laptops with buggy BIOS
    ALSA: HDA: Set position fix to LPIB for an Atom/Poulsbo based device
    ASoC: Fix hx4700 error handling to free gpios if snd_soc_register_card fails
    ASoC: WM8958: correctly show firmware magic on mismatch
    ASoC: mxs: Add appropriate MODULE_ALIAS()
    ASoC: mxs: Add missing MODULE_LICENSE("GPL")
    ASoC: Fix WM8996 24.576MHz clock operation
    ASoC: Include linux/module.h for smdk2443_wm9710
    ASoC: Fix a typo in jive_wm8750
    ASoC: Fix build dependency for SND_SOC_JZ4740_CODEC
    ASoC: Include linux/io.h for jz4740 codec

    Linus Torvalds
     
  • * 'gpio/merge' of git://git.secretlab.ca/git/linux-2.6:
    gpio: Fix DA9052 GPIO build errors.
    gpio: mpc8xxx: don't allow input-only pins to be output for MPC5121
    gpio-ml-ioh: Add the irq_disable/irq_enable hooks for ml-ioh irq chip
    gpio-ml-ioh: fix a bug in the interrupt handler
    gpio: pl061: drop extra check for NULL platform_data

    Linus Torvalds
     
  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: OMAP: rx51: fix USB
    ARM: OMAP: mcbsp: Fix possible memory corruption
    arm/imx: fix power button on imx51 babbage board
    ARM: imx: fix cpufreq build errors
    ARM: mx5: add __initconst for fec pdata
    MXC PWM: should active during DOZE/WAIT/DBG mode
    ARM: EXYNOS: Fix build error without CONFIG_LOCAL_TIMERS
    ARM: EXYNOS: Fix for stall in case of cpu hotplug or sleep
    ARM: S5PV210: Set 1000ns as PWM backlight period on SMDKV210
    ARM: SAMSUNG: remove duplicated header include

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.dk/linux-block:
    block: don't kick empty queue in blk_drain_queue()
    block/swim3: Locking fixes
    loop: Fix discard_alignment default setting
    cfq-iosched: fix cfq_cic_link() race confition
    cfq-iosched: free cic_index if blkio_alloc_blkg_stats fails
    cciss: fix flush cache transfer length
    cciss: Add IRQF_SHARED back in for the non-MSI(X) interrupt handler
    loop: fix loop block driver discard and encryption comment
    block: initialize request_queue's numa node during

    Linus Torvalds
     
  • Tests show that the original large intervals can easily make the dirty
    limit exceeded on 100 concurrent dd's. So adapt to as large as the
    next check point selected by the dirty throttling algorithm.

    Signed-off-by: Wu Fengguang
    Signed-off-by: Chris Mason

    Wu Fengguang
     
  • Some active adaptors (VGA usually) only have two lanes at 2.7GHz.
    That's a maximum pixel clock of 144MHz at 8bpc, but 192MHz at 6bpc.

    Fixes Asus UX31 panel being black at startup due to no valid modes since
    dc22ee6fc18ce0f15424e753e8473c306ece95c1.

    v2: Rebased to current code, resulting in the fix applying to EDP panels as
    well. Also changed from spatio-temporal to just spatial dithering on
    pre-ironlake, to be conssitent (and less visual flicker)

    Signed-off-by: Adam Jackson
    Signed-off-by: Eric Anholt
    Tested-by: Eric Anholt
    Tested-by: Dirk Hohndel
    Signed-off-by: Keith Packard

    Adam Jackson
     
  • This adds a default setting for semaphores parameter, and enables
    semaphores by default on IVB.

    For now, as semaphores interaction with VTd causes random issues on
    SNB, we do not enable them by default. But they can still be enabled
    via the semaphores=1 kernel parameter.

    v2: enables semaphores on SNB when IO remapping is disabled, with base
    on Keith Packard patch.

    CC: Daniel Vetter
    CC: Ben Widawsky
    CC: Keith Packard
    CC: Jesse Barnes
    CC: Chris Wilson
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42696
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40564
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41353
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38862
    Reviewed-by: Chris Wilson
    Reviewed-by: Daniel Vetter
    Signed-off-by: Eugeni Dodonov
    Signed-off-by: Keith Packard

    Eugeni Dodonov
     
  • This fixes a race where we may try to finish a page flip and decrement
    the refcount even if our vblank_get failed and we ended up with a
    spurious flip pending interrupt.

    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=34211.

    Signed-off-by: Jesse Barnes
    Signed-off-by: Keith Packard

    Jesse Barnes
     
  • RC6 should always work on IVB, and should work on SNB whenever IO
    remapping is disabled. RC6 never works on Ironlake. Make the default
    value for the parameter follow these guidelines. Setting the value
    to either 0 or 1 will force the specified behavior.

    Signed-off-by: Keith Packard
    Reviewed-by: Kenneth Graunke
    Reviewed-by: Eugeni Dodonov
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38567
    Cc: Ted Phelps
    Cc: Peter
    Cc: Lukas Hejtmanek
    Cc: Andrew Lutomirski

    Keith Packard
     
  • In i915 driver, we do not enable either rc6 or semaphores on SNB when dmar
    is enabled. The new 'intel_iommu_enabled' variable signals when the
    iommu code is in operation.

    Cc: Ted Phelps
    Cc: Peter
    Cc: Lukas Hejtmanek
    Cc: Andrew Lutomirski
    CC: Daniel Vetter
    Cc: Eugeni Dodonov
    Signed-off-by: Keith Packard

    Eugeni Dodonov
     
  • We were checking whether the supplied edid matched the connector it was
    read from. We do this in case a DDC read returns an EDID for another
    device on a multifunction or otherwise interesting card. However, we
    failed to include LVDS as a digital device and so rejecting an otherwise
    valid EDID.

    Fixes the detection of the secondary SDVO LVDS panel on the Libretto
    W105.

    Signed-off-by: Chris Wilson
    Reviewed-by: Adam Jackson
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39216
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • This prevents an in-kernel division by zero which happens when we are
    asking for i915_chipset_val too quickly, or within a race condition
    between the power monitoring thread and userspace accesses via debugfs.

    The issue can be reproduced easily via the following command:
    while ``; do cat /sys/kernel/debug/dri/0/i915_emon_status; done

    This is particularly dangerous because it can be triggered by
    a non-privileged user by just reading the debugfs entry.

    This issue was also found independently by Konstantin Belousov
    , who proposed a similar patch.

    Reported-by: Konstantin Belousov
    Acked-by: Jesse Barnes
    Acked-by: Keith Packard
    Reviewed-by: Chris Wilson
    Cc:
    Signed-off-by: Eugeni Dodonov
    Signed-off-by: Keith Packard

    Eugeni Dodonov
     
  • Signed-off-by: Chris Wilson
    Signed-off-by: Paulo Zanoni
    Signed-off-by: Keith Packard

    Paulo Zanoni
     
  • v2: add a CPT-specific macro, make code cleaner
    v3: fix commit message

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41272
    Cc: stable@kernel.org
    Signed-off-by: Paulo Zanoni
    Reviewed-by: Chris Wilson
    Signed-off-by: Keith Packard

    Paulo Zanoni
     
  • https://bugzilla.redhat.com/show_bug.cgi?id=750006

    Signed-off-by: Adam Jackson
    Signed-off-by: Keith Packard

    Adam Jackson
     

16 Dec, 2011

19 commits

  • …kgene/linux-samsung into fixes

    Olof Johansson
     
  • Olof Johansson
     
  • * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/ibft:
    ibft: Fix finding IBFT ACPI table on UEFI

    Linus Torvalds
     
  • * 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: r8712u: Add new USB ID
    staging: tidspbridge: request dmtimer clocks on init
    staging: tidspbridge: include module.h by default

    Linus Torvalds
     
  • * 'usb-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: option: Removing one bogus and adding some new Huawei combinations
    USB: cdc-acm: add IDs for Motorola H24 HSPA USB module.
    usb: option: Add Huawei E398 controlling interfaces
    usb: renesas_usbhs: add hcd->has_tt for low/full speed
    usb: renesas_usbhs: typofix: irq_dtch control DTCHE
    usb: gadget: storage: release superspeed descriptors.

    Linus Torvalds
     
  • The bisection implemented in unwind_find_origin() stopped to early. If
    there is only a single entry left to check the original code just took
    the end point as origin which might be wrong.

    This was introduced in commit de66a979012d ("ARM: 7187/1: fix unwinding
    for XIP kernels").

    Reported-and-tested-by: Nick Bowler
    Signed-off-by: Uwe Kleine-König
    Signed-off-by: Linus Torvalds

    Uwe Kleine-König
     
  • The btrfs io submission threads can build up massive plug lists. This
    keeps things more reasonable so we don't hand over huge dumps of IO at
    once.

    Signed-off-by: Chris Mason

    Chris Mason
     
  • While probing, fd sets up queue, probes hardware and tears down the
    queue if probing fails. In the process, blk_drain_queue() kicks the
    queue which failed to finish initialization and fd is unhappy about
    that.

    floppy0: no floppy controllers found
    ------------[ cut here ]------------
    WARNING: at drivers/block/floppy.c:2929 do_fd_request+0xbf/0xd0()
    Hardware name: To Be Filled By O.E.M.
    VFS: do_fd_request called on non-open device
    Modules linked in:
    Pid: 1, comm: swapper Not tainted 3.2.0-rc4-00077-g5983fe2 #2
    Call Trace:
    [] warn_slowpath_common+0x7a/0xb0
    [] warn_slowpath_fmt+0x41/0x50
    [] do_fd_request+0xbf/0xd0
    [] blk_drain_queue+0x65/0x80
    [] blk_cleanup_queue+0xe3/0x1a0
    [] floppy_init+0xdeb/0xe28
    [] ? daring+0x6b/0x6b
    [] do_one_initcall+0x3f/0x170
    [] kernel_init+0x9d/0x11e
    [] ? schedule_tail+0x22/0xa0
    [] kernel_thread_helper+0x4/0x10
    [] ? start_kernel+0x2be/0x2be
    [] ? gs_change+0xb/0xb

    Avoid it by making blk_drain_queue() kick queue iff dispatch queue has
    something on it.

    Signed-off-by: Tejun Heo
    Reported-by: Ralf Hildebrandt
    Reported-by: Wu Fengguang
    Tested-by: Sergei Trofimovich
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • …kernel/git/konrad/xen

    * 'stable/for-linus-fixes-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen/swiotlb: Use page alignment for early buffer allocation.
    xen: only limit memory map to maximum reservation for domain 0.

    Linus Torvalds
     
  • …/btrfs-work into integration

    Conflicts:
    fs/btrfs/inode.c

    Signed-off-by: Chris Mason <chris.mason@oracle.com>

    Chris Mason
     
  • btrfs_update_inode is sometimes called with a null reservation.

    Signed-off-by: Chris Mason

    Chris Mason
     
  • This patch is functionally tested on Samsung SMDKV6410.

    Reported-by: Stephen Rothwell
    Signed-off-by: David Dajun Chen
    Signed-off-by: Ashish Jangam
    [grant.likely: don't create an unnecessary header file]
    Signed-off-by: Grant Likely

    Ashish Jangam
     
  • This fixes an odd bug found on a Dell PowerEdge 1850/0RC130
    (BIOS A05 01/09/2006) where all of the modules doing pci_set_dma_mask
    would fail with:

    ata_piix 0000:00:1f.1: enabling device (0005 -> 0007)
    ata_piix 0000:00:1f.1: can't derive routing for PCI INT A
    ata_piix 0000:00:1f.1: BMDMA: failed to set dma mask, falling back to PIO

    The issue was the Xen-SWIOTLB was allocated such as that the end of
    buffer was stradling a page (and also above 4GB). The fix was
    spotted by Kalev Leonid which was to piggyback on git commit
    e79f86b2ef9c0a8c47225217c1018b7d3d90101c "swiotlb: Use page alignment
    for early buffer allocation" which:

    We could call free_bootmem_late() if swiotlb is not used, and
    it will shrink to page alignment.

    So alloc them with page alignment at first, to avoid lose two pages

    And doing that fixes the outstanding issue.

    CC: stable@kernel.org
    Suggested-by: "Kalev, Leonid"
    Reported-and-Tested-by: "Taylor, Neal E"
    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • d312ae878b6a "xen: use maximum reservation to limit amount of usable RAM"
    clamped the total amount of RAM to the current maximum reservation. This is
    correct for dom0 but is not correct for guest domains. In order to boot a guest
    "pre-ballooned" (e.g. with memory=1G but maxmem=2G) in order to allow for
    future memory expansion the guest must derive max_pfn from the e820 provided by
    the toolstack and not the current maximum reservation (which can reflect only
    the current maximum, not the guest lifetime max). The existing algorithm
    already behaves this correctly if we do not artificially limit the maximum
    number of pages for the guest case.

    For a guest booted with maxmem=512, memory=128 this results in:
    [ 0.000000] BIOS-provided physical RAM map:
    [ 0.000000] Xen: 0000000000000000 - 00000000000a0000 (usable)
    [ 0.000000] Xen: 00000000000a0000 - 0000000000100000 (reserved)
    -[ 0.000000] Xen: 0000000000100000 - 0000000008100000 (usable)
    -[ 0.000000] Xen: 0000000008100000 - 0000000020800000 (unusable)
    +[ 0.000000] Xen: 0000000000100000 - 0000000020800000 (usable)
    ...
    [ 0.000000] NX (Execute Disable) protection: active
    [ 0.000000] DMI not present or invalid.
    [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
    [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
    -[ 0.000000] last_pfn = 0x8100 max_arch_pfn = 0x1000000
    +[ 0.000000] last_pfn = 0x20800 max_arch_pfn = 0x1000000
    [ 0.000000] initial memory mapped : 0 - 027ff000
    [ 0.000000] Base memory trampoline at [c009f000] 9f000 size 4096
    -[ 0.000000] init_memory_mapping: 0000000000000000-0000000008100000
    -[ 0.000000] 0000000000 - 0008100000 page 4k
    -[ 0.000000] kernel direct mapping tables up to 8100000 @ 27bb000-27ff000
    +[ 0.000000] init_memory_mapping: 0000000000000000-0000000020800000
    +[ 0.000000] 0000000000 - 0020800000 page 4k
    +[ 0.000000] kernel direct mapping tables up to 20800000 @ 26f8000-27ff000
    [ 0.000000] xen: setting RW the range 27e8000 - 27ff000
    [ 0.000000] 0MB HIGHMEM available.
    -[ 0.000000] 129MB LOWMEM available.
    -[ 0.000000] mapped low ram: 0 - 08100000
    -[ 0.000000] low ram: 0 - 08100000
    +[ 0.000000] 520MB LOWMEM available.
    +[ 0.000000] mapped low ram: 0 - 20800000
    +[ 0.000000] low ram: 0 - 20800000

    With this change "xl mem-set 512M" will successfully increase the
    guest RAM (by reducing the balloon).

    There is no change for dom0.

    Reported-and-Tested-by: George Shuklin
    Signed-off-by: Ian Campbell
    Cc: stable@kernel.org
    Reviewed-by: David Vrabel
    Signed-off-by: Konrad Rzeszutek Wilk

    Ian Campbell
     
  • A user reported a problem booting into a new kernel with the old format inodes.
    He was panicing in cow_file_range while writing out the inode cache. This is
    because if the block group is not cached we'll just skip writing out the cache,
    however if it gets dirtied again in the same transaction and it finished caching
    we'd go ahead and write it out, but since we set cache_generation to the transid
    we think we've already truncated it and will just carry on, running into
    cow_file_range and blowing up. We need to make sure we only set
    cache_generation if we've done the truncate. The user tested this patch and
    verified that the panic no longer occured. Thanks,

    Reported-and-Tested-by: Klaus Bitto
    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • I've been hitting this BUG_ON() in btrfs_orphan_add when running xfstest 269 in
    a loop. This is because we will add an orphan item, do the truncate, the
    truncate will fail for whatever reason (*cough*ENOSPC*cough*) and then we're
    left with an orphan item still in the fs. Then we come back later to do another
    truncate and it blows up because we already have an orphan item. This is ok so
    just fix the BUG_ON() to only BUG() if ret is not EEXIST. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • We were occasionaly leaking space when running xfstest 269. This is because if
    we failed to start the transaction in the truncate loop we'd just goto out, but
    we need to break so that the inode is removed from the orphan list and the space
    is properly freed. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • Running xfstests 269 with some tracing my scripts kept spitting out errors about
    releasing bytes that we didn't actually have reserved. This took me down a huge
    rabbit hole and it turns out the way we deal with reserved_extents is wrong,
    we need to only be setting it if the reservation succeeds, otherwise the free()
    method will come in and unreserve space that isn't actually reserved yet, which
    can lead to other warnings and such. The math was all working out right in the
    end, but it caused all sorts of other issues in addition to making my scripts
    yell and scream and generally make it impossible for me to track down the
    original issue I was looking for. The other problem is with our error handling
    in the reservation code. There are two cases that we need to deal with

    1) We raced with free. In this case free won't free anything because csum_bytes
    is modified before we dro the lock in our reservation path, so free rightly
    doesn't release any space because the reservation code may be depending on that
    reservation. However if we fail, we need the reservation side to do the free at
    that point since that space is no longer in use. So as it stands the code was
    doing this fine and it worked out, except in case #2

    2) We don't race with free. Nobody comes in and changes anything, and our
    reservation fails. In this case we didn't reserve anything anyway and we just
    need to clean up csum_bytes but not free anything. So we keep track of
    csum_bytes before we drop the lock and if it hasn't changed we know we can just
    decrement csum_bytes and carry on.

    Because of the case where we can race with free()'s since we have to drop our
    spin_lock to do the reservation, I'm going to serialize all reservations with
    the i_mutex. We already get this for free in the heavy use paths, truncate and
    file write all hold the i_mutex, just needed to add it to page_mkwrite and
    various ioctl/balance things. With this patch my space leak scripts no longer
    scream bloody murder. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • Now that we're properly keeping track of delayed inode space we've been getting
    a lot of warnings out of btrfs_dirty_inode() when running xfstest 83. This is
    because a bunch of people call mark_inode_dirty, which is void so we can't
    return ENOSPC. This needs to be fixed in a few areas

    1) file_update_time - this updates the mtime and such when writing to a file,
    which will call mark_inode_dirty. So copy file_update_time into btrfs so we can
    call btrfs_dirty_inode directly and return an error if we get one appropriately.

    2) fix symlinks to use btrfs_setattr for ->setattr. For some reason we weren't
    setting ->setattr for symlinks, even though we should have been. This catches
    one of the cases where we were getting errors in mark_inode_dirty.

    3) Fix btrfs_setattr and btrfs_setsize to call btrfs_dirty_inode directly
    instead of mark_inode_dirty. This lets us return errors properly for truncate
    and chown/anything related to setattr.

    4) Add a new btrfs_fs_dirty_inode which will just call btrfs_dirty_inode and
    print an error if we have one. The only remaining user we can't control for
    this is touch_atime(), but we don't really want to keep people from walking
    down the tree if we don't have space to save the atime update, so just complain
    but don't worry about it.

    With this patch xfstests 83 complains a handful of times instead of hundreds of
    times. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik