2005-04-17 02:20:36 +04:00
/*
* Copyright ( c ) 2000 - 2001 Silicon Graphics , Inc . All Rights Reserved .
*
2005-11-02 06:58:39 +03:00
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License as
2005-04-17 02:20:36 +04:00
* published by the Free Software Foundation .
*
2005-11-02 06:58:39 +03:00
* This program is distributed in the hope that it would be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
2005-04-17 02:20:36 +04:00
*
2005-11-02 06:58:39 +03:00
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write the Free Software Foundation ,
* Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 USA
2005-04-17 02:20:36 +04:00
*/
# ifndef __XFS_ITABLE_H__
# define __XFS_ITABLE_H__
/*
* xfs_bulkstat ( ) is used to fill in xfs_bstat structures as well as dm_stat
* structures ( by the dmi library ) . This is a pointer to a formatter function
* that will iget the inode and fill in the appropriate structure .
* see xfs_bulkstat_one ( ) and xfs_dm_bulkstat_one ( ) in dmapi_xfs . c
*/
typedef int ( * bulkstat_one_pf ) ( struct xfs_mount * mp ,
xfs_ino_t ino ,
void __user * buffer ,
int ubsize ,
void * private_data ,
xfs_daddr_t bno ,
int * ubused ,
void * dip ,
int * stat ) ;
/*
* Values for stat return value .
*/
2006-09-28 05:01:46 +04:00
# define BULKSTAT_RV_NOTHING 0
# define BULKSTAT_RV_DIDONE 1
# define BULKSTAT_RV_GIVEUP 2
2005-04-17 02:20:36 +04:00
/*
* Values for bulkstat flag argument .
*/
2006-09-28 05:01:46 +04:00
# define BULKSTAT_FG_IGET 0x1 /* Go through the buffer cache */
# define BULKSTAT_FG_QUICK 0x2 /* No iget, walk the dinode cluster */
# define BULKSTAT_FG_INLINE 0x4 /* No iget if inline attrs */
2005-04-17 02:20:36 +04:00
/*
* Return stat information in bulk ( by - inode ) for the filesystem .
*/
int /* error status */
xfs_bulkstat (
xfs_mount_t * mp , /* mount point for filesystem */
xfs_ino_t * lastino , /* last inode returned */
int * count , /* size of buffer/count returned */
bulkstat_one_pf formatter , /* func that'd fill a single buf */
void * private_data , /* private data for formatter */
size_t statstruct_size , /* sizeof struct that we're filling */
char __user * ubuffer , /* buffer with inode stats */
int flags , /* flag to control access method */
2006-03-29 02:55:14 +04:00
int * done ) ; /* 1 if there are more stats to get */
2005-04-17 02:20:36 +04:00
int
xfs_bulkstat_single (
xfs_mount_t * mp ,
xfs_ino_t * lastinop ,
char __user * buffer ,
int * done ) ;
2007-07-11 05:10:19 +04:00
typedef int ( * bulkstat_one_fmt_pf ) ( /* used size in bytes or negative error */
void __user * ubuffer , /* buffer to write to */
2008-11-26 06:20:12 +03:00
int ubsize , /* remaining user buffer sz */
int * ubused , /* bytes used by formatter */
2007-07-11 05:10:19 +04:00
const xfs_bstat_t * buffer ) ; /* buffer to read from */
2008-11-26 06:20:11 +03:00
int
xfs_bulkstat_one_int (
xfs_mount_t * mp ,
xfs_ino_t ino ,
void __user * buffer ,
int ubsize ,
bulkstat_one_fmt_pf formatter ,
xfs_daddr_t bno ,
int * ubused ,
void * dibuff ,
int * stat ) ;
2005-04-17 02:20:36 +04:00
int
xfs_bulkstat_one (
xfs_mount_t * mp ,
xfs_ino_t ino ,
void __user * buffer ,
int ubsize ,
void * private_data ,
xfs_daddr_t bno ,
int * ubused ,
void * dibuff ,
int * stat ) ;
2006-09-28 05:06:15 +04:00
int
xfs_internal_inum (
xfs_mount_t * mp ,
xfs_ino_t ino ) ;
2007-07-11 05:10:19 +04:00
typedef int ( * inumbers_fmt_pf ) (
void __user * ubuffer , /* buffer to write to */
const xfs_inogrp_t * buffer , /* buffer to read from */
long count , /* # of elements to read */
long * written ) ; /* # of bytes written */
int
xfs_inumbers_fmt (
void __user * ubuffer , /* buffer to write to */
const xfs_inogrp_t * buffer , /* buffer to read from */
long count , /* # of elements to read */
long * written ) ; /* # of bytes written */
2005-04-17 02:20:36 +04:00
int /* error status */
xfs_inumbers (
xfs_mount_t * mp , /* mount point for filesystem */
xfs_ino_t * last , /* last inode returned */
int * count , /* size of buffer/count returned */
2007-07-11 05:10:19 +04:00
void __user * buffer , /* buffer with inode info */
inumbers_fmt_pf formatter ) ;
2005-04-17 02:20:36 +04:00
# endif /* __XFS_ITABLE_H__ */