08 Jan, 2013

3 commits

  • The spi-pxa2xx-pci glue driver had to implement pxa_ssp_request()/free() in
    order to support the spi-pxa2xx platform driver. Since the ACPI enabled
    platforms can use the same platform driver we would need to implement
    pxa_ssp_request()/free() in some central place that can be shared by the
    ACPI and PCI glue code.

    Instead of doing that we can make pxa_ssp_request()/free() to be available
    only when CONFIG_ARCH_PXA is set. On other arches these are being stubbed
    out in preference to passing the ssp_device from the platform data
    directly.

    We also change the SPI bus number to be taken from ssp->port_id instead of
    platform device id. This way the supporting code that passes the ssp can
    decide the number (or it can set it to the same as pdev->id).

    Signed-off-by: Mika Westerberg
    Signed-off-by: Mark Brown

    Mika Westerberg
     
  • Instead of open-coding all the error management in the driver we can take
    advantage of the pcim_* interfaces that release the resources automatically.

    We also use platform_device_register_full() to register the platform device
    because it allows us to create and register the platform device at one go,
    simplifying the error management.

    This a preparatory step for getting rid of pxa_ssp_request()/free() which
    we will do in the next patch.

    Signed-off-by: Mika Westerberg
    Signed-off-by: Mark Brown

    Mika Westerberg
     
  • Signed-off-by: Mark Brown

    Mark Brown
     

03 Jan, 2013

14 commits

  • Linus Torvalds
     
  • Pull LED fix from Bryan Wu.

    * 'fixes-for-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds:
    leds: leds-gpio: set devm_gpio_request_one() flags param correctly

    Linus Torvalds
     
  • commit a99d76f leds: leds-gpio: use gpio_request_one

    changed the leds-gpio driver to use gpio_request_one() instead
    of gpio_request() + gpio_direction_output()

    Unfortunately, it also made a semantic change that breaks the
    leds-gpio driver.

    The gpio_request_one() flags parameter was set to:

    GPIOF_DIR_OUT | (led_dat->active_low ^ state)

    Since GPIOF_DIR_OUT is 0, the final flags value will just be the
    XOR'ed value of led_dat->active_low and state.

    This value were used to distinguish between HIGH/LOW output initial
    level and call gpio_direction_output() accordingly.

    With this new semantic gpio_request_one() will take the flags value
    of 1 as a configuration of input direction (GPIOF_DIR_IN) and will
    call gpio_direction_input() instead of gpio_direction_output().

    int gpio_request_one(unsigned gpio, unsigned long flags, const char *label)
    {
    ..
    if (flags & GPIOF_DIR_IN)
    err = gpio_direction_input(gpio);
    else
    err = gpio_direction_output(gpio,
    (flags & GPIOF_INIT_HIGH) ? 1 : 0);
    ..
    }

    The right semantic is to evaluate led_dat->active_low ^ state and
    set the output initial level explicitly.

    Signed-off-by: Javier Martinez Canillas
    Reported-by: Arnaud Patard
    Tested-by: Ezequiel Garcia
    Signed-off-by: Bryan Wu

    Javier Martinez Canillas
     
  • Pull watchdog fixes from Wim Van Sebroeck:
    "This fixes some small errors in the new da9055 driver, eliminates a
    compiler warning and adds DT support for the twl4030_wdt driver (so
    that we can have multiple watchdogs with DT on the omap platforms)."

    * git://www.linux-watchdog.org/linux-watchdog:
    watchdog: twl4030_wdt: add DT support
    watchdog: omap_wdt: eliminate unused variable and a compiler warning
    watchdog: da9055: Don't update wdt_dev->timeout in da9055_wdt_set_timeout error path
    watchdog: da9055: Fix invalid free of devm_ allocated data

    Linus Torvalds
     
  • Pull PCI updates from Bjorn Helgaas:
    "Some fixes for v3.8. They include a fix for the new SR-IOV sysfs
    management support, an expanded quirk for Ricoh SD card readers, a
    Stratus DMI quirk fix, and a PME polling fix."

    * tag '3.8-pci-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI: Reduce Ricoh 0xe822 SD card reader base clock frequency to 50MHz
    PCI/PM: Do not suspend port if any subordinate device needs PME polling
    PCI: Add PCIe Link Capability link speed and width names
    PCI: Work around Stratus ftServer broken PCIe hierarchy (fix DMI check)
    PCI: Remove spurious error for sriov_numvfs store and simplify flow

    Linus Torvalds
     
  • Commit 56c176c9cac9 ("UAPI: strip the _UAPI prefix from header guards
    during header installation") strips the _UAPI prefix from header guards,
    but only if there's a single space between the cpp directive and the
    label.

    Make it more flexible and able to handle tabs and multiple white space
    characters.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Empty files can get deleted by the patch program, so remove empty Kbuild
    files and their links from the parent Kbuilds.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Pull ecryptfs fixes from Tyler Hicks:
    "Two self-explanatory fixes and a third patch which improves
    performance: when overwriting a full page in the eCryptfs page cache,
    skip reading in and decrypting the corresponding lower page."

    * tag 'ecryptfs-3.8-rc2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs:
    fs/ecryptfs/crypto.c: make ecryptfs_encode_for_filename() static
    eCryptfs: fix to use list_for_each_entry_safe() when delete items
    eCryptfs: Avoid unnecessary disk read and data decryption during writing

    Linus Torvalds
     
  • Pull Ceph fixes from Sage Weil:
    "Two of Alex's patches deal with a race when reseting server
    connections for open RBD images, one demotes some non-fatal BUGs to
    WARNs, and my patch fixes a protocol feature bit failure path."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
    libceph: fix protocol feature mismatch failure path
    libceph: WARN, don't BUG on unexpected connection states
    libceph: always reset osds when kicking
    libceph: move linger requests sooner in kick_requests()

    Linus Torvalds
     
  • Sasha was fuzzing with trinity and reported the following problem:

    BUG: sleeping function called from invalid context at kernel/mutex.c:269
    in_atomic(): 1, irqs_disabled(): 0, pid: 6361, name: trinity-main
    2 locks held by trinity-main/6361:
    #0: (&mm->mmap_sem){++++++}, at: [] __do_page_fault+0x1e4/0x4f0
    #1: (&(&mm->page_table_lock)->rlock){+.+...}, at: [] handle_pte_fault+0x3f7/0x6a0
    Pid: 6361, comm: trinity-main Tainted: G W
    3.7.0-rc2-next-20121024-sasha-00001-gd95ef01-dirty #74
    Call Trace:
    __might_sleep+0x1c3/0x1e0
    mutex_lock_nested+0x29/0x50
    mpol_shared_policy_lookup+0x2e/0x90
    shmem_get_policy+0x2e/0x30
    get_vma_policy+0x5a/0xa0
    mpol_misplaced+0x41/0x1d0
    handle_pte_fault+0x465/0x6a0

    This was triggered by a different version of automatic NUMA balancing
    but in theory the current version is vunerable to the same problem.

    do_numa_page
    -> numa_migrate_prep
    -> mpol_misplaced
    -> get_vma_policy
    -> shmem_get_policy

    It's very unlikely this will happen as shared pages are not marked
    pte_numa -- see the page_mapcount() check in change_pte_range() -- but
    it is possible.

    To address this, this patch restores sp->lock as originally implemented
    by Kosaki Motohiro. In the path where get_vma_policy() is called, it
    should not be calling sp_alloc() so it is not necessary to treat the PTL
    specially.

    Signed-off-by: KOSAKI Motohiro
    Tested-by: KOSAKI Motohiro
    Signed-off-by: Mel Gorman
    Signed-off-by: Linus Torvalds

    Mel Gorman
     
  • Pull ext4 bug fixes from Ted Ts'o:
    "Various bug fixes for ext4. Perhaps the most serious bug fixed is one
    which could cause file system corruptions when performing file punch
    operations."

    * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: avoid hang when mounting non-journal filesystems with orphan list
    ext4: lock i_mutex when truncating orphan inodes
    ext4: do not try to write superblock on ro remount w/o journal
    ext4: include journal blocks in df overhead calcs
    ext4: remove unaligned AIO warning printk
    ext4: fix an incorrect comment about i_mutex
    ext4: fix deadlock in journal_unmap_buffer()
    ext4: split off ext4_journalled_invalidatepage()
    jbd2: fix assertion failure in jbd2_journal_flush()
    ext4: check dioread_nolock on remount
    ext4: fix extent tree corruption caused by hole punch

    Linus Torvalds
     
  • Remove the unused argument (formerly no_context) from mpol_parse_str()
    and from mpol_to_str().

    Signed-off-by: Hugh Dickins
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • Recently I suggested using "mount -o remount,mpol=local /tmp" in NUMA
    mempolicy testing. Very nasty. Reading /proc/mounts, /proc/pid/mounts
    or /proc/pid/mountinfo may then corrupt one bit of kernel memory, often
    in a page table (causing "Bad swap" or "Bad page map" warning or "Bad
    pagetable" oops), sometimes in a vm_area_struct or rbnode or somewhere
    worse. "mpol=prefer" and "mpol=prefer:Node" are equally toxic.

    Recent NUMA enhancements are not to blame: this dates back to 2.6.35,
    when commit e17f74af351c "mempolicy: don't call mpol_set_nodemask() when
    no_context" skipped mpol_parse_str()'s call to mpol_set_nodemask(),
    which used to initialize v.preferred_node, or set MPOL_F_LOCAL in flags.
    With slab poisoning, you can then rely on mpol_to_str() to set the bit
    for node 0x6b6b, probably in the next page above the caller's stack.

    mpol_parse_str() is only called from shmem_parse_options(): no_context
    is always true, so call it unused for now, and remove !no_context code.
    Set v.nodes or v.preferred_node or MPOL_F_LOCAL as mpol_to_str() might
    expect. Then mpol_to_str() can ignore its no_context argument also,
    the mpol being appropriately initialized whether contextualized or not.
    Rename its no_context unused too, and let subsequent patch remove them
    (that's not needed for stable backporting, which would involve rejects).

    I don't understand why MPOL_LOCAL is described as a pseudo-policy:
    it's a reasonable policy which suffers from a confusing implementation
    in terms of MPOL_PREFERRED with MPOL_F_LOCAL. I believe this would be
    much more robust if MPOL_LOCAL were recognized in switch statements
    throughout, MPOL_F_LOCAL deleted, and MPOL_PREFERRED use the (possibly
    empty) nodes mask like everyone else, instead of its preferred_node
    variant (I presume an optimization from the days before MPOL_LOCAL).
    But that would take me too long to get right and fully tested.

    Signed-off-by: Hugh Dickins
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • EPOLL_CTL_MOD sets the interest mask before calling f_op->poll() to
    ensure events are not missed. Since the modifications to the interest
    mask are not protected by the same lock as ep_poll_callback, we need to
    ensure the change is visible to other CPUs calling ep_poll_callback.

    We also need to ensure f_op->poll() has an up-to-date view of past
    events which occured before we modified the interest mask. So this
    barrier also pairs with the barrier in wq_has_sleeper().

    This should guarantee either ep_poll_callback or f_op->poll() (or both)
    will notice the readiness of a recently-ready/modified item.

    This issue was encountered by Andreas Voellmy and Junchang(Jason) Wang in:
    http://thread.gmane.org/gmane.linux.kernel/1408782/

    Signed-off-by: Eric Wong
    Cc: Hans Verkuil
    Cc: Jiri Olsa
    Cc: Jonathan Corbet
    Cc: Al Viro
    Cc: Davide Libenzi
    Cc: Hans de Goede
    Cc: Mauro Carvalho Chehab
    Cc: David Miller
    Cc: Eric Dumazet
    Cc: Andrew Morton
    Cc: Andreas Voellmy
    Tested-by: "Junchang(Jason) Wang"
    Cc: netdev@vger.kernel.org
    Cc: linux-fsdevel@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Eric Wong
     

02 Jan, 2013

4 commits


31 Dec, 2012

3 commits

  • Pull DRM update from Dave Airlie:
    "This is a bit larger due to me not bothering to do anything since
    before Xmas, and other people working too hard after I had clearly
    given up.

    It's got the 3 main x86 driver fixes pulls, and a bunch of tegra
    fixes, doesn't fix the Ironlake bug yet, but that does seem to be
    getting closer.

    - radeon: gpu reset fixes and userspace packet support
    - i915: watermark fixes, workarounds, i830/845 fix,
    - nouveau: nvd9/kepler microcode fixes, accel is now enabled and
    working, gk106 support
    - tegra: misc fixes."

    * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (34 commits)
    Revert "drm: tegra: protect DC register access with mutex"
    drm: tegra: program only one window during modeset
    drm: tegra: clean out old gem prototypes
    drm: tegra: remove redundant tegra2_tmds_config entry
    drm: tegra: protect DC register access with mutex
    drm: tegra: don't leave clients host1x member uninitialized
    drm: tegra: fix front_porch back_porch mixup
    drm/nve0/graph: fix fuc, and enable acceleration on all known chipsets
    drm/nvc0/graph: fix fuc, and enable acceleration on GF119
    drm/nouveau/bios: cache ramcfg strap on later chipsets
    drm/nouveau/mxm: silence output if no bios data
    drm/nouveau/bios: parse/display extra version component
    drm/nouveau/bios: implement opcode 0xa9
    drm/nouveau/bios: update gpio parsing apis to match current design
    drm/nouveau: initial support for GK106
    drm/radeon: add WAIT_UNTIL to evergreen VM safe reg list
    drm/i915: disable shrinker lock stealing for create_mmap_offset
    drm/i915: optionally disable shrinker lock stealing
    drm/i915: fix flags in dma buf exporting
    drm/radeon: add support for MEM_WRITE packet
    ...

    Linus Torvalds
     
  • Pull late ARM cleanups for omap from Olof Johansson:
    "From Tony Lindgren:

    Here are few more patches to finish the omap changes for multiplatform
    conversion that are not strictly fixes, but were too complex to do
    with the dependencies during the merge window. Those are to move of
    serial-omap.h to platform_data, and the removal of remaining
    cpu_is_omap macro usage outside mach-omap2.

    Then there are several trivial fixes for typos and few minimal
    omap2plus_defconfig updates."

    * tag 'omap-late-cleanups' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    arch/arm/mach-omap2/dpll3xxx.c: drop if around WARN_ON
    OMAP2: Fix a typo - replace regist with register.
    ARM/omap: use module_platform_driver macro
    ARM: OMAP2+: PMU: Remove unused header
    ARM: OMAP4: remove duplicated include from omap_hwmod_44xx_data.c
    ARM: OMAP2+: omap2plus_defconfig: enable twl4030 SoC audio
    ARM: OMAP2+: omap2plus_defconfig: Add tps65217 support
    ARM: OMAP2+: enable devtmpfs and devtmpfs automount
    ARM: OMAP2+: omap_twl: Change TWL4030_MODULE_PM_RECEIVER to TWL_MODULE_PM_RECEIVER
    ARM: OMAP2+: Drop plat/cpu.h for omap2plus
    ARM: OMAP: Split fb.c to remove last remaining cpu_is_omap usage
    MAINTAINERS: Add an entry for omap related .dts files

    Linus Torvalds
     
  • Pull ARM SoC fixes from Olof Johansson:
    "It's been quiet over the holidays, but we have had a couple of trivial
    fixes coming in for the newly introduced sunxi platform; one to add it
    to the multiplatform defconfig for build coverage, and one fixup for
    device tree strings."

    * tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    sunxi: Change the machine compatible string.
    ARM: multi_v7_defconfig: Add ARCH_SUNXI

    Linus Torvalds
     

30 Dec, 2012

10 commits

  • This reverts commit 83c0bcb694be31dcd6c04bdd935b96a95a0af548.

    Lucas pointed out this was a mistake, and I missed the discussion,
    so just revert it out to save a rebase.

    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • The intention is to program exactly WIN_A, not WIN_A and possibly
    others.

    Signed-off-by: Lucas Stach
    Signed-off-by: Dave Airlie

    Lucas Stach
     
  • There is no gem.c anymore, those functions are implemented by the
    drm_cma_helpers now.

    Signed-off-by: Lucas Stach
    Signed-off-by: Dave Airlie

    Lucas Stach
     
  • The 720p and 1080p entries are completely redundant, as we are matching
    the table entries against
    Signed-off-by: Dave Airlie

    Lucas Stach
     
  • Window properties are programmed through a shared aperture and have to
    happen atomically. Also we do the read-update-write dance on some of the
    shared regs.
    To make sure that different functions don't stumble over each other
    protect the register access with a mutex.

    Signed-off-by: Lucas Stach
    Signed-off-by: Dave Airlie

    Lucas Stach
     
  • No real problem for now, as nothing is using this, but leaving it
    unitialized is asking for trouble later on.

    Signed-off-by: Lucas Stach
    Signed-off-by: Dave Airlie

    Lucas Stach
     
  • Fixes wrong picture offset observed when using HDMI output with a
    Technisat HD TV.

    Signed-off-by: Lucas Stach
    Acked-by: Mark Zhang
    Tested-by: Mark Zhang
    Signed-off-by: Dave Airlie

    Lucas Stach
     
  • Some fixes for 3.8:
    - Watermark fixups from Chris Wilson (4 pieces).
    - 2 snb workarounds, seem to be recently added to our internal DB.
    - workaround for the infamous i830/i845 hang, seems now finally solid!
    Based on Chris' fix for SNA, now also for UXA/mesa&old SNA.
    - Some more fixlets for shrinker-pulls-the-rug issues (Chris&me).
    - Fix dma-buf flags when exporting (you).
    - Disable the VGA plane if it's enabled on lid open - similar fix in
    spirit to the one I've sent you last weeek, BIOS' really like to mess
    with the display when closing the lid (awesome debug work from Krzysztof
    Mazur).

    * 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel:
    drm/i915: disable shrinker lock stealing for create_mmap_offset
    drm/i915: optionally disable shrinker lock stealing
    drm/i915: fix flags in dma buf exporting
    i915: ensure that VGA plane is disabled
    drm/i915: Preallocate the drm_mm_node prior to manipulating the GTT drm_mm manager
    drm: Export routines for inserting preallocated nodes into the mm manager
    drm/i915: don't disable disconnected outputs
    drm/i915: Implement workaround for broken CS tlb on i830/845
    drm/i915: Implement WaSetupGtModeTdRowDispatch
    drm/i915: Implement WaDisableHiZPlanesWhenMSAAEnabled
    drm/i915: Prefer CRTC 'active' rather than 'enabled' during WM computations
    drm/i915: Clear self-refresh watermarks when disabled
    drm/i915: Double the cursor self-refresh latency on Valleyview
    drm/i915: Fixup cursor latency used for IVB lp3 watermarks

    Dave Airlie
     
  • Misc fixes for reset and new packets for userspace usage.

    * 'drm-fixes-3.8' of git://people.freedesktop.org/~agd5f/linux:
    drm/radeon: add WAIT_UNTIL to evergreen VM safe reg list
    drm/radeon: add support for MEM_WRITE packet
    drm/radeon: restore modeset late in GPU reset path
    drm/radeon: avoid deadlock in pm path when waiting for fence
    drm/radeon: don't leave fence blocked process on failed GPU reset

    Dave Airlie
     
  • …u/linux-2.6 into drm-next

    Fixes the accel support for nvd9 + kepler chipsets, also fixes GK106 support.

    * 'drm-nouveau-fixes-3.8' of git://anongit.freedesktop.org/git/nouveau/linux-2.6:
    drm/nve0/graph: fix fuc, and enable acceleration on all known chipsets
    drm/nvc0/graph: fix fuc, and enable acceleration on GF119
    drm/nouveau/bios: cache ramcfg strap on later chipsets
    drm/nouveau/mxm: silence output if no bios data
    drm/nouveau/bios: parse/display extra version component
    drm/nouveau/bios: implement opcode 0xa9
    drm/nouveau/bios: update gpio parsing apis to match current design
    drm/nouveau: initial support for GK106

    Dave Airlie
     

29 Dec, 2012

1 commit

  • An unintended consequence of commit 4ae0a48b5efc ("mm: modify
    pgdat_balanced() so that it also handles order-0") is that
    wait_iff_congested() can now be called with NULL 'struct zone *'
    producing kernel oops like this:

    BUG: unable to handle kernel NULL pointer dereference
    IP: [] wait_iff_congested+0x59/0x140

    This trivial patch fixes it.

    Reported-by: Zhouping Liu
    Reported-and-tested-by: Sedat Dilek
    Cc: Andrew Morton
    Cc: Mel Gorman
    Cc: Hugh Dickins
    Signed-off-by: Zlatko Calusic
    Signed-off-by: Linus Torvalds

    Zlatko Calusic
     

28 Dec, 2012

5 commits

  • From Maxime Ripard:
    Fixes for the sunxi core to be merged in 3.8-rc2

    * tag 'sunxi-fixes-for-3.8-rc2' of git://github.com/mripard/linux:
    sunxi: Change the machine compatible string.
    ARM: multi_v7_defconfig: Add ARCH_SUNXI

    Olof Johansson
     
  • We should not set con->state to CLOSED here; that happens in
    ceph_fault() in the caller, where it first asserts that the state
    is not yet CLOSED. Avoids a BUG when the features don't match.

    Since the fail_protocol() has become a trivial wrapper, replace
    calls to it with direct calls to reset_connection().

    Signed-off-by: Sage Weil
    Reviewed-by: Alex Elder

    Sage Weil
     
  • A number of assertions in the ceph messenger are implemented with
    BUG_ON(), killing the system if connection's state doesn't match
    what's expected. At this point our state model is (evidently) not
    well understood enough for these assertions to trigger a BUG().
    Convert all BUG_ON(con->state...) calls to be WARN_ON(con->state...)
    so we learn about these issues without killing the machine.

    We now recognize that a connection fault can occur due to a socket
    closure at any time, regardless of the state of the connection. So
    there is really nothing we can assert about the state of the
    connection at that point so eliminate that assertion.

    Reported-by: Ugis
    Tested-by: Ugis
    Signed-off-by: Alex Elder
    Reviewed-by: Sage Weil

    Alex Elder
     
  • When ceph_osdc_handle_map() is called to process a new osd map,
    kick_requests() is called to ensure all affected requests are
    updated if necessary to reflect changes in the osd map. This
    happens in two cases: whenever an incremental map update is
    processed; and when a full map update (or the last one if there is
    more than one) gets processed.

    In the former case, the kick_requests() call is followed immediately
    by a call to reset_changed_osds() to ensure any connections to osds
    affected by the map change are reset. But for full map updates
    this isn't done.

    Both cases should be doing this osd reset.

    Rather than duplicating the reset_changed_osds() call, move it into
    the end of kick_requests().

    Signed-off-by: Alex Elder
    Reviewed-by: Sage Weil

    Alex Elder
     
  • The kick_requests() function is called by ceph_osdc_handle_map()
    when an osd map change has been indicated. Its purpose is to
    re-queue any request whose target osd is different from what it
    was when it was originally sent.

    It is structured as two loops, one for incomplete but registered
    requests, and a second for handling completed linger requests.
    As a special case, in the first loop if a request marked to linger
    has not yet completed, it is moved from the request list to the
    linger list. This is as a quick and dirty way to have the second
    loop handle sending the request along with all the other linger
    requests.

    Because of the way it's done now, however, this quick and dirty
    solution can result in these incomplete linger requests never
    getting re-sent as desired. The problem lies in the fact that
    the second loop only arranges for a linger request to be sent
    if it appears its target osd has changed. This is the proper
    handling for *completed* linger requests (it avoids issuing
    the same linger request twice to the same osd).

    But although the linger requests added to the list in the first loop
    may have been sent, they have not yet completed, so they need to be
    re-sent regardless of whether their target osd has changed.

    The first required fix is we need to avoid calling __map_request()
    on any incomplete linger request. Otherwise the subsequent
    __map_request() call in the second loop will find the target osd
    has not changed and will therefore not re-send the request.

    Second, we need to be sure that a sent but incomplete linger request
    gets re-sent. If the target osd is the same with the new osd map as
    it was when the request was originally sent, this won't happen.
    This can be fixed through careful handling when we move these
    requests from the request list to the linger list, by unregistering
    the request *before* it is registered as a linger request. This
    works because a side-effect of unregistering the request is to make
    the request's r_osd pointer be NULL, and *that* will ensure the
    second loop actually re-sends the linger request.

    Processing of such a request is done at that point, so continue with
    the next one once it's been moved.

    Signed-off-by: Alex Elder
    Reviewed-by: Sage Weil

    Alex Elder