linux/drivers/block
Lars Ellenberg f9c78128f8 drbd: always implicitly close last epoch when idle
Once our sender thread needs to wait_for_work(),
and actually needs to schedule(), just before we do that,
we already check if it is useful to implicitly close the last epoch.

The condition was too strict: only implicitly close the epoch,
if there have been no new (write) requests at all.

The assumption was that if there were new requests, they would
always be communicated one way or another, and would send necessary
epoch separating barriers explicitly.

This is not always true, e.g. when becoming diskless,
or while explicitly starting a full resync.

The last communicated epoch could stay open for a long time,
locking down corresponding activity log extents.

It is safe to always implicitly send that last barrier, as soon as we
determin that there cannot be more requests in the last communicated
epoch, even if there have been (uncommunicated) new requests in new
epochs meanwhile.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
2014-04-30 13:46:55 -06:00
..
aoe mm: close PageTail race 2014-03-04 07:55:47 -08:00
drbd drbd: always implicitly close last epoch when idle 2014-04-30 13:46:55 -06:00
mtip32xx mtip32xx: Fix ERO and NoSnoop values in PCIe upstream on AMD systems 2014-04-22 19:48:52 -06:00
paride block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
rsxx block: Convert bio_for_each_segment() to bvec_iter 2013-11-23 22:33:49 -08:00
xen-blkback xen-blkback: init persistent_purge_work work_struct 2014-02-11 20:34:03 -07:00
zram zram: support REQ_DISCARD 2014-04-07 16:36:02 -07:00
amiflop.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
ataflop.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
brd.c block: Convert bio_for_each_segment() to bvec_iter 2013-11-23 22:33:49 -08:00
cciss_cmd.h
cciss_scsi.c cciss: switch to ->show_info() 2013-04-09 14:13:19 -04:00
cciss_scsi.h
cciss.c cciss: Use pci_enable_msix_exact() instead of pci_enable_msix() 2014-04-21 19:02:08 -06:00
cciss.h
cpqarray.c cpqarray: fix info leak in ida_locked_ioctl() 2013-09-24 17:00:26 -07:00
cpqarray.h
cryptoloop.c move linux/loop.h to drivers/block 2013-06-29 12:46:45 +04:00
DAC960.c DAC960: remove sleep_on usage 2014-03-13 14:56:38 -06:00
DAC960.h
floppy.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
hd.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
ida_cmd.h
ida_ioctl.h
Kconfig zram: promote zram from staging 2014-01-30 16:56:55 -08:00
loop.c drivers/block/loop.c: ratelimit error messages 2014-04-08 14:44:35 -06:00
loop.h move linux/loop.h to drivers/block 2013-06-29 12:46:45 +04:00
Makefile zram: promote zram from staging 2014-01-30 16:56:55 -08:00
mg_disk.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
nbd.c switch nbd to sockfd_lookup/sockfd_put 2014-04-01 23:19:10 -04:00
null_blk.c blk-mq: split out tag initialization, support shared tags 2014-04-15 14:18:02 -06:00
nvme-core.c Merge git://git.infradead.org/users/willy/linux-nvme 2014-04-11 16:45:59 -07:00
nvme-scsi.c NVMe: Retry failed commands with non-fatal errors 2014-04-10 17:11:59 -04:00
osdblk.c block: replace strict_strtoul() with kstrtoul() 2013-09-11 15:56:56 -07:00
pktcdvd.c pktcdvd: fix error return code 2014-01-03 10:05:34 +01:00
ps3disk.c block: Kill bio_segments()/bi_vcnt usage 2013-11-23 22:33:51 -08:00
ps3vram.c block: Convert bio_for_each_segment() to bvec_iter 2013-11-23 22:33:49 -08:00
rbd_types.h rbd: get rid of RBD_MAX_SEG_NAME_LEN 2012-12-17 08:37:29 -06:00
rbd.c rbd: prefix rbd writes with CEPH_OSD_OP_SETALLOCHINT osd op 2014-04-03 10:33:52 +08:00
skd_main.c skd: Use pci_enable_msix_exact() instead of pci_enable_msix_range() 2014-04-21 19:02:05 -06:00
skd_s1120.h skd: fix formatting in skd_s1120.h 2013-11-08 09:10:30 -07:00
smart1,2.h
sunvdc.c sunvdc: Fix off-by-one in generic_request(). 2013-02-14 11:49:01 -08:00
swim3.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
swim_asm.S
swim.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
sx8.c drivers/block/sx8.c: remove unnecessary pci_set_drvdata() 2014-01-21 20:16:56 -08:00
umem.c block: Convert drivers to immutable biovecs 2013-11-23 22:33:51 -08:00
umem.h
virtio_blk.c blk-mq: add async parameter to blk_mq_start_stopped_hw_queues 2014-04-16 14:15:25 -06:00
xen-blkfront.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
xsysace.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
z2ram.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00