mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits) no need for list_for_each_entry_safe()/resetting with superblock list Fix sget() race with failing mount vfs: don't hold s_umount over close_bdev_exclusive() call sysv: do not mark superblock dirty on remount sysv: do not mark superblock dirty on mount btrfs: remove junk sb_dirt change BFS: clean up the superblock usage AFFS: wait for sb synchronization when needed AFFS: clean up dirty flag usage cifs: truncate fallout mbcache: fix shrinker function return value mbcache: Remove unused features add f_flags to struct statfs(64) pass a struct path to vfs_statfs update VFS documentation for method changes. All filesystems that need invalidate_inode_buffers() are doing that explicitly convert remaining ->clear_inode() to ->evict_inode() Make ->drop_inode() just return whether inode needs to be dropped fs/inode.c:clear_inode() is gone fs/inode.c:evict() doesn't care about delete vs. non-delete paths now ... Fix up trivial conflicts in fs/nilfs2/super.c
This commit is contained in:
commit
5f248c9c25
205 changed files with 2584 additions and 2475 deletions
|
|
@ -804,10 +804,20 @@ static int truncate_upper(struct dentry *dentry, struct iattr *ia,
|
|||
size_t num_zeros = (PAGE_CACHE_SIZE
|
||||
- (ia->ia_size & ~PAGE_CACHE_MASK));
|
||||
|
||||
|
||||
/*
|
||||
* XXX(truncate) this should really happen at the begginning
|
||||
* of ->setattr. But the code is too messy to that as part
|
||||
* of a larger patch. ecryptfs is also totally missing out
|
||||
* on the inode_change_ok check at the beginning of
|
||||
* ->setattr while would include this.
|
||||
*/
|
||||
rc = inode_newsize_ok(inode, ia->ia_size);
|
||||
if (rc)
|
||||
goto out;
|
||||
|
||||
if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) {
|
||||
rc = simple_setsize(inode, ia->ia_size);
|
||||
if (rc)
|
||||
goto out;
|
||||
truncate_setsize(inode, ia->ia_size);
|
||||
lower_ia->ia_size = ia->ia_size;
|
||||
lower_ia->ia_valid |= ATTR_SIZE;
|
||||
goto out;
|
||||
|
|
@ -830,7 +840,7 @@ static int truncate_upper(struct dentry *dentry, struct iattr *ia,
|
|||
goto out;
|
||||
}
|
||||
}
|
||||
simple_setsize(inode, ia->ia_size);
|
||||
truncate_setsize(inode, ia->ia_size);
|
||||
rc = ecryptfs_write_inode_size_to_metadata(inode);
|
||||
if (rc) {
|
||||
printk(KERN_ERR "Problem with "
|
||||
|
|
|
|||
|
|
@ -118,11 +118,15 @@ void ecryptfs_init_inode(struct inode *inode, struct inode *lower_inode)
|
|||
*/
|
||||
static int ecryptfs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
||||
{
|
||||
return vfs_statfs(ecryptfs_dentry_to_lower(dentry), buf);
|
||||
struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry);
|
||||
|
||||
if (!lower_dentry->d_sb->s_op->statfs)
|
||||
return -ENOSYS;
|
||||
return lower_dentry->d_sb->s_op->statfs(lower_dentry, buf);
|
||||
}
|
||||
|
||||
/**
|
||||
* ecryptfs_clear_inode
|
||||
* ecryptfs_evict_inode
|
||||
* @inode - The ecryptfs inode
|
||||
*
|
||||
* Called by iput() when the inode reference count reached zero
|
||||
|
|
@ -131,8 +135,10 @@ static int ecryptfs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
|||
* on the inode free list. We use this to drop out reference to the
|
||||
* lower inode.
|
||||
*/
|
||||
static void ecryptfs_clear_inode(struct inode *inode)
|
||||
static void ecryptfs_evict_inode(struct inode *inode)
|
||||
{
|
||||
truncate_inode_pages(&inode->i_data, 0);
|
||||
end_writeback(inode);
|
||||
iput(ecryptfs_inode_to_lower(inode));
|
||||
}
|
||||
|
||||
|
|
@ -184,6 +190,6 @@ const struct super_operations ecryptfs_sops = {
|
|||
.drop_inode = generic_delete_inode,
|
||||
.statfs = ecryptfs_statfs,
|
||||
.remount_fs = NULL,
|
||||
.clear_inode = ecryptfs_clear_inode,
|
||||
.evict_inode = ecryptfs_evict_inode,
|
||||
.show_options = ecryptfs_show_options
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue