version 1.12, 2006/12/09 16:11:50 |
version 1.13, 2007/10/08 18:04:02 |
|
|
*/ |
*/ |
if ((dp->i_offset & bmask) == 0) { |
if ((dp->i_offset & bmask) == 0) { |
if (bp != NULL) |
if (bp != NULL) |
brelse(bp); |
brelse(bp, 0); |
error = cd9660_blkatoff(vdp, (off_t)dp->i_offset, |
error = cd9660_blkatoff(vdp, (off_t)dp->i_offset, |
NULL, &bp); |
NULL, &bp); |
if (error) |
if (error) |
|
|
if (lblkno(imp, dp->i_offset) != |
if (lblkno(imp, dp->i_offset) != |
lblkno(imp, saveoffset)) { |
lblkno(imp, saveoffset)) { |
if (bp != NULL) |
if (bp != NULL) |
brelse(bp); |
brelse(bp, 0); |
if ((error = cd9660_blkatoff(vdp, |
if ((error = cd9660_blkatoff(vdp, |
(off_t)saveoffset, NULL, &bp)) != 0) |
(off_t)saveoffset, NULL, &bp)) != 0) |
return (error); |
return (error); |
|
|
goto searchloop; |
goto searchloop; |
} |
} |
if (bp != NULL) |
if (bp != NULL) |
brelse(bp); |
brelse(bp, 0); |
|
|
/* |
/* |
* Insert name into cache (as non-existent) if appropriate. |
* Insert name into cache (as non-existent) if appropriate. |
|
|
* If ino is different from dp->i_ino, |
* If ino is different from dp->i_ino, |
* it's a relocated directory. |
* it's a relocated directory. |
*/ |
*/ |
brelse(bp); |
brelse(bp, 0); |
if (flags & ISDOTDOT) { |
if (flags & ISDOTDOT) { |
VOP_UNLOCK(pdp, 0); /* race to get the inode */ |
VOP_UNLOCK(pdp, 0); /* race to get the inode */ |
error = cd9660_vget_internal(vdp->v_mount, dp->i_ino, &tdp, |
error = cd9660_vget_internal(vdp->v_mount, dp->i_ino, &tdp, |
Line 428 cd9660_blkatoff(struct vnode *vp, off_t |
|
Line 428 cd9660_blkatoff(struct vnode *vp, off_t |
|
bsize = blksize(imp, ip, lbn); |
bsize = blksize(imp, ip, lbn); |
|
|
if ((error = bread(vp, lbn, bsize, NOCRED, &bp)) != 0) { |
if ((error = bread(vp, lbn, bsize, NOCRED, &bp)) != 0) { |
brelse(bp); |
brelse(bp, 0); |
*bpp = NULL; |
*bpp = NULL; |
return (error); |
return (error); |
} |
} |