Diff for /linux-2.6-xfs/fs/dmapi/dmapi_mountinfo.c between versions 1.30 and 1.31

version 1.30, 2007/01/12 15:07:58 version 1.31, 2007/08/06 15:41:56
Line 471  dmapi_register( Line 471  dmapi_register(
         struct filesystem_dmapi_operations *dmapiops)          struct filesystem_dmapi_operations *dmapiops)
 {  {
         dm_vector_map_t *proto;          dm_vector_map_t *proto;
         static int initialized = 0;  
   
 wait_cache:  
         spin_lock(&dm_fsys_lock);  
         if (initialized == -1) {  
                 spin_unlock(&dm_fsys_lock);  
                 goto wait_cache;  
         }  
         if (initialized == 0)  
                 initialized = -1;  
         spin_unlock(&dm_fsys_lock);  
   
         if (initialized == -1) {  
                 ASSERT(dm_fsys_map_cachep == NULL);  
                 ASSERT(dm_fsys_vptr_cachep == NULL);  
   
                 dm_fsys_map_cachep = kmem_cache_create("dm_fsys_map",  
                                         sizeof(dm_vector_map_t), 0, 0, NULL, NULL);  
   
                 dm_fsys_vptr_cachep = kmem_cache_create("dm_fsys_vptr",  
                                         sizeof(dm_fsys_vector_t), 0, 0, NULL, NULL);  
   
                 spin_lock(&dm_fsys_lock);  
                 if ((dm_fsys_map_cachep == NULL) ||  
                     (dm_fsys_map_cachep == NULL)) {  
                         initialized = 0;  
                         spin_unlock(&dm_fsys_lock);  
                         goto out_cache_free;  
                 }  
                 initialized = 1;  
                 spin_unlock(&dm_fsys_lock);  
         }  
   
         ASSERT_ALWAYS(initialized == 1);  
         proto = kmem_cache_alloc(dm_fsys_map_cachep, GFP_KERNEL);          proto = kmem_cache_alloc(dm_fsys_map_cachep, GFP_KERNEL);
         if (proto == NULL) {          if (proto == NULL) {
                 printk("%s/%d: kmem_cache_alloc(dm_fsys_map_cachep) returned NULL\n", __FUNCTION__, __LINE__);                  printk("%s/%d: kmem_cache_alloc(dm_fsys_map_cachep) returned NULL\n", __FUNCTION__, __LINE__);
Line 521  wait_cache: Line 488  wait_cache:
         list_add(&proto->ftype_list, &dm_fsys_map);          list_add(&proto->ftype_list, &dm_fsys_map);
         ftype_list();          ftype_list();
         spin_unlock(&dm_fsys_lock);          spin_unlock(&dm_fsys_lock);
   
         return;  
   
 out_cache_free:  
         if (dm_fsys_map_cachep) {  
                 kmem_cache_destroy(dm_fsys_map_cachep);  
                 dm_fsys_map_cachep = NULL;  
         }  
         if (dm_fsys_vptr_cachep) {  
                 kmem_cache_destroy(dm_fsys_vptr_cachep);  
                 dm_fsys_vptr_cachep = NULL;  
         }  
 }  }
   
   
 /* Called by a filesystem module that is unloading from the kernel */  /* Called by a filesystem module that is unloading from the kernel */
 void  void
 dmapi_unregister(  dmapi_unregister(

Removed from v.1.30  
changed lines
  Added in v.1.31


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>