diff options
Diffstat (limited to 'fs/befs/datastream.c')
| -rw-r--r-- | fs/befs/datastream.c | 87 |
1 files changed, 45 insertions, 42 deletions
diff --git a/fs/befs/datastream.c b/fs/befs/datastream.c index 59096b5e0fc7..c467bebd50af 100644 --- a/fs/befs/datastream.c +++ b/fs/befs/datastream.c | |||
| @@ -52,26 +52,25 @@ befs_read_datastream(struct super_block *sb, befs_data_stream * ds, | |||
| 52 | befs_block_run run; | 52 | befs_block_run run; |
| 53 | befs_blocknr_t block; /* block coresponding to pos */ | 53 | befs_blocknr_t block; /* block coresponding to pos */ |
| 54 | 54 | ||
| 55 | befs_debug(sb, "---> befs_read_datastream() %Lu", pos); | 55 | befs_debug(sb, "---> %s %llu", __func__, pos); |
| 56 | block = pos >> BEFS_SB(sb)->block_shift; | 56 | block = pos >> BEFS_SB(sb)->block_shift; |
| 57 | if (off) | 57 | if (off) |
| 58 | *off = pos - (block << BEFS_SB(sb)->block_shift); | 58 | *off = pos - (block << BEFS_SB(sb)->block_shift); |
| 59 | 59 | ||
| 60 | if (befs_fblock2brun(sb, ds, block, &run) != BEFS_OK) { | 60 | if (befs_fblock2brun(sb, ds, block, &run) != BEFS_OK) { |
| 61 | befs_error(sb, "BeFS: Error finding disk addr of block %lu", | 61 | befs_error(sb, "BeFS: Error finding disk addr of block %lu", |
| 62 | block); | 62 | (unsigned long)block); |
| 63 | befs_debug(sb, "<--- befs_read_datastream() ERROR"); | 63 | befs_debug(sb, "<--- %s ERROR", __func__); |
| 64 | return NULL; | 64 | return NULL; |
| 65 | } | 65 | } |
| 66 | bh = befs_bread_iaddr(sb, run); | 66 | bh = befs_bread_iaddr(sb, run); |
| 67 | if (!bh) { | 67 | if (!bh) { |
| 68 | befs_error(sb, "BeFS: Error reading block %lu from datastream", | 68 | befs_error(sb, "BeFS: Error reading block %lu from datastream", |
| 69 | block); | 69 | (unsigned long)block); |
| 70 | return NULL; | 70 | return NULL; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | befs_debug(sb, "<--- befs_read_datastream() read data, starting at %Lu", | 73 | befs_debug(sb, "<--- %s read data, starting at %llu", __func__, pos); |
| 74 | pos); | ||
| 75 | 74 | ||
| 76 | return bh; | 75 | return bh; |
| 77 | } | 76 | } |
| @@ -106,7 +105,8 @@ befs_fblock2brun(struct super_block *sb, befs_data_stream * data, | |||
| 106 | } else { | 105 | } else { |
| 107 | befs_error(sb, | 106 | befs_error(sb, |
| 108 | "befs_fblock2brun() was asked to find block %lu, " | 107 | "befs_fblock2brun() was asked to find block %lu, " |
| 109 | "which is not mapped by the datastream\n", fblock); | 108 | "which is not mapped by the datastream\n", |
| 109 | (unsigned long)fblock); | ||
| 110 | err = BEFS_ERR; | 110 | err = BEFS_ERR; |
| 111 | } | 111 | } |
| 112 | return err; | 112 | return err; |
| @@ -128,14 +128,14 @@ befs_read_lsymlink(struct super_block * sb, befs_data_stream * ds, void *buff, | |||
| 128 | befs_off_t bytes_read = 0; /* bytes readed */ | 128 | befs_off_t bytes_read = 0; /* bytes readed */ |
| 129 | u16 plen; | 129 | u16 plen; |
| 130 | struct buffer_head *bh = NULL; | 130 | struct buffer_head *bh = NULL; |
| 131 | befs_debug(sb, "---> befs_read_lsymlink() length: %Lu", len); | 131 | befs_debug(sb, "---> %s length: %llu", __func__, len); |
| 132 | 132 | ||
| 133 | while (bytes_read < len) { | 133 | while (bytes_read < len) { |
| 134 | bh = befs_read_datastream(sb, ds, bytes_read, NULL); | 134 | bh = befs_read_datastream(sb, ds, bytes_read, NULL); |
| 135 | if (!bh) { | 135 | if (!bh) { |
| 136 | befs_error(sb, "BeFS: Error reading datastream block " | 136 | befs_error(sb, "BeFS: Error reading datastream block " |
| 137 | "starting from %Lu", bytes_read); | 137 | "starting from %llu", bytes_read); |
| 138 | befs_debug(sb, "<--- befs_read_lsymlink() ERROR"); | 138 | befs_debug(sb, "<--- %s ERROR", __func__); |
| 139 | return bytes_read; | 139 | return bytes_read; |
| 140 | 140 | ||
| 141 | } | 141 | } |
| @@ -146,7 +146,8 @@ befs_read_lsymlink(struct super_block * sb, befs_data_stream * ds, void *buff, | |||
| 146 | bytes_read += plen; | 146 | bytes_read += plen; |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | befs_debug(sb, "<--- befs_read_lsymlink() read %u bytes", bytes_read); | 149 | befs_debug(sb, "<--- %s read %u bytes", __func__, (unsigned int) |
| 150 | bytes_read); | ||
| 150 | return bytes_read; | 151 | return bytes_read; |
| 151 | } | 152 | } |
| 152 | 153 | ||
| @@ -169,7 +170,7 @@ befs_count_blocks(struct super_block * sb, befs_data_stream * ds) | |||
| 169 | befs_blocknr_t metablocks; /* FS metadata blocks */ | 170 | befs_blocknr_t metablocks; /* FS metadata blocks */ |
| 170 | befs_sb_info *befs_sb = BEFS_SB(sb); | 171 | befs_sb_info *befs_sb = BEFS_SB(sb); |
| 171 | 172 | ||
| 172 | befs_debug(sb, "---> befs_count_blocks()"); | 173 | befs_debug(sb, "---> %s", __func__); |
| 173 | 174 | ||
| 174 | datablocks = ds->size >> befs_sb->block_shift; | 175 | datablocks = ds->size >> befs_sb->block_shift; |
| 175 | if (ds->size & (befs_sb->block_size - 1)) | 176 | if (ds->size & (befs_sb->block_size - 1)) |
| @@ -206,7 +207,7 @@ befs_count_blocks(struct super_block * sb, befs_data_stream * ds) | |||
| 206 | } | 207 | } |
| 207 | 208 | ||
| 208 | blocks = datablocks + metablocks; | 209 | blocks = datablocks + metablocks; |
| 209 | befs_debug(sb, "<--- befs_count_blocks() %u blocks", blocks); | 210 | befs_debug(sb, "<--- %s %u blocks", __func__, (unsigned int)blocks); |
| 210 | 211 | ||
| 211 | return blocks; | 212 | return blocks; |
| 212 | } | 213 | } |
| @@ -251,11 +252,11 @@ befs_find_brun_direct(struct super_block *sb, befs_data_stream * data, | |||
| 251 | befs_blocknr_t max_block = | 252 | befs_blocknr_t max_block = |
| 252 | data->max_direct_range >> BEFS_SB(sb)->block_shift; | 253 | data->max_direct_range >> BEFS_SB(sb)->block_shift; |
| 253 | 254 | ||
| 254 | befs_debug(sb, "---> befs_find_brun_direct(), find %lu", blockno); | 255 | befs_debug(sb, "---> %s, find %lu", __func__, (unsigned long)blockno); |
| 255 | 256 | ||
| 256 | if (blockno > max_block) { | 257 | if (blockno > max_block) { |
| 257 | befs_error(sb, "befs_find_brun_direct() passed block outside of" | 258 | befs_error(sb, "%s passed block outside of direct region", |
| 258 | "direct region"); | 259 | __func__); |
| 259 | return BEFS_ERR; | 260 | return BEFS_ERR; |
| 260 | } | 261 | } |
| 261 | 262 | ||
| @@ -267,13 +268,14 @@ befs_find_brun_direct(struct super_block *sb, befs_data_stream * data, | |||
| 267 | run->start = array[i].start + offset; | 268 | run->start = array[i].start + offset; |
| 268 | run->len = array[i].len - offset; | 269 | run->len = array[i].len - offset; |
| 269 | 270 | ||
| 270 | befs_debug(sb, "---> befs_find_brun_direct(), " | 271 | befs_debug(sb, "---> %s, " |
| 271 | "found %lu at direct[%d]", blockno, i); | 272 | "found %lu at direct[%d]", __func__, |
| 273 | (unsigned long)blockno, i); | ||
| 272 | return BEFS_OK; | 274 | return BEFS_OK; |
| 273 | } | 275 | } |
| 274 | } | 276 | } |
| 275 | 277 | ||
| 276 | befs_debug(sb, "---> befs_find_brun_direct() ERROR"); | 278 | befs_debug(sb, "---> %s ERROR", __func__); |
| 277 | return BEFS_ERR; | 279 | return BEFS_ERR; |
| 278 | } | 280 | } |
| 279 | 281 | ||
| @@ -316,7 +318,7 @@ befs_find_brun_indirect(struct super_block *sb, | |||
| 316 | befs_blocknr_t indirblockno = iaddr2blockno(sb, &indirect); | 318 | befs_blocknr_t indirblockno = iaddr2blockno(sb, &indirect); |
| 317 | int arraylen = befs_iaddrs_per_block(sb); | 319 | int arraylen = befs_iaddrs_per_block(sb); |
| 318 | 320 | ||
| 319 | befs_debug(sb, "---> befs_find_brun_indirect(), find %lu", blockno); | 321 | befs_debug(sb, "---> %s, find %lu", __func__, (unsigned long)blockno); |
| 320 | 322 | ||
| 321 | indir_start_blk = data->max_direct_range >> BEFS_SB(sb)->block_shift; | 323 | indir_start_blk = data->max_direct_range >> BEFS_SB(sb)->block_shift; |
| 322 | search_blk = blockno - indir_start_blk; | 324 | search_blk = blockno - indir_start_blk; |
| @@ -325,10 +327,9 @@ befs_find_brun_indirect(struct super_block *sb, | |||
| 325 | for (i = 0; i < indirect.len; i++) { | 327 | for (i = 0; i < indirect.len; i++) { |
| 326 | indirblock = befs_bread(sb, indirblockno + i); | 328 | indirblock = befs_bread(sb, indirblockno + i); |
| 327 | if (indirblock == NULL) { | 329 | if (indirblock == NULL) { |
| 328 | befs_debug(sb, | 330 | befs_debug(sb, "---> %s failed to read " |
| 329 | "---> befs_find_brun_indirect() failed to " | 331 | "disk block %lu from the indirect brun", |
| 330 | "read disk block %lu from the indirect brun", | 332 | __func__, (unsigned long)indirblockno + i); |
| 331 | indirblockno + i); | ||
| 332 | return BEFS_ERR; | 333 | return BEFS_ERR; |
| 333 | } | 334 | } |
| 334 | 335 | ||
| @@ -348,9 +349,10 @@ befs_find_brun_indirect(struct super_block *sb, | |||
| 348 | 349 | ||
| 349 | brelse(indirblock); | 350 | brelse(indirblock); |
| 350 | befs_debug(sb, | 351 | befs_debug(sb, |
| 351 | "<--- befs_find_brun_indirect() found " | 352 | "<--- %s found file block " |
| 352 | "file block %lu at indirect[%d]", | 353 | "%lu at indirect[%d]", __func__, |
| 353 | blockno, j + (i * arraylen)); | 354 | (unsigned long)blockno, |
| 355 | j + (i * arraylen)); | ||
| 354 | return BEFS_OK; | 356 | return BEFS_OK; |
| 355 | } | 357 | } |
| 356 | sum += len; | 358 | sum += len; |
| @@ -360,10 +362,10 @@ befs_find_brun_indirect(struct super_block *sb, | |||
| 360 | } | 362 | } |
| 361 | 363 | ||
| 362 | /* Only fallthrough is an error */ | 364 | /* Only fallthrough is an error */ |
| 363 | befs_error(sb, "BeFS: befs_find_brun_indirect() failed to find " | 365 | befs_error(sb, "BeFS: %s failed to find " |
| 364 | "file block %lu", blockno); | 366 | "file block %lu", __func__, (unsigned long)blockno); |
| 365 | 367 | ||
| 366 | befs_debug(sb, "<--- befs_find_brun_indirect() ERROR"); | 368 | befs_debug(sb, "<--- %s ERROR", __func__); |
| 367 | return BEFS_ERR; | 369 | return BEFS_ERR; |
| 368 | } | 370 | } |
| 369 | 371 | ||
| @@ -444,7 +446,7 @@ befs_find_brun_dblindirect(struct super_block *sb, | |||
| 444 | size_t diblklen = iblklen * befs_iaddrs_per_block(sb) | 446 | size_t diblklen = iblklen * befs_iaddrs_per_block(sb) |
| 445 | * BEFS_DBLINDIR_BRUN_LEN; | 447 | * BEFS_DBLINDIR_BRUN_LEN; |
| 446 | 448 | ||
| 447 | befs_debug(sb, "---> befs_find_brun_dblindirect() find %lu", blockno); | 449 | befs_debug(sb, "---> %s find %lu", __func__, (unsigned long)blockno); |
| 448 | 450 | ||
| 449 | /* First, discover which of the double_indir->indir blocks | 451 | /* First, discover which of the double_indir->indir blocks |
| 450 | * contains pos. Then figure out how much of pos that | 452 | * contains pos. Then figure out how much of pos that |
| @@ -460,8 +462,9 @@ befs_find_brun_dblindirect(struct super_block *sb, | |||
| 460 | dbl_which_block = dblindir_indx / befs_iaddrs_per_block(sb); | 462 | dbl_which_block = dblindir_indx / befs_iaddrs_per_block(sb); |
| 461 | if (dbl_which_block > data->double_indirect.len) { | 463 | if (dbl_which_block > data->double_indirect.len) { |
| 462 | befs_error(sb, "The double-indirect index calculated by " | 464 | befs_error(sb, "The double-indirect index calculated by " |
| 463 | "befs_read_brun_dblindirect(), %d, is outside the range " | 465 | "%s, %d, is outside the range " |
| 464 | "of the double-indirect block", dblindir_indx); | 466 | "of the double-indirect block", __func__, |
| 467 | dblindir_indx); | ||
| 465 | return BEFS_ERR; | 468 | return BEFS_ERR; |
| 466 | } | 469 | } |
| 467 | 470 | ||
| @@ -469,10 +472,10 @@ befs_find_brun_dblindirect(struct super_block *sb, | |||
| 469 | befs_bread(sb, iaddr2blockno(sb, &data->double_indirect) + | 472 | befs_bread(sb, iaddr2blockno(sb, &data->double_indirect) + |
| 470 | dbl_which_block); | 473 | dbl_which_block); |
| 471 | if (dbl_indir_block == NULL) { | 474 | if (dbl_indir_block == NULL) { |
| 472 | befs_error(sb, "befs_read_brun_dblindirect() couldn't read the " | 475 | befs_error(sb, "%s couldn't read the " |
| 473 | "double-indirect block at blockno %lu", | 476 | "double-indirect block at blockno %lu", __func__, |
| 474 | iaddr2blockno(sb, | 477 | (unsigned long) |
| 475 | &data->double_indirect) + | 478 | iaddr2blockno(sb, &data->double_indirect) + |
| 476 | dbl_which_block); | 479 | dbl_which_block); |
| 477 | brelse(dbl_indir_block); | 480 | brelse(dbl_indir_block); |
| 478 | return BEFS_ERR; | 481 | return BEFS_ERR; |
| @@ -489,16 +492,16 @@ befs_find_brun_dblindirect(struct super_block *sb, | |||
| 489 | which_block = indir_indx / befs_iaddrs_per_block(sb); | 492 | which_block = indir_indx / befs_iaddrs_per_block(sb); |
| 490 | if (which_block > indir_run.len) { | 493 | if (which_block > indir_run.len) { |
| 491 | befs_error(sb, "The indirect index calculated by " | 494 | befs_error(sb, "The indirect index calculated by " |
| 492 | "befs_read_brun_dblindirect(), %d, is outside the range " | 495 | "%s, %d, is outside the range " |
| 493 | "of the indirect block", indir_indx); | 496 | "of the indirect block", __func__, indir_indx); |
| 494 | return BEFS_ERR; | 497 | return BEFS_ERR; |
| 495 | } | 498 | } |
| 496 | 499 | ||
| 497 | indir_block = | 500 | indir_block = |
| 498 | befs_bread(sb, iaddr2blockno(sb, &indir_run) + which_block); | 501 | befs_bread(sb, iaddr2blockno(sb, &indir_run) + which_block); |
| 499 | if (indir_block == NULL) { | 502 | if (indir_block == NULL) { |
| 500 | befs_error(sb, "befs_read_brun_dblindirect() couldn't read the " | 503 | befs_error(sb, "%s couldn't read the indirect block " |
| 501 | "indirect block at blockno %lu", | 504 | "at blockno %lu", __func__, (unsigned long) |
| 502 | iaddr2blockno(sb, &indir_run) + which_block); | 505 | iaddr2blockno(sb, &indir_run) + which_block); |
| 503 | brelse(indir_block); | 506 | brelse(indir_block); |
| 504 | return BEFS_ERR; | 507 | return BEFS_ERR; |
| @@ -519,7 +522,7 @@ befs_find_brun_dblindirect(struct super_block *sb, | |||
| 519 | run->len -= offset; | 522 | run->len -= offset; |
| 520 | 523 | ||
| 521 | befs_debug(sb, "Found file block %lu in double_indirect[%d][%d]," | 524 | befs_debug(sb, "Found file block %lu in double_indirect[%d][%d]," |
| 522 | " double_indirect_leftover = %lu", | 525 | " double_indirect_leftover = %lu", (unsigned long) |
| 523 | blockno, dblindir_indx, indir_indx, dblindir_leftover); | 526 | blockno, dblindir_indx, indir_indx, dblindir_leftover); |
| 524 | 527 | ||
| 525 | return BEFS_OK; | 528 | return BEFS_OK; |
