stable.vger.kernel.org archive mirror
 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, Ilya Dryomov <ilya.dryomov@inktank.com>,
	Eric Eastman <eric0e@aol.com>,
	Greg Wilson <greg.wilson@keepertech.com>,
	Alex Elder <elder@linaro.org>
Subject: [PATCH 3.16 123/158] rbd: rework rbd_request_fn()
Date: Mon, 15 Sep 2014 12:26:02 -0700	[thread overview]
Message-ID: <20140915192546.579281062@linuxfoundation.org> (raw)
In-Reply-To: <20140915192542.872134685@linuxfoundation.org>

3.16-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ilya Dryomov <ilya.dryomov@inktank.com>

commit bc1ecc65a259fa9333dc8bd6a4ba0cf03b7d4bf8 upstream.

While it was never a good idea to sleep in request_fn(), commit
34c6bc2c919a ("locking/mutexes: Add extra reschedule point") made it
a *bad* idea.  mutex_lock() since 3.15 may reschedule *before* putting
task on the mutex wait queue, which for tasks in !TASK_RUNNING state
means block forever.  request_fn() may be called with !TASK_RUNNING on
the way to schedule() in io_schedule().

Offload request handling to a workqueue, one per rbd device, to avoid
calling blocking primitives from rbd_request_fn().

Fixes: http://tracker.ceph.com/issues/8818

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Tested-by: Eric Eastman <eric0e@aol.com>
Tested-by: Greg Wilson <greg.wilson@keepertech.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/block/rbd.c |  194 +++++++++++++++++++++++++++++++---------------------
 1 file changed, 118 insertions(+), 76 deletions(-)

--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -42,6 +42,7 @@
 #include <linux/blkdev.h>
 #include <linux/slab.h>
 #include <linux/idr.h>
+#include <linux/workqueue.h>
 
 #include "rbd_types.h"
 
@@ -332,7 +333,10 @@ struct rbd_device {
 
 	char			name[DEV_NAME_LEN]; /* blkdev name, e.g. rbd3 */
 
+	struct list_head	rq_queue;	/* incoming rq queue */
 	spinlock_t		lock;		/* queue, flags, open_count */
+	struct workqueue_struct	*rq_wq;
+	struct work_struct	rq_work;
 
 	struct rbd_image_header	header;
 	unsigned long		flags;		/* possibly lock protected */
@@ -3183,102 +3187,129 @@ out:
 	return ret;
 }
 
-static void rbd_request_fn(struct request_queue *q)
-		__releases(q->queue_lock) __acquires(q->queue_lock)
+static void rbd_handle_request(struct rbd_device *rbd_dev, struct request *rq)
 {
-	struct rbd_device *rbd_dev = q->queuedata;
-	struct request *rq;
+	struct rbd_img_request *img_request;
+	u64 offset = (u64)blk_rq_pos(rq) << SECTOR_SHIFT;
+	u64 length = blk_rq_bytes(rq);
+	bool wr = rq_data_dir(rq) == WRITE;
 	int result;
 
-	while ((rq = blk_fetch_request(q))) {
-		bool write_request = rq_data_dir(rq) == WRITE;
-		struct rbd_img_request *img_request;
-		u64 offset;
-		u64 length;
+	/* Ignore/skip any zero-length requests */
 
-		/* Ignore any non-FS requests that filter through. */
+	if (!length) {
+		dout("%s: zero-length request\n", __func__);
+		result = 0;
+		goto err_rq;
+	}
 
-		if (rq->cmd_type != REQ_TYPE_FS) {
-			dout("%s: non-fs request type %d\n", __func__,
-				(int) rq->cmd_type);
-			__blk_end_request_all(rq, 0);
-			continue;
+	/* Disallow writes to a read-only device */
+
+	if (wr) {
+		if (rbd_dev->mapping.read_only) {
+			result = -EROFS;
+			goto err_rq;
 		}
+		rbd_assert(rbd_dev->spec->snap_id == CEPH_NOSNAP);
+	}
 
-		/* Ignore/skip any zero-length requests */
+	/*
+	 * Quit early if the mapped snapshot no longer exists.  It's
+	 * still possible the snapshot will have disappeared by the
+	 * time our request arrives at the osd, but there's no sense in
+	 * sending it if we already know.
+	 */
+	if (!test_bit(RBD_DEV_FLAG_EXISTS, &rbd_dev->flags)) {
+		dout("request for non-existent snapshot");
+		rbd_assert(rbd_dev->spec->snap_id != CEPH_NOSNAP);
+		result = -ENXIO;
+		goto err_rq;
+	}
 
-		offset = (u64) blk_rq_pos(rq) << SECTOR_SHIFT;
-		length = (u64) blk_rq_bytes(rq);
+	if (offset && length > U64_MAX - offset + 1) {
+		rbd_warn(rbd_dev, "bad request range (%llu~%llu)", offset,
+			 length);
+		result = -EINVAL;
+		goto err_rq;	/* Shouldn't happen */
+	}
 
-		if (!length) {
-			dout("%s: zero-length request\n", __func__);
-			__blk_end_request_all(rq, 0);
-			continue;
-		}
+	if (offset + length > rbd_dev->mapping.size) {
+		rbd_warn(rbd_dev, "beyond EOD (%llu~%llu > %llu)", offset,
+			 length, rbd_dev->mapping.size);
+		result = -EIO;
+		goto err_rq;
+	}
 
-		spin_unlock_irq(q->queue_lock);
+	img_request = rbd_img_request_create(rbd_dev, offset, length, wr);
+	if (!img_request) {
+		result = -ENOMEM;
+		goto err_rq;
+	}
+	img_request->rq = rq;
 
-		/* Disallow writes to a read-only device */
+	result = rbd_img_request_fill(img_request, OBJ_REQUEST_BIO, rq->bio);
+	if (result)
+		goto err_img_request;
 
-		if (write_request) {
-			result = -EROFS;
-			if (rbd_dev->mapping.read_only)
-				goto end_request;
-			rbd_assert(rbd_dev->spec->snap_id == CEPH_NOSNAP);
-		}
+	result = rbd_img_request_submit(img_request);
+	if (result)
+		goto err_img_request;
 
-		/*
-		 * Quit early if the mapped snapshot no longer
-		 * exists.  It's still possible the snapshot will
-		 * have disappeared by the time our request arrives
-		 * at the osd, but there's no sense in sending it if
-		 * we already know.
-		 */
-		if (!test_bit(RBD_DEV_FLAG_EXISTS, &rbd_dev->flags)) {
-			dout("request for non-existent snapshot");
-			rbd_assert(rbd_dev->spec->snap_id != CEPH_NOSNAP);
-			result = -ENXIO;
-			goto end_request;
-		}
+	return;
 
-		result = -EINVAL;
-		if (offset && length > U64_MAX - offset + 1) {
-			rbd_warn(rbd_dev, "bad request range (%llu~%llu)\n",
-				offset, length);
-			goto end_request;	/* Shouldn't happen */
-		}
+err_img_request:
+	rbd_img_request_put(img_request);
+err_rq:
+	if (result)
+		rbd_warn(rbd_dev, "%s %llx at %llx result %d",
+			 wr ? "write" : "read", length, offset, result);
+	blk_end_request_all(rq, result);
+}
 
-		result = -EIO;
-		if (offset + length > rbd_dev->mapping.size) {
-			rbd_warn(rbd_dev, "beyond EOD (%llu~%llu > %llu)\n",
-				offset, length, rbd_dev->mapping.size);
-			goto end_request;
-		}
+static void rbd_request_workfn(struct work_struct *work)
+{
+	struct rbd_device *rbd_dev =
+	    container_of(work, struct rbd_device, rq_work);
+	struct request *rq, *next;
+	LIST_HEAD(requests);
 
-		result = -ENOMEM;
-		img_request = rbd_img_request_create(rbd_dev, offset, length,
-							write_request);
-		if (!img_request)
-			goto end_request;
+	spin_lock_irq(&rbd_dev->lock); /* rq->q->queue_lock */
+	list_splice_init(&rbd_dev->rq_queue, &requests);
+	spin_unlock_irq(&rbd_dev->lock);
 
-		img_request->rq = rq;
+	list_for_each_entry_safe(rq, next, &requests, queuelist) {
+		list_del_init(&rq->queuelist);
+		rbd_handle_request(rbd_dev, rq);
+	}
+}
 
-		result = rbd_img_request_fill(img_request, OBJ_REQUEST_BIO,
-						rq->bio);
-		if (!result)
-			result = rbd_img_request_submit(img_request);
-		if (result)
-			rbd_img_request_put(img_request);
-end_request:
-		spin_lock_irq(q->queue_lock);
-		if (result < 0) {
-			rbd_warn(rbd_dev, "%s %llx at %llx result %d\n",
-				write_request ? "write" : "read",
-				length, offset, result);
+/*
+ * Called with q->queue_lock held and interrupts disabled, possibly on
+ * the way to schedule().  Do not sleep here!
+ */
+static void rbd_request_fn(struct request_queue *q)
+{
+	struct rbd_device *rbd_dev = q->queuedata;
+	struct request *rq;
+	int queued = 0;
+
+	rbd_assert(rbd_dev);
 
-			__blk_end_request_all(rq, result);
+	while ((rq = blk_fetch_request(q))) {
+		/* Ignore any non-FS requests that filter through. */
+		if (rq->cmd_type != REQ_TYPE_FS) {
+			dout("%s: non-fs request type %d\n", __func__,
+				(int) rq->cmd_type);
+			__blk_end_request_all(rq, 0);
+			continue;
 		}
+
+		list_add_tail(&rq->queuelist, &rbd_dev->rq_queue);
+		queued++;
 	}
+
+	if (queued)
+		queue_work(rbd_dev->rq_wq, &rbd_dev->rq_work);
 }
 
 /*
@@ -3848,6 +3879,8 @@ static struct rbd_device *rbd_dev_create
 		return NULL;
 
 	spin_lock_init(&rbd_dev->lock);
+	INIT_LIST_HEAD(&rbd_dev->rq_queue);
+	INIT_WORK(&rbd_dev->rq_work, rbd_request_workfn);
 	rbd_dev->flags = 0;
 	atomic_set(&rbd_dev->parent_ref, 0);
 	INIT_LIST_HEAD(&rbd_dev->node);
@@ -5066,12 +5099,17 @@ static int rbd_dev_device_setup(struct r
 	ret = rbd_dev_mapping_set(rbd_dev);
 	if (ret)
 		goto err_out_disk;
+
 	set_capacity(rbd_dev->disk, rbd_dev->mapping.size / SECTOR_SIZE);
 	set_disk_ro(rbd_dev->disk, rbd_dev->mapping.read_only);
 
+	rbd_dev->rq_wq = alloc_workqueue(rbd_dev->disk->disk_name, 0, 0);
+	if (!rbd_dev->rq_wq)
+		goto err_out_mapping;
+
 	ret = rbd_bus_add_dev(rbd_dev);
 	if (ret)
-		goto err_out_mapping;
+		goto err_out_workqueue;
 
 	/* Everything's ready.  Announce the disk to the world. */
 
@@ -5083,6 +5121,9 @@ static int rbd_dev_device_setup(struct r
 
 	return ret;
 
+err_out_workqueue:
+	destroy_workqueue(rbd_dev->rq_wq);
+	rbd_dev->rq_wq = NULL;
 err_out_mapping:
 	rbd_dev_mapping_clear(rbd_dev);
 err_out_disk:
@@ -5314,6 +5355,7 @@ static void rbd_dev_device_release(struc
 {
 	struct rbd_device *rbd_dev = dev_to_rbd_dev(dev);
 
+	destroy_workqueue(rbd_dev->rq_wq);
 	rbd_free_disk(rbd_dev);
 	clear_bit(RBD_DEV_FLAG_EXISTS, &rbd_dev->flags);
 	rbd_dev_mapping_clear(rbd_dev);



  parent reply	other threads:[~2014-09-15 19:26 UTC|newest]

Thread overview: 160+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-15 19:23 [PATCH 3.16 000/158] 3.16.3-stable review Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 001/158] reiserfs: fix corruption introduced by balance_leaf refactor Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 002/158] reiserfs: Fix use after free in journal teardown Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 003/158] media: xc5000: Fix get_frequency() Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 004/158] media: xc4000: " Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 005/158] media: au0828: Only alt setting logic when needed Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 007/158] media: mt9v032: fix hblank calculation Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 008/158] media: v4l: vsp1: Remove the unneeded vsp1_video_buffer video field Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 009/158] media: v4l: vb2: Fix stream start and buffer completion race Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 010/158] media: sms: Remove CONFIG_ prefix from Kconfig symbols Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 011/158] iommu/vt-d: Exclude devices using RMRRs from IOMMU API domains Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 012/158] powerpc/powernv: Fix IOMMU group lost Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 013/158] iommu/vt-d: Defer domain removal if device is assigned to a driver Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 014/158] iommu/amd: Fix cleanup_domain for mass device removal Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 015/158] spi: orion: fix incorrect handling of cell-index DT property Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 016/158] spi: omap2-mcspi: Configure hardware when slave driver changes mode Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 017/158] s390/locking: Reenable optimistic spinning Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 018/158] powerpc/cpufreq: Add pr_warn() on OPAL firmware failures Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 020/158] firmware: Do not use WARN_ON(!spin_is_locked()) Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 021/158] tpm: missing tpm_chip_put in tpm_get_random() Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 022/158] tpm: Provide a generic means to override the chip returned timeouts Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 023/158] tpm: Properly clean sysfs entries in error path Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 024/158] CAPABILITIES: remove undefined caps from all processes Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 025/158] fanotify: fix double free of pending permission events Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 026/158] ocfs2: do not write error flag to user structure we cannot copy from/to Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 027/158] sh: fix build error by adding generic ioport_{map/unmap}() Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 028/158] mm: fix potential infinite loop in dissolve_free_huge_pages() Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 029/158] kernel/smp.c:on_each_cpu_cond(): fix warning in fallback path Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 030/158] mfd: omap-usb-host: Fix improper mask use Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 031/158] drivers/mfd/rtsx_usb.c: export device table Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 032/158] mfd: twl4030-power: Fix PM idle pin configuration to not conflict with regulators Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 033/158] regulator: arizona-ldo1: remove bypass functionality Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 034/158] regulator: tps65218: fix DCDC4 linear voltage range Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 035/158] powerpc/cpuidle: Fix parsing of idle state flags from device-tree Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 036/158] powerpc/mm/numa: Fix break placement Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 037/158] powerpc/mm: Use read barrier when creating real_pte Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 038/158] powerpc/pseries: Failure on removing device node Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 039/158] powerpc/pseries: Avoid deadlock on removing ddw Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 040/158] powerpc/thp: Add write barrier after updating the valid bit Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 041/158] powerpc/thp: Dont recompute vsid and ssize in loop on invalidate Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 042/158] powerpc/thp: Invalidate old 64K based hash page mapping before insert of 4k pte Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 043/158] powerpc/thp: Handle combo pages in invalidate Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 044/158] powerpc/thp: Invalidate with vpn in loop Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 045/158] powerpc/thp: Use ACCESS_ONCE when loading pmdp Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 046/158] scsi: use short driver name for per-driver cmd slab caches Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 047/158] Drivers: scsi: storvsc: Implement a eh_timed_out handler Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 048/158] Drivers: scsi: storvsc: Filter commands based on the storage protocol version Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 049/158] Drivers: scsi: storvsc: Change the limits to reflect the values on the host Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 050/158] Drivers: scsi: storvsc: Set cmd_per_lun to reflect value supported by the Host Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 051/158] Drivers: scsi: storvsc: Fix a bug in handling VMBUS protocol version Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 052/158] drivers: scsi: storvsc: Set srb_flags in all cases Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 053/158] drivers: scsi: storvsc: Correctly handle TEST_UNIT_READY failure Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 054/158] scsi_scan: Restrict sequential scan to 256 LUNs Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 055/158] scsi: add a blacklist flag which enables VPD page inquiries Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 056/158] scsi: do not issue SCSI RSOC command to Promise Vtrak E610f Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 057/158] scsi_transport_srp: Fix fast_io_fail_tmo=dev_loss_tmo=off behavior Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 058/158] SCSI: save command pool address of Scsi_Host Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 059/158] fix regression in SCSI_IOCTL_SEND_COMMAND Greg Kroah-Hartman
2014-09-15 19:24 ` [PATCH 3.16 060/158] MIPS: GIC: Prevent array overrun Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 061/158] MIPS: O32/32-bit: Fix bug which can cause incorrect system call restarts Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 062/158] MIPS: ptrace: Test correct tasks flags in task_user_regset_view() Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 063/158] MIPS: ptrace: Change GP regset to use correct core dump register layout Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 064/158] MIPS: ptrace: Avoid smp_processor_id() when retrieving FPU IR Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 065/158] MIPS: smp-mt: Fix link error when PROC_FS=n Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 066/158] MIPS: Prevent user from setting FCSR cause bits Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 067/158] MIPS: tlbex: Fix a missing statement for HUGETLB Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 068/158] MIPS: Remove BUG_ON(!is_fpu_owner()) in do_ade() Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 069/158] MIPS: asm/reg.h: Make 32- and 64-bit definitions available at the same time Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 070/158] MIPS: syscall: Fix AUDIT value for O32 processes on MIPS64 Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 071/158] MIPS: scall64-o32: Fix indirect syscall detection Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 072/158] MIPS: Malta: Improve system memory detection for {e, }memsize >= 2G Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 073/158] MIPS: OCTEON: make get_system_type() thread-safe Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 074/158] MIPS: EVA: Add new EVA header Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 075/158] MIPS: Malta: EVA: Rename eva_entry to platform_eva_init Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 076/158] MIPS: CPS: Initialize EVA before bringing up VPEs from secondary cores Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 077/158] ASoC: wm8994: Prevent double lock of accdet_lock mutex on wm1811 Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 078/158] ASoC: pcm: fix dpcm_path_put in dpcm runtime update Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 079/158] ASoC: wm_adsp: Add missing MODULE_LICENSE Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 080/158] ASoC: blackfin: use samples to set silence Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 081/158] ASoC: samsung: Correct I2S DAI suspend/resume ops Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 082/158] ASoC: adau1701: fix adau1701_reg_read() Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 083/158] ASoC: max98090: Fix missing free_irq Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 084/158] ASoC: tlv320aic31xx: Do not ignore errors in aic31xx_device_init() Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 085/158] ASoC: Intel: Cleanup HSW pcm format support Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 086/158] ASoC: pxa: pxa-ssp: small leak in probe() Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 087/158] ASoC: pxa-ssp: drop SNDRV_PCM_FMTBIT_S24_LE Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 089/158] ASoC: rt5640: Do not allow regmap to use bulk read-write operations Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 090/158] ASoC: omap-twl4030: Fix typo in 2nd dai links platform_name Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 091/158] bfa: Fix undefined bit shift on big-endian architectures with 32-bit DMA address Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 092/158] bq2415x_charger: Fix Atomic Sleep Bug Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 093/158] ACPICA: Utilities: Fix memory leak in acpi_ut_copy_iobject_to_iobject Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 094/158] ACPICA: Namespace: Properly null terminate objects detached from a namespace node Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 095/158] ACPI / hotplug: Check scan handlers in acpi_scan_hot_remove() Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 096/158] spi/pxa2xx: Add ACPI ID for Intel Braswell Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 097/158] ACPI: Run fixed event device notifications in process context Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 098/158] ACPI / scan: Allow ACPI drivers to bind to PNP device objects Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 099/158] ACPI / EC: Add support to disallow QR_EC to be issued when SCI_EVT isnt set Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 100/158] ACPI / EC: Add support to disallow QR_EC to be issued before completing previous QR_EC Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 101/158] ACPI / scan: not cache _SUN value in struct acpi_device_pnp Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 102/158] ACPI / cpuidle: fix deadlock between cpuidle_lock and cpu_hotplug.lock Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 103/158] ACPI / video: Fix use_native_backlight selection logic Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 105/158] ACPI / video: Disable native_backlight on HP ENVY 15 Notebook PC Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 106/158] xen/events/fifo: reset control block and local HEADs on resume Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 107/158] ring-buffer: Always reset iterator to reader page Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 108/158] ring-buffer: Up rb_iter_peek() loop count to 3 Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 109/158] mnt: Only change user settable mount flags in remount Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 110/158] mnt: Move the test for MNT_LOCK_READONLY from change_mount_flags into do_remount Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 111/158] mnt: Correct permission checks in do_remount Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 112/158] mnt: Change the default remount atime from relatime to the existing value Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 113/158] mnt: Add tests for unprivileged remount cases that have found to be faulty Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 114/158] get rid of propagate_umount() mistakenly treating slaves as busy Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 115/158] fix EBUSY on umount() from MNT_SHRINKABLE Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 116/158] Bluetooth: btmrvl: wait for HOST_SLEEP_ENABLE event in suspend Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 117/158] Bluetooth: Fix merge of advertising data and scan response data Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 118/158] Bluetooth: Fix tracking local SSP authentication requirement Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 119/158] Bluetooth: never linger on process exit Greg Kroah-Hartman
2014-09-15 19:25 ` [PATCH 3.16 120/158] Bluetooth: Fix using uninitialized variable when pairing Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 121/158] Bluetooth: Avoid use of session socket after the session gets freed Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 122/158] __generic_file_write_iter(): fix handling of sync error after DIO Greg Kroah-Hartman
2014-09-15 19:26 ` Greg Kroah-Hartman [this message]
2014-09-15 19:26 ` [PATCH 3.16 124/158] fix copy_tree() regression Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 125/158] md/raid1,raid10: always abort recover on write error Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 126/158] md/raid5: avoid livelock caused by non-aligned writes Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 127/158] md/raid6: avoid data corruption during recovery of double-degraded RAID6 Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 128/158] md/raid10: fix memory leak when reshaping a RAID10 Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 129/158] md/raid10: Fix memory leak when raid10 reshape completes Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 130/158] RDMA/iwcm: Use a default listen backlog if needed Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 131/158] RDMA/uapi: Include socket.h in rdma_user_cm.h Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 132/158] xfs: ensure verifiers are attached to recovered buffers Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 133/158] xfs: quotacheck leaves dquot buffers without verifiers Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 134/158] xfs: dont dirty buffers beyond EOF Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 135/158] xfs: dont zero partial page cache pages during O_DIRECT writes Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 136/158] xfs: dont zero partial page cache pages during O_DIRECT write Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 137/158] libceph: set last_piece in ceph_msg_data_pages_cursor_init() correctly Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 138/158] libceph: gracefully handle large reply messages from the mon Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 139/158] libceph: add process_one_ticket() helper Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 140/158] libceph: do not hard code max auth ticket len Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 141/158] CIFS: Fix STATUS_CANNOT_DELETE error mapping for SMB2 Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 142/158] CIFS: Fix async reading on reconnects Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 143/158] CIFS: Possible null ptr deref in SMB2_tcon Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 144/158] CIFS: Fix wrong directory attributes after rename Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 145/158] CIFS: Fix directory rename error Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 146/158] CIFS: Fix wrong filename length for SMB2 Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 147/158] CIFS: Fix wrong restart readdir for SMB1 Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 148/158] mtd/ftl: fix the double free of the buffers allocated in build_maps() Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 149/158] mtd: nand: omap: Fix 1-bit Hamming code scheme, omap_calculate_ecc() Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 150/158] blkcg: dont call into policy draining if root_blkg is already gone Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 151/158] dm table: propagate QUEUE_FLAG_NO_SG_MERGE Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 152/158] IB/srp: Fix deadlock between host removal and multipathd Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 153/158] drm/nouveau: Dis/Enable vblank irqs during suspend/resume Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 154/158] drm/nouveau: Bump version from 1.1.1 to 1.1.2 Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 155/158] vfs: fix bad hashing of dentries Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 156/158] CIFS: Fix SMB2 readdir error handling Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 157/158] KEYS: Fix use-after-free in assoc_array_gc() Greg Kroah-Hartman
2014-09-15 19:26 ` [PATCH 3.16 158/158] KEYS: Fix termination condition in assoc array garbage collection Greg Kroah-Hartman
2014-09-16  1:56 ` [PATCH 3.16 000/158] 3.16.3-stable review Guenter Roeck
2014-09-16 18:41 ` Shuah Khan
2014-09-16 18:58   ` Greg Kroah-Hartman
2014-09-16 22:58 ` Satoru Takeuchi
2014-09-16 23:11   ` 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=20140915192546.579281062@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=elder@linaro.org \
    --cc=eric0e@aol.com \
    --cc=greg.wilson@keepertech.com \
    --cc=ilya.dryomov@inktank.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).