]> sourceware.org Git - dm.git/commitdiff
Fixes for compilation as module & without devfs.
authorAlasdair Kergon <agk@redhat.com>
Tue, 8 Jan 2002 18:02:35 +0000 (18:02 +0000)
committerAlasdair Kergon <agk@redhat.com>
Tue, 8 Jan 2002 18:02:35 +0000 (18:02 +0000)
kernel/common/dm-linear.c
kernel/common/dm-stripe.c
kernel/common/dm-table.c
kernel/common/dm.c.in
kernel/common/dm.h
kernel/ioctl/dm-ioctl.c

index fd319ee5d4233ff3271e387c0e07c93ec05aabe7..52dea2b1f56a296585f7078234873a0fee8d0ba9 100644 (file)
@@ -85,7 +85,7 @@ static struct target_type linear_target = {
        map:    linear_map,
 };
 
-static int __init linear_init(void)
+int __init dm_linear_init(void)
 {
        int r = dm_register_target(&linear_target);
 
@@ -95,7 +95,7 @@ static int __init linear_init(void)
        return r;
 }
 
-static void __exit linear_exit(void)
+void __exit dm_linear_exit(void)
 {
        int r = dm_unregister_target(&linear_target);
 
@@ -103,9 +103,3 @@ static void __exit linear_exit(void)
                DMERR("linear: unregister failed %d", r);
 }
 
-module_init(linear_init);
-module_exit(linear_exit);
-
-MODULE_AUTHOR("Joe Thornber <thornber@uk.sistina.com>");
-MODULE_DESCRIPTION(DM_NAME ": linear mapping");
-MODULE_LICENSE("GPL");
index da61f3c93e02817956d66fe71288148a5e736887..00b8db28e704114bddca6d0f4570de0442097fec 100644 (file)
@@ -179,7 +179,7 @@ static struct target_type stripe_target = {
        map:    stripe_map,
 };
 
-static int __init stripe_init(void)
+int __init dm_stripe_init(void)
 {
        int r;
 
@@ -190,7 +190,7 @@ static int __init stripe_init(void)
        return r;
 }
 
-static void __exit stripe_exit(void)
+void __exit dm_stripe_exit(void)
 {
        if (dm_unregister_target(&stripe_target))
                DMWARN("striped target unregistration failed");
@@ -198,9 +198,3 @@ static void __exit stripe_exit(void)
        return;
 }
 
-module_init(stripe_init);
-module_exit(stripe_exit);
-
-MODULE_AUTHOR("Joe Thornber <thornber@sistina.com>");
-MODULE_DESCRIPTION(DM_NAME ": striped mapping");
-MODULE_LICENSE("GPL");
index 1d9efec08c312acabd1910c778076957d5a00ae6..172610f2983a8c70d9555f7f1340e2b805f0b508 100644 (file)
@@ -79,10 +79,12 @@ static int alloc_targets(struct dm_table *t, int num)
        int n = t->num_targets;
        unsigned long size = (sizeof(struct target) + sizeof(offset_t)) * num;
 
-       n_highs = vmalloc(size);
+       n_highs = (offset_t *) vmalloc(size);
        if (!n_highs)
                return -ENOMEM;
 
+       memset(n_highs, 0, size);
+
        n_targets = (struct target *) (n_highs + num);
 
        if (n) {
@@ -363,7 +365,8 @@ static int setup_indexes(struct dm_table *t)
                total += t->counts[i];
        }
 
-       if (!(indexes = vmalloc(NODE_SIZE * total)))
+       indexes = (offset_t *) vmalloc((unsigned long)NODE_SIZE * total);
+       if (!indexes)
                return -ENOMEM;
 
        /* set up internal nodes, bottom-up */
index a8983b67241fa775e331664ae23ee4f0af8aa7a3..4cc4ece92bee3c746d1b151f2bbb10354c68692e 100644 (file)
@@ -149,27 +149,43 @@ static int __init dm_init(void)
 
        r = local_init();
        if (r)
-               return r;
+               goto out;
 
        r = dm_target_init();
-       if (r) {
-               local_exit();
-               return r;
-       }
+       if (r)
+               goto out_local;
+
+       r = dm_linear_init();
+       if (r)
+               goto out_target;
+
+       r = dm_stripe_init();
+       if (r)
+               goto out_linear;
 
        r = dm_interface_init();
-       if (r) {
-               dm_target_exit();
-               local_exit();
-               return r;
-       }
+       if (r)
+               goto out_stripe;
 
        return 0;
+
+      out_stripe:
+       dm_stripe_exit();
+      out_linear:
+       dm_linear_exit();
+      out_target:
+       dm_target_exit();
+      out_local:
+       local_exit();
+      out:
+       return r;
 }
 
 static void __exit dm_exit(void)
 {
        dm_interface_exit();
+       dm_stripe_exit();
+       dm_linear_exit();
        dm_target_exit();
        local_exit();
 }
index eabaa3d28187a03f58cd5a070f23f8ae236d09d1..190ecd37bf659a4eb9616f542b0c5d0e5c5bb20e 100644 (file)
@@ -170,4 +170,13 @@ static inline offset_t *get_node(struct dm_table *t, int l, int n)
 int dm_interface_init(void);
 void dm_interface_exit(void);
 
+/* 
+ * Targets for linear and striped mappings
+ */
+int dm_linear_init(void);
+void dm_linear_exit(void);
+int dm_stripe_init(void);
+void dm_stripe_exit(void);
+
+
 #endif
index c22c9210a43fb1b298775dd51e2eb1f7f905ca37..7b2cd67f21b097bfc6f7b76c37a3e6bdae113531 100644 (file)
@@ -21,7 +21,8 @@ static int copy_params(struct dm_ioctl *user, struct dm_ioctl **result)
        if (copy_from_user(&tmp, user, sizeof(tmp)))
                return -EFAULT;
 
-       if (!(dmi = (struct dm_ioctl *) vmalloc(tmp.data_size)))
+       dmi = (struct dm_ioctl *) vmalloc(tmp.data_size);
+       if (!dmi)
                return -ENOMEM;
 
        if (copy_from_user(dmi, user, tmp.data_size))
@@ -350,6 +351,9 @@ int dm_interface_init(void)
 
        r = devfs_generate_path(_dm_misc.devfs_handle, rname + 3,
                                sizeof rname - 3);
+       if (r == -ENOSYS)
+               return 0;       /* devfs not present */
+
        if (r < 0) {
                DMERR("devfs_generate_path failed for control device");
                goto failed;
This page took 0.032803 seconds and 5 git commands to generate.