Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ufs_inode_get{frag,block}(): get rid of 'phys' argument

Just pass NULL as locked_page in case of first block in the indirect
chain. Old calling conventions aside, a reason for having 'phys'
was that ufs_inode_getfrag() used to be able to do _two_ allocations
- indirect block and extending/reallocating a tail. We needed
locked_page for the latter (it's a data), but we also needed to
figure out that indirect block is metadata. So we used to pass
non-NULL locked_page in all cases *and* used NULL phys as
indication of being asked to allocate an indirect.

With tail unpacking taken into a separate function we don't need
those convolutions anymore.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 4e317ce7 0385f1f9

+8 -15
+8 -15
fs/ufs/inode.c
··· 245 245 * @index: number of block pointer within the inode's array. 246 246 * @new_fragment: number of new allocated fragment(s) 247 247 * @err: we set it if something wrong 248 - * @phys: pointer to where we save physical number of new allocated fragments, 249 - * NULL if we allocate not data(indirect blocks for example). 250 248 * @new: we set it if we allocate new block 251 249 * @locked_page: for ufs_new_fragments() 252 250 */ 253 251 static u64 254 252 ufs_inode_getfrag(struct inode *inode, unsigned index, 255 253 sector_t new_fragment, int *err, 256 - long *phys, int *new, struct page *locked_page) 254 + int *new, struct page *locked_page) 257 255 { 258 256 struct ufs_inode_info *ufsi = UFS_I(inode); 259 257 struct super_block *sb = inode->i_sb; ··· 284 286 goal += uspi->s_fpb; 285 287 } 286 288 tmp = ufs_new_fragments(inode, p, ufs_blknum(new_fragment), 287 - goal, uspi->s_fpb, err, 288 - phys != NULL ? locked_page : NULL); 289 + goal, uspi->s_fpb, err, locked_page); 289 290 290 291 if (!tmp) { 291 292 *err = -ENOSPC; 292 293 return 0; 293 294 } 294 295 295 - if (phys) { 296 - *err = 0; 296 + if (new) 297 297 *new = 1; 298 - } 299 298 inode->i_ctime = CURRENT_TIME_SEC; 300 299 if (IS_SYNC(inode)) 301 300 ufs_sync_inode (inode); ··· 324 329 * @new_fragment: number of new allocated fragment 325 330 * (block will hold this fragment and also uspi->s_fpb-1) 326 331 * @err: see ufs_inode_getfrag() 327 - * @phys: see ufs_inode_getfrag() 328 332 * @new: see ufs_inode_getfrag() 329 333 * @locked_page: see ufs_inode_getfrag() 330 334 */ 331 335 static u64 332 336 ufs_inode_getblock(struct inode *inode, u64 ind_block, 333 337 unsigned index, sector_t new_fragment, int *err, 334 - long *phys, int *new, struct page *locked_page) 338 + int *new, struct page *locked_page) 335 339 { 336 340 struct super_block *sb = inode->i_sb; 337 341 struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi; ··· 398 404 unsigned offsets[4]; 399 405 int depth = ufs_block_to_path(inode, fragment >> uspi->s_fpbshift, offsets); 400 406 u64 phys64 = 0; 401 - unsigned long phys; 402 407 unsigned frag = fragment & uspi->s_fpbmask; 403 408 404 409 if (!create) { ··· 428 435 429 436 if (depth == 1) { 430 437 phys64 = ufs_inode_getfrag(inode, offsets[0], fragment, 431 - &err, &phys, &new, bh_result->b_page); 438 + &err, &new, bh_result->b_page); 432 439 } else { 433 440 int i; 434 441 phys64 = ufs_inode_getfrag(inode, offsets[0], fragment, 435 - &err, NULL, NULL, bh_result->b_page); 442 + &err, NULL, NULL); 436 443 for (i = 1; i < depth - 1; i++) 437 444 phys64 = ufs_inode_getblock(inode, phys64, offsets[i], 438 - fragment, &err, NULL, NULL, NULL); 445 + fragment, &err, NULL, NULL); 439 446 phys64 = ufs_inode_getblock(inode, phys64, offsets[depth - 1], 440 - fragment, &err, &phys, &new, bh_result->b_page); 447 + fragment, &err, &new, bh_result->b_page); 441 448 } 442 449 out: 443 450 if (phys64) {