File tree Expand file tree Collapse file tree 7 files changed +568
-6
lines changed Expand file tree Collapse file tree 7 files changed +568
-6
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ dm-snapshot-y += dm-snap.o dm-exception-store.o dm-snap-transient.o \
11
11
dm-mirror-y += dm-raid1.o
12
12
dm-log-userspace-y \
13
13
+= dm-log-userspace-base.o dm-log-userspace-transfer.o
14
+ dm-bio-prison-y += dm-bio-prison-v1.o dm-bio-prison-v2.o
14
15
dm-thin-pool-y += dm-thin.o dm-thin-metadata.o
15
16
dm-cache-y += dm-cache-target.o dm-cache-metadata.o dm-cache-policy.o
16
17
dm-cache-smq-y += dm-cache-policy-smq.o
Original file line number Diff line number Diff line change 5
5
*/
6
6
7
7
#include "dm.h"
8
- #include "dm-bio-prison.h"
8
+ #include "dm-bio-prison-v1.h"
9
+ #include "dm-bio-prison-v2.h"
9
10
10
11
#include <linux/spinlock.h>
11
12
#include <linux/mempool.h>
@@ -398,7 +399,7 @@ EXPORT_SYMBOL_GPL(dm_deferred_set_add_work);
398
399
399
400
/*----------------------------------------------------------------*/
400
401
401
- static int __init dm_bio_prison_init (void )
402
+ static int __init dm_bio_prison_init_v1 (void )
402
403
{
403
404
_cell_cache = KMEM_CACHE (dm_bio_prison_cell , 0 );
404
405
if (!_cell_cache )
@@ -407,12 +408,51 @@ static int __init dm_bio_prison_init(void)
407
408
return 0 ;
408
409
}
409
410
410
- static void __exit dm_bio_prison_exit (void )
411
+ static void dm_bio_prison_exit_v1 (void )
411
412
{
412
413
kmem_cache_destroy (_cell_cache );
413
414
_cell_cache = NULL ;
414
415
}
415
416
417
+ static int (* _inits [])(void ) __initdata = {
418
+ dm_bio_prison_init_v1 ,
419
+ dm_bio_prison_init_v2 ,
420
+ };
421
+
422
+ static void (* _exits [])(void ) = {
423
+ dm_bio_prison_exit_v1 ,
424
+ dm_bio_prison_exit_v2 ,
425
+ };
426
+
427
+ static int __init dm_bio_prison_init (void )
428
+ {
429
+ const int count = ARRAY_SIZE (_inits );
430
+
431
+ int r , i ;
432
+
433
+ for (i = 0 ; i < count ; i ++ ) {
434
+ r = _inits [i ]();
435
+ if (r )
436
+ goto bad ;
437
+ }
438
+
439
+ return 0 ;
440
+
441
+ bad :
442
+ while (i -- )
443
+ _exits [i ]();
444
+
445
+ return r ;
446
+ }
447
+
448
+ static void __exit dm_bio_prison_exit (void )
449
+ {
450
+ int i = ARRAY_SIZE (_exits );
451
+
452
+ while (i -- )
453
+ _exits [i ]();
454
+ }
455
+
416
456
/*
417
457
* module hooks
418
458
*/
Original file line number Diff line number Diff line change 1
1
/*
2
- * Copyright (C) 2011-2012 Red Hat, Inc.
2
+ * Copyright (C) 2011-2017 Red Hat, Inc.
3
3
*
4
4
* This file is released under the GPL.
5
5
*/
You can’t perform that action at this time.
0 commit comments