git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
fs
/
xfs
/
linux-2.6
/
kmem.c
diff --git
a/fs/xfs/linux-2.6/kmem.c
b/fs/xfs/linux-2.6/kmem.c
index
fae7176
..
364ea8c
100644
(file)
--- a/
fs/xfs/linux-2.6/kmem.c
+++ b/
fs/xfs/linux-2.6/kmem.c
@@
-35,6
+35,7
@@
#include <linux/vmalloc.h>
#include <linux/highmem.h>
#include <linux/swap.h>
#include <linux/vmalloc.h>
#include <linux/highmem.h>
#include <linux/swap.h>
+#include <linux/blkdev.h>
#include "time.h"
#include "kmem.h"
#include "time.h"
#include "kmem.h"
@@
-46,7
+47,8
@@
void *
kmem_alloc(size_t size, int flags)
{
void *
kmem_alloc(size_t size, int flags)
{
- int retries = 0, lflags = kmem_flags_convert(flags);
+ int retries = 0;
+ int lflags = kmem_flags_convert(flags);
void *ptr;
do {
void *ptr;
do {
@@
-57,8
+59,10
@@
kmem_alloc(size_t size, int flags)
if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP)))
return ptr;
if (!(++retries % 100))
if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP)))
return ptr;
if (!(++retries % 100))
- printk(KERN_ERR "possible deadlock in %s (mode:0x%x)\n",
+ printk(KERN_ERR "XFS: possible memory allocation "
+ "deadlock in %s (mode:0x%x)\n",
__FUNCTION__, lflags);
__FUNCTION__, lflags);
+ blk_congestion_wait(WRITE, HZ/50);
} while (1);
}
} while (1);
}
@@
-102,7
+106,8
@@
kmem_realloc(void *ptr, size_t newsize, size_t oldsize, int flags)
void *
kmem_zone_alloc(kmem_zone_t *zone, int flags)
{
void *
kmem_zone_alloc(kmem_zone_t *zone, int flags)
{
- int retries = 0, lflags = kmem_flags_convert(flags);
+ int retries = 0;
+ int lflags = kmem_flags_convert(flags);
void *ptr;
do {
void *ptr;
do {
@@
-110,8
+115,10
@@
kmem_zone_alloc(kmem_zone_t *zone, int flags)
if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP)))
return ptr;
if (!(++retries % 100))
if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP)))
return ptr;
if (!(++retries % 100))
- printk(KERN_ERR "possible deadlock in %s (mode:0x%x)\n",
+ printk(KERN_ERR "XFS: possible memory allocation "
+ "deadlock in %s (mode:0x%x)\n",
__FUNCTION__, lflags);
__FUNCTION__, lflags);
+ blk_congestion_wait(WRITE, HZ/50);
} while (1);
}
} while (1);
}