NFS_FLAGS(inode) |= NFS_INO_INVALID_ACCESS; 
NFS_FLAGS(inode) |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL; 
nfs_setattr(struct dentry *dentry, struct iattr *attr){	struct inode *inode = dentry->d_inode;	struct nfs_fattr fattr;	int error;	if (attr->ia_valid & ATTR_SIZE) {		if (!S_ISREG(inode->i_mode) || attr->ia_size == i_size_read(inode))			attr->ia_valid &= ~ATTR_SIZE;	}	/* Optimization: if the end result is no change, don't RPC */	attr->ia_valid &= NFS_VALID_ATTRS;	if (attr->ia_valid == 0)		return 0;	lock_kernel();	nfs_begin_data_update(inode);	/* Write all dirty data if we're changing file permissions or size */	if ((attr->ia_valid & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_SIZE)) != 0) {		if (filemap_fdatawrite(inode->i_mapping) == 0)			filemap_fdatawait(inode->i_mapping);		nfs_wb_all(inode);	}	error = NFS_PROTO(inode)->setattr(dentry, &fattr, attr);	if (error == 0) {		nfs_refresh_inode(inode, &fattr);		if ((attr->ia_valid & ATTR_MODE) != 0) {			int mode;			mode = inode->i_mode & ~S_IALLUGO;			mode |= attr->ia_mode & S_IALLUGO;			inode->i_mode = mode;		}		if ((attr->ia_valid & ATTR_UID) != 0)			inode->i_uid = attr->ia_uid;		if ((attr->ia_valid & ATTR_GID) != 0)			inode->i_gid = attr->ia_gid;		if ((attr->ia_valid & ATTR_SIZE) != 0) {			inode->i_size = attr->ia_size;			vmtruncate(inode, attr->ia_size);		}	}	if ((attr->ia_valid & (ATTR_MODE|ATTR_UID|ATTR_GID)) != 0)		NFS_FLAGS(inode) |= NFS_INO_INVALID_ACCESS;	nfs_end_data_update(inode);	unlock_kernel();	return error;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ada70d9425bcc5e376fef8591e4e76e204c0834c/inode.c/clean/fs/nfs/inode.c