1 ext4 crypto: Debugging: SB zero check and zero page check
3 From: Michael Halcrow <mhalcrow@google.com>
6 fs/ext4/crypto.c | 14 ++++++++++++++
7 fs/ext4/extents.c | 2 ++
8 2 files changed, 16 insertions(+)
10 diff --git a/fs/ext4/crypto.c b/fs/ext4/crypto.c
11 index ead3111..e16170f 100644
12 --- a/fs/ext4/crypto.c
13 +++ b/fs/ext4/crypto.c
14 @@ -522,6 +522,19 @@ out:
18 +bool __ext4_debug_is_page_zero(struct page *page)
20 + char *page_virt = kmap(page);
21 + int is_not_zero = 0;
25 + for (i = 0; i < PAGE_CACHE_SIZE; ++i)
26 + is_not_zero |= page_virt[i];
28 + return !is_not_zero;
32 * ext4_decrypt() - Decrypts a page in-place
33 * @ctx: The encryption context.
34 @@ -538,6 +551,7 @@ int ext4_decrypt(struct ext4_crypto_ctx *ctx, struct page *page)
37 BUG_ON(!PageLocked(page));
38 + BUG_ON(__ext4_debug_is_page_zero(page));
40 case EXT4_ENCRYPTION_MODE_AES_256_XTS:
41 res = ext4_xts_decrypt(ctx, page);
42 diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
43 index 9ab757f..6c74a25 100644
44 --- a/fs/ext4/extents.c
45 +++ b/fs/ext4/extents.c
46 @@ -3099,6 +3099,8 @@ static int ext4_ext_zeroout(struct inode *inode, struct ext4_extent *ex)
47 ee_len = ext4_ext_get_actual_len(ex);
48 ee_pblock = ext4_ext_pblock(ex);
50 + printk_ratelimited(KERN_ERR "%s: Calling sb_issue_zeroout(ee_pblock = [%lld], ee_len = [%d])\n", __func__, ee_pblock, ee_len);
52 ret = sb_issue_zeroout(inode->i_sb, ee_pblock, ee_len, GFP_NOFS);
56 2.1.0.rc2.206.gedb03e5