Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1195,6 +1195,7 @@ xfs_dilocate(
					"(0x%llx)",
					ino, XFS_AGINO_TO_INO(mp, agno, agino));
		}
		xfs_stack_trace();
#endif /* DEBUG */
		return XFS_ERROR(EINVAL);
	}
+8 −9
Original line number Diff line number Diff line
@@ -290,7 +290,7 @@ again:

finish_inode:
			if (ip->i_d.di_mode == 0) {
				if (!(flags & IGET_CREATE))
				if (!(flags & XFS_IGET_CREATE))
					return ENOENT;
				xfs_iocore_inode_reinit(ip);
			}
@@ -320,21 +320,20 @@ finish_inode:
	 * 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.
	 */
	error = xfs_iread(mp, tp, ino, &ip, bno);
	if (error) {
	error = xfs_iread(mp, tp, ino, &ip, bno,
			  (flags & XFS_IGET_BULKSTAT) ? XFS_IMAP_BULKSTAT : 0);
	if (error)
		return error;
	}

	vn_trace_exit(vp, "xfs_iget.alloc", (inst_t *)__return_address);

	xfs_inode_lock_init(ip, vp);
	xfs_iocore_inode_init(ip);

	if (lock_flags != 0) {
	if (lock_flags)
		xfs_ilock(ip, lock_flags);
	}

	if ((ip->i_d.di_mode == 0) && !(flags & IGET_CREATE)) {
	if ((ip->i_d.di_mode == 0) && !(flags & XFS_IGET_CREATE)) {
		xfs_idestroy(ip);
		return ENOENT;
	}
+4 −3
Original line number Diff line number Diff line
@@ -854,7 +854,8 @@ xfs_iread(
	xfs_trans_t	*tp,
	xfs_ino_t	ino,
	xfs_inode_t	**ipp,
	xfs_daddr_t	bno)
	xfs_daddr_t	bno,
	uint		imap_flags)
{
	xfs_buf_t	*bp;
	xfs_dinode_t	*dip;
@@ -874,7 +875,7 @@ xfs_iread(
	 * return NULL as well.  Set i_blkno to 0 so that xfs_itobp() will
	 * 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) {
		kmem_zone_free(xfs_inode_zone, ip);
		return error;
@@ -1113,7 +1114,7 @@ xfs_ialloc(
	 * to prevent others from looking at until we're done.
	 */
	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) {
		return error;
	}
+7 −4
Original line number Diff line number Diff line
@@ -389,11 +389,14 @@ typedef struct xfs_inode {
	(((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_free(struct xfs_mount *);
void		xfs_chash_init(struct xfs_mount *);
@@ -425,7 +428,7 @@ int xfs_itobp(struct xfs_mount *, struct xfs_trans *,
			  xfs_inode_t *, xfs_dinode_t **, struct xfs_buf **,
			  xfs_daddr_t, uint);
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_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t,
			   xfs_nlink_t, xfs_dev_t, struct cred *, xfs_prid_t,
+2 −1
Original line number Diff line number Diff line
@@ -52,7 +52,8 @@ xfs_bulkstat_one_iget(
	bhv_vnode_t	*vp;
	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) {
		*stat = BULKSTAT_RV_NOTHING;
		return error;