12 Aug, 2013

17 commits


11 Aug, 2013

6 commits

  • Pull btrfs fixes from Chris Mason:
    "These are assorted fixes, mostly from Josef nailing down xfstests
    runs. Zach also has a long standing fix for problems with readdir
    wrapping f_pos (or ctx->pos)

    These patches were spread out over different bases, so I rebased
    things on top of rc4 and retested overnight"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    btrfs: don't loop on large offsets in readdir
    Btrfs: check to see if root_list is empty before adding it to dead roots
    Btrfs: release both paths before logging dir/changed extents
    Btrfs: allow splitting of hole em's when dropping extent cache
    Btrfs: make sure the backref walker catches all refs to our extent
    Btrfs: fix backref walking when we hit a compressed extent
    Btrfs: do not offset physical if we're compressed
    Btrfs: fix extent buffer leak after backref walking
    Btrfs: fix a bug of snapshot-aware defrag to make it work on partial extents
    btrfs: fix file truncation if FALLOC_FL_KEEP_SIZE is specified

    Linus Torvalds
     
  • Pull NFS client bugfixes from Trond Myklebust:

    - Stable patch for lockd to fix Oopses due to inappropriate calls to
    utsname()->nodename

    - Stable patches for sunrpc to fix Oopses on shutdown when using
    AF_LOCAL sockets with rpcbind

    - Fix memory leak and error checking issues in nfs4_proc_lookup_mountpoint

    - Fix a regression with the sync mount option failing to work for nfs4
    mounts

    - Fix a writeback performance issue when doing cache invalidation

    - Remove an incorrect call to nfs_setsecurity in nfs_fhget

    * tag 'nfs-for-3.11-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFSv4: Fix up nfs4_proc_lookup_mountpoint
    NFS: Remove unnecessary call to nfs_setsecurity in nfs_fhget()
    NFSv4: Fix the sync mount option for nfs4 mounts
    NFS: Fix writeback performance issue on cache invalidation
    SUNRPC: If the rpcbind channel is disconnected, fail the call to unregister
    SUNRPC: Don't auto-disconnect from the local rpcbind socket
    LOCKD: Don't call utsname()->nodename from nlmclnt_setlockargs

    Linus Torvalds
     
  • Pull nfsd fixes from Bruce Fields:
    "Some fixes for a 4.1 feature that in retrospect probably should have
    waited for 3.12.... But it appears to be working now"

    * 'for-3.11' of git://linux-nfs.org/~bfields/linux:
    nfsd: Fix SP4_MACH_CRED negotiation in EXCHANGE_ID
    nfsd4: Fix MACH_CRED NULL dereference

    Linus Torvalds
     
  • Pull sound fixes from Takashi Iwai:
    "A couple of USB-audio fixes that should also go to stable kernels"

    * tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: usb-audio: do not trust too-big wMaxPacketSize values
    ALSA: 6fire: fix DMA issues with URB transfer_buffer usage

    Linus Torvalds
     
  • Pull staging driver fixes from Greg KH:
    "Here are 3 small fixes for staging/IIO drivers for 3.11-rc5. Nothing
    huge, two IIO driver fixes, and a zcache fix. All of these have been
    in linux-next for a while"

    * tag 'staging-3.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: zcache: fix "zcache=" kernel parameter
    iio: ti_am335x_adc: Fix wrong samples received on 1st read
    iio:trigger: Fix use_count race condition

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are 3 small USB fixes for 3.11-rc5.

    One is a fix that the ChromeOS developers ran into on some Intel
    hardware, one is a build fix, and the last is a MAINTAINERS update to
    help people figure out where to send USB network driver patches.

    All of these have been in linux-next for a while"

    * tag 'usb-3.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    MAINTAINERS: Add separate section for USB NETWORKING DRIVERS
    usb: xhci: add missing dma-mapping.h includes
    usb: core: don't try to reset_device() a port that got just disconnected

    Linus Torvalds
     

10 Aug, 2013

17 commits

  • When btrfs readdir() hits the last entry it sets the readdir offset to a
    huge value to stop buggy apps from breaking when the same name is
    returned by readdir() with concurrent rename()s.

    But unconditionally setting the offset to INT_MAX causes readdir() to
    loop returning any entries with offsets past INT_MAX. It only takes a
    few hours of constant file creation and removal to create entries past
    INT_MAX.

    So let's set the huge offset to LLONG_MAX if the last entry has already
    overflowed 32bit loff_t. Without large offsets behaviour is identical.
    With large offsets 64bit apps will work and 32bit apps will be no more
    broken than they currently are if they see large offsets.

    Signed-off-by: Zach Brown
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Zach Brown
     
  • A user reported a panic when running with autodefrag and deleting snapshots.
    This is because we could end up trying to add the root to the dead roots list
    twice. To fix this check to see if we are empty before adding ourselves to the
    dead roots list. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • The ceph guys tripped over this bug where we were still holding onto the
    original path that we used to copy the inode with when logging. This is based
    on Chris's fix which was reported to fix the problem. We need to drop the paths
    in two cases anyway so just move the drop up so that we don't have duplicate
    code. Thanks,

    Cc: stable@vger.kernel.org
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • I noticed while running multi-threaded fsync tests that sometimes fsck would
    complain about an improper gap. This happens because we fail to add a hole
    extent to the file, which was happening when we'd split a hole EM because
    btrfs_drop_extent_cache was just discarding the whole em instead of splitting
    it. So this patch fixes this by allowing us to split a hole em properly, which
    means that added holes actually get logged properly and we no longer see this
    fsck error. Thankfully we're tolerant of these sort of problems so a user would
    not see any adverse effects of this bug, other than fsck complaining. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • Because we don't mess with the offset into the extent for compressed we will
    properly find both extents for this case

    [extent a][extent b][rest of extent a]

    but because we already added a ref for the front half we won't add the inode
    information for the second half. This causes us to leak that memory and not
    print out the other offset when we do logical-resolve. So fix this by calling
    ulist_add_merge and then add our eie to the existing entry if there is one.
    With this patch we get both offsets out of logical-resolve. With this and the
    other 2 patches I've sent we now pass btrfs/276 on my vm with compress-force=lzo
    set. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • If you do btrfs inspect-internal logical-resolve on a compressed extent that has
    been partly overwritten it won't find anything. This is because we try and
    match the extent offset we've searched for based on the extent offset in the
    data extent entry. However this doesn't work for compressed extents because the
    offsets are for the uncompressed size, not the compressed size. So instead only
    do this check if we are not compressed, that way we can get an actual entry for
    the physical offset rather than nothing for compressed. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • xfstest btrfs/276 was freaking out on slower boxes partly because fiemap was
    offsetting the physical based on the extent offset. This is perfectly fine with
    uncompressed extents, however the extent offset is into the uncompressed area,
    not the compressed. So we can return a physical value that isn't at all within
    the area we have allocated on disk. Fix this by returning the start of the
    extent if it is compressed no matter what the offset. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • commit 47fb091fb787420cd195e66f162737401cce023f(Btrfs: fix unlock after free on rewinded tree blocks)
    takes an extra increment on the reference of allocated dummy extent buffer, so now we
    cannot free this dummy one, and end up with extent buffer leak.

    Signed-off-by: Liu Bo
    Reviewed-by: Jan Schmidt
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Liu Bo
     
  • For partial extents, snapshot-aware defrag does not work as expected,
    since
    a) we use the wrong logical offset to search for parents, which should be
    disk_bytenr + extent_offset, not just disk_bytenr,
    b) 'offset' returned by the backref walking just refers to key.offset, not
    the 'offset' stored in btrfs_extent_data_ref which is
    (key.offset - extent_offset).

    The reproducer:
    $ mkfs.btrfs sda
    $ mount sda /mnt
    $ btrfs sub create /mnt/sub
    $ for i in `seq 5 -1 1`; do dd if=/dev/zero of=/mnt/sub/foo bs=5k count=1 seek=$i conv=notrunc oflag=sync; done
    $ btrfs sub snap /mnt/sub /mnt/snap1
    $ btrfs sub snap /mnt/sub /mnt/snap2
    $ sync; btrfs filesystem defrag /mnt/sub/foo;
    $ umount /mnt
    $ btrfs-debug-tree sda (Here we can check whether the defrag operation is snapshot-awared.

    This addresses the above two problems.

    Signed-off-by: Liu Bo
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Liu Bo
     
  • Create a small file and fallocate it to a big size with
    FALLOC_FL_KEEP_SIZE option, then truncate it back to the
    small size again, the disk free space is not changed back
    in this case. i.e,

    total 4
    -rw-r--r-- 1 root root 512 Jun 28 11:35 test

    Filesystem Size Used Avail Use% Mounted on
    ....
    /dev/sdb1 8.0G 56K 7.2G 1% /mnt

    -rw-r--r-- 1 root root 512 Jun 28 11:35 /mnt/test

    Filesystem Size Used Avail Use% Mounted on
    ....
    /dev/sdb1 8.0G 5.1G 2.2G 70% /mnt

    Filesystem Size Used Avail Use% Mounted on
    ....
    /dev/sdb1 8.0G 5.1G 2.2G 70% /mnt

    With this fix, the truncated up space is back as:
    Filesystem Size Used Avail Use% Mounted on
    ....
    /dev/sdb1 8.0G 56K 7.2G 1% /mnt

    Signed-off-by: Jie Liu
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Jie Liu
     
  • Pull ACPI and power management fixes from Rafael Wysocki:

    - ACPI-based memory hotplug stopped working after a recent change,
    because it's not possible to associate sufficiently many "physical"
    devices with one ACPI device object due to an artificial limit. Fix
    from Rafael J Wysocki removes that limit and makes memory hotplug
    work again.

    - A change made in 3.9 uncovered a bug in the ACPI processor driver
    preventing NUMA nodes from being put offline due to an ordering
    issue. Fix from Yasuaki Ishimatsu changes the ordering to make
    things work again.

    - One of the recent ACPI video commits (that hasn't been reverted so
    far) uncovered a bug in the code handling quirky BIOSes that caused
    some Asus machines to boot with backlight completely off which made
    it quite difficult to use them afterward. Fix from Felipe Contreras
    improves the quirk to cover this particular case correctly.

    - A cpufreq user space interface change made in 3.10 inadvertently
    renamed the ignore_nice_load sysfs attribute to ignore_nice which
    resulted in some confusion. Fix from Viresh Kumar changes the name
    back to ignore_nice_load.

    - An initialization ordering change made in 3.9 broke cpufreq on
    loongson2 boards. Fix from Aaro Koskinen restores the correct
    initialization ordering there.

    - Fix breakage resulting from a mistake made in 3.9 and causing the
    detection of some graphics adapters (that were detected correctly
    before) to fail. There are two objects representing the same PCIe
    port in the affected systems' ACPI tables and both appear as
    "enabled" and we are expected to guess which one to use. We used to
    choose the right one before by pure luck, but when we tried to
    address another similar corner case, the luck went away. This time
    we try to make our guessing a bit more educated which is reported to
    work on those systems.

    - The /proc/acpi/wakeup interface code is missing some locking which
    may lead to breakage if that file is written or read during hotplug
    of wakeup devices. That should be rare but still possible, so it's
    better to start using the appropriate locking there.

    * tag 'pm+acpi-3.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI: Try harder to resolve _ADR collisions for bridges
    cpufreq: rename ignore_nice as ignore_nice_load
    cpufreq: loongson2: fix regression related to clock management
    ACPI / processor: move try_offline_node() after acpi_unmap_lsapic()
    ACPI: Drop physical_node_id_bitmap from struct acpi_device
    ACPI / PM: Walk physical_node_list under physical_node_lock
    ACPI / video: improve quirk check in acpi_video_bqc_quirk()

    Linus Torvalds
     
  • Pull hwmon fix from Guenter Roeck:
    "Fix bug in adt7470 driver which causes it to fail writing fan speed
    limits"

    * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: (adt7470) Fix incorrect return code check

    Linus Torvalds
     
  • Pull media fixes from Mauro Carvalho Chehab:
    "Some driver fixes (em28xx, coda, usbtv, s5p, hdpvr and ml86v7667) and
    a fix for media DocBook"

    * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
    [media] em28xx: fix assignment of the eeprom data
    [media] hdpvr: fix iteration over uninitialized lists in hdpvr_probe()
    [media] usbtv: fix dependency
    [media] usbtv: Throw corrupted frames away
    [media] usbtv: Fix deinterlacing
    [media] v4l2: added missing mutex.h include to v4l2-ctrls.h
    [media] DocBook: upgrade media_api DocBook version to 4.2
    [media] ml86v7667: fix compile warning: 'ret' set but not used
    [media] s5p-g2d: Fix registration failure
    [media] media: coda: Fix DT driver data pointer for i.MX27
    [media] s5p-mfc: Fix input/output format reporting

    Linus Torvalds
     
  • Pull HID fix from Jiri Kosina:
    "Revert of a patch which breaks enumeration workaround in
    hid-logitech-dj"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
    Revert "HID: hid-logitech-dj: querying_devices was never set"

    Linus Torvalds
     
  • Pull fbdev fixes from Tomi Valkeinen:
    - omapdss: compilation fix and DVI fix for PandaBoard
    - mxsfb: fix colors when using 18bit LCD bus

    * tag 'fbdev-fixes-3.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux:
    ARM: OMAP: dss-common: fix Panda's DVI DDC channel
    video: mxsfb: fix color settings for 18bit data bus and 32bpp
    OMAPDSS: analog-tv-connector: compile fix

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "Mostly radeon, more fixes for dynamic power management which is is off
    by default for this release anyways, but there are a large number of
    testers, so I'd like to keep merging the fixes.

    Otherwise, radeon UVD fixes affecting suspend/resume regressions, i915
    regression fixes, one for your mac mini, ast, mgag200, cirrus ttm fix
    and one regression fix in the core"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (25 commits)
    drm: Don't pass negative delta to ktime_sub_ns()
    drm/radeon: make missing smc ucode non-fatal
    drm/radeon/dpm: require rlc for dpm
    drm/radeon/cik: use a mutex to properly lock srbm instanced registers
    drm/radeon: remove unnecessary unpin
    drm/radeon: add more UVD CS checking
    drm/radeon: stop sending invalid UVD destroy msg
    drm/radeon: only save UVD bo when we have open handles
    drm/radeon: always program the MC on startup
    drm/radeon: fix audio dto calculation on DCE3+ (v3)
    drm/radeon/dpm: disable sclk ss on rv6xx
    drm/radeon: fix halting UVD
    drm/radeon/dpm: adjust power state properly for UVD on SI
    drm/radeon/dpm: fix spread spectrum setup (v2)
    drm/radeon/dpm: adjust thermal protection requirements
    drm/radeon: select audio dto based on encoder id for DCE3
    drm/radeon: properly handle pm on gpu reset
    drm/i915: do not disable backlight on vgaswitcheroo switch off
    drm/i915: Don't call encoder's get_config unless encoder is active
    drm/i915: avoid brightness overflow when doing scale
    ...

    Linus Torvalds
     
  • device_close()->recalc_sigpending() is not needed, sigprocmask() takes
    care of TIF_SIGPENDING correctly.

    And without ->siglock it is racy and wrong, it can wrongly clear
    TIF_SIGPENDING and miss a signal.

    But even with this patch device_close() is still buggy:

    1. sigprocmask() should not be used, we have set_task_blocked(),
    but this is minor.

    2. We should never block SIGKILL or SIGSTOP, and this is what
    the code tries to do.

    3. This can't protect against SIGKILL or SIGSTOP anyway. Another
    thread can do signal_wake_up(), say, do_signal_stop() or
    complete_signal() or debugger.

    4. sigprocmask(SIG_BLOCK, allsigs) doesn't necessarily clears
    TIF_SIGPENDING, say, freezing() or ->jobctl.

    5. device_write() looks equally wrong by the same reason.

    Looks like, this tries to protect some wait_event_interruptible() logic
    from signals, it should be turned into uninterruptible wait. Or we need
    to implement something like signals_stop/start for such a use-case.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Oleg Nesterov