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 ;
2006-09-04 12:49:07 -04:00
# define NO_QUOTA_CHANGE ((u32)-1)
2006-01-16 16:50:04 +00:00
2006-09-04 12:49:07 -04:00
int gfs2_quota_hold ( struct gfs2_inode * ip , u32 uid , u32 gid ) ;
2006-01-16 16:50:04 +00:00
void gfs2_quota_unhold ( struct gfs2_inode * ip ) ;
2006-09-04 12:49:07 -04:00
int gfs2_quota_lock ( struct gfs2_inode * ip , u32 uid , u32 gid ) ;
2006-01-16 16:50:04 +00:00
void gfs2_quota_unlock ( struct gfs2_inode * ip ) ;
2006-09-04 12:49:07 -04:00
int gfs2_quota_check ( struct gfs2_inode * ip , u32 uid , u32 gid ) ;
void gfs2_quota_change ( struct gfs2_inode * ip , s64 change ,
u32 uid , u32 gid ) ;
2006-01-16 16:50:04 +00:00
int gfs2_quota_sync ( struct gfs2_sbd * sdp ) ;
2006-09-04 12:49:07 -04:00
int gfs2_quota_refresh ( struct gfs2_sbd * sdp , int user , u32 id ) ;
2006-01-16 16:50:04 +00:00
int gfs2_quota_init ( struct gfs2_sbd * sdp ) ;
void gfs2_quota_scan ( struct gfs2_sbd * sdp ) ;
void gfs2_quota_cleanup ( 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 ;
}
2006-01-16 16:50:04 +00:00
# endif /* __QUOTA_DOT_H__ */