All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Xiao Ni <xni@redhat.com>,
	NeilBrown <neilb@suse.com>, Song Liu <songliubraving@fb.com>,
	Jens Axboe <axboe@kernel.dk>
Subject: [PATCH 5.1 037/122] Revert "MD: fix lock contention for flush bios"
Date: Thu, 23 May 2019 21:05:59 +0200	[thread overview]
Message-ID: <20190523181709.722186272@linuxfoundation.org> (raw)
In-Reply-To: <20190523181705.091418060@linuxfoundation.org>

From: NeilBrown <neilb@suse.com>

commit 4bc034d35377196c854236133b07730a777c4aba upstream.

This reverts commit 5a409b4f56d50b212334f338cb8465d65550cd85.

This patch has two problems.

1/ it make multiple calls to submit_bio() from inside a make_request_fn.
 The bios thus submitted will be queued on current->bio_list and not
 submitted immediately.  As the bios are allocated from a mempool,
 this can theoretically result in a deadlock - all the pool of requests
 could be in various ->bio_list queues and a subsequent mempool_alloc
 could block waiting for one of them to be released.

2/ It aims to handle a case when there are many concurrent flush requests.
  It handles this by submitting many requests in parallel - all of which
  are identical and so most of which do nothing useful.
  It would be more efficient to just send one lower-level request, but
  allow that to satisfy multiple upper-level requests.

Fixes: 5a409b4f56d5 ("MD: fix lock contention for flush bios")
Cc: <stable@vger.kernel.org> # v4.19+
Tested-by: Xiao Ni <xni@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/md/md.c |  159 +++++++++++++++++++-------------------------------------
 drivers/md/md.h |   22 ++-----
 2 files changed, 62 insertions(+), 119 deletions(-)

--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -132,24 +132,6 @@ static inline int speed_max(struct mddev
 		mddev->sync_speed_max : sysctl_speed_limit_max;
 }
 
-static void * flush_info_alloc(gfp_t gfp_flags, void *data)
-{
-        return kzalloc(sizeof(struct flush_info), gfp_flags);
-}
-static void flush_info_free(void *flush_info, void *data)
-{
-        kfree(flush_info);
-}
-
-static void * flush_bio_alloc(gfp_t gfp_flags, void *data)
-{
-	return kzalloc(sizeof(struct flush_bio), gfp_flags);
-}
-static void flush_bio_free(void *flush_bio, void *data)
-{
-	kfree(flush_bio);
-}
-
 static struct ctl_table_header *raid_table_header;
 
 static struct ctl_table raid_table[] = {
@@ -423,54 +405,30 @@ static int md_congested(void *data, int
 /*
  * Generic flush handling for md
  */
-static void submit_flushes(struct work_struct *ws)
-{
-	struct flush_info *fi = container_of(ws, struct flush_info, flush_work);
-	struct mddev *mddev = fi->mddev;
-	struct bio *bio = fi->bio;
-
-	bio->bi_opf &= ~REQ_PREFLUSH;
-	md_handle_request(mddev, bio);
-
-	mempool_free(fi, mddev->flush_pool);
-}
 
-static void md_end_flush(struct bio *fbio)
+static void md_end_flush(struct bio *bio)
 {
-	struct flush_bio *fb = fbio->bi_private;
-	struct md_rdev *rdev = fb->rdev;
-	struct flush_info *fi = fb->fi;
-	struct bio *bio = fi->bio;
-	struct mddev *mddev = fi->mddev;
+	struct md_rdev *rdev = bio->bi_private;
+	struct mddev *mddev = rdev->mddev;
 
 	rdev_dec_pending(rdev, mddev);
 
-	if (atomic_dec_and_test(&fi->flush_pending)) {
-		if (bio->bi_iter.bi_size == 0) {
-			/* an empty barrier - all done */
-			bio_endio(bio);
-			mempool_free(fi, mddev->flush_pool);
-		} else {
-			INIT_WORK(&fi->flush_work, submit_flushes);
-			queue_work(md_wq, &fi->flush_work);
-		}
+	if (atomic_dec_and_test(&mddev->flush_pending)) {
+		/* The pre-request flush has finished */
+		queue_work(md_wq, &mddev->flush_work);
 	}
-
-	mempool_free(fb, mddev->flush_bio_pool);
-	bio_put(fbio);
+	bio_put(bio);
 }
 
-void md_flush_request(struct mddev *mddev, struct bio *bio)
+static void md_submit_flush_data(struct work_struct *ws);
+
+static void submit_flushes(struct work_struct *ws)
 {
+	struct mddev *mddev = container_of(ws, struct mddev, flush_work);
 	struct md_rdev *rdev;
-	struct flush_info *fi;
-
-	fi = mempool_alloc(mddev->flush_pool, GFP_NOIO);
-
-	fi->bio = bio;
-	fi->mddev = mddev;
-	atomic_set(&fi->flush_pending, 1);
 
+	INIT_WORK(&mddev->flush_work, md_submit_flush_data);
+	atomic_set(&mddev->flush_pending, 1);
 	rcu_read_lock();
 	rdev_for_each_rcu(rdev, mddev)
 		if (rdev->raid_disk >= 0 &&
@@ -480,40 +438,59 @@ void md_flush_request(struct mddev *mdde
 			 * we reclaim rcu_read_lock
 			 */
 			struct bio *bi;
-			struct flush_bio *fb;
 			atomic_inc(&rdev->nr_pending);
 			atomic_inc(&rdev->nr_pending);
 			rcu_read_unlock();
-
-			fb = mempool_alloc(mddev->flush_bio_pool, GFP_NOIO);
-			fb->fi = fi;
-			fb->rdev = rdev;
-
 			bi = bio_alloc_mddev(GFP_NOIO, 0, mddev);
-			bio_set_dev(bi, rdev->bdev);
 			bi->bi_end_io = md_end_flush;
-			bi->bi_private = fb;
+			bi->bi_private = rdev;
+			bio_set_dev(bi, rdev->bdev);
 			bi->bi_opf = REQ_OP_WRITE | REQ_PREFLUSH;
-
-			atomic_inc(&fi->flush_pending);
+			atomic_inc(&mddev->flush_pending);
 			submit_bio(bi);
-
 			rcu_read_lock();
 			rdev_dec_pending(rdev, mddev);
 		}
 	rcu_read_unlock();
+	if (atomic_dec_and_test(&mddev->flush_pending))
+		queue_work(md_wq, &mddev->flush_work);
+}
 
-	if (atomic_dec_and_test(&fi->flush_pending)) {
-		if (bio->bi_iter.bi_size == 0) {
-			/* an empty barrier - all done */
-			bio_endio(bio);
-			mempool_free(fi, mddev->flush_pool);
-		} else {
-			INIT_WORK(&fi->flush_work, submit_flushes);
-			queue_work(md_wq, &fi->flush_work);
-		}
+static void md_submit_flush_data(struct work_struct *ws)
+{
+	struct mddev *mddev = container_of(ws, struct mddev, flush_work);
+	struct bio *bio = mddev->flush_bio;
+
+	/*
+	 * must reset flush_bio before calling into md_handle_request to avoid a
+	 * deadlock, because other bios passed md_handle_request suspend check
+	 * could wait for this and below md_handle_request could wait for those
+	 * bios because of suspend check
+	 */
+	mddev->flush_bio = NULL;
+	wake_up(&mddev->sb_wait);
+
+	if (bio->bi_iter.bi_size == 0) {
+		/* an empty barrier - all done */
+		bio_endio(bio);
+	} else {
+		bio->bi_opf &= ~REQ_PREFLUSH;
+		md_handle_request(mddev, bio);
 	}
 }
+
+void md_flush_request(struct mddev *mddev, struct bio *bio)
+{
+	spin_lock_irq(&mddev->lock);
+	wait_event_lock_irq(mddev->sb_wait,
+			    !mddev->flush_bio,
+			    mddev->lock);
+	mddev->flush_bio = bio;
+	spin_unlock_irq(&mddev->lock);
+
+	INIT_WORK(&mddev->flush_work, submit_flushes);
+	queue_work(md_wq, &mddev->flush_work);
+}
 EXPORT_SYMBOL(md_flush_request);
 
 static inline struct mddev *mddev_get(struct mddev *mddev)
@@ -560,6 +537,7 @@ void mddev_init(struct mddev *mddev)
 	atomic_set(&mddev->openers, 0);
 	atomic_set(&mddev->active_io, 0);
 	spin_lock_init(&mddev->lock);
+	atomic_set(&mddev->flush_pending, 0);
 	init_waitqueue_head(&mddev->sb_wait);
 	init_waitqueue_head(&mddev->recovery_wait);
 	mddev->reshape_position = MaxSector;
@@ -5511,22 +5489,6 @@ int md_run(struct mddev *mddev)
 		if (err)
 			return err;
 	}
-	if (mddev->flush_pool == NULL) {
-		mddev->flush_pool = mempool_create(NR_FLUSH_INFOS, flush_info_alloc,
-						flush_info_free, mddev);
-		if (!mddev->flush_pool) {
-			err = -ENOMEM;
-			goto abort;
-		}
-	}
-	if (mddev->flush_bio_pool == NULL) {
-		mddev->flush_bio_pool = mempool_create(NR_FLUSH_BIOS, flush_bio_alloc,
-						flush_bio_free, mddev);
-		if (!mddev->flush_bio_pool) {
-			err = -ENOMEM;
-			goto abort;
-		}
-	}
 
 	spin_lock(&pers_lock);
 	pers = find_pers(mddev->level, mddev->clevel);
@@ -5686,11 +5648,8 @@ int md_run(struct mddev *mddev)
 	return 0;
 
 abort:
-	mempool_destroy(mddev->flush_bio_pool);
-	mddev->flush_bio_pool = NULL;
-	mempool_destroy(mddev->flush_pool);
-	mddev->flush_pool = NULL;
-
+	bioset_exit(&mddev->bio_set);
+	bioset_exit(&mddev->sync_set);
 	return err;
 }
 EXPORT_SYMBOL_GPL(md_run);
@@ -5894,14 +5853,6 @@ static void __md_stop(struct mddev *mdde
 		mddev->to_remove = &md_redundancy_group;
 	module_put(pers->owner);
 	clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
-	if (mddev->flush_bio_pool) {
-		mempool_destroy(mddev->flush_bio_pool);
-		mddev->flush_bio_pool = NULL;
-	}
-	if (mddev->flush_pool) {
-		mempool_destroy(mddev->flush_pool);
-		mddev->flush_pool = NULL;
-	}
 }
 
 void md_stop(struct mddev *mddev)
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -252,19 +252,6 @@ enum mddev_sb_flags {
 	MD_SB_NEED_REWRITE,	/* metadata write needs to be repeated */
 };
 
-#define NR_FLUSH_INFOS 8
-#define NR_FLUSH_BIOS 64
-struct flush_info {
-	struct bio			*bio;
-	struct mddev			*mddev;
-	struct work_struct		flush_work;
-	atomic_t			flush_pending;
-};
-struct flush_bio {
-	struct flush_info *fi;
-	struct md_rdev *rdev;
-};
-
 struct mddev {
 	void				*private;
 	struct md_personality		*pers;
@@ -470,8 +457,13 @@ struct mddev {
 						   * metadata and bitmap writes
 						   */
 
-	mempool_t			*flush_pool;
-	mempool_t			*flush_bio_pool;
+	/* Generic flush handling.
+	 * The last to finish preflush schedules a worker to submit
+	 * the rest of the request (without the REQ_PREFLUSH flag).
+	 */
+	struct bio *flush_bio;
+	atomic_t flush_pending;
+	struct work_struct flush_work;
 	struct work_struct event_work;	/* used by dm to report failure event */
 	void (*sync_super)(struct mddev *mddev, struct md_rdev *rdev);
 	struct md_cluster_info		*cluster_info;



  parent reply	other threads:[~2019-05-23 19:27 UTC|newest]

Thread overview: 142+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-23 19:05 [PATCH 5.1 000/122] 5.1.5-stable review Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 001/122] ipv6: fix src addr routing with the exception table Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 002/122] ipv6: prevent possible fib6 leaks Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 003/122] net: Always descend into dsa/ Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 004/122] net: avoid weird emergency message Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 005/122] net/mlx4_core: Change the error print to info print Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 006/122] net: test nouarg before dereferencing zerocopy pointers Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 007/122] net: usb: qmi_wwan: add Telit 0x1260 and 0x1261 compositions Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 008/122] nfp: flower: add rcu locks when accessing netdev for tunnels Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 009/122] ppp: deflate: Fix possible crash in deflate_init Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 010/122] rtnetlink: always put IFLA_LINK for links with a link-netnsid Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 011/122] tipc: switch order of device registration to fix a crash Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 012/122] vsock/virtio: free packets during the socket release Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 013/122] tipc: fix modprobe tipc failed after switch order of device registration Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 014/122] mlxsw: core: Prevent QSFP module initialization for old hardware Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 015/122] mlxsw: core: Prevent reading unsupported slave address from SFP EEPROM Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 016/122] flow_offload: support CVLAN match Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 017/122] net/mlx5e: Fix calling wrong function to get inner vlan key and mask Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 018/122] net/mlx5: Fix peer pf disable hca command Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 019/122] vsock/virtio: Initialize core virtio vsock before registering the driver Greg Kroah-Hartman
2019-05-23 19:05   ` Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 020/122] net/mlx5e: Add missing ethtool driver info for representors Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 021/122] net/mlx5e: Additional check for flow destination comparison Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 022/122] net/mlx5: Imply MLXFW in mlx5_core Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 023/122] net/mlx5e: Fix ethtool rxfh commands when CONFIG_MLX5_EN_RXNFC is disabled Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 024/122] blk-mq: free hw queues resource in hctxs release handler Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 025/122] regulator: core: fix error path for regulator_set_voltage_unlocked Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 026/122] parisc: Export running_on_qemu symbol for modules Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 027/122] parisc: Add memory clobber to TLB purges Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 028/122] parisc: Skip registering LED when running in QEMU Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 029/122] parisc: Add memory barrier to asm pdc and sync instructions Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 030/122] parisc: Allow live-patching of __meminit functions Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 031/122] parisc: Use PA_ASM_LEVEL in boot code Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 032/122] parisc: Rename LEVEL to PA_ASM_LEVEL to avoid name clash with DRBD code Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 033/122] stm class: Fix channel free in stm output free path Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 034/122] stm class: Fix channel bitmap on 32-bit systems Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 035/122] brd: re-enable __GFP_HIGHMEM in brd_insert_page() Greg Kroah-Hartman
2019-05-23 19:05 ` [PATCH 5.1 036/122] proc: prevent changes to overridden credentials Greg Kroah-Hartman
2019-05-23 19:05 ` Greg Kroah-Hartman [this message]
2019-05-23 19:06 ` [PATCH 5.1 038/122] md: batch flush requests Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 039/122] md: add mddev->pers to avoid potential NULL pointer dereference Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 040/122] md: add a missing endianness conversion in check_sb_changes Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 041/122] dcache: sort the freeing-without-RCU-delay mess for good Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 042/122] intel_th: msu: Fix single mode with IOMMU Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 043/122] p54: drop device reference count if fails to enable device Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 044/122] of: fix clang -Wunsequenced for be32_to_cpu() Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 045/122] brcmfmac: Add DMI nvram filename quirk for ACEPC T8 and T11 mini PCs Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 046/122] cifs: fix credits leak for SMB1 oplock breaks Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 047/122] cifs: fix strcat buffer overflow and reduce raciness in smb21_set_oplock_level() Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 048/122] phy: ti-pipe3: fix missing bit-wise or operator when assigning val Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 049/122] media: ov6650: Fix sensor possibly not detected on probe Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 050/122] media: seco-cec: fix building with RC_CORE=m Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 051/122] media: imx: csi: Allow unknown nearest upstream entities Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 052/122] media: imx: Clear fwnode link struct for each endpoint iteration Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 053/122] media: imx: Rename functions that add IPU-internal subdevs Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 054/122] media: imx: Dont register IPU subdevs/links if CSI port missing Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 055/122] RDMA/mlx5: Use get_zeroed_page() for clock_info Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 056/122] RDMA/ipoib: Allow user space differentiate between valid dev_port Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 057/122] NFS4: Fix v4.0 client state corruption when mount Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 058/122] PNFS fallback to MDS if no deviceid found Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 059/122] clk: hi3660: Mark clk_gate_ufs_subsys as critical Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 060/122] clk: tegra: Fix PLLM programming on Tegra124+ when PMC overrides divider Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 061/122] clk: mediatek: Disable tuner_en before change PLL rate Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 062/122] clk: rockchip: fix wrong clock definitions for rk3328 Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 063/122] udlfb: delete the unused parameter for dlfb_handle_damage Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 064/122] udlfb: fix sleeping inside spinlock Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 065/122] udlfb: introduce a rendering mutex Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 066/122] fuse: fix writepages on 32bit Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 067/122] fuse: honor RLIMIT_FSIZE in fuse_file_fallocate Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 068/122] ovl: fix missing upper fs freeze protection on copy up for ioctl Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 069/122] fsnotify: fix unlink performance regression Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 070/122] gcc-plugins: arm_ssp_per_task_plugin: Fix for older GCC < 6 Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 071/122] iommu/tegra-smmu: Fix invalid ASID bits on Tegra30/114 Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 072/122] ceph: flush dirty inodes before proceeding with remount Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 073/122] x86_64: Add gap to int3 to allow for call emulation Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 074/122] x86_64: Allow breakpoints to emulate call instructions Greg Kroah-Hartman
2019-05-23 19:06   ` Greg Kroah-Hartman
2019-05-23 19:06   ` gregkh
2019-05-23 19:06 ` [PATCH 5.1 075/122] ftrace/x86_64: Emulate call function while updating in breakpoint handler Greg Kroah-Hartman
2019-05-23 19:06   ` Greg Kroah-Hartman
2019-05-23 19:06   ` gregkh
2019-05-23 19:06 ` [PATCH 5.1 076/122] tracing: Fix partial reading of trace events id file Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 077/122] tracing: probeevent: Fix to make the type of $comm string Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 078/122] memory: tegra: Fix integer overflow on tick value calculation Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 079/122] perf intel-pt: Fix instructions sampling rate Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 080/122] perf intel-pt: Fix improved sample timestamp Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 081/122] perf intel-pt: Fix sample timestamp wrt non-taken branches Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 082/122] MIPS: perf: Fix build with CONFIG_CPU_BMIPS5000 enabled Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 083/122] objtool: Allow AR to be overridden with HOSTAR Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 084/122] x86/mpx, mm/core: Fix recursive munmap() corruption Greg Kroah-Hartman
2019-05-23 19:06   ` Greg Kroah-Hartman
2019-05-23 19:06   ` Greg Kroah-Hartman
2019-05-23 19:06   ` Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 085/122] fbdev/efifb: Ignore framebuffer memmap entries that lack any memory types Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 086/122] fbdev: sm712fb: fix brightness control on reboot, dont set SR30 Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 087/122] fbdev: sm712fb: fix VRAM detection, dont set SR70/71/74/75 Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 088/122] fbdev: sm712fb: fix white screen of death on reboot, dont set CR3B-CR3F Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 089/122] fbdev: sm712fb: fix boot screen glitch when sm712fb replaces VGA Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 090/122] fbdev: sm712fb: fix crashes during framebuffer writes by correctly mapping VRAM Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 091/122] fbdev: sm712fb: fix support for 1024x768-16 mode Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 092/122] fbdev: sm712fb: use 1024x768 by default on non-MIPS, fix garbled display Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 093/122] fbdev: sm712fb: fix crashes and garbled display during DPMS modesetting Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 094/122] PCI: Mark AMD Stoney Radeon R7 GPU ATS as broken Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 095/122] PCI: Mark Atheros AR9462 to avoid bus reset Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 096/122] PCI: Reset Lenovo ThinkPad P50 nvgpu at boot if necessary Greg Kroah-Hartman
2019-05-23 19:06   ` Greg Kroah-Hartman
2019-05-23 19:06 ` [PATCH 5.1 097/122] PCI: Init PCIe feature bits for managed host bridge alloc Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 098/122] PCI/AER: Change pci_aer_init() stub to return void Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 099/122] PCI: rcar: Add the initialization of PCIe link in resume_noirq() Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 100/122] PCI: Factor out pcie_retrain_link() function Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 101/122] PCI: Work around Pericom PCIe-to-PCI bridge Retrain Link erratum Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 102/122] dm cache metadata: Fix loading discard bitset Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 103/122] dm zoned: Fix zone report handling Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 104/122] dm init: fix max devices/targets checks Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 105/122] dm delay: fix a crash when invalid device is specified Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 106/122] dm crypt: move detailed message into debug level Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 107/122] dm integrity: correctly calculate the size of metadata area Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 108/122] dm ioctl: fix hang in early create error condition Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 109/122] dm mpath: always free attached_handler_name in parse_path() Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 110/122] fuse: Add FOPEN_STREAM to use stream_open() Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 111/122] dm: make sure to obey max_io_len_target_boundary Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 112/122] Revert "Dont jump to compute_result state from check_result state" Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 113/122] md/raid: raid5 preserve the writeback action after the parity check Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 114/122] dmaengine: imx-sdma: Only check ratio on parts that support 1:1 Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 115/122] driver core: Postpone DMA tear-down until after devres release for probe failure Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 116/122] bpf: relax inode permission check for retrieving bpf program Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 117/122] bpf: add map_lookup_elem_sys_only for lookups from syscall side Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 118/122] bpf, lru: avoid messing with eviction heuristics upon syscall lookup Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 119/122] y2038: Make CONFIG_64BIT_TIME unconditional Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 120/122] btrfs: reloc: Fix NULL pointer dereference due to expanded reloc_root lifespan Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 121/122] ARM: dts: imx6q-logicpd: Reduce inrush current on USBH1 Greg Kroah-Hartman
2019-05-23 19:07 ` [PATCH 5.1 122/122] ARM: dts: imx6q-logicpd: Reduce inrush current on start Greg Kroah-Hartman
2019-05-23 23:08 ` [PATCH 5.1 000/122] 5.1.5-stable review kernelci.org bot
2019-05-24 19:48   ` Kevin Hilman
2019-05-25 16:07     ` Greg Kroah-Hartman
2019-05-24  8:53 ` Naresh Kamboju
2019-05-24 15:01   ` Greg Kroah-Hartman
2019-05-24 11:05 ` Jon Hunter
2019-05-24 11:05   ` Jon Hunter
2019-05-24 15:01   ` Greg Kroah-Hartman
2019-05-24 18:55 ` shuah
2019-05-24 19:07   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190523181709.722186272@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=axboe@kernel.dk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=neilb@suse.com \
    --cc=songliubraving@fb.com \
    --cc=stable@vger.kernel.org \
    --cc=xni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.