[Ocfs2-commits] smushran commits r2895 - branches/ocfs2-1.2/fs/ocfs2/dlm
svn-commits@oss.oracle.com
svn-commits at oss.oracle.com
Thu Apr 20 13:41:42 CDT 2006
Author: smushran
Signed-off-by: mfasheh
Signed-off-by: khackel
Date: 2006-04-20 13:41:40 -0500 (Thu, 20 Apr 2006)
New Revision: 2895
Modified:
branches/ocfs2-1.2/fs/ocfs2/dlm/dlmdebug.c
branches/ocfs2-1.2/fs/ocfs2/dlm/dlmdomain.c
branches/ocfs2-1.2/fs/ocfs2/dlm/dlmfs.c
branches/ocfs2-1.2/fs/ocfs2/dlm/dlmlock.c
branches/ocfs2-1.2/fs/ocfs2/dlm/dlmmaster.c
branches/ocfs2-1.2/fs/ocfs2/dlm/dlmrecovery.c
branches/ocfs2-1.2/fs/ocfs2/dlm/userdlm.c
Log:
Change mem allocs in DLM from GFP_KERNEL to GFP_NOFS
to avoid deadlocks during dlm operations:
dlmrecovery ==> alloc ==> vm reaping ==> iput ==> dlmlock ==> wait_on_recovery...
Signed-off-by: mfasheh
Signed-off-by: khackel
Modified: branches/ocfs2-1.2/fs/ocfs2/dlm/dlmdebug.c
===================================================================
--- branches/ocfs2-1.2/fs/ocfs2/dlm/dlmdebug.c 2006-04-20 18:21:07 UTC (rev 2894)
+++ branches/ocfs2-1.2/fs/ocfs2/dlm/dlmdebug.c 2006-04-20 18:41:40 UTC (rev 2895)
@@ -177,7 +177,7 @@
mlog(ML_ERROR, "user passed too little data: %d bytes\n", len);
goto leave;
}
- buf = kmalloc(len+1, GFP_KERNEL);
+ buf = kmalloc(len+1, GFP_NOFS);
if (!buf) {
mlog(ML_ERROR, "could not alloc %d bytes\n", len+1);
ret = -ENOMEM;
@@ -436,7 +436,7 @@
mlog(ML_ERROR, "user passed too little data: %d bytes\n", len);
goto leave;
}
- buf = kmalloc(len+1, GFP_KERNEL);
+ buf = kmalloc(len+1, GFP_NOFS);
if (!buf) {
mlog(ML_ERROR, "could not alloc %d bytes\n", len+1);
ret = -ENOMEM;
Modified: branches/ocfs2-1.2/fs/ocfs2/dlm/dlmdomain.c
===================================================================
--- branches/ocfs2-1.2/fs/ocfs2/dlm/dlmdomain.c 2006-04-20 18:21:07 UTC (rev 2894)
+++ branches/ocfs2-1.2/fs/ocfs2/dlm/dlmdomain.c 2006-04-20 18:41:40 UTC (rev 2895)
@@ -892,7 +892,7 @@
mlog_entry("%p", dlm);
- ctxt = kcalloc(1, sizeof(*ctxt), GFP_KERNEL);
+ ctxt = kcalloc(1, sizeof(*ctxt), GFP_NOFS);
if (!ctxt) {
status = -ENOMEM;
mlog_errno(status);
@@ -1187,13 +1187,13 @@
int i;
struct dlm_ctxt *dlm = NULL;
- dlm = kcalloc(1, sizeof(*dlm), GFP_KERNEL);
+ dlm = kcalloc(1, sizeof(*dlm), GFP_NOFS);
if (!dlm) {
mlog_errno(-ENOMEM);
goto leave;
}
- dlm->name = kmalloc(strlen(domain) + 1, GFP_KERNEL);
+ dlm->name = kmalloc(strlen(domain) + 1, GFP_NOFS);
if (dlm->name == NULL) {
mlog_errno(-ENOMEM);
kfree(dlm);
@@ -1201,7 +1201,7 @@
goto leave;
}
- dlm->lockres_hash = (struct hlist_head *) __get_free_page(GFP_KERNEL);
+ dlm->lockres_hash = (struct hlist_head *) __get_free_page(GFP_NOFS);
if (!dlm->lockres_hash) {
mlog_errno(-ENOMEM);
kfree(dlm->name);
Modified: branches/ocfs2-1.2/fs/ocfs2/dlm/dlmfs.c
===================================================================
--- branches/ocfs2-1.2/fs/ocfs2/dlm/dlmfs.c 2006-04-20 18:21:07 UTC (rev 2894)
+++ branches/ocfs2-1.2/fs/ocfs2/dlm/dlmfs.c 2006-04-20 18:41:40 UTC (rev 2895)
@@ -116,7 +116,7 @@
* doesn't make sense for LVB writes. */
file->f_flags &= ~O_APPEND;
- fp = kmalloc(sizeof(*fp), GFP_KERNEL);
+ fp = kmalloc(sizeof(*fp), GFP_NOFS);
if (!fp) {
status = -ENOMEM;
goto bail;
@@ -196,7 +196,7 @@
else
readlen = count - *ppos;
- lvb_buf = kmalloc(readlen, GFP_KERNEL);
+ lvb_buf = kmalloc(readlen, GFP_NOFS);
if (!lvb_buf)
return -ENOMEM;
@@ -240,7 +240,7 @@
else
writelen = count - *ppos;
- lvb_buf = kmalloc(writelen, GFP_KERNEL);
+ lvb_buf = kmalloc(writelen, GFP_NOFS);
if (!lvb_buf)
return -ENOMEM;
Modified: branches/ocfs2-1.2/fs/ocfs2/dlm/dlmlock.c
===================================================================
--- branches/ocfs2-1.2/fs/ocfs2/dlm/dlmlock.c 2006-04-20 18:21:07 UTC (rev 2894)
+++ branches/ocfs2-1.2/fs/ocfs2/dlm/dlmlock.c 2006-04-20 18:41:40 UTC (rev 2895)
@@ -408,13 +408,13 @@
struct dlm_lock *lock;
int kernel_allocated = 0;
- lock = kcalloc(1, sizeof(*lock), GFP_KERNEL);
+ lock = kcalloc(1, sizeof(*lock), GFP_NOFS);
if (!lock)
return NULL;
if (!lksb) {
/* zero memory only if kernel-allocated */
- lksb = kcalloc(1, sizeof(*lksb), GFP_KERNEL);
+ lksb = kcalloc(1, sizeof(*lksb), GFP_NOFS);
if (!lksb) {
kfree(lock);
return NULL;
Modified: branches/ocfs2-1.2/fs/ocfs2/dlm/dlmmaster.c
===================================================================
--- branches/ocfs2-1.2/fs/ocfs2/dlm/dlmmaster.c 2006-04-20 18:21:07 UTC (rev 2894)
+++ branches/ocfs2-1.2/fs/ocfs2/dlm/dlmmaster.c 2006-04-20 18:41:40 UTC (rev 2895)
@@ -707,11 +707,11 @@
{
struct dlm_lock_resource *res;
- res = kmalloc(sizeof(struct dlm_lock_resource), GFP_KERNEL);
+ res = kmalloc(sizeof(struct dlm_lock_resource), GFP_NOFS);
if (!res)
return NULL;
- res->lockname.name = kmalloc(namelen, GFP_KERNEL);
+ res->lockname.name = kmalloc(namelen, GFP_NOFS);
if (!res->lockname.name) {
kfree(res);
return NULL;
@@ -774,7 +774,7 @@
mlog(0, "allocating a new resource\n");
/* nothing found and we need to allocate one. */
alloc_mle = (struct dlm_master_list_entry *)
- kmem_cache_alloc(dlm_mle_cache, GFP_KERNEL);
+ kmem_cache_alloc(dlm_mle_cache, GFP_NOFS);
if (!alloc_mle)
goto leave;
res = dlm_new_lockres(dlm, lockid, namelen);
@@ -1529,7 +1529,7 @@
spin_unlock(&dlm->spinlock);
mle = (struct dlm_master_list_entry *)
- kmem_cache_alloc(dlm_mle_cache, GFP_KERNEL);
+ kmem_cache_alloc(dlm_mle_cache, GFP_NOFS);
if (!mle) {
response = DLM_MASTER_RESP_ERROR;
mlog_errno(-ENOMEM);
@@ -1936,7 +1936,7 @@
int ignore_higher, u8 request_from, u32 flags)
{
struct dlm_work_item *item;
- item = kcalloc(1, sizeof(*item), GFP_KERNEL);
+ item = kcalloc(1, sizeof(*item), GFP_NOFS);
if (!item)
return -ENOMEM;
@@ -2171,14 +2171,14 @@
*/
ret = -ENOMEM;
- mres = (struct dlm_migratable_lockres *) __get_free_page(GFP_KERNEL);
+ mres = (struct dlm_migratable_lockres *) __get_free_page(GFP_NOFS);
if (!mres) {
mlog_errno(ret);
goto leave;
}
mle = (struct dlm_master_list_entry *) kmem_cache_alloc(dlm_mle_cache,
- GFP_KERNEL);
+ GFP_NOFS);
if (!mle) {
mlog_errno(ret);
goto leave;
@@ -2632,7 +2632,7 @@
/* preallocate.. if this fails, abort */
mle = (struct dlm_master_list_entry *) kmem_cache_alloc(dlm_mle_cache,
- GFP_KERNEL);
+ GFP_NOFS);
if (!mle) {
ret = -ENOMEM;
Modified: branches/ocfs2-1.2/fs/ocfs2/dlm/dlmrecovery.c
===================================================================
--- branches/ocfs2-1.2/fs/ocfs2/dlm/dlmrecovery.c 2006-04-20 18:21:07 UTC (rev 2894)
+++ branches/ocfs2-1.2/fs/ocfs2/dlm/dlmrecovery.c 2006-04-20 18:41:40 UTC (rev 2895)
@@ -737,7 +737,7 @@
}
BUG_ON(num == dead_node);
- ndata = kcalloc(1, sizeof(*ndata), GFP_KERNEL);
+ ndata = kcalloc(1, sizeof(*ndata), GFP_NOFS);
if (!ndata) {
dlm_destroy_recovery_area(dlm, dead_node);
return -ENOMEM;
@@ -821,14 +821,14 @@
}
BUG_ON(lr->dead_node != dlm->reco.dead_node);
- item = kcalloc(1, sizeof(*item), GFP_KERNEL);
+ item = kcalloc(1, sizeof(*item), GFP_NOFS);
if (!item) {
dlm_put(dlm);
return -ENOMEM;
}
/* this will get freed by dlm_request_all_locks_worker */
- buf = (char *) __get_free_page(GFP_KERNEL);
+ buf = (char *) __get_free_page(GFP_NOFS);
if (!buf) {
kfree(item);
dlm_put(dlm);
@@ -1303,8 +1303,8 @@
mlog(0, "all done flag. all lockres data received!\n");
ret = -ENOMEM;
- buf = kmalloc(be16_to_cpu(msg->data_len), GFP_KERNEL);
- item = kcalloc(1, sizeof(*item), GFP_KERNEL);
+ buf = kmalloc(be16_to_cpu(msg->data_len), GFP_NOFS);
+ item = kcalloc(1, sizeof(*item), GFP_NOFS);
if (!buf || !item)
goto leave;
Modified: branches/ocfs2-1.2/fs/ocfs2/dlm/userdlm.c
===================================================================
--- branches/ocfs2-1.2/fs/ocfs2/dlm/userdlm.c 2006-04-20 18:21:07 UTC (rev 2894)
+++ branches/ocfs2-1.2/fs/ocfs2/dlm/userdlm.c 2006-04-20 18:41:40 UTC (rev 2895)
@@ -672,7 +672,7 @@
u32 dlm_key;
char *domain;
- domain = kmalloc(name->len + 1, GFP_KERNEL);
+ domain = kmalloc(name->len + 1, GFP_NOFS);
if (!domain) {
mlog_errno(-ENOMEM);
return ERR_PTR(-ENOMEM);
More information about the Ocfs2-commits
mailing list