Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3322e79a authored by Nick Piggin's avatar Nick Piggin Committed by Al Viro
Browse files

fs: convert simple fs to new truncate



Convert simple filesystems: ramfs, configfs, sysfs, block_dev to new truncate
sequence.

Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 15c6fd97
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -172,8 +172,9 @@ blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
	struct file *file = iocb->ki_filp;
	struct inode *inode = file->f_mapping->host;

	return blockdev_direct_IO_no_locking(rw, iocb, inode, I_BDEV(inode),
				iov, offset, nr_segs, blkdev_get_blocks, NULL);
	return blockdev_direct_IO_no_locking_newtrunc(rw, iocb, inode,
				I_BDEV(inode), iov, offset, nr_segs,
				blkdev_get_blocks, NULL);
}

int __sync_blockdev(struct block_device *bdev, int wait)
@@ -309,8 +310,8 @@ static int blkdev_write_begin(struct file *file, struct address_space *mapping,
			struct page **pagep, void **fsdata)
{
	*pagep = NULL;
	return block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
				blkdev_get_block);
	return block_write_begin_newtrunc(file, mapping, pos, len, flags,
				pagep, fsdata, blkdev_get_block);
}

static int blkdev_write_end(struct file *file, struct address_space *mapping,
+2 −7
Original line number Diff line number Diff line
@@ -72,16 +72,11 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr)
	if (!sd)
		return -EINVAL;

	sd_iattr = sd->s_iattr;

	error = inode_change_ok(inode, iattr);
	if (error)
		return error;

	error = inode_setattr(inode, iattr);
	error = simple_setattr(dentry, iattr);
	if (error)
		return error;

	sd_iattr = sd->s_iattr;
	if (!sd_iattr) {
		/* setting attributes for the first time, allocate now */
		sd_iattr = kzalloc(sizeof(struct iattr), GFP_KERNEL);
+1 −0
Original line number Diff line number Diff line
@@ -50,5 +50,6 @@ const struct file_operations ramfs_file_operations = {
};

const struct inode_operations ramfs_file_inode_operations = {
	.setattr	= simple_setattr,
	.getattr	= simple_getattr,
};
+4 −3
Original line number Diff line number Diff line
@@ -146,7 +146,7 @@ static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size)
			return ret;
	}

	ret = vmtruncate(inode, newsize);
	ret = simple_setsize(inode, newsize);

	return ret;
}
@@ -169,7 +169,8 @@ static int ramfs_nommu_setattr(struct dentry *dentry, struct iattr *ia)

	/* pick out size-changing events */
	if (ia->ia_valid & ATTR_SIZE) {
		loff_t size = i_size_read(inode);
		loff_t size = inode->i_size;

		if (ia->ia_size != size) {
			ret = ramfs_nommu_resize(inode, ia->ia_size, size);
			if (ret < 0 || ia->ia_valid == ATTR_SIZE)
@@ -182,7 +183,7 @@ static int ramfs_nommu_setattr(struct dentry *dentry, struct iattr *ia)
		}
	}

	ret = inode_setattr(inode, ia);
	generic_setattr(inode, ia);
 out:
	ia->ia_valid = old_ia_valid;
	return ret;
+3 −5
Original line number Diff line number Diff line
@@ -117,13 +117,11 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr)
	if (error)
		goto out;

	iattr->ia_valid &= ~ATTR_SIZE; /* ignore size changes */

	error = inode_setattr(inode, iattr);
	if (error)
		goto out;
	/* this ignores size changes */
	generic_setattr(inode, iattr);

	error = sysfs_sd_setattr(sd, iattr);

out:
	mutex_unlock(&sysfs_mutex);
	return error;