~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/dlm/memory.c

Version: ~ [ linux-5.4-rc7 ] ~ [ linux-5.3.10 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.83 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.153 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.200 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.200 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.76 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /******************************************************************************
  2 *******************************************************************************
  3 **
  4 **  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
  5 **  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
  6 **
  7 **  This copyrighted material is made available to anyone wishing to use,
  8 **  modify, copy, or redistribute it subject to the terms and conditions
  9 **  of the GNU General Public License v.2.
 10 **
 11 *******************************************************************************
 12 ******************************************************************************/
 13 
 14 #include "dlm_internal.h"
 15 #include "config.h"
 16 #include "memory.h"
 17 
 18 static struct kmem_cache *lkb_cache;
 19 static struct kmem_cache *rsb_cache;
 20 
 21 
 22 int __init dlm_memory_init(void)
 23 {
 24         lkb_cache = kmem_cache_create("dlm_lkb", sizeof(struct dlm_lkb),
 25                                 __alignof__(struct dlm_lkb), 0, NULL);
 26         if (!lkb_cache)
 27                 return -ENOMEM;
 28 
 29         rsb_cache = kmem_cache_create("dlm_rsb", sizeof(struct dlm_rsb),
 30                                 __alignof__(struct dlm_rsb), 0, NULL);
 31         if (!rsb_cache) {
 32                 kmem_cache_destroy(lkb_cache);
 33                 return -ENOMEM;
 34         }
 35 
 36         return 0;
 37 }
 38 
 39 void dlm_memory_exit(void)
 40 {
 41         if (lkb_cache)
 42                 kmem_cache_destroy(lkb_cache);
 43         if (rsb_cache)
 44                 kmem_cache_destroy(rsb_cache);
 45 }
 46 
 47 char *dlm_allocate_lvb(struct dlm_ls *ls)
 48 {
 49         char *p;
 50 
 51         p = kzalloc(ls->ls_lvblen, GFP_NOFS);
 52         return p;
 53 }
 54 
 55 void dlm_free_lvb(char *p)
 56 {
 57         kfree(p);
 58 }
 59 
 60 struct dlm_rsb *dlm_allocate_rsb(struct dlm_ls *ls)
 61 {
 62         struct dlm_rsb *r;
 63 
 64         r = kmem_cache_zalloc(rsb_cache, GFP_NOFS);
 65         return r;
 66 }
 67 
 68 void dlm_free_rsb(struct dlm_rsb *r)
 69 {
 70         if (r->res_lvbptr)
 71                 dlm_free_lvb(r->res_lvbptr);
 72         kmem_cache_free(rsb_cache, r);
 73 }
 74 
 75 struct dlm_lkb *dlm_allocate_lkb(struct dlm_ls *ls)
 76 {
 77         struct dlm_lkb *lkb;
 78 
 79         lkb = kmem_cache_zalloc(lkb_cache, GFP_NOFS);
 80         return lkb;
 81 }
 82 
 83 void dlm_free_lkb(struct dlm_lkb *lkb)
 84 {
 85         if (lkb->lkb_flags & DLM_IFL_USER) {
 86                 struct dlm_user_args *ua;
 87                 ua = lkb->lkb_ua;
 88                 if (ua) {
 89                         if (ua->lksb.sb_lvbptr)
 90                                 kfree(ua->lksb.sb_lvbptr);
 91                         kfree(ua);
 92                 }
 93         }
 94         kmem_cache_free(lkb_cache, lkb);
 95 }
 96 
 97 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp