00001
00012 #include <linux/module.h>
00013 #include <linux/slab.h>
00014
00015 #include "storage.h"
00016 #include "cache.h"
00017
00018
00019
00024 struct mumufs_storage * mumufs_allocate_storage( void )
00025 {
00026 struct mumufs_storage * new = kmem_cache_alloc( mumufs_storage_cache,
00027 GFP_KERNEL );
00028
00029 if ( new != NULL )
00030 {
00031
00032 init_rwsem( & new->buffer_lock );
00033
00034
00035 new->buffer = NULL;
00036 new->buffer_size = 0;
00037
00038
00039 new->buffer_version = 0;
00040
00041
00042 init_waitqueue_head( & new->blocked_readers );
00043 }
00044
00045 return new;
00046 }
00047
00048
00049
00054 void mumufs_free_storage( struct mumufs_storage * element )
00055 {
00056 if ( element->buffer != NULL )
00057 {
00058 kfree( element->buffer );
00059 element->buffer = NULL;
00060 }
00061 kmem_cache_free( mumufs_storage_cache, element );
00062 return;
00063 }
00064