From: Matthew Wilcox <willy@linux.intel.com>
Date: Tue, 8 Sep 2015 21:59:17 +0000 (-0700)
Subject: dax: improve comment about truncate race
X-Git-Tag: firefly_0821_release~176^2~1103^2~121
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=84c4e5e675408b6fb7d74eec7da9a4a5698b50af;p=firefly-linux-kernel-4.4.55.git

dax: improve comment about truncate race

Jan Kara pointed out I should be more explicit here about the perils of
racing against truncate.  The comment is mostly the same as for the PTE
case.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Cc: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---

diff --git a/fs/dax.c b/fs/dax.c
index 2deed64b7eea..c694117a7062 100644
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -553,7 +553,12 @@ int __dax_pmd_fault(struct vm_area_struct *vma, unsigned long address,
 	if (!buffer_size_valid(&bh) || bh.b_size < PMD_SIZE)
 		goto fallback;
 
-	/* Guard against a race with truncate */
+	/*
+	 * If a truncate happened while we were allocating blocks, we may
+	 * leave blocks allocated to the file that are beyond EOF.  We can't
+	 * take i_mutex here, so just leave them hanging; they'll be freed
+	 * when the file is deleted.
+	 */
 	size = (i_size_read(inode) + PAGE_SIZE - 1) >> PAGE_SHIFT;
 	if (pgoff >= size) {
 		result = VM_FAULT_SIGBUS;