2006-01-16 19:50:04 +03:00
/*
* Copyright ( C ) Sistina Software , Inc . 1997 - 2003 All rights reserved .
2006-05-18 23:09:15 +04:00
* Copyright ( C ) 2004 - 2006 Red Hat , Inc . All rights reserved .
2006-01-16 19:50:04 +03: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 19:05:15 +04:00
* of the GNU General Public License version 2.
2006-01-16 19:50:04 +03:00
*/
# ifndef __QUOTA_DOT_H__
# define __QUOTA_DOT_H__
2006-09-05 18:39:21 +04:00
struct gfs2_inode ;
struct gfs2_sbd ;
2011-05-25 04:12:27 +04:00
struct shrink_control ;
2006-09-05 18:39:21 +04:00
2006-09-04 20:49:07 +04:00
# define NO_QUOTA_CHANGE ((u32)-1)
2006-01-16 19:50:04 +03:00
2008-11-19 13:08:22 +03: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 19:50:04 +03:00
2008-11-19 13:08:22 +03: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 19:50:04 +03:00
2008-11-19 13:08:22 +03: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 19:50:04 +03:00
2010-02-16 11:44:52 +03:00
extern int gfs2_quota_sync ( struct super_block * sb , int type , int wait ) ;
2008-11-19 13:08:22 +03:00
extern int gfs2_quota_refresh ( struct gfs2_sbd * sdp , int user , u32 id ) ;
2006-01-16 19:50:04 +03:00
2008-11-19 13:08:22 +03: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 19:50:04 +03:00
2009-10-20 11:39:44 +04:00
extern void gfs2_wake_up_statfs ( struct gfs2_sbd * sdp ) ;
2008-03-10 18:34:50 +03: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-25 04:12:27 +04:00
extern int gfs2_shrink_qd_memory ( struct shrinker * shrink ,
struct shrink_control * sc ) ;
2009-09-15 12:59:02 +04:00
extern const struct quotactl_ops gfs2_quotactl_ops ;
2009-01-08 01:03:37 +03:00
2006-01-16 19:50:04 +03:00
# endif /* __QUOTA_DOT_H__ */