mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	ext2: stop passing buffer_head to ext2_get_blocks
Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
		
							parent
							
								
									6c31f495d1
								
							
						
					
					
						commit
						6750ad7198
					
				
					 1 changed files with 24 additions and 15 deletions
				
			
		| 
						 | 
					@ -618,7 +618,7 @@ static void ext2_splice_branch(struct inode *inode,
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static int ext2_get_blocks(struct inode *inode,
 | 
					static int ext2_get_blocks(struct inode *inode,
 | 
				
			||||||
			   sector_t iblock, unsigned long maxblocks,
 | 
								   sector_t iblock, unsigned long maxblocks,
 | 
				
			||||||
			   struct buffer_head *bh_result,
 | 
								   u32 *bno, bool *new, bool *boundary,
 | 
				
			||||||
			   int create)
 | 
								   int create)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int err = -EIO;
 | 
						int err = -EIO;
 | 
				
			||||||
| 
						 | 
					@ -644,7 +644,6 @@ static int ext2_get_blocks(struct inode *inode,
 | 
				
			||||||
	/* Simplest case - block found, no allocation needed */
 | 
						/* Simplest case - block found, no allocation needed */
 | 
				
			||||||
	if (!partial) {
 | 
						if (!partial) {
 | 
				
			||||||
		first_block = le32_to_cpu(chain[depth - 1].key);
 | 
							first_block = le32_to_cpu(chain[depth - 1].key);
 | 
				
			||||||
		clear_buffer_new(bh_result); /* What's this do? */
 | 
					 | 
				
			||||||
		count++;
 | 
							count++;
 | 
				
			||||||
		/*map more blocks*/
 | 
							/*map more blocks*/
 | 
				
			||||||
		while (count < maxblocks && count <= blocks_to_boundary) {
 | 
							while (count < maxblocks && count <= blocks_to_boundary) {
 | 
				
			||||||
| 
						 | 
					@ -699,7 +698,6 @@ static int ext2_get_blocks(struct inode *inode,
 | 
				
			||||||
			mutex_unlock(&ei->truncate_mutex);
 | 
								mutex_unlock(&ei->truncate_mutex);
 | 
				
			||||||
			if (err)
 | 
								if (err)
 | 
				
			||||||
				goto cleanup;
 | 
									goto cleanup;
 | 
				
			||||||
			clear_buffer_new(bh_result);
 | 
					 | 
				
			||||||
			goto got_it;
 | 
								goto got_it;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -745,15 +743,16 @@ static int ext2_get_blocks(struct inode *inode,
 | 
				
			||||||
			mutex_unlock(&ei->truncate_mutex);
 | 
								mutex_unlock(&ei->truncate_mutex);
 | 
				
			||||||
			goto cleanup;
 | 
								goto cleanup;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else
 | 
						} else {
 | 
				
			||||||
		set_buffer_new(bh_result);
 | 
							*new = true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ext2_splice_branch(inode, iblock, partial, indirect_blks, count);
 | 
						ext2_splice_branch(inode, iblock, partial, indirect_blks, count);
 | 
				
			||||||
	mutex_unlock(&ei->truncate_mutex);
 | 
						mutex_unlock(&ei->truncate_mutex);
 | 
				
			||||||
got_it:
 | 
					got_it:
 | 
				
			||||||
	map_bh(bh_result, inode->i_sb, le32_to_cpu(chain[depth-1].key));
 | 
						*bno = le32_to_cpu(chain[depth-1].key);
 | 
				
			||||||
	if (count > blocks_to_boundary)
 | 
						if (count > blocks_to_boundary)
 | 
				
			||||||
		set_buffer_boundary(bh_result);
 | 
							*boundary = true;
 | 
				
			||||||
	err = count;
 | 
						err = count;
 | 
				
			||||||
	/* Clean up and exit */
 | 
						/* Clean up and exit */
 | 
				
			||||||
	partial = chain + depth - 1;	/* the whole chain */
 | 
						partial = chain + depth - 1;	/* the whole chain */
 | 
				
			||||||
| 
						 | 
					@ -765,16 +764,26 @@ static int ext2_get_blocks(struct inode *inode,
 | 
				
			||||||
	return err;
 | 
						return err;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ext2_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_result, int create)
 | 
					int ext2_get_block(struct inode *inode, sector_t iblock,
 | 
				
			||||||
 | 
							struct buffer_head *bh_result, int create)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned max_blocks = bh_result->b_size >> inode->i_blkbits;
 | 
						unsigned max_blocks = bh_result->b_size >> inode->i_blkbits;
 | 
				
			||||||
	int ret = ext2_get_blocks(inode, iblock, max_blocks,
 | 
						bool new = false, boundary = false;
 | 
				
			||||||
			      bh_result, create);
 | 
						u32 bno;
 | 
				
			||||||
	if (ret > 0) {
 | 
						int ret;
 | 
				
			||||||
		bh_result->b_size = (ret << inode->i_blkbits);
 | 
					
 | 
				
			||||||
		ret = 0;
 | 
						ret = ext2_get_blocks(inode, iblock, max_blocks, &bno, &new, &boundary,
 | 
				
			||||||
	}
 | 
								create);
 | 
				
			||||||
	return ret;
 | 
						if (ret <= 0)
 | 
				
			||||||
 | 
							return ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						map_bh(bh_result, inode->i_sb, bno);
 | 
				
			||||||
 | 
						bh_result->b_size = (ret << inode->i_blkbits);
 | 
				
			||||||
 | 
						if (new)
 | 
				
			||||||
 | 
							set_buffer_new(bh_result);
 | 
				
			||||||
 | 
						if (boundary)
 | 
				
			||||||
 | 
							set_buffer_boundary(bh_result);
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue