diff options
Diffstat (limited to 'fs/udf')
-rw-r--r-- | fs/udf/balloc.c | 35 | ||||
-rw-r--r-- | fs/udf/dir.c | 22 | ||||
-rw-r--r-- | fs/udf/directory.c | 10 | ||||
-rw-r--r-- | fs/udf/inode.c | 74 | ||||
-rw-r--r-- | fs/udf/misc.c | 6 | ||||
-rw-r--r-- | fs/udf/namei.c | 136 | ||||
-rw-r--r-- | fs/udf/partition.c | 2 | ||||
-rw-r--r-- | fs/udf/super.c | 56 | ||||
-rw-r--r-- | fs/udf/symlink.c | 2 | ||||
-rw-r--r-- | fs/udf/truncate.c | 4 | ||||
-rw-r--r-- | fs/udf/udf_sb.h | 2 | ||||
-rw-r--r-- | fs/udf/udfdecl.h | 2 |
12 files changed, 174 insertions, 177 deletions
diff --git a/fs/udf/balloc.c b/fs/udf/balloc.c index 756dbbf0eafd..4cec91015681 100644 --- a/fs/udf/balloc.c +++ b/fs/udf/balloc.c | |||
@@ -508,8 +508,8 @@ static void udf_table_free_blocks(struct super_block * sb, | |||
508 | { | 508 | { |
509 | i = -1; | 509 | i = -1; |
510 | oepos.block = epos.block; | 510 | oepos.block = epos.block; |
511 | udf_release_data(oepos.bh); | 511 | brelse(oepos.bh); |
512 | atomic_inc(&epos.bh->b_count); | 512 | get_bh(epos.bh); |
513 | oepos.bh = epos.bh; | 513 | oepos.bh = epos.bh; |
514 | oepos.offset = 0; | 514 | oepos.offset = 0; |
515 | } | 515 | } |
@@ -546,8 +546,8 @@ static void udf_table_free_blocks(struct super_block * sb, | |||
546 | adsize = sizeof(long_ad); | 546 | adsize = sizeof(long_ad); |
547 | else | 547 | else |
548 | { | 548 | { |
549 | udf_release_data(oepos.bh); | 549 | brelse(oepos.bh); |
550 | udf_release_data(epos.bh); | 550 | brelse(epos.bh); |
551 | goto error_return; | 551 | goto error_return; |
552 | } | 552 | } |
553 | 553 | ||
@@ -556,7 +556,7 @@ static void udf_table_free_blocks(struct super_block * sb, | |||
556 | char *sptr, *dptr; | 556 | char *sptr, *dptr; |
557 | int loffset; | 557 | int loffset; |
558 | 558 | ||
559 | udf_release_data(oepos.bh); | 559 | brelse(oepos.bh); |
560 | oepos = epos; | 560 | oepos = epos; |
561 | 561 | ||
562 | /* Steal a block from the extent being free'd */ | 562 | /* Steal a block from the extent being free'd */ |
@@ -567,7 +567,7 @@ static void udf_table_free_blocks(struct super_block * sb, | |||
567 | if (!(epos.bh = udf_tread(sb, | 567 | if (!(epos.bh = udf_tread(sb, |
568 | udf_get_lb_pblock(sb, epos.block, 0)))) | 568 | udf_get_lb_pblock(sb, epos.block, 0)))) |
569 | { | 569 | { |
570 | udf_release_data(oepos.bh); | 570 | brelse(oepos.bh); |
571 | goto error_return; | 571 | goto error_return; |
572 | } | 572 | } |
573 | aed = (struct allocExtDesc *)(epos.bh->b_data); | 573 | aed = (struct allocExtDesc *)(epos.bh->b_data); |
@@ -658,8 +658,8 @@ static void udf_table_free_blocks(struct super_block * sb, | |||
658 | } | 658 | } |
659 | } | 659 | } |
660 | 660 | ||
661 | udf_release_data(epos.bh); | 661 | brelse(epos.bh); |
662 | udf_release_data(oepos.bh); | 662 | brelse(oepos.bh); |
663 | 663 | ||
664 | error_return: | 664 | error_return: |
665 | sb->s_dirt = 1; | 665 | sb->s_dirt = 1; |
@@ -723,7 +723,7 @@ static int udf_table_prealloc_blocks(struct super_block * sb, | |||
723 | else | 723 | else |
724 | alloc_count = 0; | 724 | alloc_count = 0; |
725 | 725 | ||
726 | udf_release_data(epos.bh); | 726 | brelse(epos.bh); |
727 | 727 | ||
728 | if (alloc_count && UDF_SB_LVIDBH(sb)) | 728 | if (alloc_count && UDF_SB_LVIDBH(sb)) |
729 | { | 729 | { |
@@ -789,9 +789,9 @@ static int udf_table_new_block(struct super_block * sb, | |||
789 | spread = nspread; | 789 | spread = nspread; |
790 | if (goal_epos.bh != epos.bh) | 790 | if (goal_epos.bh != epos.bh) |
791 | { | 791 | { |
792 | udf_release_data(goal_epos.bh); | 792 | brelse(goal_epos.bh); |
793 | goal_epos.bh = epos.bh; | 793 | goal_epos.bh = epos.bh; |
794 | atomic_inc(&goal_epos.bh->b_count); | 794 | get_bh(goal_epos.bh); |
795 | } | 795 | } |
796 | goal_epos.block = epos.block; | 796 | goal_epos.block = epos.block; |
797 | goal_epos.offset = epos.offset - adsize; | 797 | goal_epos.offset = epos.offset - adsize; |
@@ -800,11 +800,11 @@ static int udf_table_new_block(struct super_block * sb, | |||
800 | } | 800 | } |
801 | } | 801 | } |
802 | 802 | ||
803 | udf_release_data(epos.bh); | 803 | brelse(epos.bh); |
804 | 804 | ||
805 | if (spread == 0xFFFFFFFF) | 805 | if (spread == 0xFFFFFFFF) |
806 | { | 806 | { |
807 | udf_release_data(goal_epos.bh); | 807 | brelse(goal_epos.bh); |
808 | mutex_unlock(&sbi->s_alloc_mutex); | 808 | mutex_unlock(&sbi->s_alloc_mutex); |
809 | return 0; | 809 | return 0; |
810 | } | 810 | } |
@@ -820,7 +820,7 @@ static int udf_table_new_block(struct super_block * sb, | |||
820 | 820 | ||
821 | if (inode && DQUOT_ALLOC_BLOCK(inode, 1)) | 821 | if (inode && DQUOT_ALLOC_BLOCK(inode, 1)) |
822 | { | 822 | { |
823 | udf_release_data(goal_epos.bh); | 823 | brelse(goal_epos.bh); |
824 | mutex_unlock(&sbi->s_alloc_mutex); | 824 | mutex_unlock(&sbi->s_alloc_mutex); |
825 | *err = -EDQUOT; | 825 | *err = -EDQUOT; |
826 | return 0; | 826 | return 0; |
@@ -830,7 +830,7 @@ static int udf_table_new_block(struct super_block * sb, | |||
830 | udf_write_aext(table, &goal_epos, goal_eloc, goal_elen, 1); | 830 | udf_write_aext(table, &goal_epos, goal_eloc, goal_elen, 1); |
831 | else | 831 | else |
832 | udf_delete_aext(table, goal_epos, goal_eloc, goal_elen); | 832 | udf_delete_aext(table, goal_epos, goal_eloc, goal_elen); |
833 | udf_release_data(goal_epos.bh); | 833 | brelse(goal_epos.bh); |
834 | 834 | ||
835 | if (UDF_SB_LVIDBH(sb)) | 835 | if (UDF_SB_LVIDBH(sb)) |
836 | { | 836 | { |
@@ -915,11 +915,14 @@ inline int udf_new_block(struct super_block * sb, | |||
915 | struct inode * inode, | 915 | struct inode * inode, |
916 | uint16_t partition, uint32_t goal, int *err) | 916 | uint16_t partition, uint32_t goal, int *err) |
917 | { | 917 | { |
918 | int ret; | ||
919 | |||
918 | if (UDF_SB_PARTFLAGS(sb, partition) & UDF_PART_FLAG_UNALLOC_BITMAP) | 920 | if (UDF_SB_PARTFLAGS(sb, partition) & UDF_PART_FLAG_UNALLOC_BITMAP) |
919 | { | 921 | { |
920 | return udf_bitmap_new_block(sb, inode, | 922 | ret = udf_bitmap_new_block(sb, inode, |
921 | UDF_SB_PARTMAPS(sb)[partition].s_uspace.s_bitmap, | 923 | UDF_SB_PARTMAPS(sb)[partition].s_uspace.s_bitmap, |
922 | partition, goal, err); | 924 | partition, goal, err); |
925 | return ret; | ||
923 | } | 926 | } |
924 | else if (UDF_SB_PARTFLAGS(sb, partition) & UDF_PART_FLAG_UNALLOC_TABLE) | 927 | else if (UDF_SB_PARTFLAGS(sb, partition) & UDF_PART_FLAG_UNALLOC_TABLE) |
925 | { | 928 | { |
diff --git a/fs/udf/dir.c b/fs/udf/dir.c index 00c15d3dd756..e45f86b5e7b0 100644 --- a/fs/udf/dir.c +++ b/fs/udf/dir.c | |||
@@ -144,7 +144,7 @@ do_udf_readdir(struct inode * dir, struct file *filp, filldir_t filldir, void *d | |||
144 | 144 | ||
145 | if (!(fibh.sbh = fibh.ebh = udf_tread(dir->i_sb, block))) | 145 | if (!(fibh.sbh = fibh.ebh = udf_tread(dir->i_sb, block))) |
146 | { | 146 | { |
147 | udf_release_data(epos.bh); | 147 | brelse(epos.bh); |
148 | return -EIO; | 148 | return -EIO; |
149 | } | 149 | } |
150 | 150 | ||
@@ -172,7 +172,7 @@ do_udf_readdir(struct inode * dir, struct file *filp, filldir_t filldir, void *d | |||
172 | } | 172 | } |
173 | else | 173 | else |
174 | { | 174 | { |
175 | udf_release_data(epos.bh); | 175 | brelse(epos.bh); |
176 | return -ENOENT; | 176 | return -ENOENT; |
177 | } | 177 | } |
178 | 178 | ||
@@ -185,9 +185,9 @@ do_udf_readdir(struct inode * dir, struct file *filp, filldir_t filldir, void *d | |||
185 | if (!fi) | 185 | if (!fi) |
186 | { | 186 | { |
187 | if (fibh.sbh != fibh.ebh) | 187 | if (fibh.sbh != fibh.ebh) |
188 | udf_release_data(fibh.ebh); | 188 | brelse(fibh.ebh); |
189 | udf_release_data(fibh.sbh); | 189 | brelse(fibh.sbh); |
190 | udf_release_data(epos.bh); | 190 | brelse(epos.bh); |
191 | return 0; | 191 | return 0; |
192 | } | 192 | } |
193 | 193 | ||
@@ -245,9 +245,9 @@ do_udf_readdir(struct inode * dir, struct file *filp, filldir_t filldir, void *d | |||
245 | if (filldir(dirent, fname, flen, filp->f_pos, iblock, dt_type) < 0) | 245 | if (filldir(dirent, fname, flen, filp->f_pos, iblock, dt_type) < 0) |
246 | { | 246 | { |
247 | if (fibh.sbh != fibh.ebh) | 247 | if (fibh.sbh != fibh.ebh) |
248 | udf_release_data(fibh.ebh); | 248 | brelse(fibh.ebh); |
249 | udf_release_data(fibh.sbh); | 249 | brelse(fibh.sbh); |
250 | udf_release_data(epos.bh); | 250 | brelse(epos.bh); |
251 | return 0; | 251 | return 0; |
252 | } | 252 | } |
253 | } | 253 | } |
@@ -256,9 +256,9 @@ do_udf_readdir(struct inode * dir, struct file *filp, filldir_t filldir, void *d | |||
256 | filp->f_pos = nf_pos + 1; | 256 | filp->f_pos = nf_pos + 1; |
257 | 257 | ||
258 | if (fibh.sbh != fibh.ebh) | 258 | if (fibh.sbh != fibh.ebh) |
259 | udf_release_data(fibh.ebh); | 259 | brelse(fibh.ebh); |
260 | udf_release_data(fibh.sbh); | 260 | brelse(fibh.sbh); |
261 | udf_release_data(epos.bh); | 261 | brelse(epos.bh); |
262 | 262 | ||
263 | return 0; | 263 | return 0; |
264 | } | 264 | } |
diff --git a/fs/udf/directory.c b/fs/udf/directory.c index 9f66cfe124c6..198caa33027a 100644 --- a/fs/udf/directory.c +++ b/fs/udf/directory.c | |||
@@ -36,14 +36,14 @@ udf_filead_read(struct inode *dir, uint8_t *tmpad, uint8_t ad_size, | |||
36 | 36 | ||
37 | if (!ad) | 37 | if (!ad) |
38 | { | 38 | { |
39 | udf_release_data(*bh); | 39 | brelse(*bh); |
40 | *error = 1; | 40 | *error = 1; |
41 | return NULL; | 41 | return NULL; |
42 | } | 42 | } |
43 | 43 | ||
44 | if (*offset == dir->i_sb->s_blocksize) | 44 | if (*offset == dir->i_sb->s_blocksize) |
45 | { | 45 | { |
46 | udf_release_data(*bh); | 46 | brelse(*bh); |
47 | block = udf_get_lb_pblock(dir->i_sb, fe_loc, ++*pos); | 47 | block = udf_get_lb_pblock(dir->i_sb, fe_loc, ++*pos); |
48 | if (!block) | 48 | if (!block) |
49 | return NULL; | 49 | return NULL; |
@@ -57,7 +57,7 @@ udf_filead_read(struct inode *dir, uint8_t *tmpad, uint8_t ad_size, | |||
57 | remainder = dir->i_sb->s_blocksize - loffset; | 57 | remainder = dir->i_sb->s_blocksize - loffset; |
58 | memcpy((uint8_t *)ad, (*bh)->b_data + loffset, remainder); | 58 | memcpy((uint8_t *)ad, (*bh)->b_data + loffset, remainder); |
59 | 59 | ||
60 | udf_release_data(*bh); | 60 | brelse(*bh); |
61 | block = udf_get_lb_pblock(dir->i_sb, fe_loc, ++*pos); | 61 | block = udf_get_lb_pblock(dir->i_sb, fe_loc, ++*pos); |
62 | if (!block) | 62 | if (!block) |
63 | return NULL; | 63 | return NULL; |
@@ -120,7 +120,7 @@ udf_fileident_read(struct inode *dir, loff_t *nf_pos, | |||
120 | else | 120 | else |
121 | epos->offset = lextoffset; | 121 | epos->offset = lextoffset; |
122 | 122 | ||
123 | udf_release_data(fibh->sbh); | 123 | brelse(fibh->sbh); |
124 | if (!(fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block))) | 124 | if (!(fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block))) |
125 | return NULL; | 125 | return NULL; |
126 | fibh->soffset = fibh->eoffset = 0; | 126 | fibh->soffset = fibh->eoffset = 0; |
@@ -149,7 +149,7 @@ udf_fileident_read(struct inode *dir, loff_t *nf_pos, | |||
149 | } | 149 | } |
150 | else if (fibh->sbh != fibh->ebh) | 150 | else if (fibh->sbh != fibh->ebh) |
151 | { | 151 | { |
152 | udf_release_data(fibh->sbh); | 152 | brelse(fibh->sbh); |
153 | fibh->sbh = fibh->ebh; | 153 | fibh->sbh = fibh->ebh; |
154 | } | 154 | } |
155 | 155 | ||
diff --git a/fs/udf/inode.c b/fs/udf/inode.c index a106acb58292..2171bcfeec20 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c | |||
@@ -247,7 +247,7 @@ struct buffer_head * udf_expand_dir_adinicb(struct inode *inode, int *block, int | |||
247 | sfi = udf_fileident_read(inode, &f_pos, &sfibh, &cfi, NULL, NULL, NULL, NULL); | 247 | sfi = udf_fileident_read(inode, &f_pos, &sfibh, &cfi, NULL, NULL, NULL, NULL); |
248 | if (!sfi) | 248 | if (!sfi) |
249 | { | 249 | { |
250 | udf_release_data(dbh); | 250 | brelse(dbh); |
251 | return NULL; | 251 | return NULL; |
252 | } | 252 | } |
253 | UDF_I_ALLOCTYPE(inode) = alloctype; | 253 | UDF_I_ALLOCTYPE(inode) = alloctype; |
@@ -259,7 +259,7 @@ struct buffer_head * udf_expand_dir_adinicb(struct inode *inode, int *block, int | |||
259 | sfi->fileIdent + le16_to_cpu(sfi->lengthOfImpUse))) | 259 | sfi->fileIdent + le16_to_cpu(sfi->lengthOfImpUse))) |
260 | { | 260 | { |
261 | UDF_I_ALLOCTYPE(inode) = ICBTAG_FLAG_AD_IN_ICB; | 261 | UDF_I_ALLOCTYPE(inode) = ICBTAG_FLAG_AD_IN_ICB; |
262 | udf_release_data(dbh); | 262 | brelse(dbh); |
263 | return NULL; | 263 | return NULL; |
264 | } | 264 | } |
265 | } | 265 | } |
@@ -277,7 +277,7 @@ struct buffer_head * udf_expand_dir_adinicb(struct inode *inode, int *block, int | |||
277 | udf_add_aext(inode, &epos, eloc, elen, 0); | 277 | udf_add_aext(inode, &epos, eloc, elen, 0); |
278 | /* UniqueID stuff */ | 278 | /* UniqueID stuff */ |
279 | 279 | ||
280 | udf_release_data(epos.bh); | 280 | brelse(epos.bh); |
281 | mark_inode_dirty(inode); | 281 | mark_inode_dirty(inode); |
282 | return dbh; | 282 | return dbh; |
283 | } | 283 | } |
@@ -386,14 +386,14 @@ static struct buffer_head * inode_getblk(struct inode * inode, sector_t block, | |||
386 | { | 386 | { |
387 | if (prev_epos.bh != cur_epos.bh) | 387 | if (prev_epos.bh != cur_epos.bh) |
388 | { | 388 | { |
389 | udf_release_data(prev_epos.bh); | 389 | brelse(prev_epos.bh); |
390 | atomic_inc(&cur_epos.bh->b_count); | 390 | get_bh(cur_epos.bh); |
391 | prev_epos.bh = cur_epos.bh; | 391 | prev_epos.bh = cur_epos.bh; |
392 | } | 392 | } |
393 | if (cur_epos.bh != next_epos.bh) | 393 | if (cur_epos.bh != next_epos.bh) |
394 | { | 394 | { |
395 | udf_release_data(cur_epos.bh); | 395 | brelse(cur_epos.bh); |
396 | atomic_inc(&next_epos.bh->b_count); | 396 | get_bh(next_epos.bh); |
397 | cur_epos.bh = next_epos.bh; | 397 | cur_epos.bh = next_epos.bh; |
398 | } | 398 | } |
399 | 399 | ||
@@ -436,9 +436,9 @@ static struct buffer_head * inode_getblk(struct inode * inode, sector_t block, | |||
436 | ~(inode->i_sb->s_blocksize - 1)); | 436 | ~(inode->i_sb->s_blocksize - 1)); |
437 | etype = udf_write_aext(inode, &cur_epos, eloc, elen, 1); | 437 | etype = udf_write_aext(inode, &cur_epos, eloc, elen, 1); |
438 | } | 438 | } |
439 | udf_release_data(prev_epos.bh); | 439 | brelse(prev_epos.bh); |
440 | udf_release_data(cur_epos.bh); | 440 | brelse(cur_epos.bh); |
441 | udf_release_data(next_epos.bh); | 441 | brelse(next_epos.bh); |
442 | newblock = udf_get_lb_pblock(inode->i_sb, eloc, offset); | 442 | newblock = udf_get_lb_pblock(inode->i_sb, eloc, offset); |
443 | *phys = newblock; | 443 | *phys = newblock; |
444 | return NULL; | 444 | return NULL; |
@@ -492,8 +492,8 @@ static struct buffer_head * inode_getblk(struct inode * inode, sector_t block, | |||
492 | else | 492 | else |
493 | lastblock = 1; | 493 | lastblock = 1; |
494 | } | 494 | } |
495 | udf_release_data(cur_epos.bh); | 495 | brelse(cur_epos.bh); |
496 | udf_release_data(next_epos.bh); | 496 | brelse(next_epos.bh); |
497 | 497 | ||
498 | /* if the current extent is not recorded but allocated, get the | 498 | /* if the current extent is not recorded but allocated, get the |
499 | block in the extent corresponding to the requested block */ | 499 | block in the extent corresponding to the requested block */ |
@@ -513,7 +513,7 @@ static struct buffer_head * inode_getblk(struct inode * inode, sector_t block, | |||
513 | if (!(newblocknum = udf_new_block(inode->i_sb, inode, | 513 | if (!(newblocknum = udf_new_block(inode->i_sb, inode, |
514 | UDF_I_LOCATION(inode).partitionReferenceNum, goal, err))) | 514 | UDF_I_LOCATION(inode).partitionReferenceNum, goal, err))) |
515 | { | 515 | { |
516 | udf_release_data(prev_epos.bh); | 516 | brelse(prev_epos.bh); |
517 | *err = -ENOSPC; | 517 | *err = -ENOSPC; |
518 | return NULL; | 518 | return NULL; |
519 | } | 519 | } |
@@ -538,7 +538,7 @@ static struct buffer_head * inode_getblk(struct inode * inode, sector_t block, | |||
538 | the new number of extents is less than the old number */ | 538 | the new number of extents is less than the old number */ |
539 | udf_update_extents(inode, laarr, startnum, endnum, &prev_epos); | 539 | udf_update_extents(inode, laarr, startnum, endnum, &prev_epos); |
540 | 540 | ||
541 | udf_release_data(prev_epos.bh); | 541 | brelse(prev_epos.bh); |
542 | 542 | ||
543 | if (!(newblock = udf_get_pblock(inode->i_sb, newblocknum, | 543 | if (!(newblock = udf_get_pblock(inode->i_sb, newblocknum, |
544 | UDF_I_LOCATION(inode).partitionReferenceNum, 0))) | 544 | UDF_I_LOCATION(inode).partitionReferenceNum, 0))) |
@@ -934,7 +934,7 @@ __udf_read_inode(struct inode *inode) | |||
934 | { | 934 | { |
935 | printk(KERN_ERR "udf: udf_read_inode(ino %ld) failed ident=%d\n", | 935 | printk(KERN_ERR "udf: udf_read_inode(ino %ld) failed ident=%d\n", |
936 | inode->i_ino, ident); | 936 | inode->i_ino, ident); |
937 | udf_release_data(bh); | 937 | brelse(bh); |
938 | make_bad_inode(inode); | 938 | make_bad_inode(inode); |
939 | return; | 939 | return; |
940 | } | 940 | } |
@@ -963,35 +963,35 @@ __udf_read_inode(struct inode *inode) | |||
963 | ident == TAG_IDENT_EFE) | 963 | ident == TAG_IDENT_EFE) |
964 | { | 964 | { |
965 | memcpy(&UDF_I_LOCATION(inode), &loc, sizeof(kernel_lb_addr)); | 965 | memcpy(&UDF_I_LOCATION(inode), &loc, sizeof(kernel_lb_addr)); |
966 | udf_release_data(bh); | 966 | brelse(bh); |
967 | udf_release_data(ibh); | 967 | brelse(ibh); |
968 | udf_release_data(nbh); | 968 | brelse(nbh); |
969 | __udf_read_inode(inode); | 969 | __udf_read_inode(inode); |
970 | return; | 970 | return; |
971 | } | 971 | } |
972 | else | 972 | else |
973 | { | 973 | { |
974 | udf_release_data(nbh); | 974 | brelse(nbh); |
975 | udf_release_data(ibh); | 975 | brelse(ibh); |
976 | } | 976 | } |
977 | } | 977 | } |
978 | else | 978 | else |
979 | udf_release_data(ibh); | 979 | brelse(ibh); |
980 | } | 980 | } |
981 | } | 981 | } |
982 | else | 982 | else |
983 | udf_release_data(ibh); | 983 | brelse(ibh); |
984 | } | 984 | } |
985 | else if (le16_to_cpu(fe->icbTag.strategyType) != 4) | 985 | else if (le16_to_cpu(fe->icbTag.strategyType) != 4) |
986 | { | 986 | { |
987 | printk(KERN_ERR "udf: unsupported strategy type: %d\n", | 987 | printk(KERN_ERR "udf: unsupported strategy type: %d\n", |
988 | le16_to_cpu(fe->icbTag.strategyType)); | 988 | le16_to_cpu(fe->icbTag.strategyType)); |
989 | udf_release_data(bh); | 989 | brelse(bh); |
990 | make_bad_inode(inode); | 990 | make_bad_inode(inode); |
991 | return; | 991 | return; |
992 | } | 992 | } |
993 | udf_fill_inode(inode, bh); | 993 | udf_fill_inode(inode, bh); |
994 | udf_release_data(bh); | 994 | brelse(bh); |
995 | } | 995 | } |
996 | 996 | ||
997 | static void udf_fill_inode(struct inode *inode, struct buffer_head *bh) | 997 | static void udf_fill_inode(struct inode *inode, struct buffer_head *bh) |
@@ -1334,7 +1334,7 @@ udf_update_inode(struct inode *inode, int do_sync) | |||
1334 | use->descTag.tagChecksum += ((uint8_t *)&(use->descTag))[i]; | 1334 | use->descTag.tagChecksum += ((uint8_t *)&(use->descTag))[i]; |
1335 | 1335 | ||
1336 | mark_buffer_dirty(bh); | 1336 | mark_buffer_dirty(bh); |
1337 | udf_release_data(bh); | 1337 | brelse(bh); |
1338 | return err; | 1338 | return err; |
1339 | } | 1339 | } |
1340 | 1340 | ||
@@ -1523,7 +1523,7 @@ udf_update_inode(struct inode *inode, int do_sync) | |||
1523 | err = -EIO; | 1523 | err = -EIO; |
1524 | } | 1524 | } |
1525 | } | 1525 | } |
1526 | udf_release_data(bh); | 1526 | brelse(bh); |
1527 | return err; | 1527 | return err; |
1528 | } | 1528 | } |
1529 | 1529 | ||
@@ -1670,7 +1670,7 @@ int8_t udf_add_aext(struct inode *inode, struct extent_position *epos, | |||
1670 | else | 1670 | else |
1671 | udf_update_tag(epos->bh->b_data, sizeof(struct allocExtDesc)); | 1671 | udf_update_tag(epos->bh->b_data, sizeof(struct allocExtDesc)); |
1672 | mark_buffer_dirty_inode(epos->bh, inode); | 1672 | mark_buffer_dirty_inode(epos->bh, inode); |
1673 | udf_release_data(epos->bh); | 1673 | brelse(epos->bh); |
1674 | } | 1674 | } |
1675 | else | 1675 | else |
1676 | mark_inode_dirty(inode); | 1676 | mark_inode_dirty(inode); |
@@ -1761,7 +1761,7 @@ int8_t udf_next_aext(struct inode *inode, struct extent_position *epos, | |||
1761 | { | 1761 | { |
1762 | epos->block = *eloc; | 1762 | epos->block = *eloc; |
1763 | epos->offset = sizeof(struct allocExtDesc); | 1763 | epos->offset = sizeof(struct allocExtDesc); |
1764 | udf_release_data(epos->bh); | 1764 | brelse(epos->bh); |
1765 | if (!(epos->bh = udf_tread(inode->i_sb, udf_get_lb_pblock(inode->i_sb, epos->block, 0)))) | 1765 | if (!(epos->bh = udf_tread(inode->i_sb, udf_get_lb_pblock(inode->i_sb, epos->block, 0)))) |
1766 | { | 1766 | { |
1767 | udf_debug("reading block %d failed!\n", | 1767 | udf_debug("reading block %d failed!\n", |
@@ -1841,7 +1841,7 @@ udf_insert_aext(struct inode *inode, struct extent_position epos, | |||
1841 | int8_t etype; | 1841 | int8_t etype; |
1842 | 1842 | ||
1843 | if (epos.bh) | 1843 | if (epos.bh) |
1844 | atomic_inc(&epos.bh->b_count); | 1844 | get_bh(epos.bh); |
1845 | 1845 | ||
1846 | while ((etype = udf_next_aext(inode, &epos, &oeloc, &oelen, 0)) != -1) | 1846 | while ((etype = udf_next_aext(inode, &epos, &oeloc, &oelen, 0)) != -1) |
1847 | { | 1847 | { |
@@ -1851,7 +1851,7 @@ udf_insert_aext(struct inode *inode, struct extent_position epos, | |||
1851 | nelen = (etype << 30) | oelen; | 1851 | nelen = (etype << 30) | oelen; |
1852 | } | 1852 | } |
1853 | udf_add_aext(inode, &epos, neloc, nelen, 1); | 1853 | udf_add_aext(inode, &epos, neloc, nelen, 1); |
1854 | udf_release_data(epos.bh); | 1854 | brelse(epos.bh); |
1855 | return (nelen >> 30); | 1855 | return (nelen >> 30); |
1856 | } | 1856 | } |
1857 | 1857 | ||
@@ -1865,8 +1865,8 @@ int8_t udf_delete_aext(struct inode *inode, struct extent_position epos, | |||
1865 | 1865 | ||
1866 | if (epos.bh) | 1866 | if (epos.bh) |
1867 | { | 1867 | { |
1868 | atomic_inc(&epos.bh->b_count); | 1868 | get_bh(epos.bh); |
1869 | atomic_inc(&epos.bh->b_count); | 1869 | get_bh(epos.bh); |
1870 | } | 1870 | } |
1871 | 1871 | ||
1872 | if (UDF_I_ALLOCTYPE(inode) == ICBTAG_FLAG_AD_SHORT) | 1872 | if (UDF_I_ALLOCTYPE(inode) == ICBTAG_FLAG_AD_SHORT) |
@@ -1886,8 +1886,8 @@ int8_t udf_delete_aext(struct inode *inode, struct extent_position epos, | |||
1886 | if (oepos.bh != epos.bh) | 1886 | if (oepos.bh != epos.bh) |
1887 | { | 1887 | { |
1888 | oepos.block = epos.block; | 1888 | oepos.block = epos.block; |
1889 | udf_release_data(oepos.bh); | 1889 | brelse(oepos.bh); |
1890 | atomic_inc(&epos.bh->b_count); | 1890 | get_bh(epos.bh); |
1891 | oepos.bh = epos.bh; | 1891 | oepos.bh = epos.bh; |
1892 | oepos.offset = epos.offset - adsize; | 1892 | oepos.offset = epos.offset - adsize; |
1893 | } | 1893 | } |
@@ -1938,8 +1938,8 @@ int8_t udf_delete_aext(struct inode *inode, struct extent_position epos, | |||
1938 | } | 1938 | } |
1939 | } | 1939 | } |
1940 | 1940 | ||
1941 | udf_release_data(epos.bh); | 1941 | brelse(epos.bh); |
1942 | udf_release_data(oepos.bh); | 1942 | brelse(oepos.bh); |
1943 | return (elen >> 30); | 1943 | return (elen >> 30); |
1944 | } | 1944 | } |
1945 | 1945 | ||
@@ -1992,7 +1992,7 @@ long udf_block_map(struct inode *inode, sector_t block) | |||
1992 | ret = 0; | 1992 | ret = 0; |
1993 | 1993 | ||
1994 | unlock_kernel(); | 1994 | unlock_kernel(); |
1995 | udf_release_data(epos.bh); | 1995 | brelse(epos.bh); |
1996 | 1996 | ||
1997 | if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_VARCONV)) | 1997 | if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_VARCONV)) |
1998 | return udf_fixed_to_variable(ret); | 1998 | return udf_fixed_to_variable(ret); |
diff --git a/fs/udf/misc.c b/fs/udf/misc.c index cc8ca3254db1..a2b2a98ce78a 100644 --- a/fs/udf/misc.c +++ b/fs/udf/misc.c | |||
@@ -274,12 +274,6 @@ udf_read_ptagged(struct super_block *sb, kernel_lb_addr loc, uint32_t offset, ui | |||
274 | loc.logicalBlockNum + offset, ident); | 274 | loc.logicalBlockNum + offset, ident); |
275 | } | 275 | } |
276 | 276 | ||
277 | void udf_release_data(struct buffer_head *bh) | ||
278 | { | ||
279 | if (bh) | ||
280 | brelse(bh); | ||
281 | } | ||
282 | |||
283 | void udf_update_tag(char *data, int length) | 277 | void udf_update_tag(char *data, int length) |
284 | { | 278 | { |
285 | tag *tptr = (tag *)data; | 279 | tag *tptr = (tag *)data; |
diff --git a/fs/udf/namei.c b/fs/udf/namei.c index f85ad13b3dff..91df4928651c 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c | |||
@@ -182,13 +182,13 @@ udf_find_entry(struct inode *dir, struct dentry *dentry, | |||
182 | 182 | ||
183 | if (!(fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block))) | 183 | if (!(fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block))) |
184 | { | 184 | { |
185 | udf_release_data(epos.bh); | 185 | brelse(epos.bh); |
186 | return NULL; | 186 | return NULL; |
187 | } | 187 | } |
188 | } | 188 | } |
189 | else | 189 | else |
190 | { | 190 | { |
191 | udf_release_data(epos.bh); | 191 | brelse(epos.bh); |
192 | return NULL; | 192 | return NULL; |
193 | } | 193 | } |
194 | 194 | ||
@@ -199,9 +199,9 @@ udf_find_entry(struct inode *dir, struct dentry *dentry, | |||
199 | if (!fi) | 199 | if (!fi) |
200 | { | 200 | { |
201 | if (fibh->sbh != fibh->ebh) | 201 | if (fibh->sbh != fibh->ebh) |
202 | udf_release_data(fibh->ebh); | 202 | brelse(fibh->ebh); |
203 | udf_release_data(fibh->sbh); | 203 | brelse(fibh->sbh); |
204 | udf_release_data(epos.bh); | 204 | brelse(epos.bh); |
205 | return NULL; | 205 | return NULL; |
206 | } | 206 | } |
207 | 207 | ||
@@ -247,15 +247,15 @@ udf_find_entry(struct inode *dir, struct dentry *dentry, | |||
247 | { | 247 | { |
248 | if (udf_match(flen, fname, dentry->d_name.len, dentry->d_name.name)) | 248 | if (udf_match(flen, fname, dentry->d_name.len, dentry->d_name.name)) |
249 | { | 249 | { |
250 | udf_release_data(epos.bh); | 250 | brelse(epos.bh); |
251 | return fi; | 251 | return fi; |
252 | } | 252 | } |
253 | } | 253 | } |
254 | } | 254 | } |
255 | if (fibh->sbh != fibh->ebh) | 255 | if (fibh->sbh != fibh->ebh) |
256 | udf_release_data(fibh->ebh); | 256 | brelse(fibh->ebh); |
257 | udf_release_data(fibh->sbh); | 257 | brelse(fibh->sbh); |
258 | udf_release_data(epos.bh); | 258 | brelse(epos.bh); |
259 | return NULL; | 259 | return NULL; |
260 | } | 260 | } |
261 | 261 | ||
@@ -321,8 +321,8 @@ udf_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) | |||
321 | if (udf_find_entry(dir, dentry, &fibh, &cfi)) | 321 | if (udf_find_entry(dir, dentry, &fibh, &cfi)) |
322 | { | 322 | { |
323 | if (fibh.sbh != fibh.ebh) | 323 | if (fibh.sbh != fibh.ebh) |
324 | udf_release_data(fibh.ebh); | 324 | brelse(fibh.ebh); |
325 | udf_release_data(fibh.sbh); | 325 | brelse(fibh.sbh); |
326 | 326 | ||
327 | inode = udf_iget(dir->i_sb, lelb_to_cpu(cfi.icb.extLocation)); | 327 | inode = udf_iget(dir->i_sb, lelb_to_cpu(cfi.icb.extLocation)); |
328 | if ( !inode ) | 328 | if ( !inode ) |
@@ -400,7 +400,7 @@ udf_add_entry(struct inode *dir, struct dentry *dentry, | |||
400 | 400 | ||
401 | if (!(fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block))) | 401 | if (!(fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block))) |
402 | { | 402 | { |
403 | udf_release_data(epos.bh); | 403 | brelse(epos.bh); |
404 | *err = -EIO; | 404 | *err = -EIO; |
405 | return NULL; | 405 | return NULL; |
406 | } | 406 | } |
@@ -423,9 +423,9 @@ udf_add_entry(struct inode *dir, struct dentry *dentry, | |||
423 | if (!fi) | 423 | if (!fi) |
424 | { | 424 | { |
425 | if (fibh->sbh != fibh->ebh) | 425 | if (fibh->sbh != fibh->ebh) |
426 | udf_release_data(fibh->ebh); | 426 | brelse(fibh->ebh); |
427 | udf_release_data(fibh->sbh); | 427 | brelse(fibh->sbh); |
428 | udf_release_data(epos.bh); | 428 | brelse(epos.bh); |
429 | *err = -EIO; | 429 | *err = -EIO; |
430 | return NULL; | 430 | return NULL; |
431 | } | 431 | } |
@@ -455,7 +455,7 @@ udf_add_entry(struct inode *dir, struct dentry *dentry, | |||
455 | { | 455 | { |
456 | if (((sizeof(struct fileIdentDesc) + liu + lfi + 3) & ~3) == nfidlen) | 456 | if (((sizeof(struct fileIdentDesc) + liu + lfi + 3) & ~3) == nfidlen) |
457 | { | 457 | { |
458 | udf_release_data(epos.bh); | 458 | brelse(epos.bh); |
459 | cfi->descTag.tagSerialNum = cpu_to_le16(1); | 459 | cfi->descTag.tagSerialNum = cpu_to_le16(1); |
460 | cfi->fileVersionNum = cpu_to_le16(1); | 460 | cfi->fileVersionNum = cpu_to_le16(1); |
461 | cfi->fileCharacteristics = 0; | 461 | cfi->fileCharacteristics = 0; |
@@ -478,9 +478,9 @@ udf_add_entry(struct inode *dir, struct dentry *dentry, | |||
478 | udf_match(flen, fname, dentry->d_name.len, dentry->d_name.name)) | 478 | udf_match(flen, fname, dentry->d_name.len, dentry->d_name.name)) |
479 | { | 479 | { |
480 | if (fibh->sbh != fibh->ebh) | 480 | if (fibh->sbh != fibh->ebh) |
481 | udf_release_data(fibh->ebh); | 481 | brelse(fibh->ebh); |
482 | udf_release_data(fibh->sbh); | 482 | brelse(fibh->sbh); |
483 | udf_release_data(epos.bh); | 483 | brelse(epos.bh); |
484 | *err = -EEXIST; | 484 | *err = -EEXIST; |
485 | return NULL; | 485 | return NULL; |
486 | } | 486 | } |
@@ -492,14 +492,14 @@ add: | |||
492 | if (UDF_I_ALLOCTYPE(dir) == ICBTAG_FLAG_AD_IN_ICB && | 492 | if (UDF_I_ALLOCTYPE(dir) == ICBTAG_FLAG_AD_IN_ICB && |
493 | sb->s_blocksize - fibh->eoffset < nfidlen) | 493 | sb->s_blocksize - fibh->eoffset < nfidlen) |
494 | { | 494 | { |
495 | udf_release_data(epos.bh); | 495 | brelse(epos.bh); |
496 | epos.bh = NULL; | 496 | epos.bh = NULL; |
497 | fibh->soffset -= udf_ext0_offset(dir); | 497 | fibh->soffset -= udf_ext0_offset(dir); |
498 | fibh->eoffset -= udf_ext0_offset(dir); | 498 | fibh->eoffset -= udf_ext0_offset(dir); |
499 | f_pos -= (udf_ext0_offset(dir) >> 2); | 499 | f_pos -= (udf_ext0_offset(dir) >> 2); |
500 | if (fibh->sbh != fibh->ebh) | 500 | if (fibh->sbh != fibh->ebh) |
501 | udf_release_data(fibh->ebh); | 501 | brelse(fibh->ebh); |
502 | udf_release_data(fibh->sbh); | 502 | brelse(fibh->sbh); |
503 | if (!(fibh->sbh = fibh->ebh = udf_expand_dir_adinicb(dir, &block, err))) | 503 | if (!(fibh->sbh = fibh->ebh = udf_expand_dir_adinicb(dir, &block, err))) |
504 | return NULL; | 504 | return NULL; |
505 | epos.block = UDF_I_LOCATION(dir); | 505 | epos.block = UDF_I_LOCATION(dir); |
@@ -519,7 +519,7 @@ add: | |||
519 | fibh->eoffset += nfidlen; | 519 | fibh->eoffset += nfidlen; |
520 | if (fibh->sbh != fibh->ebh) | 520 | if (fibh->sbh != fibh->ebh) |
521 | { | 521 | { |
522 | udf_release_data(fibh->sbh); | 522 | brelse(fibh->sbh); |
523 | fibh->sbh = fibh->ebh; | 523 | fibh->sbh = fibh->ebh; |
524 | } | 524 | } |
525 | 525 | ||
@@ -541,7 +541,7 @@ add: | |||
541 | fibh->eoffset += nfidlen - sb->s_blocksize; | 541 | fibh->eoffset += nfidlen - sb->s_blocksize; |
542 | if (fibh->sbh != fibh->ebh) | 542 | if (fibh->sbh != fibh->ebh) |
543 | { | 543 | { |
544 | udf_release_data(fibh->sbh); | 544 | brelse(fibh->sbh); |
545 | fibh->sbh = fibh->ebh; | 545 | fibh->sbh = fibh->ebh; |
546 | } | 546 | } |
547 | 547 | ||
@@ -550,8 +550,8 @@ add: | |||
550 | 550 | ||
551 | if (!(fibh->ebh = udf_bread(dir, f_pos >> (dir->i_sb->s_blocksize_bits - 2), 1, err))) | 551 | if (!(fibh->ebh = udf_bread(dir, f_pos >> (dir->i_sb->s_blocksize_bits - 2), 1, err))) |
552 | { | 552 | { |
553 | udf_release_data(epos.bh); | 553 | brelse(epos.bh); |
554 | udf_release_data(fibh->sbh); | 554 | brelse(fibh->sbh); |
555 | return NULL; | 555 | return NULL; |
556 | } | 556 | } |
557 | 557 | ||
@@ -566,7 +566,7 @@ add: | |||
566 | else | 566 | else |
567 | block ++; | 567 | block ++; |
568 | 568 | ||
569 | udf_release_data(fibh->sbh); | 569 | brelse(fibh->sbh); |
570 | fibh->sbh = fibh->ebh; | 570 | fibh->sbh = fibh->ebh; |
571 | fi = (struct fileIdentDesc *)(fibh->sbh->b_data); | 571 | fi = (struct fileIdentDesc *)(fibh->sbh->b_data); |
572 | } | 572 | } |
@@ -587,7 +587,7 @@ add: | |||
587 | cfi->lengthOfImpUse = cpu_to_le16(0); | 587 | cfi->lengthOfImpUse = cpu_to_le16(0); |
588 | if (!udf_write_fi(dir, cfi, fi, fibh, NULL, name)) | 588 | if (!udf_write_fi(dir, cfi, fi, fibh, NULL, name)) |
589 | { | 589 | { |
590 | udf_release_data(epos.bh); | 590 | brelse(epos.bh); |
591 | dir->i_size += nfidlen; | 591 | dir->i_size += nfidlen; |
592 | if (UDF_I_ALLOCTYPE(dir) == ICBTAG_FLAG_AD_IN_ICB) | 592 | if (UDF_I_ALLOCTYPE(dir) == ICBTAG_FLAG_AD_IN_ICB) |
593 | UDF_I_LENALLOC(dir) += nfidlen; | 593 | UDF_I_LENALLOC(dir) += nfidlen; |
@@ -596,10 +596,10 @@ add: | |||
596 | } | 596 | } |
597 | else | 597 | else |
598 | { | 598 | { |
599 | udf_release_data(epos.bh); | 599 | brelse(epos.bh); |
600 | if (fibh->sbh != fibh->ebh) | 600 | if (fibh->sbh != fibh->ebh) |
601 | udf_release_data(fibh->ebh); | 601 | brelse(fibh->ebh); |
602 | udf_release_data(fibh->sbh); | 602 | brelse(fibh->sbh); |
603 | *err = -EIO; | 603 | *err = -EIO; |
604 | return NULL; | 604 | return NULL; |
605 | } | 605 | } |
@@ -656,8 +656,8 @@ static int udf_create(struct inode *dir, struct dentry *dentry, int mode, struct | |||
656 | mark_inode_dirty(dir); | 656 | mark_inode_dirty(dir); |
657 | } | 657 | } |
658 | if (fibh.sbh != fibh.ebh) | 658 | if (fibh.sbh != fibh.ebh) |
659 | udf_release_data(fibh.ebh); | 659 | brelse(fibh.ebh); |
660 | udf_release_data(fibh.sbh); | 660 | brelse(fibh.sbh); |
661 | unlock_kernel(); | 661 | unlock_kernel(); |
662 | d_instantiate(dentry, inode); | 662 | d_instantiate(dentry, inode); |
663 | return 0; | 663 | return 0; |
@@ -701,8 +701,8 @@ static int udf_mknod(struct inode * dir, struct dentry * dentry, int mode, dev_t | |||
701 | mark_inode_dirty(inode); | 701 | mark_inode_dirty(inode); |
702 | 702 | ||
703 | if (fibh.sbh != fibh.ebh) | 703 | if (fibh.sbh != fibh.ebh) |
704 | udf_release_data(fibh.ebh); | 704 | brelse(fibh.ebh); |
705 | udf_release_data(fibh.sbh); | 705 | brelse(fibh.sbh); |
706 | d_instantiate(dentry, inode); | 706 | d_instantiate(dentry, inode); |
707 | err = 0; | 707 | err = 0; |
708 | out: | 708 | out: |
@@ -743,7 +743,7 @@ static int udf_mkdir(struct inode * dir, struct dentry * dentry, int mode) | |||
743 | cpu_to_le32(UDF_I_UNIQUE(dir) & 0x00000000FFFFFFFFUL); | 743 | cpu_to_le32(UDF_I_UNIQUE(dir) & 0x00000000FFFFFFFFUL); |
744 | cfi.fileCharacteristics = FID_FILE_CHAR_DIRECTORY | FID_FILE_CHAR_PARENT; | 744 | cfi.fileCharacteristics = FID_FILE_CHAR_DIRECTORY | FID_FILE_CHAR_PARENT; |
745 | udf_write_fi(inode, &cfi, fi, &fibh, NULL, NULL); | 745 | udf_write_fi(inode, &cfi, fi, &fibh, NULL, NULL); |
746 | udf_release_data(fibh.sbh); | 746 | brelse(fibh.sbh); |
747 | inode->i_mode = S_IFDIR | mode; | 747 | inode->i_mode = S_IFDIR | mode; |
748 | if (dir->i_mode & S_ISGID) | 748 | if (dir->i_mode & S_ISGID) |
749 | inode->i_mode |= S_ISGID; | 749 | inode->i_mode |= S_ISGID; |
@@ -766,8 +766,8 @@ static int udf_mkdir(struct inode * dir, struct dentry * dentry, int mode) | |||
766 | mark_inode_dirty(dir); | 766 | mark_inode_dirty(dir); |
767 | d_instantiate(dentry, inode); | 767 | d_instantiate(dentry, inode); |
768 | if (fibh.sbh != fibh.ebh) | 768 | if (fibh.sbh != fibh.ebh) |
769 | udf_release_data(fibh.ebh); | 769 | brelse(fibh.ebh); |
770 | udf_release_data(fibh.sbh); | 770 | brelse(fibh.sbh); |
771 | err = 0; | 771 | err = 0; |
772 | out: | 772 | out: |
773 | unlock_kernel(); | 773 | unlock_kernel(); |
@@ -808,13 +808,13 @@ static int empty_dir(struct inode *dir) | |||
808 | 808 | ||
809 | if (!(fibh.sbh = fibh.ebh = udf_tread(dir->i_sb, block))) | 809 | if (!(fibh.sbh = fibh.ebh = udf_tread(dir->i_sb, block))) |
810 | { | 810 | { |
811 | udf_release_data(epos.bh); | 811 | brelse(epos.bh); |
812 | return 0; | 812 | return 0; |
813 | } | 813 | } |
814 | } | 814 | } |
815 | else | 815 | else |
816 | { | 816 | { |
817 | udf_release_data(epos.bh); | 817 | brelse(epos.bh); |
818 | return 0; | 818 | return 0; |
819 | } | 819 | } |
820 | 820 | ||
@@ -826,25 +826,25 @@ static int empty_dir(struct inode *dir) | |||
826 | if (!fi) | 826 | if (!fi) |
827 | { | 827 | { |
828 | if (fibh.sbh != fibh.ebh) | 828 | if (fibh.sbh != fibh.ebh) |
829 | udf_release_data(fibh.ebh); | 829 | brelse(fibh.ebh); |
830 | udf_release_data(fibh.sbh); | 830 | brelse(fibh.sbh); |
831 | udf_release_data(epos.bh); | 831 | brelse(epos.bh); |
832 | return 0; | 832 | return 0; |
833 | } | 833 | } |
834 | 834 | ||
835 | if (cfi.lengthFileIdent && (cfi.fileCharacteristics & FID_FILE_CHAR_DELETED) == 0) | 835 | if (cfi.lengthFileIdent && (cfi.fileCharacteristics & FID_FILE_CHAR_DELETED) == 0) |
836 | { | 836 | { |
837 | if (fibh.sbh != fibh.ebh) | 837 | if (fibh.sbh != fibh.ebh) |
838 | udf_release_data(fibh.ebh); | 838 | brelse(fibh.ebh); |
839 | udf_release_data(fibh.sbh); | 839 | brelse(fibh.sbh); |
840 | udf_release_data(epos.bh); | 840 | brelse(epos.bh); |
841 | return 0; | 841 | return 0; |
842 | } | 842 | } |
843 | } | 843 | } |
844 | if (fibh.sbh != fibh.ebh) | 844 | if (fibh.sbh != fibh.ebh) |
845 | udf_release_data(fibh.ebh); | 845 | brelse(fibh.ebh); |
846 | udf_release_data(fibh.sbh); | 846 | brelse(fibh.sbh); |
847 | udf_release_data(epos.bh); | 847 | brelse(epos.bh); |
848 | return 1; | 848 | return 1; |
849 | } | 849 | } |
850 | 850 | ||
@@ -884,8 +884,8 @@ static int udf_rmdir(struct inode * dir, struct dentry * dentry) | |||
884 | 884 | ||
885 | end_rmdir: | 885 | end_rmdir: |
886 | if (fibh.sbh != fibh.ebh) | 886 | if (fibh.sbh != fibh.ebh) |
887 | udf_release_data(fibh.ebh); | 887 | brelse(fibh.ebh); |
888 | udf_release_data(fibh.sbh); | 888 | brelse(fibh.sbh); |
889 | out: | 889 | out: |
890 | unlock_kernel(); | 890 | unlock_kernel(); |
891 | return retval; | 891 | return retval; |
@@ -928,8 +928,8 @@ static int udf_unlink(struct inode * dir, struct dentry * dentry) | |||
928 | 928 | ||
929 | end_unlink: | 929 | end_unlink: |
930 | if (fibh.sbh != fibh.ebh) | 930 | if (fibh.sbh != fibh.ebh) |
931 | udf_release_data(fibh.ebh); | 931 | brelse(fibh.ebh); |
932 | udf_release_data(fibh.sbh); | 932 | brelse(fibh.sbh); |
933 | out: | 933 | out: |
934 | unlock_kernel(); | 934 | unlock_kernel(); |
935 | return retval; | 935 | return retval; |
@@ -977,7 +977,7 @@ static int udf_symlink(struct inode * dir, struct dentry * dentry, const char * | |||
977 | elen = inode->i_sb->s_blocksize; | 977 | elen = inode->i_sb->s_blocksize; |
978 | UDF_I_LENEXTENTS(inode) = elen; | 978 | UDF_I_LENEXTENTS(inode) = elen; |
979 | udf_add_aext(inode, &epos, eloc, elen, 0); | 979 | udf_add_aext(inode, &epos, eloc, elen, 0); |
980 | udf_release_data(epos.bh); | 980 | brelse(epos.bh); |
981 | 981 | ||
982 | block = udf_get_pblock(inode->i_sb, block, | 982 | block = udf_get_pblock(inode->i_sb, block, |
983 | UDF_I_LOCATION(inode).partitionReferenceNum, 0); | 983 | UDF_I_LOCATION(inode).partitionReferenceNum, 0); |
@@ -1060,7 +1060,7 @@ static int udf_symlink(struct inode * dir, struct dentry * dentry, const char * | |||
1060 | } | 1060 | } |
1061 | } | 1061 | } |
1062 | 1062 | ||
1063 | udf_release_data(epos.bh); | 1063 | brelse(epos.bh); |
1064 | inode->i_size = elen; | 1064 | inode->i_size = elen; |
1065 | if (UDF_I_ALLOCTYPE(inode) == ICBTAG_FLAG_AD_IN_ICB) | 1065 | if (UDF_I_ALLOCTYPE(inode) == ICBTAG_FLAG_AD_IN_ICB) |
1066 | UDF_I_LENALLOC(inode) = inode->i_size; | 1066 | UDF_I_LENALLOC(inode) = inode->i_size; |
@@ -1089,8 +1089,8 @@ static int udf_symlink(struct inode * dir, struct dentry * dentry, const char * | |||
1089 | mark_inode_dirty(dir); | 1089 | mark_inode_dirty(dir); |
1090 | } | 1090 | } |
1091 | if (fibh.sbh != fibh.ebh) | 1091 | if (fibh.sbh != fibh.ebh) |
1092 | udf_release_data(fibh.ebh); | 1092 | brelse(fibh.ebh); |
1093 | udf_release_data(fibh.sbh); | 1093 | brelse(fibh.sbh); |
1094 | d_instantiate(dentry, inode); | 1094 | d_instantiate(dentry, inode); |
1095 | err = 0; | 1095 | err = 0; |
1096 | 1096 | ||
@@ -1145,8 +1145,8 @@ static int udf_link(struct dentry * old_dentry, struct inode * dir, | |||
1145 | mark_inode_dirty(dir); | 1145 | mark_inode_dirty(dir); |
1146 | } | 1146 | } |
1147 | if (fibh.sbh != fibh.ebh) | 1147 | if (fibh.sbh != fibh.ebh) |
1148 | udf_release_data(fibh.ebh); | 1148 | brelse(fibh.ebh); |
1149 | udf_release_data(fibh.sbh); | 1149 | brelse(fibh.sbh); |
1150 | inc_nlink(inode); | 1150 | inc_nlink(inode); |
1151 | inode->i_ctime = current_fs_time(inode->i_sb); | 1151 | inode->i_ctime = current_fs_time(inode->i_sb); |
1152 | mark_inode_dirty(inode); | 1152 | mark_inode_dirty(inode); |
@@ -1174,8 +1174,8 @@ static int udf_rename (struct inode * old_dir, struct dentry * old_dentry, | |||
1174 | if ((ofi = udf_find_entry(old_dir, old_dentry, &ofibh, &ocfi))) | 1174 | if ((ofi = udf_find_entry(old_dir, old_dentry, &ofibh, &ocfi))) |
1175 | { | 1175 | { |
1176 | if (ofibh.sbh != ofibh.ebh) | 1176 | if (ofibh.sbh != ofibh.ebh) |
1177 | udf_release_data(ofibh.ebh); | 1177 | brelse(ofibh.ebh); |
1178 | udf_release_data(ofibh.sbh); | 1178 | brelse(ofibh.sbh); |
1179 | } | 1179 | } |
1180 | tloc = lelb_to_cpu(ocfi.icb.extLocation); | 1180 | tloc = lelb_to_cpu(ocfi.icb.extLocation); |
1181 | if (!ofi || udf_get_lb_pblock(old_dir->i_sb, tloc, 0) | 1181 | if (!ofi || udf_get_lb_pblock(old_dir->i_sb, tloc, 0) |
@@ -1188,8 +1188,8 @@ static int udf_rename (struct inode * old_dir, struct dentry * old_dentry, | |||
1188 | if (!new_inode) | 1188 | if (!new_inode) |
1189 | { | 1189 | { |
1190 | if (nfibh.sbh != nfibh.ebh) | 1190 | if (nfibh.sbh != nfibh.ebh) |
1191 | udf_release_data(nfibh.ebh); | 1191 | brelse(nfibh.ebh); |
1192 | udf_release_data(nfibh.sbh); | 1192 | brelse(nfibh.sbh); |
1193 | nfi = NULL; | 1193 | nfi = NULL; |
1194 | } | 1194 | } |
1195 | } | 1195 | } |
@@ -1290,19 +1290,19 @@ static int udf_rename (struct inode * old_dir, struct dentry * old_dentry, | |||
1290 | if (ofi) | 1290 | if (ofi) |
1291 | { | 1291 | { |
1292 | if (ofibh.sbh != ofibh.ebh) | 1292 | if (ofibh.sbh != ofibh.ebh) |
1293 | udf_release_data(ofibh.ebh); | 1293 | brelse(ofibh.ebh); |
1294 | udf_release_data(ofibh.sbh); | 1294 | brelse(ofibh.sbh); |
1295 | } | 1295 | } |
1296 | 1296 | ||
1297 | retval = 0; | 1297 | retval = 0; |
1298 | 1298 | ||
1299 | end_rename: | 1299 | end_rename: |
1300 | udf_release_data(dir_bh); | 1300 | brelse(dir_bh); |
1301 | if (nfi) | 1301 | if (nfi) |
1302 | { | 1302 | { |
1303 | if (nfibh.sbh != nfibh.ebh) | 1303 | if (nfibh.sbh != nfibh.ebh) |
1304 | udf_release_data(nfibh.ebh); | 1304 | brelse(nfibh.ebh); |
1305 | udf_release_data(nfibh.sbh); | 1305 | brelse(nfibh.sbh); |
1306 | } | 1306 | } |
1307 | unlock_kernel(); | 1307 | unlock_kernel(); |
1308 | return retval; | 1308 | return retval; |
diff --git a/fs/udf/partition.c b/fs/udf/partition.c index dabf2b841db8..467a26171cd9 100644 --- a/fs/udf/partition.c +++ b/fs/udf/partition.c | |||
@@ -81,7 +81,7 @@ uint32_t udf_get_pblock_virt15(struct super_block *sb, uint32_t block, uint16_t | |||
81 | 81 | ||
82 | loc = le32_to_cpu(((__le32 *)bh->b_data)[index]); | 82 | loc = le32_to_cpu(((__le32 *)bh->b_data)[index]); |
83 | 83 | ||
84 | udf_release_data(bh); | 84 | brelse(bh); |
85 | 85 | ||
86 | if (UDF_I_LOCATION(UDF_SB_VAT(sb)).partitionReferenceNum == partition) | 86 | if (UDF_I_LOCATION(UDF_SB_VAT(sb)).partitionReferenceNum == partition) |
87 | { | 87 | { |
diff --git a/fs/udf/super.c b/fs/udf/super.c index dafa05f0110b..9f516d4baf9d 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c | |||
@@ -563,7 +563,7 @@ udf_vrs(struct super_block *sb, int silent) | |||
563 | 563 | ||
564 | if (vsd->stdIdent[0] == 0) | 564 | if (vsd->stdIdent[0] == 0) |
565 | { | 565 | { |
566 | udf_release_data(bh); | 566 | brelse(bh); |
567 | break; | 567 | break; |
568 | } | 568 | } |
569 | else if (!strncmp(vsd->stdIdent, VSD_STD_ID_CD001, VSD_STD_ID_LEN)) | 569 | else if (!strncmp(vsd->stdIdent, VSD_STD_ID_CD001, VSD_STD_ID_LEN)) |
@@ -596,7 +596,7 @@ udf_vrs(struct super_block *sb, int silent) | |||
596 | } | 596 | } |
597 | else if (!strncmp(vsd->stdIdent, VSD_STD_ID_TEA01, VSD_STD_ID_LEN)) | 597 | else if (!strncmp(vsd->stdIdent, VSD_STD_ID_TEA01, VSD_STD_ID_LEN)) |
598 | { | 598 | { |
599 | udf_release_data(bh); | 599 | brelse(bh); |
600 | break; | 600 | break; |
601 | } | 601 | } |
602 | else if (!strncmp(vsd->stdIdent, VSD_STD_ID_NSR02, VSD_STD_ID_LEN)) | 602 | else if (!strncmp(vsd->stdIdent, VSD_STD_ID_NSR02, VSD_STD_ID_LEN)) |
@@ -607,7 +607,7 @@ udf_vrs(struct super_block *sb, int silent) | |||
607 | { | 607 | { |
608 | nsr03 = sector; | 608 | nsr03 = sector; |
609 | } | 609 | } |
610 | udf_release_data(bh); | 610 | brelse(bh); |
611 | } | 611 | } |
612 | 612 | ||
613 | if (nsr03) | 613 | if (nsr03) |
@@ -673,7 +673,7 @@ udf_find_anchor(struct super_block *sb) | |||
673 | { | 673 | { |
674 | ident = le16_to_cpu(((tag *)bh->b_data)->tagIdent); | 674 | ident = le16_to_cpu(((tag *)bh->b_data)->tagIdent); |
675 | location = le32_to_cpu(((tag *)bh->b_data)->tagLocation); | 675 | location = le32_to_cpu(((tag *)bh->b_data)->tagLocation); |
676 | udf_release_data(bh); | 676 | brelse(bh); |
677 | } | 677 | } |
678 | 678 | ||
679 | if (ident == TAG_IDENT_AVDP) | 679 | if (ident == TAG_IDENT_AVDP) |
@@ -708,7 +708,7 @@ udf_find_anchor(struct super_block *sb) | |||
708 | { | 708 | { |
709 | ident = le16_to_cpu(((tag *)bh->b_data)->tagIdent); | 709 | ident = le16_to_cpu(((tag *)bh->b_data)->tagIdent); |
710 | location = le32_to_cpu(((tag *)bh->b_data)->tagLocation); | 710 | location = le32_to_cpu(((tag *)bh->b_data)->tagLocation); |
711 | udf_release_data(bh); | 711 | brelse(bh); |
712 | } | 712 | } |
713 | 713 | ||
714 | if (ident == TAG_IDENT_AVDP && | 714 | if (ident == TAG_IDENT_AVDP && |
@@ -727,7 +727,7 @@ udf_find_anchor(struct super_block *sb) | |||
727 | { | 727 | { |
728 | ident = le16_to_cpu(((tag *)bh->b_data)->tagIdent); | 728 | ident = le16_to_cpu(((tag *)bh->b_data)->tagIdent); |
729 | location = le32_to_cpu(((tag *)bh->b_data)->tagLocation); | 729 | location = le32_to_cpu(((tag *)bh->b_data)->tagLocation); |
730 | udf_release_data(bh); | 730 | brelse(bh); |
731 | } | 731 | } |
732 | 732 | ||
733 | if (ident == TAG_IDENT_AVDP && | 733 | if (ident == TAG_IDENT_AVDP && |
@@ -749,7 +749,7 @@ udf_find_anchor(struct super_block *sb) | |||
749 | { | 749 | { |
750 | ident = le16_to_cpu(((tag *)bh->b_data)->tagIdent); | 750 | ident = le16_to_cpu(((tag *)bh->b_data)->tagIdent); |
751 | location = le32_to_cpu(((tag *)bh->b_data)->tagLocation); | 751 | location = le32_to_cpu(((tag *)bh->b_data)->tagLocation); |
752 | udf_release_data(bh); | 752 | brelse(bh); |
753 | 753 | ||
754 | if (ident == TAG_IDENT_AVDP && location == 256) | 754 | if (ident == TAG_IDENT_AVDP && location == 256) |
755 | UDF_SET_FLAG(sb, UDF_FLAG_VARCONV); | 755 | UDF_SET_FLAG(sb, UDF_FLAG_VARCONV); |
@@ -766,7 +766,7 @@ udf_find_anchor(struct super_block *sb) | |||
766 | } | 766 | } |
767 | else | 767 | else |
768 | { | 768 | { |
769 | udf_release_data(bh); | 769 | brelse(bh); |
770 | if ((ident != TAG_IDENT_AVDP) && (i || | 770 | if ((ident != TAG_IDENT_AVDP) && (i || |
771 | (ident != TAG_IDENT_FE && ident != TAG_IDENT_EFE))) | 771 | (ident != TAG_IDENT_FE && ident != TAG_IDENT_EFE))) |
772 | { | 772 | { |
@@ -795,7 +795,7 @@ udf_find_fileset(struct super_block *sb, kernel_lb_addr *fileset, kernel_lb_addr | |||
795 | return 1; | 795 | return 1; |
796 | else if (ident != TAG_IDENT_FSD) | 796 | else if (ident != TAG_IDENT_FSD) |
797 | { | 797 | { |
798 | udf_release_data(bh); | 798 | brelse(bh); |
799 | return 1; | 799 | return 1; |
800 | } | 800 | } |
801 | 801 | ||
@@ -834,7 +834,7 @@ udf_find_fileset(struct super_block *sb, kernel_lb_addr *fileset, kernel_lb_addr | |||
834 | newfileset.logicalBlockNum += 1 + | 834 | newfileset.logicalBlockNum += 1 + |
835 | ((le32_to_cpu(sp->numOfBytes) + sizeof(struct spaceBitmapDesc) - 1) | 835 | ((le32_to_cpu(sp->numOfBytes) + sizeof(struct spaceBitmapDesc) - 1) |
836 | >> sb->s_blocksize_bits); | 836 | >> sb->s_blocksize_bits); |
837 | udf_release_data(bh); | 837 | brelse(bh); |
838 | break; | 838 | break; |
839 | } | 839 | } |
840 | case TAG_IDENT_FSD: | 840 | case TAG_IDENT_FSD: |
@@ -845,7 +845,7 @@ udf_find_fileset(struct super_block *sb, kernel_lb_addr *fileset, kernel_lb_addr | |||
845 | default: | 845 | default: |
846 | { | 846 | { |
847 | newfileset.logicalBlockNum ++; | 847 | newfileset.logicalBlockNum ++; |
848 | udf_release_data(bh); | 848 | brelse(bh); |
849 | bh = NULL; | 849 | bh = NULL; |
850 | break; | 850 | break; |
851 | } | 851 | } |
@@ -865,7 +865,7 @@ udf_find_fileset(struct super_block *sb, kernel_lb_addr *fileset, kernel_lb_addr | |||
865 | 865 | ||
866 | UDF_SB_PARTITION(sb) = fileset->partitionReferenceNum; | 866 | UDF_SB_PARTITION(sb) = fileset->partitionReferenceNum; |
867 | udf_load_fileset(sb, bh, root); | 867 | udf_load_fileset(sb, bh, root); |
868 | udf_release_data(bh); | 868 | brelse(bh); |
869 | return 0; | 869 | return 0; |
870 | } | 870 | } |
871 | return 1; | 871 | return 1; |
@@ -1083,7 +1083,7 @@ udf_load_logicalvol(struct super_block *sb, struct buffer_head * bh, kernel_lb_a | |||
1083 | if (ident != 0 || | 1083 | if (ident != 0 || |
1084 | strncmp(st->sparingIdent.ident, UDF_ID_SPARING, strlen(UDF_ID_SPARING))) | 1084 | strncmp(st->sparingIdent.ident, UDF_ID_SPARING, strlen(UDF_ID_SPARING))) |
1085 | { | 1085 | { |
1086 | udf_release_data(UDF_SB_TYPESPAR(sb,i).s_spar_map[j]); | 1086 | brelse(UDF_SB_TYPESPAR(sb,i).s_spar_map[j]); |
1087 | UDF_SB_TYPESPAR(sb,i).s_spar_map[j] = NULL; | 1087 | UDF_SB_TYPESPAR(sb,i).s_spar_map[j] = NULL; |
1088 | } | 1088 | } |
1089 | } | 1089 | } |
@@ -1137,12 +1137,12 @@ udf_load_logicalvolint(struct super_block *sb, kernel_extent_ad loc) | |||
1137 | udf_load_logicalvolint(sb, leea_to_cpu(UDF_SB_LVID(sb)->nextIntegrityExt)); | 1137 | udf_load_logicalvolint(sb, leea_to_cpu(UDF_SB_LVID(sb)->nextIntegrityExt)); |
1138 | 1138 | ||
1139 | if (UDF_SB_LVIDBH(sb) != bh) | 1139 | if (UDF_SB_LVIDBH(sb) != bh) |
1140 | udf_release_data(bh); | 1140 | brelse(bh); |
1141 | loc.extLength -= sb->s_blocksize; | 1141 | loc.extLength -= sb->s_blocksize; |
1142 | loc.extLocation ++; | 1142 | loc.extLocation ++; |
1143 | } | 1143 | } |
1144 | if (UDF_SB_LVIDBH(sb) != bh) | 1144 | if (UDF_SB_LVIDBH(sb) != bh) |
1145 | udf_release_data(bh); | 1145 | brelse(bh); |
1146 | } | 1146 | } |
1147 | 1147 | ||
1148 | /* | 1148 | /* |
@@ -1245,7 +1245,7 @@ udf_process_sequence(struct super_block *sb, long block, long lastblock, kernel_ | |||
1245 | done = 1; | 1245 | done = 1; |
1246 | break; | 1246 | break; |
1247 | } | 1247 | } |
1248 | udf_release_data(bh); | 1248 | brelse(bh); |
1249 | } | 1249 | } |
1250 | for (i=0; i<VDS_POS_LENGTH; i++) | 1250 | for (i=0; i<VDS_POS_LENGTH; i++) |
1251 | { | 1251 | { |
@@ -1267,10 +1267,10 @@ udf_process_sequence(struct super_block *sb, long block, long lastblock, kernel_ | |||
1267 | gd = (struct generic_desc *)bh2->b_data; | 1267 | gd = (struct generic_desc *)bh2->b_data; |
1268 | if (ident == TAG_IDENT_PD) | 1268 | if (ident == TAG_IDENT_PD) |
1269 | udf_load_partdesc(sb, bh2); | 1269 | udf_load_partdesc(sb, bh2); |
1270 | udf_release_data(bh2); | 1270 | brelse(bh2); |
1271 | } | 1271 | } |
1272 | } | 1272 | } |
1273 | udf_release_data(bh); | 1273 | brelse(bh); |
1274 | } | 1274 | } |
1275 | } | 1275 | } |
1276 | 1276 | ||
@@ -1333,7 +1333,7 @@ udf_load_partition(struct super_block *sb, kernel_lb_addr *fileset) | |||
1333 | reserve_e = reserve_e >> sb->s_blocksize_bits; | 1333 | reserve_e = reserve_e >> sb->s_blocksize_bits; |
1334 | reserve_e += reserve_s; | 1334 | reserve_e += reserve_s; |
1335 | 1335 | ||
1336 | udf_release_data(bh); | 1336 | brelse(bh); |
1337 | 1337 | ||
1338 | /* Process the main & reserve sequences */ | 1338 | /* Process the main & reserve sequences */ |
1339 | /* responsible for finding the PartitionDesc(s) */ | 1339 | /* responsible for finding the PartitionDesc(s) */ |
@@ -1408,7 +1408,7 @@ udf_load_partition(struct super_block *sb, kernel_lb_addr *fileset) | |||
1408 | udf_ext0_offset(UDF_SB_VAT(sb)); | 1408 | udf_ext0_offset(UDF_SB_VAT(sb)); |
1409 | UDF_SB_TYPEVIRT(sb,i).s_num_entries = (UDF_SB_VAT(sb)->i_size - | 1409 | UDF_SB_TYPEVIRT(sb,i).s_num_entries = (UDF_SB_VAT(sb)->i_size - |
1410 | UDF_SB_TYPEVIRT(sb,i).s_start_offset) >> 2; | 1410 | UDF_SB_TYPEVIRT(sb,i).s_start_offset) >> 2; |
1411 | udf_release_data(bh); | 1411 | brelse(bh); |
1412 | } | 1412 | } |
1413 | UDF_SB_PARTROOT(sb,i) = udf_get_pblock(sb, 0, i, 0); | 1413 | UDF_SB_PARTROOT(sb,i) = udf_get_pblock(sb, 0, i, 0); |
1414 | UDF_SB_PARTLEN(sb,i) = UDF_SB_PARTLEN(sb,ino.partitionReferenceNum); | 1414 | UDF_SB_PARTLEN(sb,i) = UDF_SB_PARTLEN(sb,ino.partitionReferenceNum); |
@@ -1680,7 +1680,7 @@ error_out: | |||
1680 | if (UDF_SB_PARTTYPE(sb, UDF_SB_PARTITION(sb)) == UDF_SPARABLE_MAP15) | 1680 | if (UDF_SB_PARTTYPE(sb, UDF_SB_PARTITION(sb)) == UDF_SPARABLE_MAP15) |
1681 | { | 1681 | { |
1682 | for (i=0; i<4; i++) | 1682 | for (i=0; i<4; i++) |
1683 | udf_release_data(UDF_SB_TYPESPAR(sb, UDF_SB_PARTITION(sb)).s_spar_map[i]); | 1683 | brelse(UDF_SB_TYPESPAR(sb, UDF_SB_PARTITION(sb)).s_spar_map[i]); |
1684 | } | 1684 | } |
1685 | } | 1685 | } |
1686 | #ifdef CONFIG_UDF_NLS | 1686 | #ifdef CONFIG_UDF_NLS |
@@ -1689,7 +1689,7 @@ error_out: | |||
1689 | #endif | 1689 | #endif |
1690 | if (!(sb->s_flags & MS_RDONLY)) | 1690 | if (!(sb->s_flags & MS_RDONLY)) |
1691 | udf_close_lvid(sb); | 1691 | udf_close_lvid(sb); |
1692 | udf_release_data(UDF_SB_LVIDBH(sb)); | 1692 | brelse(UDF_SB_LVIDBH(sb)); |
1693 | UDF_SB_FREE(sb); | 1693 | UDF_SB_FREE(sb); |
1694 | kfree(sbi); | 1694 | kfree(sbi); |
1695 | sb->s_fs_info = NULL; | 1695 | sb->s_fs_info = NULL; |
@@ -1758,7 +1758,7 @@ udf_put_super(struct super_block *sb) | |||
1758 | if (UDF_SB_PARTTYPE(sb, UDF_SB_PARTITION(sb)) == UDF_SPARABLE_MAP15) | 1758 | if (UDF_SB_PARTTYPE(sb, UDF_SB_PARTITION(sb)) == UDF_SPARABLE_MAP15) |
1759 | { | 1759 | { |
1760 | for (i=0; i<4; i++) | 1760 | for (i=0; i<4; i++) |
1761 | udf_release_data(UDF_SB_TYPESPAR(sb, UDF_SB_PARTITION(sb)).s_spar_map[i]); | 1761 | brelse(UDF_SB_TYPESPAR(sb, UDF_SB_PARTITION(sb)).s_spar_map[i]); |
1762 | } | 1762 | } |
1763 | } | 1763 | } |
1764 | #ifdef CONFIG_UDF_NLS | 1764 | #ifdef CONFIG_UDF_NLS |
@@ -1767,7 +1767,7 @@ udf_put_super(struct super_block *sb) | |||
1767 | #endif | 1767 | #endif |
1768 | if (!(sb->s_flags & MS_RDONLY)) | 1768 | if (!(sb->s_flags & MS_RDONLY)) |
1769 | udf_close_lvid(sb); | 1769 | udf_close_lvid(sb); |
1770 | udf_release_data(UDF_SB_LVIDBH(sb)); | 1770 | brelse(UDF_SB_LVIDBH(sb)); |
1771 | UDF_SB_FREE(sb); | 1771 | UDF_SB_FREE(sb); |
1772 | kfree(sb->s_fs_info); | 1772 | kfree(sb->s_fs_info); |
1773 | sb->s_fs_info = NULL; | 1773 | sb->s_fs_info = NULL; |
@@ -1837,7 +1837,7 @@ udf_count_free_bitmap(struct super_block *sb, struct udf_bitmap *bitmap) | |||
1837 | } | 1837 | } |
1838 | else if (ident != TAG_IDENT_SBD) | 1838 | else if (ident != TAG_IDENT_SBD) |
1839 | { | 1839 | { |
1840 | udf_release_data(bh); | 1840 | brelse(bh); |
1841 | printk(KERN_ERR "udf: udf_count_free failed\n"); | 1841 | printk(KERN_ERR "udf: udf_count_free failed\n"); |
1842 | goto out; | 1842 | goto out; |
1843 | } | 1843 | } |
@@ -1859,7 +1859,7 @@ udf_count_free_bitmap(struct super_block *sb, struct udf_bitmap *bitmap) | |||
1859 | } | 1859 | } |
1860 | if ( bytes ) | 1860 | if ( bytes ) |
1861 | { | 1861 | { |
1862 | udf_release_data(bh); | 1862 | brelse(bh); |
1863 | newblock = udf_get_lb_pblock(sb, loc, ++block); | 1863 | newblock = udf_get_lb_pblock(sb, loc, ++block); |
1864 | bh = udf_tread(sb, newblock); | 1864 | bh = udf_tread(sb, newblock); |
1865 | if (!bh) | 1865 | if (!bh) |
@@ -1871,7 +1871,7 @@ udf_count_free_bitmap(struct super_block *sb, struct udf_bitmap *bitmap) | |||
1871 | ptr = (uint8_t *)bh->b_data; | 1871 | ptr = (uint8_t *)bh->b_data; |
1872 | } | 1872 | } |
1873 | } | 1873 | } |
1874 | udf_release_data(bh); | 1874 | brelse(bh); |
1875 | 1875 | ||
1876 | out: | 1876 | out: |
1877 | unlock_kernel(); | 1877 | unlock_kernel(); |
@@ -1896,7 +1896,7 @@ udf_count_free_table(struct super_block *sb, struct inode * table) | |||
1896 | 1896 | ||
1897 | while ((etype = udf_next_aext(table, &epos, &eloc, &elen, 1)) != -1) | 1897 | while ((etype = udf_next_aext(table, &epos, &eloc, &elen, 1)) != -1) |
1898 | accum += (elen >> table->i_sb->s_blocksize_bits); | 1898 | accum += (elen >> table->i_sb->s_blocksize_bits); |
1899 | udf_release_data(epos.bh); | 1899 | brelse(epos.bh); |
1900 | 1900 | ||
1901 | unlock_kernel(); | 1901 | unlock_kernel(); |
1902 | 1902 | ||
diff --git a/fs/udf/symlink.c b/fs/udf/symlink.c index ba068a786563..12613b680cc4 100644 --- a/fs/udf/symlink.c +++ b/fs/udf/symlink.c | |||
@@ -95,7 +95,7 @@ static int udf_symlink_filler(struct file *file, struct page *page) | |||
95 | } | 95 | } |
96 | 96 | ||
97 | udf_pc_to_char(inode->i_sb, symlink, inode->i_size, p); | 97 | udf_pc_to_char(inode->i_sb, symlink, inode->i_size, p); |
98 | udf_release_data(bh); | 98 | brelse(bh); |
99 | 99 | ||
100 | unlock_kernel(); | 100 | unlock_kernel(); |
101 | SetPageUptodate(page); | 101 | SetPageUptodate(page); |
diff --git a/fs/udf/truncate.c b/fs/udf/truncate.c index 84191801f4c9..0449b2216e71 100644 --- a/fs/udf/truncate.c +++ b/fs/udf/truncate.c | |||
@@ -119,7 +119,7 @@ void udf_discard_prealloc(struct inode * inode) | |||
119 | } | 119 | } |
120 | UDF_I_LENEXTENTS(inode) = lbcount; | 120 | UDF_I_LENEXTENTS(inode) = lbcount; |
121 | 121 | ||
122 | udf_release_data(epos.bh); | 122 | brelse(epos.bh); |
123 | } | 123 | } |
124 | 124 | ||
125 | void udf_truncate_extents(struct inode * inode) | 125 | void udf_truncate_extents(struct inode * inode) |
@@ -287,5 +287,5 @@ void udf_truncate_extents(struct inode * inode) | |||
287 | } | 287 | } |
288 | UDF_I_LENEXTENTS(inode) = inode->i_size; | 288 | UDF_I_LENEXTENTS(inode) = inode->i_size; |
289 | 289 | ||
290 | udf_release_data(epos.bh); | 290 | brelse(epos.bh); |
291 | } | 291 | } |
diff --git a/fs/udf/udf_sb.h b/fs/udf/udf_sb.h index 110f8d62616f..3b2e6c8cb151 100644 --- a/fs/udf/udf_sb.h +++ b/fs/udf/udf_sb.h | |||
@@ -93,7 +93,7 @@ static inline struct udf_sb_info *UDF_SB(struct super_block *sb) | |||
93 | for (i=0; i<nr_groups; i++)\ | 93 | for (i=0; i<nr_groups; i++)\ |
94 | {\ | 94 | {\ |
95 | if (UDF_SB_BITMAP(X,Y,Z,i))\ | 95 | if (UDF_SB_BITMAP(X,Y,Z,i))\ |
96 | udf_release_data(UDF_SB_BITMAP(X,Y,Z,i));\ | 96 | brelse(UDF_SB_BITMAP(X,Y,Z,i));\ |
97 | }\ | 97 | }\ |
98 | if (size <= PAGE_SIZE)\ | 98 | if (size <= PAGE_SIZE)\ |
99 | kfree(UDF_SB_PARTMAPS(X)[Y].Z.s_bitmap);\ | 99 | kfree(UDF_SB_PARTMAPS(X)[Y].Z.s_bitmap);\ |
diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h index a89f454de1c2..67ded289497c 100644 --- a/fs/udf/udfdecl.h +++ b/fs/udf/udfdecl.h | |||
@@ -106,6 +106,7 @@ extern void udf_delete_inode(struct inode *); | |||
106 | extern void udf_clear_inode(struct inode *); | 106 | extern void udf_clear_inode(struct inode *); |
107 | extern int udf_write_inode(struct inode *, int); | 107 | extern int udf_write_inode(struct inode *, int); |
108 | extern long udf_block_map(struct inode *, sector_t); | 108 | extern long udf_block_map(struct inode *, sector_t); |
109 | extern int udf_extend_file(struct inode *, struct extent_position *, kernel_long_ad *, sector_t); | ||
109 | extern int8_t inode_bmap(struct inode *, sector_t, struct extent_position *, kernel_lb_addr *, uint32_t *, sector_t *); | 110 | extern int8_t inode_bmap(struct inode *, sector_t, struct extent_position *, kernel_lb_addr *, uint32_t *, sector_t *); |
110 | extern int8_t udf_add_aext(struct inode *, struct extent_position *, kernel_lb_addr, uint32_t, int); | 111 | extern int8_t udf_add_aext(struct inode *, struct extent_position *, kernel_lb_addr, uint32_t, int); |
111 | extern int8_t udf_write_aext(struct inode *, struct extent_position *, kernel_lb_addr, uint32_t, int); | 112 | extern int8_t udf_write_aext(struct inode *, struct extent_position *, kernel_lb_addr, uint32_t, int); |
@@ -120,7 +121,6 @@ extern struct genericFormat *udf_add_extendedattr(struct inode *, uint32_t, uint | |||
120 | extern struct genericFormat *udf_get_extendedattr(struct inode *, uint32_t, uint8_t); | 121 | extern struct genericFormat *udf_get_extendedattr(struct inode *, uint32_t, uint8_t); |
121 | extern struct buffer_head *udf_read_tagged(struct super_block *, uint32_t, uint32_t, uint16_t *); | 122 | extern struct buffer_head *udf_read_tagged(struct super_block *, uint32_t, uint32_t, uint16_t *); |
122 | extern struct buffer_head *udf_read_ptagged(struct super_block *, kernel_lb_addr, uint32_t, uint16_t *); | 123 | extern struct buffer_head *udf_read_ptagged(struct super_block *, kernel_lb_addr, uint32_t, uint16_t *); |
123 | extern void udf_release_data(struct buffer_head *); | ||
124 | extern void udf_update_tag(char *, int); | 124 | extern void udf_update_tag(char *, int); |
125 | extern void udf_new_tag(char *, uint16_t, uint16_t, uint16_t, uint32_t, int); | 125 | extern void udf_new_tag(char *, uint16_t, uint16_t, uint16_t, uint32_t, int); |
126 | 126 | ||