summaryrefslogtreecommitdiffstats
path: root/drivers (follow)
Commit message (Collapse)AuthorAgeFilesLines
* leds: convert DAC124S085 LED driver to devm_kzalloc()Bryan Wu2012-07-241-3/+1
| | | | | Cc: Guennadi Liakhovetski <lg@denx.de> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert LM3530 LED driver to devm_kzalloc() and cleanup error exit pathBryan Wu2012-07-241-16/+8
| | | | | | Cc: Shreshtha Kumar SAHU <shreshthakumar.sahu@stericsson.com> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert TCA6507 LED driver to devm_kzalloc()Bryan Wu2012-07-241-3/+1
| | | | | Cc: Neil Brown <neilb@suse.de> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert Freescale MC13783 LED driver to devm_kzalloc() and cleanup ↵Bryan Wu2012-07-241-5/+3
| | | | | | | error exit path Cc: Philippe Retornaz <philippe.retornaz@epfl.ch> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert ADP5520 LED driver to devm_kzalloc() and cleanup error exit pathBryan Wu2012-07-241-5/+3
| | | | | Cc: Michael Hennerich <hennerich@blackfin.uclinux.org> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert PCA955x LED driver to devm_kzalloc() and cleanup error exit pathBryan Wu2012-07-241-13/+5
| | | | | Cc: Nate Case <ncase@xes-inc.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert Sun Fire LED driver to devm_kzalloc() and cleanup error exit pathBryan Wu2012-07-241-15/+6
| | | | | Cc: David S. Miller <davem@davemloft.net> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert PCA9532 LED driver to devm_kzalloc()Bryan Wu2012-07-241-8/+2
| | | | | Cc: Riku Voipio <riku.voipio@iki.fi> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert LT3593 LED driver to devm_kzalloc()Bryan Wu2012-07-241-6/+3
| | | | | Cc: Daniel Mack <daniel@caiaq.de> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert Renesas TPU LED driver to devm_kzalloc() and cleanup error ↵Bryan Wu2012-07-241-14/+9
| | | | | | | exit path Cc: Magnus Damm <damm@opensource.se> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert LP5523 LED driver to devm_kzalloc() and cleanup error exit pathBryan Wu2012-07-241-14/+10
| | | | | Cc: Mathias Nyman <mathias.nyman@nokia.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert PCA9633 LED driver to devm_kzalloc()Bryan Wu2012-07-241-5/+1
| | | | | Cc: Peter Meerwald <p.meerwald@bct-electronic.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert BD2802 RGB LED driver to devm_kzalloc() and cleanup error exit ↵Bryan Wu2012-07-241-6/+2
| | | | | | | path Cc: Kim Kyuwon <q1.kim@samsung.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert LP5521 LED driver to devm_kzalloc() and cleanup error exit pathBryan Wu2012-07-241-12/+8
| | | | Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert DA9030/DA9034 LED driver to devm_kzalloc() and cleanup error ↵Bryan Wu2012-07-241-7/+2
| | | | | | | exit path Cc: Eric Miao <eric.miao@canonical.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert LP3944 LED driver to devm_kzalloc()Bryan Wu2012-07-241-6/+3
| | | | | Cc: Antonio Ospite <ospite@studenti.unina.it> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert Atmel PWM LED driver to devm_kzalloc()Bryan Wu2012-07-241-3/+2
| | | | Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert HTC ASIC3 LED driver to devm_kzalloc() and cleanup error exit pathBryan Wu2012-07-241-10/+6
| | | | | Cc: Paul Parsons <lost.distance@yahoo.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert Big Networks LED driver to devm_kzalloc()Bryan Wu2012-07-241-7/+3
| | | | | Cc: Simon Guinot <sguinot@lacie.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Use devm_kzalloc in leds-gpio.c fileSachin Kamat2012-07-241-6/+5
| | | | | | | devm_kzalloc() makes cleanup simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Use devm_kzalloc in leds-max8997.c fileSachin Kamat2012-07-241-15/+6
| | | | | | | devm_kzalloc() makes code cleanup simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Use devm_kzalloc in leds-regulator.c fileSachin Kamat2012-07-241-6/+3
| | | | | | | devm_kzalloc() makes cleanup simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Use devm_kzalloc in leds-pwm.c fileSachin Kamat2012-07-241-5/+2
| | | | | | | devm_kzalloc() makes cleanup simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Use module_platform_driver() in leds-max8997.c fileSachin Kamat2012-07-241-11/+1
| | | | | | | module_platform_driver() makes the code simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: convert tca6507 driver to module_i2c_driver()Peter Meerwald2012-07-241-12/+1
| | | | | | Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com> Cc: NeilBrown <neilb@suse.de> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Convert S3C24XX LED driver to gpiolib APISylwester Nawrocki2012-07-241-14/+20
| | | | | | | | | | | | | | | | The s3c2410_gpio* calls are obsolete and have been scheduled for removal since several kernel releases. Remove them and use common gpiolib API instead. This patch also adds gpio_request/gpio_free call for API corectness. It is a prerequisite for removal of the S3C24XX SoC specific arch/arm/plat-samsung/include/gpio-fns.h header. Tested on Micro2440-SDK. Cc: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Convert S3C24XX LED driver to devm_kzalloc()Sylwester Nawrocki2012-07-241-5/+3
| | | | | | | | | Use the device managed resource API for simplifying the error/driver remove paths. Cc: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds-mc13783: set platform data to NULL at mc13783_led_removeDevendra Naga2012-07-241-0/+1
| | | | | | | | the platform_set_drvdata (pdev, NULL) to be set at the remove of the driver, as we have set the platform data to led at probe. Signed-off-by: Devendra Naga <devendra.aaru@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds-88pm860x: use devm_kzalloc functionDevendra Naga2012-07-241-7/+2
| | | | | | | Using devm_kzalloc will remove all the error checks and the frees are automatically done at the driver unload side. Signed-off-by: Devendra Naga <devendra.aaru@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds-lp5523: BUG() in error handling in probe()Dan Carpenter2012-07-241-3/+3
| | | | | | | | | | | | | | | | | | | Inside the error handling in lp5523_init_led(), there is a place that calls to led_classdev_unregister(). When we unregister the LED drivers, it tries to set the brightness to OFF. In this driver setting the brightness is done through a work queue and the work queue hasn't been initialized yet. The result is that we trigger a WARN_ON() in the __queue_work(). The fix is to move the INIT_WORK() in front of the call to lp5523_init_led(). Matt Renzelmann found this using a bug finding tool. Reported-by: Matt Renzelmann <mjr@cs.wisc.edu> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Add LED driver for lm3556 chipG.Shark Jeong2012-07-243-0/+521
| | | | | | | | | | | | | | | | | | | LM3556 : The LM3556 is a 4 MHz fixed-frequency synchronous boost converter plus 1.5A constant current driver for a high-current white LED. Datasheet: www.national.com/ds/LM/LM3556.pdf Tested on OMAP4430 (bryan.wu@canonical.com: use module_i2c_driver() rather than lm3556_init/lm3556_exit for code simplicity; fixed some typo pointed out by Rob Landley) Signed-off-by: G.Shark Jeong <gshark.jeong@gmail.com> Reviewed-by: Axel Lin <axel.lin@gmail.com> Reviewed-by: Kim, Milo <Milo.Kim@ti.com> Acked-by: Rob Landley <rob@landley.net> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: [trivial]Remove unnecesary returnDevendra Naga2012-07-241-2/+1
| | | | | | | | | | | the ret is got the status returned by the led_classdev_register, returning ret if the led_classdev_register fails and returning 0 if the led_classdev_register success, can be done by doing just "return ret" at the end. Signed-off-by: Devendra Naga <devendra.aaru@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: fix sparse warnings due to missing staticBryan Wu2012-07-242-2/+2
| | | | | | | | drivers/leds/led-core.c:56:6: sparse: symbol 'led_blink_setup' was not declared. Should it be static? drivers/leds/led-triggers.c:233:6: sparse: symbol 'led_trigger_blink_setup' was not declared. Should it be static? Reported-by: Fengguang Wu <wfg@linux.intel.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: correct trivial type in drivers/leds/KconfigJesper Dangaard Brouer2012-07-241-1/+1
| | | | | | | Correct "hadrware" to "hardware", for LEDS_TRIGGER_TRANSIENT. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: use led_set_brightness in led_trigger_eventFabio Baltieri2012-07-241-1/+1
| | | | | | | | | | | | | | | | Fix led_trigger_event() to use led_set_brightness() instead of __led_set_brightness(), so that any pending blink timer is stopped before setting the new brightness value. Without this fix LED status may be overridden by a pending timer. This allows a trigger to use a mix of led_trigger_event(), led_trigger_blink() and led_trigger_blink_oneshot() without races. (applied over: leds: Rename led_brightness_set() to led_set_brightness()) Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com> Cc: Shuah Khan <shuahkhan@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Rename led_brightness_set() to led_set_brightness()Shuah Khan2012-07-245-6/+6
| | | | | | | | | | | | Rename leds external interface led_brightness_set() to led_set_brightness(). This is the second phase of the change to reduce confusion between the leds internal and external interfaces that set brightness. With this change, now the external interface is led_set_brightness(). The first phase renamed the internal interface led_set_brightness() to __led_set_brightness(). There are no changes to the interface implementations. Signed-off-by: Shuah Khan <shuahkhan@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: Rename led_set_brightness() to __led_set_brightness()Shuah Khan2012-07-2410-22/+22
| | | | | | | | | | Rename leds internal interface led_set_brightness() to __led_set_brightness() to reduce confusion between led_set_brightness() and the external interface led_brightness_set(). led_brightness_set() cancels the timer and then calls led_set_brightness(). Signed-off-by: Shuah Khan <shuahkhan@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: add oneshot triggerFabio Baltieri2012-07-243-0/+219
| | | | | | | | | Add oneshot trigger to blink a led with configurale parameters via sysfs. Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com> Cc: Shuah Khan <shuahkhan@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: fix led_brightness_set when soft-blinkingFabio Baltieri2012-07-241-9/+6
| | | | | | | | | | | | | | | | | | | Move led_stop_software_blink() code into led_brightness_set() to ensure software blink timer is stopped and cleared when changing trigger. Also use led_set_brightness() instead of calling led_cdev->brightness_set() directly to keep led_cdev->brightness consistent with current LED status. This ensure proper cleaning when changing triggers, as without this fix a LED may be turned off while leaving it's led_cdev->brightness = 1, leading to an erratic software-blink behaviour. The problem was easy to reproduce by changing the trigger from "timer" to "oneshot". Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* ledtrig-ide-disk: use generic one-shot blink apiFabio Baltieri2012-07-241-21/+4
| | | | | | | | | | | | | | Convert ledtrig-ide-disk code to use the generic API for one-shot LED blinking. This patch changes slightly the behaviour of the trigger, as while the original version kept the LED on under heavy activity, the new one keeps a constant on-off blink at 1 / (2 * BLINK_DELAY) Hz. (bryan.wu@canonical.com: remove 2 useless included header files) Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* leds: add oneshot blink functionsFabio Baltieri2012-07-243-11/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add two new functions, led_blink_set_oneshot and led_trigger_blink_oneshot, to be used by triggers for one-shot blink of led devices. This is implemented extending the existing software-blink code, and uses the same timer and handler function. The behavior of the code is to do a blink-on, blink-off sequence when the function is called, ignoring other calls until the sequence is completed so that the leds keep blinking at constant rate if the functions are called repeatedly. This is meant to be used by drivers which needs to trigger on sporadic event, but doesn't have clear busy/idle trigger points. After the blink sequence the led remains off. This behavior can be inverted setting the "invert" argument, which blink the led off, than on and leave the led on after the sequence. (bryan.wu@canonical.com: rebase to commit 'leds: don't disable blinking when writing the same value to delay_on or delay_off') Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com> Acked-by: Shuah Khan <shuahkhan@gmail.com> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* led-triggers: rename *trigger to *trig for unified naming schemeBryan Wu2012-07-241-42/+42
| | | | | | No functional change. Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
* Merge tag 'dm-3.5-fixes-2' of ↵Linus Torvalds2012-07-203-3/+11
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm Pull device-mapper discard fixes from Alasdair G Kergon: - avoid a crash in dm-raid1 when discards coincide with mirror recovery; - avoid discarding shared data that's still needed in dm-thin; - don't guarantee that discarded blocks will be wiped in dm-raid1. * tag 'dm-3.5-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm: dm raid1: set discard_zeroes_data_unsupported dm thin: do not send discards to shared blocks dm raid1: fix crash with mirror recovery and discard
| * dm raid1: set discard_zeroes_data_unsupportedMikulas Patocka2012-07-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't guarantee that REQ_DISCARD on dm-mirror zeroes the data even if the underlying disks support zero on discard. So this patch sets ti->discard_zeroes_data_unsupported. For example, if the mirror is in the process of resynchronizing, it may happen that kcopyd reads a piece of data, then discard is sent on the same area and then kcopyd writes the piece of data to another leg. Consequently, the data is not zeroed. The flag was made available by commit 983c7db347db8ce2d8453fd1d89b7a4bb6920d56 (dm crypt: always disable discard_zeroes_data). Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Cc: stable@kernel.org Signed-off-by: Alasdair G Kergon <agk@redhat.com>
| * dm thin: do not send discards to shared blocksMikulas Patocka2012-07-201-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When process_discard receives a partial discard that doesn't cover a full block, it sends this discard down to that block. Unfortunately, the block can be shared and the discard would corrupt the other snapshots sharing this block. This patch detects block sharing and ends the discard with success when sending it to the shared block. The above change means that if the device supports discard it can't be guaranteed that a discard request zeroes data. Therefore, we set ti->discard_zeroes_data_unsupported. Thin target discard support with this bug arrived in commit 104655fd4dcebd50068ef30253a001da72e3a081 (dm thin: support discards). Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Cc: stable@kernel.org Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
| * dm raid1: fix crash with mirror recovery and discardMikulas Patocka2012-07-202-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes a crash when a discard request is sent during mirror recovery. Firstly, some background. Generally, the following sequence happens during mirror synchronization: - function do_recovery is called - do_recovery calls dm_rh_recovery_prepare - dm_rh_recovery_prepare uses a semaphore to limit the number simultaneously recovered regions (by default the semaphore value is 1, so only one region at a time is recovered) - dm_rh_recovery_prepare calls __rh_recovery_prepare, __rh_recovery_prepare asks the log driver for the next region to recover. Then, it sets the region state to DM_RH_RECOVERING. If there are no pending I/Os on this region, the region is added to quiesced_regions list. If there are pending I/Os, the region is not added to any list. It is added to the quiesced_regions list later (by dm_rh_dec function) when all I/Os finish. - when the region is on quiesced_regions list, there are no I/Os in flight on this region. The region is popped from the list in dm_rh_recovery_start function. Then, a kcopyd job is started in the recover function. - when the kcopyd job finishes, recovery_complete is called. It calls dm_rh_recovery_end. dm_rh_recovery_end adds the region to recovered_regions or failed_recovered_regions list (depending on whether the copy operation was successful or not). The above mechanism assumes that if the region is in DM_RH_RECOVERING state, no new I/Os are started on this region. When I/O is started, dm_rh_inc_pending is called, which increases reg->pending count. When I/O is finished, dm_rh_dec is called. It decreases reg->pending count. If the count is zero and the region was in DM_RH_RECOVERING state, dm_rh_dec adds it to the quiesced_regions list. Consequently, if we call dm_rh_inc_pending/dm_rh_dec while the region is in DM_RH_RECOVERING state, it could be added to quiesced_regions list multiple times or it could be added to this list when kcopyd is copying data (it is assumed that the region is not on any list while kcopyd does its jobs). This results in memory corruption and crash. There already exist bypasses for REQ_FLUSH requests: REQ_FLUSH requests do not belong to any region, so they are always added to the sync list in do_writes. dm_rh_inc_pending does not increase count for REQ_FLUSH requests. In mirror_end_io, dm_rh_dec is never called for REQ_FLUSH requests. These bypasses avoid the crash possibility described above. These bypasses were improperly implemented for REQ_DISCARD when the mirror target gained discard support in commit 5fc2ffeabb9ee0fc0e71ff16b49f34f0ed3d05b4 (dm raid1: support discard). In do_writes, REQ_DISCARD requests is always added to the sync queue and immediately dispatched (even if the region is in DM_RH_RECOVERING). However, dm_rh_inc and dm_rh_dec is called for REQ_DISCARD resusts. So it violates the rule that no I/Os are started on DM_RH_RECOVERING regions, and causes the list corruption described above. This patch changes it so that REQ_DISCARD requests follow the same path as REQ_FLUSH. This avoids the crash. Reference: https://bugzilla.redhat.com/837607 Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Cc: stable@kernel.org Signed-off-by: Alasdair G Kergon <agk@redhat.com>
* | Merge branch 'for-linus' of ↵Linus Torvalds2012-07-201-2/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client Pull last minute Ceph fixes from Sage Weil: "The important one fixes a bug in the socket failure handling behavior that was turned up in some recent failure injection testing. The other two are minor bug fixes." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: rbd: endian bug in rbd_req_cb() rbd: Fix ceph_snap_context size calculation libceph: fix messenger retry
| * | rbd: endian bug in rbd_req_cb()Dan Carpenter2012-07-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sparse complains about this because: drivers/block/rbd.c:996:20: warning: cast to restricted __le32 drivers/block/rbd.c:996:20: warning: cast from restricted __le16 These are set in osd_req_encode_op() and they are le16. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Alex Elder <elder@inktank.com> (cherry picked from commit 895cfcc810e53d7d36639969c71efb9087221167)
| * | rbd: Fix ceph_snap_context size calculationYan, Zheng2012-07-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | ceph_snap_context->snaps is an u64 array Signed-off-by: Zheng Yan <zheng.z.yan@intel.com> Reviewed-by: Alex Elder <elder@inktank.com> (cherry picked from commit f9f9a1904467816452fc70740165030e84c2c659)
* | | Merge tag 'md-3.5-fixes' of git://neil.brown.name/mdLinus Torvalds2012-07-192-15/+32
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pull three md bugfixes from NeilBrown: "One of the bugs was introduced in 3.5-rc1. Others have been there for longer." * tag 'md-3.5-fixes' of git://neil.brown.name/md: md/raid1: close some possible races on write errors during resync md: avoid crash when stopping md array races with closing other open fds. md: fix bug in handling of new_data_offset