Unless XFS_IGET_CREATE is passed xfs_iget will return ENOENT if it
encounters an inode with di_mode == 0. Remove the duplicated checks
in the callers.
(the log recovery case is not touched for now)
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Index: linux-2.6-xfs/fs/xfs/dmapi/xfs_dm.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/dmapi/xfs_dm.c 2008-04-10 19:59:00.000000000
+0200
+++ linux-2.6-xfs/fs/xfs/dmapi/xfs_dm.c 2008-04-10 19:59:58.000000000 +0200
@@ -503,10 +503,6 @@ xfs_dm_bulkall_iget_one(
XFS_IGET_BULKSTAT, XFS_ILOCK_SHARED, &ip, bno);
if (error)
return error;
- if (ip->i_d.di_mode == 0) {
- xfs_iput_new(ip, XFS_ILOCK_SHARED);
- return ENOENT;
- }
xfs_ip_to_stat(mp, ino, ip, &xbuf->dx_statinfo);
dm_ip_to_handle(ip->i_vnode, &handle);
@@ -766,10 +762,6 @@ xfs_dm_bulkattr_iget_one(
XFS_IGET_BULKSTAT, XFS_ILOCK_SHARED, &ip, bno);
if (error)
return error;
- if (ip->i_d.di_mode == 0) {
- xfs_iput_new(ip, XFS_ILOCK_SHARED);
- return ENOENT;
- }
xfs_ip_to_stat(mp, ino, ip, sbuf);
dm_ip_to_handle(ip->i_vnode, &handle);
Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_ioctl.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.c 2008-04-10
20:00:13.000000000 +0200
+++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_ioctl.c 2008-04-10 20:00:38.000000000
+0200
@@ -238,7 +238,7 @@ xfs_vget_fsop_handlereq(
return error;
if (ip == NULL)
return XFS_ERROR(EIO);
- if (ip->i_d.di_mode == 0 || ip->i_d.di_gen != igen) {
+ if (ip->i_d.di_gen != igen) {
xfs_iput_new(ip, XFS_ILOCK_SHARED);
return XFS_ERROR(ENOENT);
}
Index: linux-2.6-xfs/fs/xfs/quota/xfs_qm.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/quota/xfs_qm.c 2008-04-10 19:58:50.000000000
+0200
+++ linux-2.6-xfs/fs/xfs/quota/xfs_qm.c 2008-04-10 19:58:54.000000000 +0200
@@ -1737,12 +1737,6 @@ xfs_qm_dqusage_adjust(
return error;
}
- if (ip->i_d.di_mode == 0) {
- xfs_iput_new(ip, XFS_ILOCK_EXCL);
- *res = BULKSTAT_RV_NOTHING;
- return XFS_ERROR(ENOENT);
- }
-
/*
* Obtain the locked dquots. In case of an error (eg. allocation
* fails for ENOSPC), we return the negative of the error number
Index: linux-2.6-xfs/fs/xfs/quota/xfs_qm_syscalls.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/quota/xfs_qm_syscalls.c 2008-04-10
19:58:28.000000000 +0200
+++ linux-2.6-xfs/fs/xfs/quota/xfs_qm_syscalls.c 2008-04-10
19:58:45.000000000 +0200
@@ -1366,12 +1366,6 @@ xfs_qm_internalqcheck_adjust(
return (error);
}
- if (ip->i_d.di_mode == 0) {
- xfs_iput_new(ip, lock_flags);
- *res = BULKSTAT_RV_NOTHING;
- return XFS_ERROR(ENOENT);
- }
-
/*
* This inode can have blocks after eof which can get released
* when we send it to inactive. Since we don't check the dquot
Index: linux-2.6-xfs/fs/xfs/xfs_itable.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/xfs_itable.c 2008-04-10 20:05:04.000000000
+0200
+++ linux-2.6-xfs/fs/xfs/xfs_itable.c 2008-04-10 20:05:18.000000000 +0200
@@ -71,11 +71,6 @@ xfs_bulkstat_one_iget(
ASSERT(ip != NULL);
ASSERT(ip->i_blkno != (xfs_daddr_t)0);
- if (ip->i_d.di_mode == 0) {
- *stat = BULKSTAT_RV_NOTHING;
- error = XFS_ERROR(ENOENT);
- goto out_iput;
- }
vp = XFS_ITOV(ip);
dic = &ip->i_d;
Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_export.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_export.c 2008-04-10
20:07:06.000000000 +0200
+++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_export.c 2008-04-10 20:07:20.000000000
+0200
@@ -133,7 +133,7 @@ xfs_nfs_get_inode(
if (!ip)
return ERR_PTR(-EIO);
- if (!ip->i_d.di_mode || ip->i_d.di_gen != generation) {
+ if (ip->i_d.di_gen != generation) {
xfs_iput_new(ip, XFS_ILOCK_SHARED);
return ERR_PTR(-ENOENT);
}
|