Merge branch 'for-3.6/drivers' of git://git.kernel.dk/linux-block
Pull block driver changes from Jens Axboe:
- Making the plugging support for drivers a bit more sane from Neil.
This supersedes the plugging change from Shaohua as well.
- The usual round of drbd updates.
- Using a tail add instead of a head add in the request completion for
ndb, making us find the most completed request more quickly.
- A few floppy changes, getting rid of a duplicated flag and also
running the floppy init async (since it takes forever in boot terms)
from Andi.
* 'for-3.6/drivers' of git://git.kernel.dk/linux-block:
floppy: remove duplicated flag FD_RAW_NEED_DISK
blk: pass from_schedule to non-request unplug functions.
block: stack unplug
blk: centralize non-request unplug handling.
md: remove plug_cnt feature of plugging.
block/nbd: micro-optimization in nbd request completion
drbd: announce FLUSH/FUA capability to upper layers
drbd: fix max_bio_size to be unsigned
drbd: flush drbd work queue before invalidate/invalidate remote
drbd: fix potential access after free
drbd: call local-io-error handler early
drbd: do not reset rs_pending_cnt too early
drbd: reset congestion information before reporting it in /proc/drbd
drbd: report congestion if we are waiting for some userland callback
drbd: differentiate between normal and forced detach
drbd: cleanup, remove two unused global flags
floppy: Run floppy initialization asynchronous
@ -3541,6 +3557,22 @@ static int drbd_congested(void *congested_data, int bdi_bits)
@@ -3541,6 +3557,22 @@ static int drbd_congested(void *congested_data, int bdi_bits)
gotoout;
}
if(test_bit(CALLBACK_PENDING,&mdev->flags)){
r|=(1<<BDI_async_congested);
/* Without good local data, we would need to read from remote,
*andthatwouldneedtheworkerthreadaswell,whichis
*currentlyblockedwaitingforthatusermodehelperto
*finish.
*/
if(!get_ldev_if_state(mdev,D_UP_TO_DATE))
r|=(1<<BDI_sync_congested);
else
put_ldev(mdev);
r&=bdi_bits;
reason='c';
gotoout;
}
if(get_ldev(mdev)){
q=bdev_get_queue(mdev->ldev->backing_bdev);
r=bdi_congested(&q->backing_dev_info,bdi_bits);
@ -3604,6 +3636,7 @@ struct drbd_conf *drbd_new_device(unsigned int minor)
@@ -3604,6 +3636,7 @@ struct drbd_conf *drbd_new_device(unsigned int minor)
q->backing_dev_info.congested_data=mdev;
blk_queue_make_request(q,drbd_make_request);
blk_queue_flush(q,REQ_FLUSH|REQ_FUA);
/* Setting the max_hw_sectors to an odd value of 8kibyte here