diff options
Diffstat (limited to 'fs/squashfs/inode.c')
| -rw-r--r-- | fs/squashfs/inode.c | 32 | 
1 files changed, 18 insertions, 14 deletions
diff --git a/fs/squashfs/inode.c b/fs/squashfs/inode.c index 62e63ad2507..a1ce5ce6063 100644 --- a/fs/squashfs/inode.c +++ b/fs/squashfs/inode.c @@ -2,7 +2,7 @@   * Squashfs - a compressed read only filesystem for Linux   *   * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 - * Phillip Lougher <phillip@lougher.demon.co.uk> + * Phillip Lougher <phillip@squashfs.org.uk>   *   * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License @@ -56,16 +56,20 @@  static int squashfs_new_inode(struct super_block *sb, struct inode *inode,  				struct squashfs_base_inode *sqsh_ino)  { +	uid_t i_uid; +	gid_t i_gid;  	int err; -	err = squashfs_get_id(sb, le16_to_cpu(sqsh_ino->uid), &inode->i_uid); +	err = squashfs_get_id(sb, le16_to_cpu(sqsh_ino->uid), &i_uid);  	if (err)  		return err; -	err = squashfs_get_id(sb, le16_to_cpu(sqsh_ino->guid), &inode->i_gid); +	err = squashfs_get_id(sb, le16_to_cpu(sqsh_ino->guid), &i_gid);  	if (err)  		return err; +	i_uid_write(inode, i_uid); +	i_gid_write(inode, i_gid);  	inode->i_ino = le32_to_cpu(sqsh_ino->inode_number);  	inode->i_mtime.tv_sec = le32_to_cpu(sqsh_ino->mtime);  	inode->i_atime.tv_sec = inode->i_mtime.tv_sec; @@ -159,7 +163,7 @@ int squashfs_read_inode(struct inode *inode, long long ino)  			frag_offset = 0;  		} -		inode->i_nlink = 1; +		set_nlink(inode, 1);  		inode->i_size = le32_to_cpu(sqsh_ino->file_size);  		inode->i_fop = &generic_ro_fops;  		inode->i_mode |= S_IFREG; @@ -203,13 +207,13 @@ int squashfs_read_inode(struct inode *inode, long long ino)  		}  		xattr_id = le32_to_cpu(sqsh_ino->xattr); -		inode->i_nlink = le32_to_cpu(sqsh_ino->nlink); +		set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));  		inode->i_size = le64_to_cpu(sqsh_ino->file_size);  		inode->i_op = &squashfs_inode_ops;  		inode->i_fop = &generic_ro_fops;  		inode->i_mode |= S_IFREG; -		inode->i_blocks = ((inode->i_size - -				le64_to_cpu(sqsh_ino->sparse) - 1) >> 9) + 1; +		inode->i_blocks = (inode->i_size - +				le64_to_cpu(sqsh_ino->sparse) + 511) >> 9;  		squashfs_i(inode)->fragment_block = frag_blk;  		squashfs_i(inode)->fragment_size = frag_size; @@ -232,7 +236,7 @@ int squashfs_read_inode(struct inode *inode, long long ino)  		if (err < 0)  			goto failed_read; -		inode->i_nlink = le32_to_cpu(sqsh_ino->nlink); +		set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));  		inode->i_size = le16_to_cpu(sqsh_ino->file_size);  		inode->i_op = &squashfs_dir_inode_ops;  		inode->i_fop = &squashfs_dir_ops; @@ -257,7 +261,7 @@ int squashfs_read_inode(struct inode *inode, long long ino)  			goto failed_read;  		xattr_id = le32_to_cpu(sqsh_ino->xattr); -		inode->i_nlink = le32_to_cpu(sqsh_ino->nlink); +		set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));  		inode->i_size = le32_to_cpu(sqsh_ino->file_size);  		inode->i_op = &squashfs_dir_inode_ops;  		inode->i_fop = &squashfs_dir_ops; @@ -284,7 +288,7 @@ int squashfs_read_inode(struct inode *inode, long long ino)  		if (err < 0)  			goto failed_read; -		inode->i_nlink = le32_to_cpu(sqsh_ino->nlink); +		set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));  		inode->i_size = le32_to_cpu(sqsh_ino->symlink_size);  		inode->i_op = &squashfs_symlink_inode_ops;  		inode->i_data.a_ops = &squashfs_symlink_aops; @@ -325,7 +329,7 @@ int squashfs_read_inode(struct inode *inode, long long ino)  			inode->i_mode |= S_IFCHR;  		else  			inode->i_mode |= S_IFBLK; -		inode->i_nlink = le32_to_cpu(sqsh_ino->nlink); +		set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));  		rdev = le32_to_cpu(sqsh_ino->rdev);  		init_special_inode(inode, inode->i_mode, new_decode_dev(rdev)); @@ -349,7 +353,7 @@ int squashfs_read_inode(struct inode *inode, long long ino)  			inode->i_mode |= S_IFBLK;  		xattr_id = le32_to_cpu(sqsh_ino->xattr);  		inode->i_op = &squashfs_inode_ops; -		inode->i_nlink = le32_to_cpu(sqsh_ino->nlink); +		set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));  		rdev = le32_to_cpu(sqsh_ino->rdev);  		init_special_inode(inode, inode->i_mode, new_decode_dev(rdev)); @@ -370,7 +374,7 @@ int squashfs_read_inode(struct inode *inode, long long ino)  			inode->i_mode |= S_IFIFO;  		else  			inode->i_mode |= S_IFSOCK; -		inode->i_nlink = le32_to_cpu(sqsh_ino->nlink); +		set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));  		init_special_inode(inode, inode->i_mode, 0);  		break;  	} @@ -389,7 +393,7 @@ int squashfs_read_inode(struct inode *inode, long long ino)  			inode->i_mode |= S_IFSOCK;  		xattr_id = le32_to_cpu(sqsh_ino->xattr);  		inode->i_op = &squashfs_inode_ops; -		inode->i_nlink = le32_to_cpu(sqsh_ino->nlink); +		set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));  		init_special_inode(inode, inode->i_mode, 0);  		break;  	}  | 
