Commit 745b1f47 authored by Nathan Scott's avatar Nathan Scott Committed by Tim Shimmin

[XFS] Remove last bulkstat false-positives with debug kernels.

SGI-PV: 953819
SGI-Modid: xfs-linux-melb:xfs-kern:26628a
Signed-off-by: default avatarNathan Scott <nathans@sgi.com>
Signed-off-by: default avatarTim Shimmin <tes@sgi.com>
parent a3c6685e
...@@ -1195,6 +1195,7 @@ xfs_dilocate( ...@@ -1195,6 +1195,7 @@ xfs_dilocate(
"(0x%llx)", "(0x%llx)",
ino, XFS_AGINO_TO_INO(mp, agno, agino)); ino, XFS_AGINO_TO_INO(mp, agno, agino));
} }
xfs_stack_trace();
#endif /* DEBUG */ #endif /* DEBUG */
return XFS_ERROR(EINVAL); return XFS_ERROR(EINVAL);
} }
......
...@@ -290,11 +290,11 @@ xfs_iget_core( ...@@ -290,11 +290,11 @@ xfs_iget_core(
finish_inode: finish_inode:
if (ip->i_d.di_mode == 0) { if (ip->i_d.di_mode == 0) {
if (!(flags & IGET_CREATE)) if (!(flags & XFS_IGET_CREATE))
return ENOENT; return ENOENT;
xfs_iocore_inode_reinit(ip); xfs_iocore_inode_reinit(ip);
} }
if (lock_flags != 0) if (lock_flags != 0)
xfs_ilock(ip, lock_flags); xfs_ilock(ip, lock_flags);
...@@ -320,21 +320,20 @@ xfs_iget_core( ...@@ -320,21 +320,20 @@ xfs_iget_core(
* Read the disk inode attributes into a new inode structure and get * Read the disk inode attributes into a new inode structure and get
* a new vnode for it. This should also initialize i_ino and i_mount. * a new vnode for it. This should also initialize i_ino and i_mount.
*/ */
error = xfs_iread(mp, tp, ino, &ip, bno); error = xfs_iread(mp, tp, ino, &ip, bno,
if (error) { (flags & XFS_IGET_BULKSTAT) ? XFS_IMAP_BULKSTAT : 0);
if (error)
return error; return error;
}
vn_trace_exit(vp, "xfs_iget.alloc", (inst_t *)__return_address); vn_trace_exit(vp, "xfs_iget.alloc", (inst_t *)__return_address);
xfs_inode_lock_init(ip, vp); xfs_inode_lock_init(ip, vp);
xfs_iocore_inode_init(ip); xfs_iocore_inode_init(ip);
if (lock_flags != 0) { if (lock_flags)
xfs_ilock(ip, lock_flags); xfs_ilock(ip, lock_flags);
}
if ((ip->i_d.di_mode == 0) && !(flags & XFS_IGET_CREATE)) {
if ((ip->i_d.di_mode == 0) && !(flags & IGET_CREATE)) {
xfs_idestroy(ip); xfs_idestroy(ip);
return ENOENT; return ENOENT;
} }
......
...@@ -854,7 +854,8 @@ xfs_iread( ...@@ -854,7 +854,8 @@ xfs_iread(
xfs_trans_t *tp, xfs_trans_t *tp,
xfs_ino_t ino, xfs_ino_t ino,
xfs_inode_t **ipp, xfs_inode_t **ipp,
xfs_daddr_t bno) xfs_daddr_t bno,
uint imap_flags)
{ {
xfs_buf_t *bp; xfs_buf_t *bp;
xfs_dinode_t *dip; xfs_dinode_t *dip;
...@@ -874,7 +875,7 @@ xfs_iread( ...@@ -874,7 +875,7 @@ xfs_iread(
* return NULL as well. Set i_blkno to 0 so that xfs_itobp() will * return NULL as well. Set i_blkno to 0 so that xfs_itobp() will
* know that this is a new incore inode. * know that this is a new incore inode.
*/ */
error = xfs_itobp(mp, tp, ip, &dip, &bp, bno, 0); error = xfs_itobp(mp, tp, ip, &dip, &bp, bno, imap_flags);
if (error) { if (error) {
kmem_zone_free(xfs_inode_zone, ip); kmem_zone_free(xfs_inode_zone, ip);
return error; return error;
...@@ -1113,7 +1114,7 @@ xfs_ialloc( ...@@ -1113,7 +1114,7 @@ xfs_ialloc(
* to prevent others from looking at until we're done. * to prevent others from looking at until we're done.
*/ */
error = xfs_trans_iget(tp->t_mountp, tp, ino, error = xfs_trans_iget(tp->t_mountp, tp, ino,
IGET_CREATE, XFS_ILOCK_EXCL, &ip); XFS_IGET_CREATE, XFS_ILOCK_EXCL, &ip);
if (error != 0) { if (error != 0) {
return error; return error;
} }
......
...@@ -389,11 +389,14 @@ typedef struct xfs_inode { ...@@ -389,11 +389,14 @@ typedef struct xfs_inode {
(((vfsp)->vfs_flag & VFS_GRPID) || ((pip)->i_d.di_mode & S_ISGID)) (((vfsp)->vfs_flag & VFS_GRPID) || ((pip)->i_d.di_mode & S_ISGID))
/* /*
* xfs_iget.c prototypes. * Flags for xfs_iget()
*/ */
#define XFS_IGET_CREATE 0x1
#define XFS_IGET_BULKSTAT 0x2
#define IGET_CREATE 1 /*
* xfs_iget.c prototypes.
*/
void xfs_ihash_init(struct xfs_mount *); void xfs_ihash_init(struct xfs_mount *);
void xfs_ihash_free(struct xfs_mount *); void xfs_ihash_free(struct xfs_mount *);
void xfs_chash_init(struct xfs_mount *); void xfs_chash_init(struct xfs_mount *);
...@@ -425,7 +428,7 @@ int xfs_itobp(struct xfs_mount *, struct xfs_trans *, ...@@ -425,7 +428,7 @@ int xfs_itobp(struct xfs_mount *, struct xfs_trans *,
xfs_inode_t *, xfs_dinode_t **, struct xfs_buf **, xfs_inode_t *, xfs_dinode_t **, struct xfs_buf **,
xfs_daddr_t, uint); xfs_daddr_t, uint);
int xfs_iread(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, int xfs_iread(struct xfs_mount *, struct xfs_trans *, xfs_ino_t,
xfs_inode_t **, xfs_daddr_t); xfs_inode_t **, xfs_daddr_t, uint);
int xfs_iread_extents(struct xfs_trans *, xfs_inode_t *, int); int xfs_iread_extents(struct xfs_trans *, xfs_inode_t *, int);
int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t, int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t,
xfs_nlink_t, xfs_dev_t, struct cred *, xfs_prid_t, xfs_nlink_t, xfs_dev_t, struct cred *, xfs_prid_t,
......
...@@ -52,7 +52,8 @@ xfs_bulkstat_one_iget( ...@@ -52,7 +52,8 @@ xfs_bulkstat_one_iget(
bhv_vnode_t *vp; bhv_vnode_t *vp;
int error; int error;
error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, bno); error = xfs_iget(mp, NULL, ino,
XFS_IGET_BULKSTAT, XFS_ILOCK_SHARED, &ip, bno);
if (error) { if (error) {
*stat = BULKSTAT_RV_NOTHING; *stat = BULKSTAT_RV_NOTHING;
return error; return error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment