Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 124903
b: refs/heads/master
c: a194189
h: refs/heads/master
i:
  124901: d35d646
  124899: ca95437
  124895: d773302
v: v3
  • Loading branch information
Christoph Hellwig authored and Niv Sardi committed Dec 1, 2008
1 parent 020c0c5 commit e8321a4
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 34 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 76d8b277f7b715f78ee3cb09ee112563639693a5
refs/heads/master: a1941895034cda2bffa23ba845607c82138ccf52
3 changes: 1 addition & 2 deletions trunk/fs/xfs/xfs_ialloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1262,8 +1262,7 @@ xfs_dilocate(
#endif /* DEBUG */
return XFS_ERROR(EINVAL);
}
if ((mp->m_sb.sb_blocksize >= XFS_INODE_CLUSTER_SIZE(mp)) ||
!(flags & XFS_IMAP_LOOKUP)) {
if ((mp->m_sb.sb_blocksize >= XFS_INODE_CLUSTER_SIZE(mp))) {
offset = XFS_INO_TO_OFFSET(mp, ino);
ASSERT(offset < mp->m_sb.sb_inopblock);
*bno = XFS_AGB_TO_FSB(mp, agno, agbno);
Expand Down
5 changes: 2 additions & 3 deletions trunk/fs/xfs/xfs_inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ xfs_inotobp(
int error;

imap.im_blkno = 0;
error = xfs_imap(mp, tp, ino, &imap, imap_flags | XFS_IMAP_LOOKUP);
error = xfs_imap(mp, tp, ino, &imap, imap_flags);
if (error)
return error;

Expand Down Expand Up @@ -868,8 +868,7 @@ xfs_iread(
* Get pointers to the on-disk inode and the buffer containing it.
*/
imap.im_blkno = bno;
error = xfs_imap(mp, tp, ip->i_ino, &imap,
XFS_IMAP_LOOKUP | imap_flags);
error = xfs_imap(mp, tp, ip->i_ino, &imap, imap_flags);
if (error)
goto out_destroy_inode;

Expand Down
3 changes: 1 addition & 2 deletions trunk/fs/xfs/xfs_inode.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,7 @@ typedef struct xfs_icdinode {
/*
* Flags for xfs_inotobp, xfs_imap() and xfs_dilocate().
*/
#define XFS_IMAP_LOOKUP 0x1
#define XFS_IMAP_BULKSTAT 0x2
#define XFS_IMAP_BULKSTAT 0x1

/*
* Fork handling.
Expand Down
32 changes: 6 additions & 26 deletions trunk/fs/xfs/xfs_log_recover.c
Original file line number Diff line number Diff line change
Expand Up @@ -2245,7 +2245,6 @@ xlog_recover_do_inode_trans(
xfs_inode_log_format_t *in_f;
xfs_mount_t *mp;
xfs_buf_t *bp;
xfs_imap_t imap;
xfs_dinode_t *dip;
xfs_ino_t ino;
int len;
Expand Down Expand Up @@ -2273,48 +2272,29 @@ xlog_recover_do_inode_trans(
}
ino = in_f->ilf_ino;
mp = log->l_mp;
if (ITEM_TYPE(item) == XFS_LI_INODE) {
imap.im_blkno = (xfs_daddr_t)in_f->ilf_blkno;
imap.im_len = in_f->ilf_len;
imap.im_boffset = in_f->ilf_boffset;
} else {
/*
* It's an old inode format record. We don't know where
* its cluster is located on disk, and we can't allow
* xfs_imap() to figure it out because the inode btrees
* are not ready to be used. Therefore do not pass the
* XFS_IMAP_LOOKUP flag to xfs_imap(). This will give
* us only the single block in which the inode lives
* rather than its cluster, so we must make sure to
* invalidate the buffer when we write it out below.
*/
imap.im_blkno = 0;
error = xfs_imap(log->l_mp, NULL, ino, &imap, 0);
if (error)
goto error;
}

/*
* Inode buffers can be freed, look out for it,
* and do not replay the inode.
*/
if (xlog_check_buffer_cancelled(log, imap.im_blkno, imap.im_len, 0)) {
if (xlog_check_buffer_cancelled(log, in_f->ilf_blkno,
in_f->ilf_len, 0)) {
error = 0;
goto error;
}

bp = xfs_buf_read_flags(mp->m_ddev_targp, imap.im_blkno, imap.im_len,
XFS_BUF_LOCK);
bp = xfs_buf_read_flags(mp->m_ddev_targp, in_f->ilf_blkno,
in_f->ilf_len, XFS_BUF_LOCK);
if (XFS_BUF_ISERROR(bp)) {
xfs_ioerror_alert("xlog_recover_do..(read#2)", mp,
bp, imap.im_blkno);
bp, in_f->ilf_blkno);
error = XFS_BUF_GETERROR(bp);
xfs_buf_relse(bp);
goto error;
}
error = 0;
ASSERT(in_f->ilf_fields & XFS_ILOG_CORE);
dip = (xfs_dinode_t *)xfs_buf_offset(bp, imap.im_boffset);
dip = (xfs_dinode_t *)xfs_buf_offset(bp, in_f->ilf_boffset);

/*
* Make sure the place we're flushing out to really looks
Expand Down

0 comments on commit e8321a4

Please sign in to comment.