mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
[XFS] Remove last bulkstat false-positives with debug kernels.
SGI-PV: 953819 SGI-Modid: xfs-linux-melb:xfs-kern:26628a Signed-off-by: Nathan Scott <nathans@sgi.com> Signed-off-by: Tim Shimmin <tes@sgi.com>
This commit is contained in:
parent
a3c6685eaa
commit
745b1f47fc
@ -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);
|
||||
}
|
||||
|
@ -290,11 +290,11 @@ 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);
|
||||
}
|
||||
|
||||
|
||||
if (lock_flags != 0)
|
||||
xfs_ilock(ip, lock_flags);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -388,12 +388,15 @@ typedef struct xfs_inode {
|
||||
#define XFS_INHERIT_GID(pip, vfsp) \
|
||||
(((vfsp)->vfs_flag & VFS_GRPID) || ((pip)->i_d.di_mode & S_ISGID))
|
||||
|
||||
/*
|
||||
* Flags for xfs_iget()
|
||||
*/
|
||||
#define XFS_IGET_CREATE 0x1
|
||||
#define XFS_IGET_BULKSTAT 0x2
|
||||
|
||||
/*
|
||||
* xfs_iget.c prototypes.
|
||||
*/
|
||||
|
||||
#define IGET_CREATE 1
|
||||
|
||||
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,
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user