All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 18/22] nilfs2: drop vmtruncate
@ 2012-10-06  8:33 Marco Stornelli
  0 siblings, 0 replies; only message in thread
From: Marco Stornelli @ 2012-10-06  8:33 UTC (permalink / raw)
  To: Al Viro; +Cc: KONISHI Ryusuke, linux-nilfs, linux-kernel, Linux FS Devel

Removed vmtruncate.

Signed-off-by: Marco Stornelli <marco.stornelli@gmail.com>
---
 fs/nilfs2/file.c     |    1 -
 fs/nilfs2/inode.c    |   18 +++++++++++++-----
 fs/nilfs2/recovery.c |    7 +++++--
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/fs/nilfs2/file.c b/fs/nilfs2/file.c
index a4d56ac..543554b 100644
--- a/fs/nilfs2/file.c
+++ b/fs/nilfs2/file.c
@@ -166,7 +166,6 @@ const struct file_operations nilfs_file_operations = {
 };
 
 const struct inode_operations nilfs_file_inode_operations = {
-	.truncate	= nilfs_truncate,
 	.setattr	= nilfs_setattr,
 	.permission     = nilfs_permission,
 	.fiemap		= nilfs_fiemap,
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
index 4d31d2c..aed753a 100644
--- a/fs/nilfs2/inode.c
+++ b/fs/nilfs2/inode.c
@@ -228,8 +228,11 @@ static int nilfs_write_begin(struct file *file, struct address_space *mapping,
 				nilfs_get_block);
 	if (unlikely(err)) {
 		loff_t isize = mapping->host->i_size;
-		if (pos + len > isize)
-			vmtruncate(mapping->host, isize);
+		if ((pos + len > isize) &&
+			inode_newsize_ok(mapping->host, isize) == 0) {
+			truncate_setsize(mapping->host, isize);
+			nilfs_truncate(mapping->host);
+		}
 
 		nilfs_transaction_abort(inode->i_sb);
 	}
@@ -277,8 +280,10 @@ nilfs_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
 		loff_t isize = i_size_read(inode);
 		loff_t end = offset + iov_length(iov, nr_segs);
 
-		if (end > isize)
-			vmtruncate(inode, isize);
+		if ((end > isize) && inode_newsize_ok(inode, isize) == 0) {
+			truncate_setsize(inode, isize);
+			nilfs_truncate(inode);
+		}
 	}
 
 	return size;
@@ -787,9 +792,12 @@ int nilfs_setattr(struct dentry *dentry, struct iattr *iattr)
 	    iattr->ia_size != i_size_read(inode)) {
 		inode_dio_wait(inode);
 
-		err = vmtruncate(inode, iattr->ia_size);
+		err = inode_newsize_ok(inode, iattr->ia_size);
 		if (unlikely(err))
 			goto out_err;
+
+		truncate_setsize(inode, iattr->ia_size);
+		nilfs_truncate(inode);
 	}
 
 	setattr_copy(inode, iattr);
diff --git a/fs/nilfs2/recovery.c b/fs/nilfs2/recovery.c
index f1626f5..cec215e 100644
--- a/fs/nilfs2/recovery.c
+++ b/fs/nilfs2/recovery.c
@@ -526,8 +526,11 @@ static int nilfs_recover_dsync_blocks(struct the_nilfs *nilfs,
 					0, &page, nilfs_get_block);
 		if (unlikely(err)) {
 			loff_t isize = inode->i_size;
-			if (pos + blocksize > isize)
-				vmtruncate(inode, isize);
+			if ((pos + blocksize > isize) &&
+				inode_newsize_ok(inode, isize) == 0) {
+				truncate_setsize(inode, isize);
+				nilfs_truncate(inode);
+			}
 			goto failed_inode;
 		}
 
-- 
1.7.3.4

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2012-10-06  8:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-06  8:33 [PATCH 18/22] nilfs2: drop vmtruncate Marco Stornelli

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.