]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - block/genhd.c
block: fix accounting bug on cross partition merges
[mv-sheeva.git] / block / genhd.c
index 5fa2b44a72ffd22994d2e648b3d247f3f4877c95..85c150598830b2378c1db970e228ed5261d24d3d 100644 (file)
@@ -239,7 +239,7 @@ static struct blk_major_name {
 } *major_names[BLKDEV_MAJOR_HASH_SIZE];
 
 /* index in the above - for now: assume no multimajor ranges */
-static inline int major_to_index(int major)
+static inline int major_to_index(unsigned major)
 {
        return major % BLKDEV_MAJOR_HASH_SIZE;
 }
@@ -735,7 +735,7 @@ static void *show_partition_start(struct seq_file *seqf, loff_t *pos)
        static void *p;
 
        p = disk_seqf_start(seqf, pos);
-       if (!IS_ERR(p) && p && !*pos)
+       if (!IS_ERR_OR_NULL(p) && !*pos)
                seq_puts(seqf, "major minor  #blocks  name\n\n");
        return p;
 }
@@ -1192,6 +1192,7 @@ struct gendisk *alloc_disk_node(int minors, int node_id)
                        return NULL;
                }
                disk->part_tbl->part[0] = &disk->part0;
+               kref_init(&disk->part0.ref);
 
                disk->minors = minors;
                rand_initialize_disk(disk);