aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/linux-2.6/xfs_ioctl32.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2010-06-23 04:11:11 -0400
committerDave Chinner <david@fromorbit.com>2010-06-23 04:11:11 -0400
commit7dce11dbac54fce777eea0f5fb25b2694ccd7900 (patch)
tree90d6d109ca110bcbf47a954a8283ec250be07003 /fs/xfs/linux-2.6/xfs_ioctl32.c
parent1817176a86352f65210139d4c794ad2d19fc6b63 (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/linux-2.6/xfs_ioctl32.c')
-rw-r--r--fs/xfs/linux-2.6/xfs_ioctl32.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/fs/xfs/linux-2.6/xfs_ioctl32.c b/fs/xfs/linux-2.6/xfs_ioctl32.c
index 9287135e9bf..e1d8380b049 100644
--- a/fs/xfs/linux-2.6/xfs_ioctl32.c
+++ b/fs/xfs/linux-2.6/xfs_ioctl32.c
@@ -237,15 +237,13 @@ xfs_bulkstat_one_compat(
237 xfs_ino_t ino, /* inode number to get data for */ 237 xfs_ino_t ino, /* inode number to get data for */
238 void __user *buffer, /* buffer to place output in */ 238 void __user *buffer, /* buffer to place output in */
239 int ubsize, /* size of buffer */ 239 int ubsize, /* size of buffer */
240 void *private_data, /* my private data */
241 xfs_daddr_t bno, /* starting bno of inode cluster */ 240 xfs_daddr_t bno, /* starting bno of inode cluster */
242 int *ubused, /* bytes used by me */ 241 int *ubused, /* bytes used by me */
243 void *dibuff, /* on-disk inode buffer */
244 int *stat) /* BULKSTAT_RV_... */ 242 int *stat) /* BULKSTAT_RV_... */
245{ 243{
246 return xfs_bulkstat_one_int(mp, ino, buffer, ubsize, 244 return xfs_bulkstat_one_int(mp, ino, buffer, ubsize,
247 xfs_bulkstat_one_fmt_compat, bno, 245 xfs_bulkstat_one_fmt_compat, bno,
248 ubused, dibuff, stat); 246 ubused, stat);
249} 247}
250 248
251/* copied from xfs_ioctl.c */ 249/* copied from xfs_ioctl.c */
@@ -298,13 +296,11 @@ xfs_compat_ioc_bulkstat(
298 int res; 296 int res;
299 297
300 error = xfs_bulkstat_one_compat(mp, inlast, bulkreq.ubuffer, 298 error = xfs_bulkstat_one_compat(mp, inlast, bulkreq.ubuffer,
301 sizeof(compat_xfs_bstat_t), 299 sizeof(compat_xfs_bstat_t), 0, NULL, &res);
302 NULL, 0, NULL, NULL, &res);
303 } else if (cmd == XFS_IOC_FSBULKSTAT_32) { 300 } else if (cmd == XFS_IOC_FSBULKSTAT_32) {
304 error = xfs_bulkstat(mp, &inlast, &count, 301 error = xfs_bulkstat(mp, &inlast, &count,
305 xfs_bulkstat_one_compat, NULL, 302 xfs_bulkstat_one_compat, sizeof(compat_xfs_bstat_t),
306 sizeof(compat_xfs_bstat_t), bulkreq.ubuffer, 303 bulkreq.ubuffer, &done);
307 BULKSTAT_FG_QUICK, &done);
308 } else 304 } else
309 error = XFS_ERROR(EINVAL); 305 error = XFS_ERROR(EINVAL);
310 if (error) 306 if (error)