diff options
author | Christoph Hellwig <hch@lst.de> | 2010-06-23 04:11:11 -0400 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2010-06-23 04:11:11 -0400 |
commit | 7dce11dbac54fce777eea0f5fb25b2694ccd7900 (patch) | |
tree | 90d6d109ca110bcbf47a954a8283ec250be07003 /fs/xfs/quota/xfs_qm_syscalls.c | |
parent | 1817176a86352f65210139d4c794ad2d19fc6b63 (diff) |
xfs: always use iget in bulkstat
The non-coherent bulkstat versionsthat look directly at the inode
buffers causes various problems with performance optimizations that
make increased use of just logging inodes. This patch makes bulkstat
always use iget, which should be fast enough for normal use with the
radix-tree based inode cache introduced a while ago.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Diffstat (limited to 'fs/xfs/quota/xfs_qm_syscalls.c')
-rw-r--r-- | fs/xfs/quota/xfs_qm_syscalls.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index 92b002f1805f..99a2d8e0f173 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c | |||
@@ -1109,10 +1109,8 @@ xfs_qm_internalqcheck_adjust( | |||
1109 | xfs_ino_t ino, /* inode number to get data for */ | 1109 | xfs_ino_t ino, /* inode number to get data for */ |
1110 | void __user *buffer, /* not used */ | 1110 | void __user *buffer, /* not used */ |
1111 | int ubsize, /* not used */ | 1111 | int ubsize, /* not used */ |
1112 | void *private_data, /* not used */ | ||
1113 | xfs_daddr_t bno, /* starting block of inode cluster */ | 1112 | xfs_daddr_t bno, /* starting block of inode cluster */ |
1114 | int *ubused, /* not used */ | 1113 | int *ubused, /* not used */ |
1115 | void *dip, /* not used */ | ||
1116 | int *res) /* bulkstat result code */ | 1114 | int *res) /* bulkstat result code */ |
1117 | { | 1115 | { |
1118 | xfs_inode_t *ip; | 1116 | xfs_inode_t *ip; |
@@ -1205,15 +1203,15 @@ xfs_qm_internalqcheck( | |||
1205 | * Iterate thru all the inodes in the file system, | 1203 | * Iterate thru all the inodes in the file system, |
1206 | * adjusting the corresponding dquot counters | 1204 | * adjusting the corresponding dquot counters |
1207 | */ | 1205 | */ |
1208 | if ((error = xfs_bulkstat(mp, &lastino, &count, | 1206 | error = xfs_bulkstat(mp, &lastino, &count, |
1209 | xfs_qm_internalqcheck_adjust, NULL, | 1207 | xfs_qm_internalqcheck_adjust, |
1210 | 0, NULL, BULKSTAT_FG_IGET, &done))) { | 1208 | 0, NULL, &done); |
1209 | if (error) { | ||
1210 | cmn_err(CE_DEBUG, "Bulkstat returned error 0x%x", error); | ||
1211 | break; | 1211 | break; |
1212 | } | 1212 | } |
1213 | } while (! done); | 1213 | } while (!done); |
1214 | if (error) { | 1214 | |
1215 | cmn_err(CE_DEBUG, "Bulkstat returned error 0x%x", error); | ||
1216 | } | ||
1217 | cmn_err(CE_DEBUG, "Checking results against system dquots"); | 1215 | cmn_err(CE_DEBUG, "Checking results against system dquots"); |
1218 | for (i = 0; i < qmtest_hashmask; i++) { | 1216 | for (i = 0; i < qmtest_hashmask; i++) { |
1219 | xfs_dqtest_t *d, *n; | 1217 | xfs_dqtest_t *d, *n; |