diff options
Diffstat (limited to 'fs/hugetlbfs/inode.c')
| -rw-r--r-- | fs/hugetlbfs/inode.c | 24 | 
1 files changed, 11 insertions, 13 deletions
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 4ea71eba40a5..4fb7b10f3a05 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -416,7 +416,6 @@ static void remove_inode_hugepages(struct inode *inode, loff_t lstart,  		for (i = 0; i < pagevec_count(&pvec); ++i) {  			struct page *page = pvec.pages[i]; -			bool rsv_on_error;  			u32 hash;  			/* @@ -458,18 +457,17 @@ static void remove_inode_hugepages(struct inode *inode, loff_t lstart,  			 * cache (remove_huge_page) BEFORE removing the  			 * region/reserve map (hugetlb_unreserve_pages).  In  			 * rare out of memory conditions, removal of the -			 * region/reserve map could fail.  Before free'ing -			 * the page, note PagePrivate which is used in case -			 * of error. +			 * region/reserve map could fail. Correspondingly, +			 * the subpool and global reserve usage count can need +			 * to be adjusted.  			 */ -			rsv_on_error = !PagePrivate(page); +			VM_BUG_ON(PagePrivate(page));  			remove_huge_page(page);  			freed++;  			if (!truncate_op) {  				if (unlikely(hugetlb_unreserve_pages(inode,  							next, next + 1, 1))) -					hugetlb_fix_reserve_counts(inode, -								rsv_on_error); +					hugetlb_fix_reserve_counts(inode);  			}  			unlock_page(page); @@ -657,7 +655,7 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset,  	if (!(mode & FALLOC_FL_KEEP_SIZE) && offset + len > inode->i_size)  		i_size_write(inode, offset + len); -	inode->i_ctime = CURRENT_TIME; +	inode->i_ctime = current_time(inode);  out:  	inode_unlock(inode);  	return error; @@ -672,7 +670,7 @@ static int hugetlbfs_setattr(struct dentry *dentry, struct iattr *attr)  	BUG_ON(!inode); -	error = inode_change_ok(inode, attr); +	error = setattr_prepare(dentry, attr);  	if (error)  		return error; @@ -702,7 +700,7 @@ static struct inode *hugetlbfs_get_root(struct super_block *sb,  		inode->i_mode = S_IFDIR | config->mode;  		inode->i_uid = config->uid;  		inode->i_gid = config->gid; -		inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; +		inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);  		info = HUGETLBFS_I(inode);  		mpol_shared_policy_init(&info->policy, NULL);  		inode->i_op = &hugetlbfs_dir_inode_operations; @@ -741,7 +739,7 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb,  		lockdep_set_class(&inode->i_mapping->i_mmap_rwsem,  				&hugetlbfs_i_mmap_rwsem_key);  		inode->i_mapping->a_ops = &hugetlbfs_aops; -		inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; +		inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);  		inode->i_mapping->private_data = resv_map;  		info = HUGETLBFS_I(inode);  		/* @@ -790,7 +788,7 @@ static int hugetlbfs_mknod(struct inode *dir,  	inode = hugetlbfs_get_inode(dir->i_sb, dir, mode, dev);  	if (inode) { -		dir->i_ctime = dir->i_mtime = CURRENT_TIME; +		dir->i_ctime = dir->i_mtime = current_time(dir);  		d_instantiate(dentry, inode);  		dget(dentry);	/* Extra count - pin the dentry in core */  		error = 0; @@ -827,7 +825,7 @@ static int hugetlbfs_symlink(struct inode *dir,  		} else  			iput(inode);  	} -	dir->i_ctime = dir->i_mtime = CURRENT_TIME; +	dir->i_ctime = dir->i_mtime = current_time(dir);  	return error;  }  | 
