|
@@ -183,30 +183,23 @@ static inline void remove_metapage(struct page *page, struct metapage *mp)
|
|
|
|
|
|
#endif
|
|
|
|
|
|
-static void init_once(void *foo)
|
|
|
-{
|
|
|
- struct metapage *mp = (struct metapage *)foo;
|
|
|
-
|
|
|
- mp->lid = 0;
|
|
|
- mp->lsn = 0;
|
|
|
- mp->flag = 0;
|
|
|
- mp->data = NULL;
|
|
|
- mp->clsn = 0;
|
|
|
- mp->log = NULL;
|
|
|
- set_bit(META_free, &mp->flag);
|
|
|
- init_waitqueue_head(&mp->wait);
|
|
|
-}
|
|
|
-
|
|
|
static inline struct metapage *alloc_metapage(gfp_t gfp_mask)
|
|
|
{
|
|
|
- return mempool_alloc(metapage_mempool, gfp_mask);
|
|
|
+ struct metapage *mp = mempool_alloc(metapage_mempool, gfp_mask);
|
|
|
+
|
|
|
+ if (mp) {
|
|
|
+ mp->lid = 0;
|
|
|
+ mp->lsn = 0;
|
|
|
+ mp->data = NULL;
|
|
|
+ mp->clsn = 0;
|
|
|
+ mp->log = NULL;
|
|
|
+ init_waitqueue_head(&mp->wait);
|
|
|
+ }
|
|
|
+ return mp;
|
|
|
}
|
|
|
|
|
|
static inline void free_metapage(struct metapage *mp)
|
|
|
{
|
|
|
- mp->flag = 0;
|
|
|
- set_bit(META_free, &mp->flag);
|
|
|
-
|
|
|
mempool_free(mp, metapage_mempool);
|
|
|
}
|
|
|
|
|
@@ -216,7 +209,7 @@ int __init metapage_init(void)
|
|
|
* Allocate the metapage structures
|
|
|
*/
|
|
|
metapage_cache = kmem_cache_create("jfs_mp", sizeof(struct metapage),
|
|
|
- 0, 0, init_once);
|
|
|
+ 0, 0, NULL);
|
|
|
if (metapage_cache == NULL)
|
|
|
return -ENOMEM;
|
|
|
|