diff options
Diffstat (limited to 'fs/btrfs/delayed-inode.c')
| -rw-r--r-- | fs/btrfs/delayed-inode.c | 16 | 
1 files changed, 7 insertions, 9 deletions
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 6b457b010cbc..53c1211dd60b 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -1632,6 +1632,7 @@ int btrfs_inode_delayed_dir_index_count(struct btrfs_inode *inode)  }  bool btrfs_readdir_get_delayed_items(struct inode *inode, +				     u64 last_index,  				     struct list_head *ins_list,  				     struct list_head *del_list)  { @@ -1651,14 +1652,14 @@ bool btrfs_readdir_get_delayed_items(struct inode *inode,  	mutex_lock(&delayed_node->mutex);  	item = __btrfs_first_delayed_insertion_item(delayed_node); -	while (item) { +	while (item && item->index <= last_index) {  		refcount_inc(&item->refs);  		list_add_tail(&item->readdir_list, ins_list);  		item = __btrfs_next_delayed_item(item);  	}  	item = __btrfs_first_delayed_deletion_item(delayed_node); -	while (item) { +	while (item && item->index <= last_index) {  		refcount_inc(&item->refs);  		list_add_tail(&item->readdir_list, del_list);  		item = __btrfs_next_delayed_item(item); @@ -1735,9 +1736,6 @@ int btrfs_readdir_delayed_dir_index(struct dir_context *ctx,  	int over = 0;  	unsigned char d_type; -	if (list_empty(ins_list)) -		return 0; -  	/*  	 * Changing the data of the delayed item is impossible. So  	 * we needn't lock them. And we have held i_mutex of the @@ -1808,9 +1806,9 @@ static void fill_stack_inode_item(struct btrfs_trans_handle *trans,  				      inode->i_mtime.tv_nsec);  	btrfs_set_stack_timespec_sec(&inode_item->ctime, -				     inode->i_ctime.tv_sec); +				     inode_get_ctime(inode).tv_sec);  	btrfs_set_stack_timespec_nsec(&inode_item->ctime, -				      inode->i_ctime.tv_nsec); +				      inode_get_ctime(inode).tv_nsec);  	btrfs_set_stack_timespec_sec(&inode_item->otime,  				     BTRFS_I(inode)->i_otime.tv_sec); @@ -1861,8 +1859,8 @@ int btrfs_fill_inode(struct inode *inode, u32 *rdev)  	inode->i_mtime.tv_sec = btrfs_stack_timespec_sec(&inode_item->mtime);  	inode->i_mtime.tv_nsec = btrfs_stack_timespec_nsec(&inode_item->mtime); -	inode->i_ctime.tv_sec = btrfs_stack_timespec_sec(&inode_item->ctime); -	inode->i_ctime.tv_nsec = btrfs_stack_timespec_nsec(&inode_item->ctime); +	inode_set_ctime(inode, btrfs_stack_timespec_sec(&inode_item->ctime), +			btrfs_stack_timespec_nsec(&inode_item->ctime));  	BTRFS_I(inode)->i_otime.tv_sec =  		btrfs_stack_timespec_sec(&inode_item->otime);  | 
