Whamcloud - gitweb
Try to avoid a race where two rpmbuilds on the same node are trying to stage
[fs/lustre-release.git] / lustre / lvfs / lvfs_linux.c
index 112a1ad..2acb86c 100644 (file)
@@ -153,12 +153,14 @@ void push_ctxt(struct lvfs_run_ctxt *save, struct lvfs_run_ctxt *new_ctx,
                 save->luc.luc_fsuid = current->fsuid;
                 save->luc.luc_fsgid = current->fsgid;
                 save->luc.luc_cap = current->cap_effective;
-
+                save->luc.luc_nid = current->user->nid;
+                
                 current->uid = uc->luc_uid;
                 current->gid = uc->luc_gid;
                 current->fsuid = uc->luc_fsuid;
                 current->fsgid = uc->luc_fsgid;
                 current->cap_effective = uc->luc_cap;
+                current->user->nid = uc->luc_nid;
 
                 push_group_info(save, uc->luc_ginfo);
         }
@@ -216,7 +218,7 @@ void pop_ctxt(struct lvfs_run_ctxt *saved, struct lvfs_run_ctxt *new_ctx,
                 current->fsuid = saved->luc.luc_fsuid;
                 current->fsgid = saved->luc.luc_fsgid;
                 current->cap_effective = saved->luc.luc_cap;
-
+                current->user->nid = saved->luc.luc_nid;
                 pop_group_info(saved, uc->luc_ginfo);
         }
 
@@ -395,7 +397,9 @@ static int l_filldir(void *__buf, const char *name, int namlen, loff_t offset,
                dirent->lld_off = offset; 
 
         OBD_ALLOC(dirent, sizeof(*dirent));
-
+        if (!dirent)
+                return -ENOMEM;
+        
         list_add_tail(&dirent->lld_list, buf->lrc_list);
 
         buf->lrc_dirent = dirent;
@@ -442,7 +446,7 @@ static int lvfs_memdbg_init(int size)
         LASSERT(size > sizeof(sizeof(struct hlist_head)));
         obd_memtable_size = size / sizeof(struct hlist_head);
 
-        CWARN("allocating %lu malloc entries...\n",
+        CWARN("allocating %lu malloc entries\n",
               (unsigned long)obd_memtable_size);
 
         obd_memtable = kmalloc(size, GFP_KERNEL);
@@ -598,12 +602,16 @@ void lvfs_memdbg_show(void)
                 for (i = 0, head = obd_memtable; i < obd_memtable_size; i++, head++) {
                         hlist_for_each(node, head) {
                                 mt = hlist_entry(node, struct mem_track, m_hash);
-                                CWARN("  ptr: 0x%p, size: %d, src at \"%s\"\n",
+                                CWARN("  [%s] ptr: 0x%p, size: %d, src at \"%s\"\n",
+                                      ((mt->m_flags & MT_FLAGS_WRONG_SIZE) ?
+                                       "wrong ck size" : "leaked memory"),
                                       mt->m_ptr, mt->m_size, mt->m_loc);
                         }
                 }
                 spin_unlock(&obd_memlist_lock);
 #endif
+                /* remove for production */
+                portals_debug_dumplog();
         }
 }
 EXPORT_SYMBOL(lvfs_memdbg_show);