2006-01-16 16:50:04 +00:00
/*
* Copyright ( C ) Sistina Software , Inc . 1997 - 2003 All rights reserved .
2006-05-18 15:09:15 -04:00
* Copyright ( C ) 2004 - 2006 Red Hat , Inc . All rights reserved .
2006-01-16 16:50:04 +00:00
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
2006-09-01 11:05:15 -04:00
* of the GNU General Public License version 2.
2006-01-16 16:50:04 +00:00
*/
# ifndef __QUOTA_DOT_H__
# define __QUOTA_DOT_H__
2006-09-05 10:39:21 -04:00
struct gfs2_inode ;
struct gfs2_sbd ;
2011-05-24 17:12:27 -07:00
struct shrink_control ;
2006-09-05 10:39:21 -04:00
2006-09-04 12:49:07 -04:00
# define NO_QUOTA_CHANGE ((u32)-1)
2006-01-16 16:50:04 +00:00
2008-11-19 10:08:22 +00:00
extern int gfs2_quota_hold ( struct gfs2_inode * ip , u32 uid , u32 gid ) ;
extern void gfs2_quota_unhold ( struct gfs2_inode * ip ) ;
2006-01-16 16:50:04 +00:00
2008-11-19 10:08:22 +00:00
extern int gfs2_quota_lock ( struct gfs2_inode * ip , u32 uid , u32 gid ) ;
extern void gfs2_quota_unlock ( struct gfs2_inode * ip ) ;
2006-01-16 16:50:04 +00:00
2008-11-19 10:08:22 +00:00
extern int gfs2_quota_check ( struct gfs2_inode * ip , u32 uid , u32 gid ) ;
extern void gfs2_quota_change ( struct gfs2_inode * ip , s64 change ,
u32 uid , u32 gid ) ;
2006-01-16 16:50:04 +00:00
2010-02-16 03:44:52 -05:00
extern int gfs2_quota_sync ( struct super_block * sb , int type , int wait ) ;
2008-11-19 10:08:22 +00:00
extern int gfs2_quota_refresh ( struct gfs2_sbd * sdp , int user , u32 id ) ;
2006-01-16 16:50:04 +00:00
2008-11-19 10:08:22 +00:00
extern int gfs2_quota_init ( struct gfs2_sbd * sdp ) ;
extern void gfs2_quota_cleanup ( struct gfs2_sbd * sdp ) ;
extern int gfs2_quotad ( void * data ) ;
2006-01-16 16:50:04 +00:00
2009-10-20 02:39:44 -05:00
extern void gfs2_wake_up_statfs ( struct gfs2_sbd * sdp ) ;
2008-03-10 15:34:50 +00:00
static inline int gfs2_quota_lock_check ( struct gfs2_inode * ip )
{
struct gfs2_sbd * sdp = GFS2_SB ( & ip - > i_inode ) ;
int ret ;
if ( sdp - > sd_args . ar_quota = = GFS2_QUOTA_OFF )
return 0 ;
ret = gfs2_quota_lock ( ip , NO_QUOTA_CHANGE , NO_QUOTA_CHANGE ) ;
if ( ret )
return ret ;
if ( sdp - > sd_args . ar_quota ! = GFS2_QUOTA_ON )
return 0 ;
ret = gfs2_quota_check ( ip , ip - > i_inode . i_uid , ip - > i_inode . i_gid ) ;
if ( ret )
gfs2_quota_unlock ( ip ) ;
return ret ;
}
2011-05-24 17:12:27 -07:00
extern int gfs2_shrink_qd_memory ( struct shrinker * shrink ,
struct shrink_control * sc ) ;
2009-09-15 09:59:02 +01:00
extern const struct quotactl_ops gfs2_quotactl_ops ;
2009-01-07 16:03:37 -06:00
2006-01-16 16:50:04 +00:00
# endif /* __QUOTA_DOT_H__ */