This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / include / linux / vs_dlimit.h
index 53400ab..f140461 100644 (file)
@@ -1,13 +1,21 @@
 #ifndef _VX_VS_DLIMIT_H
 #define _VX_VS_DLIMIT_H
 
+
+// #define VX_DEBUG
+
 #include <linux/kernel.h>
 #include <linux/rcupdate.h>
 #include <linux/sched.h>
 
 #include "vserver/context.h"
 #include "vserver/dlimit.h"
-#include "vserver/debug.h"
+
+#if defined(VX_DEBUG)
+#define vxdprintk(x...) printk("vxd: " x)
+#else
+#define vxdprintk(x...)
+#endif
 
 
 #define get_dl_info(i) __get_dl_info(i,__FILE__,__LINE__)
@@ -17,7 +25,7 @@ static inline struct dl_info *__get_dl_info(struct dl_info *dli,
 {
        if (!dli)
                return NULL;
-       vxlprintk(VXD_CBIT(dlim, 4), "get_dl_info(%p[#%d.%d])",
+       vxdprintk("get_dl_info(%p[#%d.%d])\t%s:%d\n",
                dli, dli?dli->dl_xid:0, dli?atomic_read(&dli->dl_usecnt):0,
                _file, _line);
        atomic_inc(&dli->dl_usecnt);
@@ -30,12 +38,11 @@ static inline struct dl_info *__get_dl_info(struct dl_info *dli,
 
 #define put_dl_info(i) __put_dl_info(i,__FILE__,__LINE__)
 
-static inline void __put_dl_info(struct dl_info *dli,
-       const char *_file, int _line)
+static inline void __put_dl_info(struct dl_info *dli, const char *_file, int _line)
 {
        if (!dli)
                return;
-       vxlprintk(VXD_CBIT(dlim, 4), "put_dl_info(%p[#%d.%d])",
+       vxdprintk("put_dl_info(%p[#%d.%d])\t%s:%d\n",
                dli, dli?dli->dl_xid:0, dli?atomic_read(&dli->dl_usecnt):0,
                _file, _line);
        if (atomic_dec_and_test(&dli->dl_usecnt))
@@ -43,6 +50,8 @@ static inline void __put_dl_info(struct dl_info *dli,
 }
 
 
+extern int vx_debug_dlimit;
+
 #define        __dlimit_char(d)        ((d)?'*':' ')
 
 static inline int __dl_alloc_space(struct super_block *sb,
@@ -64,14 +73,14 @@ static inline int __dl_alloc_space(struct super_block *sb,
        spin_unlock(&dli->dl_lock);
        put_dl_info(dli);
 out:
-       vxlprintk(VXD_CBIT(dlim, 1),
-               "ALLOC (%p,#%d)%c %lld bytes (%d)",
-               sb, xid, __dlimit_char(dli), nr, ret, file, line);
+       if (vx_debug_dlimit)
+               printk("ALLOC (%p,#%d)%c %lld bytes (%d)@ %s:%d\n",
+                       sb, xid, __dlimit_char(dli), nr, ret, file, line);
        return ret;
 }
 
 static inline void __dl_free_space(struct super_block *sb,
-       xid_t xid, dlsize_t nr, const char *_file, int _line)
+       xid_t xid, dlsize_t nr, const char *file, int line)
 {
        struct dl_info *dli = NULL;
 
@@ -82,20 +91,17 @@ static inline void __dl_free_space(struct super_block *sb,
                goto out;
 
        spin_lock(&dli->dl_lock);
-       if (dli->dl_space_used > nr)
-               dli->dl_space_used -= nr;
-       else
-               dli->dl_space_used = 0;
+       dli->dl_space_used -= nr;
        spin_unlock(&dli->dl_lock);
        put_dl_info(dli);
 out:
-       vxlprintk(VXD_CBIT(dlim, 1),
-               "FREE  (%p,#%d)%c %lld bytes",
-               sb, xid, __dlimit_char(dli), nr, _file, _line);
+       if (vx_debug_dlimit)
+               printk("FREE  (%p,#%d)%c %lld bytes @ %s:%d\n",
+                       sb, xid, __dlimit_char(dli), nr, file, line);
 }
 
 static inline int __dl_alloc_inode(struct super_block *sb,
-       xid_t xid, const char *_file, int _line)
+       xid_t xid, const char *file, int line)
 {
        struct dl_info *dli;
        int ret = 0;
@@ -108,24 +114,17 @@ static inline int __dl_alloc_inode(struct super_block *sb,
        ret = (dli->dl_inodes_used >= dli->dl_inodes_total);
        if (!ret)
                dli->dl_inodes_used++;
-#if 0
-       else
-               printk("VSW: DLIMIT hit (%p,#%d), inode %d>=%d @ %s:%d\n",
-                       sb, xid,
-                       dli->dl_inodes_used, dli->dl_inodes_total,
-                       file, line);
-#endif
        spin_unlock(&dli->dl_lock);
        put_dl_info(dli);
 out:
-       vxlprintk(VXD_CBIT(dlim, 0),
-               "ALLOC (%p,#%d)%c inode (%d)",
-               sb, xid, __dlimit_char(dli), ret, _file, _line);
+       if (vx_debug_dlimit)
+               printk("ALLOC (%p,#%d)%c inode (%d)@ %s:%d\n",
+                       sb, xid, __dlimit_char(dli), ret, file, line);
        return ret;
 }
 
 static inline void __dl_free_inode(struct super_block *sb,
-       xid_t xid, const char *_file, int _line)
+       xid_t xid, const char *file, int line)
 {
        struct dl_info *dli;
 
@@ -134,51 +133,15 @@ static inline void __dl_free_inode(struct super_block *sb,
                goto out;
 
        spin_lock(&dli->dl_lock);
-       if (dli->dl_inodes_used > 1)
-               dli->dl_inodes_used--;
-       else
-               dli->dl_inodes_used = 0;
+       dli->dl_inodes_used--;
        spin_unlock(&dli->dl_lock);
        put_dl_info(dli);
 out:
-       vxlprintk(VXD_CBIT(dlim, 0),
-               "FREE  (%p,#%d)%c inode",
-               sb, xid, __dlimit_char(dli), _file, _line);
+       if (vx_debug_dlimit)
+               printk("FREE  (%p,#%d)%c inode @ %s:%d\n",
+                       sb, xid, __dlimit_char(dli), file, line);
 }
 
-static inline void __dl_adjust_block(struct super_block *sb, xid_t xid,
-       unsigned int *free_blocks, unsigned int *root_blocks,
-       const char *_file, int _line)
-{
-       struct dl_info *dli;
-       uint64_t broot, bfree;
-
-       dli = locate_dl_info(sb, xid);
-       if (!dli)
-               return;
-
-       spin_lock(&dli->dl_lock);
-       broot = (dli->dl_space_total -
-               (dli->dl_space_total >> 10) * dli->dl_nrlmult)
-               >> sb->s_blocksize_bits;
-       bfree = (dli->dl_space_total - dli->dl_space_used)
-                       >> sb->s_blocksize_bits;
-       spin_unlock(&dli->dl_lock);
-
-       vxlprintk(VXD_CBIT(dlim, 2),
-               "ADJUST: %lld,%lld on %d,%d [mult=%d]",
-               bfree, broot, *free_blocks, *root_blocks,
-               dli->dl_nrlmult, _file, _line);
-       if (free_blocks) {
-               if (*free_blocks > bfree)
-                       *free_blocks = bfree;
-       }
-       if (root_blocks) {
-               if (*root_blocks > broot)
-                       *root_blocks = broot;
-       }
-       put_dl_info(dli);
-}
 
 
 #define DLIMIT_ALLOC_BLOCK(sb, xid, nr) \
@@ -198,8 +161,7 @@ static inline void __dl_adjust_block(struct super_block *sb, xid_t xid,
        __dl_free_inode(sb, xid, __FILE__, __LINE__ )
 
 
-#define        DLIMIT_ADJUST_BLOCK(sb, xid, fb, rb) \
-       __dl_adjust_block(sb, xid, fb, rb, __FILE__, __LINE__ )
+#define        DLIMIT_ADJUST_BLOCK(sb, xid, fb, rb)
 
 
 #else