Whamcloud - gitweb
b=13557
[fs/lustre-release.git] / lustre / include / lustre_quota.h
index 05b08d1..d52f661 100644 (file)
@@ -204,6 +204,11 @@ typedef struct {
         /* For quota slave, acquire/release quota from master if needed */
         int (*quota_acquire) (struct obd_device *, unsigned int, unsigned int);
         
+        /* For quota slave, check whether specified uid/gid's remaining quota
+         * can finish a write rpc */
+        int (*quota_chkquota) (struct obd_device *, unsigned int, unsigned int,
+                               int);
+
         /* For quota client, poll if the quota check done */
         int (*quota_poll_check) (struct obd_export *, struct if_quotacheck *);
         
@@ -250,7 +255,7 @@ static inline int lquota_exit(quota_interface_t *interface)
 }
 
 static inline int lquota_setup(quota_interface_t *interface,
-                               struct obd_device *obd)
+                               struct obd_device *obd) 
 {
         int rc;
         ENTRY;
@@ -392,6 +397,19 @@ static inline int lquota_acquire(quota_interface_t *interface,
         RETURN(rc);
 }
 
+static inline int lquota_chkquota(quota_interface_t *interface,
+                                  struct obd_device *obd,
+                                  unsigned int uid, unsigned int gid,
+                                  int npage)
+{
+        int rc;
+        ENTRY;
+        
+        QUOTA_CHECK_OP(interface, chkquota);
+        rc = QUOTA_OP(interface, chkquota)(obd, uid, gid, npage);
+        RETURN(rc);
+}
+
 int lprocfs_rd_bunit(char *page, char **start, off_t off, int count, 
                      int *eof, void *data);
 int lprocfs_rd_iunit(char *page, char **start, off_t off, int count,