diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_lrw.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_lrw.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/fs/xfs/linux-2.6/xfs_lrw.c b/fs/xfs/linux-2.6/xfs_lrw.c index 1ebd8004469c..5e3b57516ec7 100644 --- a/fs/xfs/linux-2.6/xfs_lrw.c +++ b/fs/xfs/linux-2.6/xfs_lrw.c | |||
@@ -394,7 +394,7 @@ xfs_zero_last_block( | |||
394 | int error = 0; | 394 | int error = 0; |
395 | xfs_bmbt_irec_t imap; | 395 | xfs_bmbt_irec_t imap; |
396 | 396 | ||
397 | ASSERT(ismrlocked(&ip->i_lock, MR_UPDATE) != 0); | 397 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
398 | 398 | ||
399 | zero_offset = XFS_B_FSB_OFFSET(mp, isize); | 399 | zero_offset = XFS_B_FSB_OFFSET(mp, isize); |
400 | if (zero_offset == 0) { | 400 | if (zero_offset == 0) { |
@@ -425,14 +425,14 @@ xfs_zero_last_block( | |||
425 | * out sync. We need to drop the ilock while we do this so we | 425 | * out sync. We need to drop the ilock while we do this so we |
426 | * don't deadlock when the buffer cache calls back to us. | 426 | * don't deadlock when the buffer cache calls back to us. |
427 | */ | 427 | */ |
428 | xfs_iunlock(ip, XFS_ILOCK_EXCL| XFS_EXTSIZE_RD); | 428 | xfs_iunlock(ip, XFS_ILOCK_EXCL); |
429 | 429 | ||
430 | zero_len = mp->m_sb.sb_blocksize - zero_offset; | 430 | zero_len = mp->m_sb.sb_blocksize - zero_offset; |
431 | if (isize + zero_len > offset) | 431 | if (isize + zero_len > offset) |
432 | zero_len = offset - isize; | 432 | zero_len = offset - isize; |
433 | error = xfs_iozero(ip, isize, zero_len); | 433 | error = xfs_iozero(ip, isize, zero_len); |
434 | 434 | ||
435 | xfs_ilock(ip, XFS_ILOCK_EXCL|XFS_EXTSIZE_RD); | 435 | xfs_ilock(ip, XFS_ILOCK_EXCL); |
436 | ASSERT(error >= 0); | 436 | ASSERT(error >= 0); |
437 | return error; | 437 | return error; |
438 | } | 438 | } |
@@ -465,8 +465,7 @@ xfs_zero_eof( | |||
465 | int error = 0; | 465 | int error = 0; |
466 | xfs_bmbt_irec_t imap; | 466 | xfs_bmbt_irec_t imap; |
467 | 467 | ||
468 | ASSERT(ismrlocked(&ip->i_lock, MR_UPDATE)); | 468 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_IOLOCK_EXCL)); |
469 | ASSERT(ismrlocked(&ip->i_iolock, MR_UPDATE)); | ||
470 | ASSERT(offset > isize); | 469 | ASSERT(offset > isize); |
471 | 470 | ||
472 | /* | 471 | /* |
@@ -475,8 +474,7 @@ xfs_zero_eof( | |||
475 | */ | 474 | */ |
476 | error = xfs_zero_last_block(ip, offset, isize); | 475 | error = xfs_zero_last_block(ip, offset, isize); |
477 | if (error) { | 476 | if (error) { |
478 | ASSERT(ismrlocked(&ip->i_lock, MR_UPDATE)); | 477 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_IOLOCK_EXCL)); |
479 | ASSERT(ismrlocked(&ip->i_iolock, MR_UPDATE)); | ||
480 | return error; | 478 | return error; |
481 | } | 479 | } |
482 | 480 | ||
@@ -507,8 +505,7 @@ xfs_zero_eof( | |||
507 | error = xfs_bmapi(NULL, ip, start_zero_fsb, zero_count_fsb, | 505 | error = xfs_bmapi(NULL, ip, start_zero_fsb, zero_count_fsb, |
508 | 0, NULL, 0, &imap, &nimaps, NULL, NULL); | 506 | 0, NULL, 0, &imap, &nimaps, NULL, NULL); |
509 | if (error) { | 507 | if (error) { |
510 | ASSERT(ismrlocked(&ip->i_lock, MR_UPDATE)); | 508 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_IOLOCK_EXCL)); |
511 | ASSERT(ismrlocked(&ip->i_iolock, MR_UPDATE)); | ||
512 | return error; | 509 | return error; |
513 | } | 510 | } |
514 | ASSERT(nimaps > 0); | 511 | ASSERT(nimaps > 0); |
@@ -532,7 +529,7 @@ xfs_zero_eof( | |||
532 | * Drop the inode lock while we're doing the I/O. | 529 | * Drop the inode lock while we're doing the I/O. |
533 | * We'll still have the iolock to protect us. | 530 | * We'll still have the iolock to protect us. |
534 | */ | 531 | */ |
535 | xfs_iunlock(ip, XFS_ILOCK_EXCL|XFS_EXTSIZE_RD); | 532 | xfs_iunlock(ip, XFS_ILOCK_EXCL); |
536 | 533 | ||
537 | zero_off = XFS_FSB_TO_B(mp, start_zero_fsb); | 534 | zero_off = XFS_FSB_TO_B(mp, start_zero_fsb); |
538 | zero_len = XFS_FSB_TO_B(mp, imap.br_blockcount); | 535 | zero_len = XFS_FSB_TO_B(mp, imap.br_blockcount); |
@@ -548,13 +545,13 @@ xfs_zero_eof( | |||
548 | start_zero_fsb = imap.br_startoff + imap.br_blockcount; | 545 | start_zero_fsb = imap.br_startoff + imap.br_blockcount; |
549 | ASSERT(start_zero_fsb <= (end_zero_fsb + 1)); | 546 | ASSERT(start_zero_fsb <= (end_zero_fsb + 1)); |
550 | 547 | ||
551 | xfs_ilock(ip, XFS_ILOCK_EXCL|XFS_EXTSIZE_RD); | 548 | xfs_ilock(ip, XFS_ILOCK_EXCL); |
552 | } | 549 | } |
553 | 550 | ||
554 | return 0; | 551 | return 0; |
555 | 552 | ||
556 | out_lock: | 553 | out_lock: |
557 | xfs_ilock(ip, XFS_ILOCK_EXCL|XFS_EXTSIZE_RD); | 554 | xfs_ilock(ip, XFS_ILOCK_EXCL); |
558 | ASSERT(error >= 0); | 555 | ASSERT(error >= 0); |
559 | return error; | 556 | return error; |
560 | } | 557 | } |