linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kamal Mostafa <kamal@canonical.com>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	kernel-team@lists.ubuntu.com
Cc: Lukas Czerner <lczerner@redhat.com>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Kamal Mostafa <kamal@canonical.com>
Subject: [PATCH 3.13 077/187] ext4: fix punch hole on files with indirect mapping
Date: Mon, 15 Sep 2014 15:08:07 -0700	[thread overview]
Message-ID: <1410818997-9432-78-git-send-email-kamal@canonical.com> (raw)
In-Reply-To: <1410818997-9432-1-git-send-email-kamal@canonical.com>

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

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

From: Lukas Czerner <lczerner@redhat.com>

commit 4f579ae7de560e5f449587a6c3f02594d53d4d51 upstream.

Currently punch hole code on files with direct/indirect mapping has some
problems which may lead to a data loss. For example (from Jan Kara):

fallocate -n -p 10240000 4096

will punch the range 10240000 - 12632064 instead of the range 1024000 -
10244096.

Also the code is a bit weird and it's not using infrastructure provided
by indirect.c, but rather creating it's own way.

This patch fixes the issues as well as making the operation to run 4
times faster from my testing (punching out 60GB file). It uses similar
approach used in ext4_ind_truncate() which takes advantage of
ext4_free_branches() function.

Also rename the ext4_free_hole_blocks() to something more sensible, like
the equivalent we have for extent mapped files. Call it
ext4_ind_remove_space().

This has been tested mostly with fsx and some xfstests which are testing
punch hole but does not require unwritten extents which are not
supported with direct/indirect mapping. Not problems showed up even with
1024k block size.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
---
 fs/ext4/ext4.h     |   4 +-
 fs/ext4/indirect.c | 281 ++++++++++++++++++++++++++++++++++++++---------------
 fs/ext4/inode.c    |   2 +-
 3 files changed, 205 insertions(+), 82 deletions(-)

diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 62f024c..e531054 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -2151,8 +2151,8 @@ extern ssize_t ext4_ind_direct_IO(int rw, struct kiocb *iocb,
 extern int ext4_ind_calc_metadata_amount(struct inode *inode, sector_t lblock);
 extern int ext4_ind_trans_blocks(struct inode *inode, int nrblocks);
 extern void ext4_ind_truncate(handle_t *, struct inode *inode);
-extern int ext4_free_hole_blocks(handle_t *handle, struct inode *inode,
-				 ext4_lblk_t first, ext4_lblk_t stop);
+extern int ext4_ind_remove_space(handle_t *handle, struct inode *inode,
+				 ext4_lblk_t start, ext4_lblk_t end);
 
 /* ioctl.c */
 extern long ext4_ioctl(struct file *, unsigned int, unsigned long);
diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c
index c30cbe2..4353522 100644
--- a/fs/ext4/indirect.c
+++ b/fs/ext4/indirect.c
@@ -1297,97 +1297,220 @@ do_indirects:
 	}
 }
 
-static int free_hole_blocks(handle_t *handle, struct inode *inode,
-			    struct buffer_head *parent_bh, __le32 *i_data,
-			    int level, ext4_lblk_t first,
-			    ext4_lblk_t count, int max)
+/**
+ *	ext4_ind_remove_space - remove space from the range
+ *	@handle: JBD handle for this transaction
+ *	@inode:	inode we are dealing with
+ *	@start:	First block to remove
+ *	@end:	One block after the last block to remove (exclusive)
+ *
+ *	Free the blocks in the defined range (end is exclusive endpoint of
+ *	range). This is used by ext4_punch_hole().
+ */
+int ext4_ind_remove_space(handle_t *handle, struct inode *inode,
+			  ext4_lblk_t start, ext4_lblk_t end)
 {
-	struct buffer_head *bh = NULL;
+	struct ext4_inode_info *ei = EXT4_I(inode);
+	__le32 *i_data = ei->i_data;
 	int addr_per_block = EXT4_ADDR_PER_BLOCK(inode->i_sb);
-	int ret = 0;
-	int i, inc;
-	ext4_lblk_t offset;
-	__le32 blk;
-
-	inc = 1 << ((EXT4_BLOCK_SIZE_BITS(inode->i_sb) - 2) * level);
-	for (i = 0, offset = 0; i < max; i++, i_data++, offset += inc) {
-		if (offset >= count + first)
-			break;
-		if (*i_data == 0 || (offset + inc) <= first)
-			continue;
-		blk = *i_data;
-		if (level > 0) {
-			ext4_lblk_t first2;
-			ext4_lblk_t count2;
+	ext4_lblk_t offsets[4], offsets2[4];
+	Indirect chain[4], chain2[4];
+	Indirect *partial, *partial2;
+	ext4_lblk_t max_block;
+	__le32 nr = 0, nr2 = 0;
+	int n = 0, n2 = 0;
+	unsigned blocksize = inode->i_sb->s_blocksize;
 
-			bh = sb_bread(inode->i_sb, le32_to_cpu(blk));
-			if (!bh) {
-				EXT4_ERROR_INODE_BLOCK(inode, le32_to_cpu(blk),
-						       "Read failure");
-				return -EIO;
-			}
-			if (first > offset) {
-				first2 = first - offset;
-				count2 = count;
+	max_block = (EXT4_SB(inode->i_sb)->s_bitmap_maxbytes + blocksize-1)
+					>> EXT4_BLOCK_SIZE_BITS(inode->i_sb);
+	if (end >= max_block)
+		end = max_block;
+	if ((start >= end) || (start > max_block))
+		return 0;
+
+	n = ext4_block_to_path(inode, start, offsets, NULL);
+	n2 = ext4_block_to_path(inode, end, offsets2, NULL);
+
+	BUG_ON(n > n2);
+
+	if ((n == 1) && (n == n2)) {
+		/* We're punching only within direct block range */
+		ext4_free_data(handle, inode, NULL, i_data + offsets[0],
+			       i_data + offsets2[0]);
+		return 0;
+	} else if (n2 > n) {
+		/*
+		 * Start and end are on a different levels so we're going to
+		 * free partial block at start, and partial block at end of
+		 * the range. If there are some levels in between then
+		 * do_indirects label will take care of that.
+		 */
+
+		if (n == 1) {
+			/*
+			 * Start is at the direct block level, free
+			 * everything to the end of the level.
+			 */
+			ext4_free_data(handle, inode, NULL, i_data + offsets[0],
+				       i_data + EXT4_NDIR_BLOCKS);
+			goto end_range;
+		}
+
+
+		partial = ext4_find_shared(inode, n, offsets, chain, &nr);
+		if (nr) {
+			if (partial == chain) {
+				/* Shared branch grows from the inode */
+				ext4_free_branches(handle, inode, NULL,
+					   &nr, &nr+1, (chain+n-1) - partial);
+				*partial->p = 0;
 			} else {
-				first2 = 0;
-				count2 = count - (offset - first);
+				/* Shared branch grows from an indirect block */
+				BUFFER_TRACE(partial->bh, "get_write_access");
+				ext4_free_branches(handle, inode, partial->bh,
+					partial->p,
+					partial->p+1, (chain+n-1) - partial);
 			}
-			ret = free_hole_blocks(handle, inode, bh,
-					       (__le32 *)bh->b_data, level - 1,
-					       first2, count2,
-					       inode->i_sb->s_blocksize >> 2);
-			if (ret) {
-				brelse(bh);
-				goto err;
+		}
+
+		/*
+		 * Clear the ends of indirect blocks on the shared branch
+		 * at the start of the range
+		 */
+		while (partial > chain) {
+			ext4_free_branches(handle, inode, partial->bh,
+				partial->p + 1,
+				(__le32 *)partial->bh->b_data+addr_per_block,
+				(chain+n-1) - partial);
+			BUFFER_TRACE(partial->bh, "call brelse");
+			brelse(partial->bh);
+			partial--;
+		}
+
+end_range:
+		partial2 = ext4_find_shared(inode, n2, offsets2, chain2, &nr2);
+		if (nr2) {
+			if (partial2 == chain2) {
+				/*
+				 * Remember, end is exclusive so here we're at
+				 * the start of the next level we're not going
+				 * to free. Everything was covered by the start
+				 * of the range.
+				 */
+				return 0;
+			} else {
+				/* Shared branch grows from an indirect block */
+				partial2--;
 			}
+		} else {
+			/*
+			 * ext4_find_shared returns Indirect structure which
+			 * points to the last element which should not be
+			 * removed by truncate. But this is end of the range
+			 * in punch_hole so we need to point to the next element
+			 */
+			partial2->p++;
 		}
-		if (level == 0 ||
-		    (bh && all_zeroes((__le32 *)bh->b_data,
-				      (__le32 *)bh->b_data + addr_per_block))) {
-			ext4_free_data(handle, inode, parent_bh,
-				       i_data, i_data + 1);
+
+		/*
+		 * Clear the ends of indirect blocks on the shared branch
+		 * at the end of the range
+		 */
+		while (partial2 > chain2) {
+			ext4_free_branches(handle, inode, partial2->bh,
+					   (__le32 *)partial2->bh->b_data,
+					   partial2->p,
+					   (chain2+n2-1) - partial2);
+			BUFFER_TRACE(partial2->bh, "call brelse");
+			brelse(partial2->bh);
+			partial2--;
 		}
-		brelse(bh);
-		bh = NULL;
+		goto do_indirects;
 	}
 
-err:
-	return ret;
-}
-
-int ext4_free_hole_blocks(handle_t *handle, struct inode *inode,
-			  ext4_lblk_t first, ext4_lblk_t stop)
-{
-	int addr_per_block = EXT4_ADDR_PER_BLOCK(inode->i_sb);
-	int level, ret = 0;
-	int num = EXT4_NDIR_BLOCKS;
-	ext4_lblk_t count, max = EXT4_NDIR_BLOCKS;
-	__le32 *i_data = EXT4_I(inode)->i_data;
-
-	count = stop - first;
-	for (level = 0; level < 4; level++, max *= addr_per_block) {
-		if (first < max) {
-			ret = free_hole_blocks(handle, inode, NULL, i_data,
-					       level, first, count, num);
-			if (ret)
-				goto err;
-			if (count > max - first)
-				count -= max - first;
-			else
-				break;
-			first = 0;
-		} else {
-			first -= max;
+	/* Punch happened within the same level (n == n2) */
+	partial = ext4_find_shared(inode, n, offsets, chain, &nr);
+	partial2 = ext4_find_shared(inode, n2, offsets2, chain2, &nr2);
+	/*
+	 * ext4_find_shared returns Indirect structure which
+	 * points to the last element which should not be
+	 * removed by truncate. But this is end of the range
+	 * in punch_hole so we need to point to the next element
+	 */
+	partial2->p++;
+	while ((partial > chain) || (partial2 > chain2)) {
+		/* We're at the same block, so we're almost finished */
+		if ((partial->bh && partial2->bh) &&
+		    (partial->bh->b_blocknr == partial2->bh->b_blocknr)) {
+			if ((partial > chain) && (partial2 > chain2)) {
+				ext4_free_branches(handle, inode, partial->bh,
+						   partial->p + 1,
+						   partial2->p,
+						   (chain+n-1) - partial);
+				BUFFER_TRACE(partial->bh, "call brelse");
+				brelse(partial->bh);
+				BUFFER_TRACE(partial2->bh, "call brelse");
+				brelse(partial2->bh);
+			}
+			return 0;
 		}
-		i_data += num;
-		if (level == 0) {
-			num = 1;
-			max = 1;
+		/*
+		 * Clear the ends of indirect blocks on the shared branch
+		 * at the start of the range
+		 */
+		if (partial > chain) {
+			ext4_free_branches(handle, inode, partial->bh,
+				   partial->p + 1,
+				   (__le32 *)partial->bh->b_data+addr_per_block,
+				   (chain+n-1) - partial);
+			BUFFER_TRACE(partial->bh, "call brelse");
+			brelse(partial->bh);
+			partial--;
+		}
+		/*
+		 * Clear the ends of indirect blocks on the shared branch
+		 * at the end of the range
+		 */
+		if (partial2 > chain2) {
+			ext4_free_branches(handle, inode, partial2->bh,
+					   (__le32 *)partial2->bh->b_data,
+					   partial2->p,
+					   (chain2+n-1) - partial2);
+			BUFFER_TRACE(partial2->bh, "call brelse");
+			brelse(partial2->bh);
+			partial2--;
 		}
 	}
 
-err:
-	return ret;
+do_indirects:
+	/* Kill the remaining (whole) subtrees */
+	switch (offsets[0]) {
+	default:
+		if (++n >= n2)
+			return 0;
+		nr = i_data[EXT4_IND_BLOCK];
+		if (nr) {
+			ext4_free_branches(handle, inode, NULL, &nr, &nr+1, 1);
+			i_data[EXT4_IND_BLOCK] = 0;
+		}
+	case EXT4_IND_BLOCK:
+		if (++n >= n2)
+			return 0;
+		nr = i_data[EXT4_DIND_BLOCK];
+		if (nr) {
+			ext4_free_branches(handle, inode, NULL, &nr, &nr+1, 2);
+			i_data[EXT4_DIND_BLOCK] = 0;
+		}
+	case EXT4_DIND_BLOCK:
+		if (++n >= n2)
+			return 0;
+		nr = i_data[EXT4_TIND_BLOCK];
+		if (nr) {
+			ext4_free_branches(handle, inode, NULL, &nr, &nr+1, 3);
+			i_data[EXT4_TIND_BLOCK] = 0;
+		}
+	case EXT4_TIND_BLOCK:
+		;
+	}
+	return 0;
 }
-
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 0fc189b..23e8c80 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -3629,7 +3629,7 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length)
 		ret = ext4_ext_remove_space(inode, first_block,
 					    stop_block - 1);
 	else
-		ret = ext4_free_hole_blocks(handle, inode, first_block,
+		ret = ext4_ind_remove_space(handle, inode, first_block,
 					    stop_block);
 
 	ext4_discard_preallocations(inode);
-- 
1.9.1


  parent reply	other threads:[~2014-09-15 22:17 UTC|newest]

Thread overview: 202+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-15 22:06 [3.13.y.z extended stable] Linux 3.13.11.7 stable review Kamal Mostafa
2014-09-15 22:06 ` [PATCH 3.13 001/187] net: sctp: inherit auth_capable on INIT collisions Kamal Mostafa
2014-09-15 22:06 ` [PATCH 3.13 002/187] kvm: iommu: fix the third parameter of kvm_iommu_put_pages (CVE-2014-3601) Kamal Mostafa
2014-09-15 22:06 ` [PATCH 3.13 003/187] bnx2x: fix crash during TSO tunneling Kamal Mostafa
2014-09-15 22:06 ` [PATCH 3.13 004/187] inetpeer: get rid of ip_id_count Kamal Mostafa
2014-09-15 22:06 ` [PATCH 3.13 005/187] ip: make IP identifiers less predictable Kamal Mostafa
2014-09-15 22:06 ` [PATCH 3.13 006/187] tcp: Fix integer-overflows in TCP veno Kamal Mostafa
2014-09-15 22:06 ` [PATCH 3.13 007/187] tcp: Fix integer-overflow in TCP vegas Kamal Mostafa
2014-09-15 22:06 ` [PATCH 3.13 008/187] macvlan: Initialize vlan_features to turn on offload support Kamal Mostafa
2014-09-15 22:06 ` [PATCH 3.13 009/187] net: Correctly set segment mac_len in skb_segment() Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 010/187] iovec: make sure the caller actually wants anything in memcpy_fromiovecend Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 011/187] batman-adv: Fix out-of-order fragmentation support Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 012/187] sctp: fix possible seqlock seadlock in sctp_packet_transmit() Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 013/187] sparc64: Fix argument sign extension for compat_sys_futex() Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 014/187] sparc64: Make itc_sync_lock raw Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 015/187] sparc64: Fix executable bit testing in set_pmd_at() paths Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 016/187] sparc64: Fix huge PMD invalidation Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 017/187] sparc64: Fix bugs in get_user_pages_fast() wrt. THP Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 018/187] sparc64: Fix hex values in comment above pte_modify() Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 019/187] sparc64: Don't use _PAGE_PRESENT in pte_modify() mask Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 020/187] sparc64: Handle 32-bit tasks properly in compute_effective_address() Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 021/187] sparc64: Fix top-level fault handling bugs Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 022/187] sparc64: Fix range check in kern_addr_valid() Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 023/187] sparc64: Use 'ILOG2_4MB' instead of constant '22' Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 024/187] sparc64: Add basic validations to {pud,pmd}_bad() Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 025/187] sparc64: Give more detailed information in {pgd,pmd}_ERROR() and kill pte_ERROR() Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 026/187] sparc64: Don't bark so loudly about 32-bit tasks generating 64-bit fault addresses Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 027/187] sparc64: Fix huge TSB mapping on pre-UltraSPARC-III cpus Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 028/187] sparc64: Add membar to Niagara2 memcpy code Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 029/187] sparc64: Do not insert non-valid PTEs into the TSB hash table Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 030/187] sparc64: Guard against flushing openfirmware mappings Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 031/187] bbc-i2c: Fix BBC I2C envctrl on SunBlade 2000 Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 032/187] sunsab: Fix detection of BREAK on sunsab serial console Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 033/187] sparc64: ldc_connect() should not return EINVAL when handshake is in progress Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 034/187] arch/sparc/math-emu/math_32.c: drop stray break operator Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 035/187] sunrpc: create a new dummy pipe for gssd to hold open Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 036/187] sunrpc: replace sunrpc_net->gssd_running flag with a more reliable check Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 037/187] nfs: check if gssd is running before attempting to use krb5i auth in SETCLIENTID call Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 038/187] Revert "x86-64, modify_ldt: Make support for 16-bit segments a runtime option" Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 039/187] x86-64, espfix: Don't leak bits 31:16 of %esp returning to 16-bit stack Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 040/187] x86, espfix: Move espfix definitions into a separate header file Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 041/187] x86, espfix: Fix broken header guard Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 042/187] x86, espfix: Make espfix64 a Kconfig option, fix UML Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 043/187] x86, espfix: Make it possible to disable 16-bit support Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 044/187] x86_64/entry/xen: Do not invoke espfix64 on Xen Kamal Mostafa
2014-09-17 11:25   ` Ben Hutchings
2014-09-17 16:11     ` Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 045/187] bnx2x: Fix kernel crash and data miscompare after EEH recovery Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 046/187] bnx2x: Adapter not recovery from EEH error injection Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 047/187] ALSA: usb-audio: fix BOSS ME-25 MIDI regression Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 048/187] blk-mq: fix initializing request's start time Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 049/187] iwlwifi: mvm: Add a missed beacons threshold Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 050/187] ASoC: wm8994: Prevent double lock of accdet_lock mutex on wm1811 Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 051/187] [media] v4l: vsp1: Remove the unneeded vsp1_video_buffer video field Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 052/187] ASoC: max98090: Fix missing free_irq Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 053/187] KVM: x86: Inter-privilege level ret emulation is not implemeneted Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 054/187] [media] au0828: Only alt setting logic when needed Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 055/187] ASoC: pcm: fix dpcm_path_put in dpcm runtime update Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 056/187] crypto: ux500 - make interrupt mode plausible Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 057/187] Bluetooth: btmrvl: wait for HOST_SLEEP_ENABLE event in suspend Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 058/187] ASoC: adau1701: fix adau1701_reg_read() Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 059/187] ASoC: wm_adsp: Add missing MODULE_LICENSE Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 060/187] regulator: arizona-ldo1: remove bypass functionality Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 061/187] ASoC: samsung: Correct I2S DAI suspend/resume ops Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 062/187] drm/tilcdc: panel: fix dangling sysfs connector node Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 063/187] drm/tilcdc: slave: " Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 064/187] drm/tilcdc: tfp410: " Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 065/187] drm/tilcdc: panel: fix leak when unloading the module Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 066/187] drm/tilcdc: fix release order on exit Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 067/187] drm/tilcdc: fix double kfree Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 068/187] ACPICA: Utilities: Fix memory leak in acpi_ut_copy_iobject_to_iobject Kamal Mostafa
2014-09-15 22:07 ` [PATCH 3.13 069/187] stable_kernel_rules: Add pointer to netdev-FAQ for network patches Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 070/187] USB: ehci-pci: USB host controller support for Intel Quark X1000 Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 071/187] debugfs: Fix corrupted loop in debugfs_remove_recursive Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 072/187] selinux: fix the default socket labeling in sock_graft() Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 073/187] x86, ia64: Move EFI_FB vga_default_device() initialization to pci_vga_fixup() Kamal Mostafa
2014-09-16  6:05   ` Bruno Prémont
2014-09-16 13:31     ` Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 074/187] serial: core: Preserve termios c_cflag for console resume Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 075/187] mtd/ftl: fix the double free of the buffers allocated in build_maps() Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 076/187] ext4: Fix block zeroing when punching holes in indirect block files Kamal Mostafa
2014-09-15 22:08 ` Kamal Mostafa [this message]
2014-09-15 22:08 ` [PATCH 3.13 078/187] x86: don't exclude low BIOS area when allocating address space for non-PCI cards Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 079/187] PCI: Configure ASPM when enabling device Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 080/187] Bluetooth: never linger on process exit Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 081/187] ASoC: blackfin: use samples to set silence Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 082/187] USB: OHCI: fix bugs in debug routines Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 083/187] USB: OHCI: don't lose track of EDs when a controller dies Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 084/187] mei: start disconnect request timer consistently Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 085/187] mei: fix return value on disconnect timeout Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 086/187] USB: Fix persist resume of some SS USB devices Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 087/187] [media] media-device: Remove duplicated memset() in media_enum_entities() Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 088/187] Bluetooth: Avoid use of session socket after the session gets freed Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 089/187] [media] xc5000: Fix get_frequency() Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 090/187] [media] xc4000: " Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 091/187] CAPABILITIES: remove undefined caps from all processes Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 092/187] scsi: add a blacklist flag which enables VPD page inquiries Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 093/187] bfa: Fix undefined bit shift on big-endian architectures with 32-bit DMA address Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 094/187] hpsa: fix bad -ENOMEM return value in hpsa_big_passthru_ioctl Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 095/187] Drivers: scsi: storvsc: Change the limits to reflect the values on the host Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 096/187] Drivers: scsi: storvsc: Set cmd_per_lun to reflect value supported by the Host Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 097/187] Drivers: scsi: storvsc: Filter commands based on the storage protocol version Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 098/187] Drivers: scsi: storvsc: Fix a bug in handling VMBUS " Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 099/187] Drivers: scsi: storvsc: Implement a eh_timed_out handler Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 100/187] drivers: scsi: storvsc: Set srb_flags in all cases Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 101/187] drivers: scsi: storvsc: Correctly handle TEST_UNIT_READY failure Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 102/187] x86_64/vsyscall: Fix warn_bad_vsyscall log output Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 103/187] KVM: PPC: Book3S PR: Take SRCU read lock around RTAS kvm_read_guest() call Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 104/187] Revert "selinux: fix the default socket labeling in sock_graft()" Kamal Mostafa
2014-09-17 11:08   ` Ben Hutchings
2014-09-17 16:07     ` Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 105/187] spi: orion: fix incorrect handling of cell-index DT property Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 106/187] mfd: omap-usb-host: Fix improper mask use Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 107/187] tpm: Add missing tpm_do_selftest to ST33 I2C driver Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 108/187] tpm: missing tpm_chip_put in tpm_get_random() Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 109/187] scsi: do not issue SCSI RSOC command to Promise Vtrak E610f Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 110/187] hwmon: (ads1015) Fix off-by-one for valid channel index checking Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 111/187] ALSA: hda - fix an external mic jack problem on a HP machine Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 112/187] MIPS: tlbex: Fix a missing statement for HUGETLB Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 113/187] MIPS: Prevent user from setting FCSR cause bits Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 114/187] KVM: x86: always exit on EOIs for interrupts listed in the IOAPIC redir table Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 115/187] MIPS: Remove BUG_ON(!is_fpu_owner()) in do_ade() Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 116/187] MIPS: ptrace: Test correct task's flags in task_user_regset_view() Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 117/187] MIPS: asm/reg.h: Make 32- and 64-bit definitions available at the same time Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 118/187] MIPS: ptrace: Change GP regset to use correct core dump register layout Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 119/187] md/raid1,raid10: always abort recover on write error Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 120/187] ext4: fix ext4_discard_allocated_blocks() if we can't allocate the pa struct Kamal Mostafa
2014-09-17 11:13   ` Ben Hutchings
2014-09-17 16:08     ` Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 121/187] hwmon: (lm85) Fix various errors on attribute writes Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 122/187] hwmon: (lm78) Fix overflow problems seen when writing large temperature limits Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 123/187] hwmon: (amc6821) Fix possible race condition bug Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 124/187] MIPS: GIC: Prevent array overrun Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 125/187] mnt: Add tests for unprivileged remount cases that have found to be faulty Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 126/187] ARM: OMAP3: Fix choice of omap3_restore_es function in OMAP34XX rev3.1.2 case Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 127/187] netlabel: fix a problem when setting bits below the previously lowest bit Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 128/187] netlabel: fix the horribly broken catmap functions Kamal Mostafa
2014-09-15 22:08 ` [PATCH 3.13 129/187] netlabel: fix the catmap walking functions Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 130/187] drivers/i2c/busses: use correct type for dma_map/unmap Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 131/187] NFSD: Decrease nfsd_users in nfsd_startup_generic fail Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 132/187] MIPS: O32/32-bit: Fix bug which can cause incorrect system call restarts Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 133/187] IB/srp: Fix deadlock between host removal and multipathd Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 134/187] USB: serial: ftdi_sio: Annotate the current Xsens PID assignments Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 135/187] USB: serial: ftdi_sio: Add support for new Xsens devices Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 136/187] USB: devio: fix issue with log flooding Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 137/187] CIFS: Fix async reading on reconnects Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 138/187] CIFS: Fix STATUS_CANNOT_DELETE error mapping for SMB2 Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 139/187] xfs: ensure verifiers are attached to recovered buffers Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 140/187] drm/tegra: add MODULE_DEVICE_TABLEs Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 141/187] ALSA: virtuoso: add Xonar Essence STX II support Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 142/187] hwmon: (gpio-fan) Prevent overflow problem when writing large limits Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 143/187] hwmon: (sis5595) " Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 144/187] NFS: Fix /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 145/187] drm/ttm: Fix possible division by 0 in ttm_dma_pool_shrink_scan() Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 146/187] drm/ttm: Choose a pool to shrink correctly " Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 147/187] drm/ttm: Use mutex_trylock() to avoid deadlock inside shrinker functions Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 148/187] drm/ttm: Fix possible stack overflow by recursive shrinker calls Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 149/187] drm/ttm: Pass GFP flags in order to avoid deadlock Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 150/187] powerpc/mm/numa: Fix break placement Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 151/187] powerpc/pci: Reorder pci bus/bridge unregistration during PHB removal Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 152/187] drm/radeon: load the lm63 driver for an lm64 thermal chip Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 153/187] drm/radeon: set VM base addr using the PFP v2 Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 154/187] drm/radeon/atom: add new voltage fetch function for hawaii Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 155/187] drm/radeon/dpm: handle voltage info fetching on hawaii Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 156/187] drm/radeon: re-enable dpm by default on cayman Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 157/187] drm/radeon: re-enable dpm by default on BTC Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 158/187] drm/radeon: use packet2 for nop on hawaii with old firmware Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 159/187] drm/radeon: tweak ACCEL_WORKING2 query for hawaii Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 160/187] KVM: nVMX: fix "acknowledge interrupt on exit" when APICv is in use Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 161/187] RDMA/iwcm: Use a default listen backlog if needed Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 162/187] x86/efi: Enforce CONFIG_RELOCATABLE for EFI boot stub Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 163/187] net: sun4i-emac: fix memory leak on bad packet Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 164/187] hwmon: (ads1015) Fix out-of-bounds array access Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 165/187] hwmon: (dme1737) Prevent overflow problem when writing large limits Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 166/187] s390/locking: Reenable optimistic spinning Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 167/187] ring-buffer: Up rb_iter_peek() loop count to 3 Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 168/187] ring-buffer: Always reset iterator to reader page Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 169/187] kernel/smp.c:on_each_cpu_cond(): fix warning in fallback path Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 170/187] drm/i915: read HEAD register back in init_ring_common() to enforce ordering Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 171/187] vm_is_stack: use for_each_thread() rather then buggy while_each_thread() Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 172/187] libceph: set last_piece in ceph_msg_data_pages_cursor_init() correctly Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 173/187] drm/nouveau: Bump version from 1.1.1 to 1.1.2 Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 174/187] ALSA: usb-audio: fix BOSS ME-25 MIDI regression Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 175/187] ALSA: hda/ca0132 - Don't try loading firmware at resume when already failed Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 176/187] x86/xen: resume timer irqs early Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 177/187] carl9170: fix sending URBs with wrong type when using full-speed Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 178/187] powerpc/pseries: Failure on removing device node Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 179/187] powerpc/thp: Add write barrier after updating the valid bit Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 180/187] powerpc/thp: Don't recompute vsid and ssize in loop on invalidate Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 181/187] powerpc/thp: Invalidate old 64K based hash page mapping before insert of 4k pte Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 182/187] powerpc/thp: Handle combo pages in invalidate Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 183/187] powerpc/thp: Invalidate with vpn in loop Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 184/187] powerpc/thp: Use ACCESS_ONCE when loading pmdp Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 185/187] powerpc/mm: Use read barrier when creating real_pte Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 186/187] Btrfs: Fix memory corruption by ulist_add_merge() on 32bit arch Kamal Mostafa
2014-09-15 22:09 ` [PATCH 3.13 187/187] Btrfs: fix csum tree corruption, duplicate and outdated checksums Kamal Mostafa
2014-09-16  0:03 ` [3.13.y.z extended stable] Linux 3.13.11.7 stable review Greg KH
2014-09-16  1:18   ` Tim Gardner
2014-09-16  1:26     ` Greg KH
2014-09-16 15:17       ` Tim Gardner
2014-09-16 18:13         ` Greg KH
2014-09-16 21:23           ` H. Peter Anvin

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=1410818997-9432-78-git-send-email-kamal@canonical.com \
    --to=kamal@canonical.com \
    --cc=kernel-team@lists.ubuntu.com \
    --cc=lczerner@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tytso@mit.edu \
    /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).