diff options
Diffstat (limited to 'fs/afs/inode.c')
| -rw-r--r-- | fs/afs/inode.c | 29 | 
1 files changed, 15 insertions, 14 deletions
diff --git a/fs/afs/inode.c b/fs/afs/inode.c index 0747339011c..29467128844 100644 --- a/fs/afs/inode.c +++ b/fs/afs/inode.c @@ -67,15 +67,16 @@ static int afs_inode_map_status(struct afs_vnode *vnode, struct key *key)  		fscache_attr_changed(vnode->cache);  #endif -	inode->i_nlink		= vnode->status.nlink; +	set_nlink(inode, vnode->status.nlink);  	inode->i_uid		= vnode->status.owner; -	inode->i_gid		= 0; +	inode->i_gid		= GLOBAL_ROOT_GID;  	inode->i_size		= vnode->status.size;  	inode->i_ctime.tv_sec	= vnode->status.mtime_server;  	inode->i_ctime.tv_nsec	= 0;  	inode->i_atime		= inode->i_mtime = inode->i_ctime;  	inode->i_blocks		= 0; -	inode->i_version	= vnode->fid.unique; +	inode->i_generation	= vnode->fid.unique; +	inode->i_version	= vnode->status.data_version;  	inode->i_mapping->a_ops	= &afs_fs_aops;  	/* check to see whether a symbolic link is really a mountpoint */ @@ -100,7 +101,7 @@ static int afs_iget5_test(struct inode *inode, void *opaque)  	struct afs_iget_data *data = opaque;  	return inode->i_ino == data->fid.vnode && -		inode->i_version == data->fid.unique; +		inode->i_generation == data->fid.unique;  }  /* @@ -122,7 +123,7 @@ static int afs_iget5_set(struct inode *inode, void *opaque)  	struct afs_vnode *vnode = AFS_FS_I(inode);  	inode->i_ino = data->fid.vnode; -	inode->i_version = data->fid.unique; +	inode->i_generation = data->fid.unique;  	vnode->fid = data->fid;  	vnode->volume = data->volume; @@ -173,9 +174,9 @@ struct inode *afs_iget_autocell(struct inode *dir, const char *dev_name,  	inode->i_size		= 0;  	inode->i_mode		= S_IFDIR | S_IRUGO | S_IXUGO;  	inode->i_op		= &afs_autocell_inode_operations; -	inode->i_nlink		= 2; -	inode->i_uid		= 0; -	inode->i_gid		= 0; +	set_nlink(inode, 2); +	inode->i_uid		= GLOBAL_ROOT_UID; +	inode->i_gid		= GLOBAL_ROOT_GID;  	inode->i_ctime.tv_sec	= get_seconds();  	inode->i_ctime.tv_nsec	= 0;  	inode->i_atime		= inode->i_mtime = inode->i_ctime; @@ -184,7 +185,8 @@ struct inode *afs_iget_autocell(struct inode *dir, const char *dev_name,  	inode->i_generation	= 0;  	set_bit(AFS_VNODE_PSEUDODIR, &vnode->flags); -	inode->i_flags |= S_NOATIME; +	set_bit(AFS_VNODE_MOUNTPOINT, &vnode->flags); +	inode->i_flags |= S_AUTOMOUNT | S_NOATIME;  	unlock_new_inode(inode);  	_leave(" = %p", inode);  	return inode; @@ -257,7 +259,7 @@ struct inode *afs_iget(struct super_block *sb, struct key *key,  #ifdef CONFIG_AFS_FSCACHE  	vnode->cache = fscache_acquire_cookie(vnode->volume->cache,  					      &afs_vnode_cache_index_def, -					      vnode); +					      vnode, true);  #endif  	ret = afs_inode_map_status(vnode, key); @@ -379,8 +381,7 @@ int afs_getattr(struct vfsmount *mnt, struct dentry *dentry,  	inode = dentry->d_inode; -	_enter("{ ino=%lu v=%llu }", inode->i_ino, -		(unsigned long long)inode->i_version); +	_enter("{ ino=%lu v=%u }", inode->i_ino, inode->i_generation);  	generic_fillattr(inode, stat);  	return 0; @@ -421,8 +422,8 @@ void afs_evict_inode(struct inode *inode)  	ASSERTCMP(inode->i_ino, ==, vnode->fid.vnode); -	truncate_inode_pages(&inode->i_data, 0); -	end_writeback(inode); +	truncate_inode_pages_final(&inode->i_data); +	clear_inode(inode);  	afs_give_up_callback(vnode);  | 
