diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/partitions/acorn.c | 35 | ||||
-rw-r--r-- | fs/partitions/amiga.c | 20 | ||||
-rw-r--r-- | fs/partitions/atari.c | 12 | ||||
-rw-r--r-- | fs/partitions/check.c | 22 | ||||
-rw-r--r-- | fs/partitions/check.h | 6 | ||||
-rw-r--r-- | fs/partitions/efi.c | 2 | ||||
-rw-r--r-- | fs/partitions/ibm.c | 17 | ||||
-rw-r--r-- | fs/partitions/karma.c | 2 | ||||
-rw-r--r-- | fs/partitions/ldm.c | 4 | ||||
-rw-r--r-- | fs/partitions/mac.c | 4 | ||||
-rw-r--r-- | fs/partitions/msdos.c | 67 | ||||
-rw-r--r-- | fs/partitions/osf.c | 2 | ||||
-rw-r--r-- | fs/partitions/sgi.c | 2 | ||||
-rw-r--r-- | fs/partitions/sun.c | 2 | ||||
-rw-r--r-- | fs/partitions/sysv68.c | 9 | ||||
-rw-r--r-- | fs/partitions/ultrix.c | 2 |
16 files changed, 136 insertions, 72 deletions
diff --git a/fs/partitions/acorn.c b/fs/partitions/acorn.c index 6921e7890be6..fbeb697374d5 100644 --- a/fs/partitions/acorn.c +++ b/fs/partitions/acorn.c | |||
@@ -45,8 +45,11 @@ adfs_partition(struct parsed_partitions *state, char *name, char *data, | |||
45 | nr_sects = (le32_to_cpu(dr->disc_size_high) << 23) | | 45 | nr_sects = (le32_to_cpu(dr->disc_size_high) << 23) | |
46 | (le32_to_cpu(dr->disc_size) >> 9); | 46 | (le32_to_cpu(dr->disc_size) >> 9); |
47 | 47 | ||
48 | if (name) | 48 | if (name) { |
49 | printk(" [%s]", name); | 49 | strlcat(state->pp_buf, " [", PAGE_SIZE); |
50 | strlcat(state->pp_buf, name, PAGE_SIZE); | ||
51 | strlcat(state->pp_buf, "]", PAGE_SIZE); | ||
52 | } | ||
50 | put_partition(state, slot, first_sector, nr_sects); | 53 | put_partition(state, slot, first_sector, nr_sects); |
51 | return dr; | 54 | return dr; |
52 | } | 55 | } |
@@ -81,14 +84,14 @@ static int riscix_partition(struct parsed_partitions *state, | |||
81 | if (!rr) | 84 | if (!rr) |
82 | return -1; | 85 | return -1; |
83 | 86 | ||
84 | printk(" [RISCiX]"); | 87 | strlcat(state->pp_buf, " [RISCiX]", PAGE_SIZE); |
85 | 88 | ||
86 | 89 | ||
87 | if (rr->magic == RISCIX_MAGIC) { | 90 | if (rr->magic == RISCIX_MAGIC) { |
88 | unsigned long size = nr_sects > 2 ? 2 : nr_sects; | 91 | unsigned long size = nr_sects > 2 ? 2 : nr_sects; |
89 | int part; | 92 | int part; |
90 | 93 | ||
91 | printk(" <"); | 94 | strlcat(state->pp_buf, " <", PAGE_SIZE); |
92 | 95 | ||
93 | put_partition(state, slot++, first_sect, size); | 96 | put_partition(state, slot++, first_sect, size); |
94 | for (part = 0; part < 8; part++) { | 97 | for (part = 0; part < 8; part++) { |
@@ -97,11 +100,13 @@ static int riscix_partition(struct parsed_partitions *state, | |||
97 | put_partition(state, slot++, | 100 | put_partition(state, slot++, |
98 | le32_to_cpu(rr->part[part].start), | 101 | le32_to_cpu(rr->part[part].start), |
99 | le32_to_cpu(rr->part[part].length)); | 102 | le32_to_cpu(rr->part[part].length)); |
100 | printk("(%s)", rr->part[part].name); | 103 | strlcat(state->pp_buf, "(", PAGE_SIZE); |
104 | strlcat(state->pp_buf, rr->part[part].name, PAGE_SIZE); | ||
105 | strlcat(state->pp_buf, ")", PAGE_SIZE); | ||
101 | } | 106 | } |
102 | } | 107 | } |
103 | 108 | ||
104 | printk(" >\n"); | 109 | strlcat(state->pp_buf, " >\n", PAGE_SIZE); |
105 | } else { | 110 | } else { |
106 | put_partition(state, slot++, first_sect, nr_sects); | 111 | put_partition(state, slot++, first_sect, nr_sects); |
107 | } | 112 | } |
@@ -131,7 +136,7 @@ static int linux_partition(struct parsed_partitions *state, | |||
131 | struct linux_part *linuxp; | 136 | struct linux_part *linuxp; |
132 | unsigned long size = nr_sects > 2 ? 2 : nr_sects; | 137 | unsigned long size = nr_sects > 2 ? 2 : nr_sects; |
133 | 138 | ||
134 | printk(" [Linux]"); | 139 | strlcat(state->pp_buf, " [Linux]", PAGE_SIZE); |
135 | 140 | ||
136 | put_partition(state, slot++, first_sect, size); | 141 | put_partition(state, slot++, first_sect, size); |
137 | 142 | ||
@@ -139,7 +144,7 @@ static int linux_partition(struct parsed_partitions *state, | |||
139 | if (!linuxp) | 144 | if (!linuxp) |
140 | return -1; | 145 | return -1; |
141 | 146 | ||
142 | printk(" <"); | 147 | strlcat(state->pp_buf, " <", PAGE_SIZE); |
143 | while (linuxp->magic == cpu_to_le32(LINUX_NATIVE_MAGIC) || | 148 | while (linuxp->magic == cpu_to_le32(LINUX_NATIVE_MAGIC) || |
144 | linuxp->magic == cpu_to_le32(LINUX_SWAP_MAGIC)) { | 149 | linuxp->magic == cpu_to_le32(LINUX_SWAP_MAGIC)) { |
145 | if (slot == state->limit) | 150 | if (slot == state->limit) |
@@ -149,7 +154,7 @@ static int linux_partition(struct parsed_partitions *state, | |||
149 | le32_to_cpu(linuxp->nr_sects)); | 154 | le32_to_cpu(linuxp->nr_sects)); |
150 | linuxp ++; | 155 | linuxp ++; |
151 | } | 156 | } |
152 | printk(" >"); | 157 | strlcat(state->pp_buf, " >", PAGE_SIZE); |
153 | 158 | ||
154 | put_dev_sector(sect); | 159 | put_dev_sector(sect); |
155 | return slot; | 160 | return slot; |
@@ -294,7 +299,7 @@ int adfspart_check_ADFS(struct parsed_partitions *state) | |||
294 | break; | 299 | break; |
295 | } | 300 | } |
296 | } | 301 | } |
297 | printk("\n"); | 302 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
298 | return 1; | 303 | return 1; |
299 | } | 304 | } |
300 | #endif | 305 | #endif |
@@ -367,7 +372,7 @@ int adfspart_check_ICS(struct parsed_partitions *state) | |||
367 | return 0; | 372 | return 0; |
368 | } | 373 | } |
369 | 374 | ||
370 | printk(" [ICS]"); | 375 | strlcat(state->pp_buf, " [ICS]", PAGE_SIZE); |
371 | 376 | ||
372 | for (slot = 1, p = (const struct ics_part *)data; p->size; p++) { | 377 | for (slot = 1, p = (const struct ics_part *)data; p->size; p++) { |
373 | u32 start = le32_to_cpu(p->start); | 378 | u32 start = le32_to_cpu(p->start); |
@@ -401,7 +406,7 @@ int adfspart_check_ICS(struct parsed_partitions *state) | |||
401 | } | 406 | } |
402 | 407 | ||
403 | put_dev_sector(sect); | 408 | put_dev_sector(sect); |
404 | printk("\n"); | 409 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
405 | return 1; | 410 | return 1; |
406 | } | 411 | } |
407 | #endif | 412 | #endif |
@@ -461,7 +466,7 @@ int adfspart_check_POWERTEC(struct parsed_partitions *state) | |||
461 | return 0; | 466 | return 0; |
462 | } | 467 | } |
463 | 468 | ||
464 | printk(" [POWERTEC]"); | 469 | strlcat(state->pp_buf, " [POWERTEC]", PAGE_SIZE); |
465 | 470 | ||
466 | for (i = 0, p = (const struct ptec_part *)data; i < 12; i++, p++) { | 471 | for (i = 0, p = (const struct ptec_part *)data; i < 12; i++, p++) { |
467 | u32 start = le32_to_cpu(p->start); | 472 | u32 start = le32_to_cpu(p->start); |
@@ -472,7 +477,7 @@ int adfspart_check_POWERTEC(struct parsed_partitions *state) | |||
472 | } | 477 | } |
473 | 478 | ||
474 | put_dev_sector(sect); | 479 | put_dev_sector(sect); |
475 | printk("\n"); | 480 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
476 | return 1; | 481 | return 1; |
477 | } | 482 | } |
478 | #endif | 483 | #endif |
@@ -543,7 +548,7 @@ int adfspart_check_EESOX(struct parsed_partitions *state) | |||
543 | 548 | ||
544 | size = get_capacity(state->bdev->bd_disk); | 549 | size = get_capacity(state->bdev->bd_disk); |
545 | put_partition(state, slot++, start, size - start); | 550 | put_partition(state, slot++, start, size - start); |
546 | printk("\n"); | 551 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
547 | } | 552 | } |
548 | 553 | ||
549 | return i ? 1 : 0; | 554 | return i ? 1 : 0; |
diff --git a/fs/partitions/amiga.c b/fs/partitions/amiga.c index ba443d4229f8..70cbf44a1560 100644 --- a/fs/partitions/amiga.c +++ b/fs/partitions/amiga.c | |||
@@ -69,7 +69,13 @@ int amiga_partition(struct parsed_partitions *state) | |||
69 | /* blksize is blocks per 512 byte standard block */ | 69 | /* blksize is blocks per 512 byte standard block */ |
70 | blksize = be32_to_cpu( rdb->rdb_BlockBytes ) / 512; | 70 | blksize = be32_to_cpu( rdb->rdb_BlockBytes ) / 512; |
71 | 71 | ||
72 | printk(" RDSK (%d)", blksize * 512); /* Be more informative */ | 72 | { |
73 | char tmp[7 + 10 + 1 + 1]; | ||
74 | |||
75 | /* Be more informative */ | ||
76 | snprintf(tmp, sizeof(tmp), " RDSK (%d)", blksize * 512); | ||
77 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
78 | } | ||
73 | blk = be32_to_cpu(rdb->rdb_PartitionList); | 79 | blk = be32_to_cpu(rdb->rdb_PartitionList); |
74 | put_dev_sector(sect); | 80 | put_dev_sector(sect); |
75 | for (part = 1; blk>0 && part<=16; part++, put_dev_sector(sect)) { | 81 | for (part = 1; blk>0 && part<=16; part++, put_dev_sector(sect)) { |
@@ -106,23 +112,27 @@ int amiga_partition(struct parsed_partitions *state) | |||
106 | { | 112 | { |
107 | /* Be even more informative to aid mounting */ | 113 | /* Be even more informative to aid mounting */ |
108 | char dostype[4]; | 114 | char dostype[4]; |
115 | char tmp[42]; | ||
116 | |||
109 | __be32 *dt = (__be32 *)dostype; | 117 | __be32 *dt = (__be32 *)dostype; |
110 | *dt = pb->pb_Environment[16]; | 118 | *dt = pb->pb_Environment[16]; |
111 | if (dostype[3] < ' ') | 119 | if (dostype[3] < ' ') |
112 | printk(" (%c%c%c^%c)", | 120 | snprintf(tmp, sizeof(tmp), " (%c%c%c^%c)", |
113 | dostype[0], dostype[1], | 121 | dostype[0], dostype[1], |
114 | dostype[2], dostype[3] + '@' ); | 122 | dostype[2], dostype[3] + '@' ); |
115 | else | 123 | else |
116 | printk(" (%c%c%c%c)", | 124 | snprintf(tmp, sizeof(tmp), " (%c%c%c%c)", |
117 | dostype[0], dostype[1], | 125 | dostype[0], dostype[1], |
118 | dostype[2], dostype[3]); | 126 | dostype[2], dostype[3]); |
119 | printk("(res %d spb %d)", | 127 | strlcat(state->pp_buf, tmp, PAGE_SIZE); |
128 | snprintf(tmp, sizeof(tmp), "(res %d spb %d)", | ||
120 | be32_to_cpu(pb->pb_Environment[6]), | 129 | be32_to_cpu(pb->pb_Environment[6]), |
121 | be32_to_cpu(pb->pb_Environment[4])); | 130 | be32_to_cpu(pb->pb_Environment[4])); |
131 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
122 | } | 132 | } |
123 | res = 1; | 133 | res = 1; |
124 | } | 134 | } |
125 | printk("\n"); | 135 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
126 | 136 | ||
127 | rdb_done: | 137 | rdb_done: |
128 | return res; | 138 | return res; |
diff --git a/fs/partitions/atari.c b/fs/partitions/atari.c index 4439ff1b6cec..9875b05e80a2 100644 --- a/fs/partitions/atari.c +++ b/fs/partitions/atari.c | |||
@@ -62,7 +62,7 @@ int atari_partition(struct parsed_partitions *state) | |||
62 | } | 62 | } |
63 | 63 | ||
64 | pi = &rs->part[0]; | 64 | pi = &rs->part[0]; |
65 | printk (" AHDI"); | 65 | strlcat(state->pp_buf, " AHDI", PAGE_SIZE); |
66 | for (slot = 1; pi < &rs->part[4] && slot < state->limit; slot++, pi++) { | 66 | for (slot = 1; pi < &rs->part[4] && slot < state->limit; slot++, pi++) { |
67 | struct rootsector *xrs; | 67 | struct rootsector *xrs; |
68 | Sector sect2; | 68 | Sector sect2; |
@@ -81,7 +81,7 @@ int atari_partition(struct parsed_partitions *state) | |||
81 | #ifdef ICD_PARTS | 81 | #ifdef ICD_PARTS |
82 | part_fmt = 1; | 82 | part_fmt = 1; |
83 | #endif | 83 | #endif |
84 | printk(" XGM<"); | 84 | strlcat(state->pp_buf, " XGM<", PAGE_SIZE); |
85 | partsect = extensect = be32_to_cpu(pi->st); | 85 | partsect = extensect = be32_to_cpu(pi->st); |
86 | while (1) { | 86 | while (1) { |
87 | xrs = read_part_sector(state, partsect, §2); | 87 | xrs = read_part_sector(state, partsect, §2); |
@@ -120,14 +120,14 @@ int atari_partition(struct parsed_partitions *state) | |||
120 | break; | 120 | break; |
121 | } | 121 | } |
122 | } | 122 | } |
123 | printk(" >"); | 123 | strlcat(state->pp_buf, " >", PAGE_SIZE); |
124 | } | 124 | } |
125 | #ifdef ICD_PARTS | 125 | #ifdef ICD_PARTS |
126 | if ( part_fmt!=1 ) { /* no extended partitions -> test ICD-format */ | 126 | if ( part_fmt!=1 ) { /* no extended partitions -> test ICD-format */ |
127 | pi = &rs->icdpart[0]; | 127 | pi = &rs->icdpart[0]; |
128 | /* sanity check: no ICD format if first partition invalid */ | 128 | /* sanity check: no ICD format if first partition invalid */ |
129 | if (OK_id(pi->id)) { | 129 | if (OK_id(pi->id)) { |
130 | printk(" ICD<"); | 130 | strlcat(state->pp_buf, " ICD<", PAGE_SIZE); |
131 | for (; pi < &rs->icdpart[8] && slot < state->limit; slot++, pi++) { | 131 | for (; pi < &rs->icdpart[8] && slot < state->limit; slot++, pi++) { |
132 | /* accept only GEM,BGM,RAW,LNX,SWP partitions */ | 132 | /* accept only GEM,BGM,RAW,LNX,SWP partitions */ |
133 | if (!((pi->flg & 1) && OK_id(pi->id))) | 133 | if (!((pi->flg & 1) && OK_id(pi->id))) |
@@ -137,13 +137,13 @@ int atari_partition(struct parsed_partitions *state) | |||
137 | be32_to_cpu(pi->st), | 137 | be32_to_cpu(pi->st), |
138 | be32_to_cpu(pi->siz)); | 138 | be32_to_cpu(pi->siz)); |
139 | } | 139 | } |
140 | printk(" >"); | 140 | strlcat(state->pp_buf, " >", PAGE_SIZE); |
141 | } | 141 | } |
142 | } | 142 | } |
143 | #endif | 143 | #endif |
144 | put_dev_sector(sect); | 144 | put_dev_sector(sect); |
145 | 145 | ||
146 | printk ("\n"); | 146 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
147 | 147 | ||
148 | return 1; | 148 | return 1; |
149 | } | 149 | } |
diff --git a/fs/partitions/check.c b/fs/partitions/check.c index 72c52656dc2e..79fbf3f390f0 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c | |||
@@ -164,10 +164,16 @@ check_partition(struct gendisk *hd, struct block_device *bdev) | |||
164 | state = kzalloc(sizeof(struct parsed_partitions), GFP_KERNEL); | 164 | state = kzalloc(sizeof(struct parsed_partitions), GFP_KERNEL); |
165 | if (!state) | 165 | if (!state) |
166 | return NULL; | 166 | return NULL; |
167 | state->pp_buf = (char *)__get_free_page(GFP_KERNEL); | ||
168 | if (!state->pp_buf) { | ||
169 | kfree(state); | ||
170 | return NULL; | ||
171 | } | ||
172 | state->pp_buf[0] = '\0'; | ||
167 | 173 | ||
168 | state->bdev = bdev; | 174 | state->bdev = bdev; |
169 | disk_name(hd, 0, state->name); | 175 | disk_name(hd, 0, state->name); |
170 | printk(KERN_INFO " %s:", state->name); | 176 | snprintf(state->pp_buf, PAGE_SIZE, " %s:", state->name); |
171 | if (isdigit(state->name[strlen(state->name)-1])) | 177 | if (isdigit(state->name[strlen(state->name)-1])) |
172 | sprintf(state->name, "p"); | 178 | sprintf(state->name, "p"); |
173 | 179 | ||
@@ -185,17 +191,25 @@ check_partition(struct gendisk *hd, struct block_device *bdev) | |||
185 | } | 191 | } |
186 | 192 | ||
187 | } | 193 | } |
188 | if (res > 0) | 194 | if (res > 0) { |
195 | printk(KERN_INFO "%s", state->pp_buf); | ||
196 | |||
197 | free_page((unsigned long)state->pp_buf); | ||
189 | return state; | 198 | return state; |
199 | } | ||
190 | if (state->access_beyond_eod) | 200 | if (state->access_beyond_eod) |
191 | err = -ENOSPC; | 201 | err = -ENOSPC; |
192 | if (err) | 202 | if (err) |
193 | /* The partition is unrecognized. So report I/O errors if there were any */ | 203 | /* The partition is unrecognized. So report I/O errors if there were any */ |
194 | res = err; | 204 | res = err; |
195 | if (!res) | 205 | if (!res) |
196 | printk(" unknown partition table\n"); | 206 | strlcat(state->pp_buf, " unknown partition table\n", PAGE_SIZE); |
197 | else if (warn_no_part) | 207 | else if (warn_no_part) |
198 | printk(" unable to read partition table\n"); | 208 | strlcat(state->pp_buf, " unable to read partition table\n", PAGE_SIZE); |
209 | |||
210 | printk(KERN_INFO "%s", state->pp_buf); | ||
211 | |||
212 | free_page((unsigned long)state->pp_buf); | ||
199 | kfree(state); | 213 | kfree(state); |
200 | return ERR_PTR(res); | 214 | return ERR_PTR(res); |
201 | } | 215 | } |
diff --git a/fs/partitions/check.h b/fs/partitions/check.h index 52f8bd399396..8e4e103ba216 100644 --- a/fs/partitions/check.h +++ b/fs/partitions/check.h | |||
@@ -16,6 +16,7 @@ struct parsed_partitions { | |||
16 | int next; | 16 | int next; |
17 | int limit; | 17 | int limit; |
18 | bool access_beyond_eod; | 18 | bool access_beyond_eod; |
19 | char *pp_buf; | ||
19 | }; | 20 | }; |
20 | 21 | ||
21 | static inline void *read_part_sector(struct parsed_partitions *state, | 22 | static inline void *read_part_sector(struct parsed_partitions *state, |
@@ -32,9 +33,12 @@ static inline void | |||
32 | put_partition(struct parsed_partitions *p, int n, sector_t from, sector_t size) | 33 | put_partition(struct parsed_partitions *p, int n, sector_t from, sector_t size) |
33 | { | 34 | { |
34 | if (n < p->limit) { | 35 | if (n < p->limit) { |
36 | char tmp[1 + BDEVNAME_SIZE + 10 + 1]; | ||
37 | |||
35 | p->parts[n].from = from; | 38 | p->parts[n].from = from; |
36 | p->parts[n].size = size; | 39 | p->parts[n].size = size; |
37 | printk(" %s%d", p->name, n); | 40 | snprintf(tmp, sizeof(tmp), " %s%d", p->name, n); |
41 | strlcat(p->pp_buf, tmp, PAGE_SIZE); | ||
38 | } | 42 | } |
39 | } | 43 | } |
40 | 44 | ||
diff --git a/fs/partitions/efi.c b/fs/partitions/efi.c index 9efb2cfe2410..dbb44d4bb8a7 100644 --- a/fs/partitions/efi.c +++ b/fs/partitions/efi.c | |||
@@ -630,6 +630,6 @@ int efi_partition(struct parsed_partitions *state) | |||
630 | } | 630 | } |
631 | kfree(ptes); | 631 | kfree(ptes); |
632 | kfree(gpt); | 632 | kfree(gpt); |
633 | printk("\n"); | 633 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
634 | return 1; | 634 | return 1; |
635 | } | 635 | } |
diff --git a/fs/partitions/ibm.c b/fs/partitions/ibm.c index fc8497643fd0..d1b8a5c4bc0a 100644 --- a/fs/partitions/ibm.c +++ b/fs/partitions/ibm.c | |||
@@ -75,6 +75,7 @@ int ibm_partition(struct parsed_partitions *state) | |||
75 | unsigned char *data; | 75 | unsigned char *data; |
76 | Sector sect; | 76 | Sector sect; |
77 | sector_t labelsect; | 77 | sector_t labelsect; |
78 | char tmp[64]; | ||
78 | 79 | ||
79 | res = 0; | 80 | res = 0; |
80 | blocksize = bdev_logical_block_size(bdev); | 81 | blocksize = bdev_logical_block_size(bdev); |
@@ -144,13 +145,15 @@ int ibm_partition(struct parsed_partitions *state) | |||
144 | */ | 145 | */ |
145 | blocksize = label->cms.block_size; | 146 | blocksize = label->cms.block_size; |
146 | if (label->cms.disk_offset != 0) { | 147 | if (label->cms.disk_offset != 0) { |
147 | printk("CMS1/%8s(MDSK):", name); | 148 | snprintf(tmp, sizeof(tmp), "CMS1/%8s(MDSK):", name); |
149 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
148 | /* disk is reserved minidisk */ | 150 | /* disk is reserved minidisk */ |
149 | offset = label->cms.disk_offset; | 151 | offset = label->cms.disk_offset; |
150 | size = (label->cms.block_count - 1) | 152 | size = (label->cms.block_count - 1) |
151 | * (blocksize >> 9); | 153 | * (blocksize >> 9); |
152 | } else { | 154 | } else { |
153 | printk("CMS1/%8s:", name); | 155 | snprintf(tmp, sizeof(tmp), "CMS1/%8s:", name); |
156 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
154 | offset = (info->label_block + 1); | 157 | offset = (info->label_block + 1); |
155 | size = label->cms.block_count | 158 | size = label->cms.block_count |
156 | * (blocksize >> 9); | 159 | * (blocksize >> 9); |
@@ -159,7 +162,8 @@ int ibm_partition(struct parsed_partitions *state) | |||
159 | size-offset*(blocksize >> 9)); | 162 | size-offset*(blocksize >> 9)); |
160 | } else { | 163 | } else { |
161 | if (strncmp(type, "LNX1", 4) == 0) { | 164 | if (strncmp(type, "LNX1", 4) == 0) { |
162 | printk("LNX1/%8s:", name); | 165 | snprintf(tmp, sizeof(tmp), "LNX1/%8s:", name); |
166 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
163 | if (label->lnx.ldl_version == 0xf2) { | 167 | if (label->lnx.ldl_version == 0xf2) { |
164 | fmt_size = label->lnx.formatted_blocks | 168 | fmt_size = label->lnx.formatted_blocks |
165 | * (blocksize >> 9); | 169 | * (blocksize >> 9); |
@@ -178,7 +182,7 @@ int ibm_partition(struct parsed_partitions *state) | |||
178 | offset = (info->label_block + 1); | 182 | offset = (info->label_block + 1); |
179 | } else { | 183 | } else { |
180 | /* unlabeled disk */ | 184 | /* unlabeled disk */ |
181 | printk("(nonl)"); | 185 | strlcat(tmp, sizeof(tmp), "(nonl)", PAGE_SIZE); |
182 | size = i_size >> 9; | 186 | size = i_size >> 9; |
183 | offset = (info->label_block + 1); | 187 | offset = (info->label_block + 1); |
184 | } | 188 | } |
@@ -197,7 +201,8 @@ int ibm_partition(struct parsed_partitions *state) | |||
197 | * if not, something is wrong, skipping partition detection | 201 | * if not, something is wrong, skipping partition detection |
198 | */ | 202 | */ |
199 | if (strncmp(type, "VOL1", 4) == 0) { | 203 | if (strncmp(type, "VOL1", 4) == 0) { |
200 | printk("VOL1/%8s:", name); | 204 | snprintf(tmp, sizeof(tmp), "VOL1/%8s:", name); |
205 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
201 | /* | 206 | /* |
202 | * get block number and read then go through format1 | 207 | * get block number and read then go through format1 |
203 | * labels | 208 | * labels |
@@ -253,7 +258,7 @@ int ibm_partition(struct parsed_partitions *state) | |||
253 | 258 | ||
254 | } | 259 | } |
255 | 260 | ||
256 | printk("\n"); | 261 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
257 | goto out_freeall; | 262 | goto out_freeall; |
258 | 263 | ||
259 | 264 | ||
diff --git a/fs/partitions/karma.c b/fs/partitions/karma.c index 1cc928bb762f..0ea19312706b 100644 --- a/fs/partitions/karma.c +++ b/fs/partitions/karma.c | |||
@@ -50,7 +50,7 @@ int karma_partition(struct parsed_partitions *state) | |||
50 | } | 50 | } |
51 | slot++; | 51 | slot++; |
52 | } | 52 | } |
53 | printk("\n"); | 53 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
54 | put_dev_sector(sect); | 54 | put_dev_sector(sect); |
55 | return 1; | 55 | return 1; |
56 | } | 56 | } |
diff --git a/fs/partitions/ldm.c b/fs/partitions/ldm.c index 648c9d8f3357..5bf8a04b5d9b 100644 --- a/fs/partitions/ldm.c +++ b/fs/partitions/ldm.c | |||
@@ -643,7 +643,7 @@ static bool ldm_create_data_partitions (struct parsed_partitions *pp, | |||
643 | return false; | 643 | return false; |
644 | } | 644 | } |
645 | 645 | ||
646 | printk (" [LDM]"); | 646 | strlcat(pp->pp_buf, " [LDM]", PAGE_SIZE); |
647 | 647 | ||
648 | /* Create the data partitions */ | 648 | /* Create the data partitions */ |
649 | list_for_each (item, &ldb->v_part) { | 649 | list_for_each (item, &ldb->v_part) { |
@@ -658,7 +658,7 @@ static bool ldm_create_data_partitions (struct parsed_partitions *pp, | |||
658 | part_num++; | 658 | part_num++; |
659 | } | 659 | } |
660 | 660 | ||
661 | printk ("\n"); | 661 | strlcat(pp->pp_buf, "\n", PAGE_SIZE); |
662 | return true; | 662 | return true; |
663 | } | 663 | } |
664 | 664 | ||
diff --git a/fs/partitions/mac.c b/fs/partitions/mac.c index 74465ff7c263..68d6a216ee79 100644 --- a/fs/partitions/mac.c +++ b/fs/partitions/mac.c | |||
@@ -59,7 +59,7 @@ int mac_partition(struct parsed_partitions *state) | |||
59 | put_dev_sector(sect); | 59 | put_dev_sector(sect); |
60 | return 0; /* not a MacOS disk */ | 60 | return 0; /* not a MacOS disk */ |
61 | } | 61 | } |
62 | printk(" [mac]"); | 62 | strlcat(state->pp_buf, " [mac]", PAGE_SIZE); |
63 | blocks_in_map = be32_to_cpu(part->map_count); | 63 | blocks_in_map = be32_to_cpu(part->map_count); |
64 | for (blk = 1; blk <= blocks_in_map; ++blk) { | 64 | for (blk = 1; blk <= blocks_in_map; ++blk) { |
65 | int pos = blk * secsize; | 65 | int pos = blk * secsize; |
@@ -128,6 +128,6 @@ int mac_partition(struct parsed_partitions *state) | |||
128 | #endif | 128 | #endif |
129 | 129 | ||
130 | put_dev_sector(sect); | 130 | put_dev_sector(sect); |
131 | printk("\n"); | 131 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
132 | return 1; | 132 | return 1; |
133 | } | 133 | } |
diff --git a/fs/partitions/msdos.c b/fs/partitions/msdos.c index 15bfb7b1e044..5f79a6677c69 100644 --- a/fs/partitions/msdos.c +++ b/fs/partitions/msdos.c | |||
@@ -213,10 +213,18 @@ static void parse_solaris_x86(struct parsed_partitions *state, | |||
213 | put_dev_sector(sect); | 213 | put_dev_sector(sect); |
214 | return; | 214 | return; |
215 | } | 215 | } |
216 | printk(" %s%d: <solaris:", state->name, origin); | 216 | { |
217 | char tmp[1 + BDEVNAME_SIZE + 10 + 11 + 1]; | ||
218 | |||
219 | snprintf(tmp, sizeof(tmp), " %s%d: <solaris:", state->name, origin); | ||
220 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
221 | } | ||
217 | if (le32_to_cpu(v->v_version) != 1) { | 222 | if (le32_to_cpu(v->v_version) != 1) { |
218 | printk(" cannot handle version %d vtoc>\n", | 223 | char tmp[64]; |
219 | le32_to_cpu(v->v_version)); | 224 | |
225 | snprintf(tmp, sizeof(tmp), " cannot handle version %d vtoc>\n", | ||
226 | le32_to_cpu(v->v_version)); | ||
227 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
220 | put_dev_sector(sect); | 228 | put_dev_sector(sect); |
221 | return; | 229 | return; |
222 | } | 230 | } |
@@ -224,9 +232,12 @@ static void parse_solaris_x86(struct parsed_partitions *state, | |||
224 | max_nparts = le16_to_cpu (v->v_nparts) > 8 ? SOLARIS_X86_NUMSLICE : 8; | 232 | max_nparts = le16_to_cpu (v->v_nparts) > 8 ? SOLARIS_X86_NUMSLICE : 8; |
225 | for (i=0; i<max_nparts && state->next<state->limit; i++) { | 233 | for (i=0; i<max_nparts && state->next<state->limit; i++) { |
226 | struct solaris_x86_slice *s = &v->v_slice[i]; | 234 | struct solaris_x86_slice *s = &v->v_slice[i]; |
235 | char tmp[3 + 10 + 1 + 1]; | ||
236 | |||
227 | if (s->s_size == 0) | 237 | if (s->s_size == 0) |
228 | continue; | 238 | continue; |
229 | printk(" [s%d]", i); | 239 | snprintf(tmp, sizeof(tmp), " [s%d]", i); |
240 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
230 | /* solaris partitions are relative to current MS-DOS | 241 | /* solaris partitions are relative to current MS-DOS |
231 | * one; must add the offset of the current partition */ | 242 | * one; must add the offset of the current partition */ |
232 | put_partition(state, state->next++, | 243 | put_partition(state, state->next++, |
@@ -234,7 +245,7 @@ static void parse_solaris_x86(struct parsed_partitions *state, | |||
234 | le32_to_cpu(s->s_size)); | 245 | le32_to_cpu(s->s_size)); |
235 | } | 246 | } |
236 | put_dev_sector(sect); | 247 | put_dev_sector(sect); |
237 | printk(" >\n"); | 248 | strlcat(state->pp_buf, " >\n", PAGE_SIZE); |
238 | #endif | 249 | #endif |
239 | } | 250 | } |
240 | 251 | ||
@@ -250,6 +261,7 @@ static void parse_bsd(struct parsed_partitions *state, | |||
250 | Sector sect; | 261 | Sector sect; |
251 | struct bsd_disklabel *l; | 262 | struct bsd_disklabel *l; |
252 | struct bsd_partition *p; | 263 | struct bsd_partition *p; |
264 | char tmp[64]; | ||
253 | 265 | ||
254 | l = read_part_sector(state, offset + 1, §); | 266 | l = read_part_sector(state, offset + 1, §); |
255 | if (!l) | 267 | if (!l) |
@@ -258,7 +270,9 @@ static void parse_bsd(struct parsed_partitions *state, | |||
258 | put_dev_sector(sect); | 270 | put_dev_sector(sect); |
259 | return; | 271 | return; |
260 | } | 272 | } |
261 | printk(" %s%d: <%s:", state->name, origin, flavour); | 273 | |
274 | snprintf(tmp, sizeof(tmp), " %s%d: <%s:", state->name, origin, flavour); | ||
275 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
262 | 276 | ||
263 | if (le16_to_cpu(l->d_npartitions) < max_partitions) | 277 | if (le16_to_cpu(l->d_npartitions) < max_partitions) |
264 | max_partitions = le16_to_cpu(l->d_npartitions); | 278 | max_partitions = le16_to_cpu(l->d_npartitions); |
@@ -275,16 +289,18 @@ static void parse_bsd(struct parsed_partitions *state, | |||
275 | /* full parent partition, we have it already */ | 289 | /* full parent partition, we have it already */ |
276 | continue; | 290 | continue; |
277 | if (offset > bsd_start || offset+size < bsd_start+bsd_size) { | 291 | if (offset > bsd_start || offset+size < bsd_start+bsd_size) { |
278 | printk("bad subpartition - ignored\n"); | 292 | strlcat(state->pp_buf, "bad subpartition - ignored\n", PAGE_SIZE); |
279 | continue; | 293 | continue; |
280 | } | 294 | } |
281 | put_partition(state, state->next++, bsd_start, bsd_size); | 295 | put_partition(state, state->next++, bsd_start, bsd_size); |
282 | } | 296 | } |
283 | put_dev_sector(sect); | 297 | put_dev_sector(sect); |
284 | if (le16_to_cpu(l->d_npartitions) > max_partitions) | 298 | if (le16_to_cpu(l->d_npartitions) > max_partitions) { |
285 | printk(" (ignored %d more)", | 299 | snprintf(tmp, sizeof(tmp), " (ignored %d more)", |
286 | le16_to_cpu(l->d_npartitions) - max_partitions); | 300 | le16_to_cpu(l->d_npartitions) - max_partitions); |
287 | printk(" >\n"); | 301 | strlcat(state->pp_buf, tmp, PAGE_SIZE); |
302 | } | ||
303 | strlcat(state->pp_buf, " >\n", PAGE_SIZE); | ||
288 | } | 304 | } |
289 | #endif | 305 | #endif |
290 | 306 | ||
@@ -333,7 +349,12 @@ static void parse_unixware(struct parsed_partitions *state, | |||
333 | put_dev_sector(sect); | 349 | put_dev_sector(sect); |
334 | return; | 350 | return; |
335 | } | 351 | } |
336 | printk(" %s%d: <unixware:", state->name, origin); | 352 | { |
353 | char tmp[1 + BDEVNAME_SIZE + 10 + 12 + 1]; | ||
354 | |||
355 | snprintf(tmp, sizeof(tmp), " %s%d: <unixware:", state->name, origin); | ||
356 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
357 | } | ||
337 | p = &l->vtoc.v_slice[1]; | 358 | p = &l->vtoc.v_slice[1]; |
338 | /* I omit the 0th slice as it is the same as whole disk. */ | 359 | /* I omit the 0th slice as it is the same as whole disk. */ |
339 | while (p - &l->vtoc.v_slice[0] < UNIXWARE_NUMSLICE) { | 360 | while (p - &l->vtoc.v_slice[0] < UNIXWARE_NUMSLICE) { |
@@ -347,7 +368,7 @@ static void parse_unixware(struct parsed_partitions *state, | |||
347 | p++; | 368 | p++; |
348 | } | 369 | } |
349 | put_dev_sector(sect); | 370 | put_dev_sector(sect); |
350 | printk(" >\n"); | 371 | strlcat(state->pp_buf, " >\n", PAGE_SIZE); |
351 | #endif | 372 | #endif |
352 | } | 373 | } |
353 | 374 | ||
@@ -376,8 +397,10 @@ static void parse_minix(struct parsed_partitions *state, | |||
376 | * the normal boot sector. */ | 397 | * the normal boot sector. */ |
377 | if (msdos_magic_present (data + 510) && | 398 | if (msdos_magic_present (data + 510) && |
378 | SYS_IND(p) == MINIX_PARTITION) { /* subpartition table present */ | 399 | SYS_IND(p) == MINIX_PARTITION) { /* subpartition table present */ |
400 | char tmp[1 + BDEVNAME_SIZE + 10 + 9 + 1]; | ||
379 | 401 | ||
380 | printk(" %s%d: <minix:", state->name, origin); | 402 | snprintf(tmp, sizeof(tmp), " %s%d: <minix:", state->name, origin); |
403 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
381 | for (i = 0; i < MINIX_NR_SUBPARTITIONS; i++, p++) { | 404 | for (i = 0; i < MINIX_NR_SUBPARTITIONS; i++, p++) { |
382 | if (state->next == state->limit) | 405 | if (state->next == state->limit) |
383 | break; | 406 | break; |
@@ -386,7 +409,7 @@ static void parse_minix(struct parsed_partitions *state, | |||
386 | put_partition(state, state->next++, | 409 | put_partition(state, state->next++, |
387 | start_sect(p), nr_sects(p)); | 410 | start_sect(p), nr_sects(p)); |
388 | } | 411 | } |
389 | printk(" >\n"); | 412 | strlcat(state->pp_buf, " >\n", PAGE_SIZE); |
390 | } | 413 | } |
391 | put_dev_sector(sect); | 414 | put_dev_sector(sect); |
392 | #endif /* CONFIG_MINIX_SUBPARTITION */ | 415 | #endif /* CONFIG_MINIX_SUBPARTITION */ |
@@ -425,7 +448,7 @@ int msdos_partition(struct parsed_partitions *state) | |||
425 | 448 | ||
426 | if (aix_magic_present(state, data)) { | 449 | if (aix_magic_present(state, data)) { |
427 | put_dev_sector(sect); | 450 | put_dev_sector(sect); |
428 | printk( " [AIX]"); | 451 | strlcat(state->pp_buf, " [AIX]", PAGE_SIZE); |
429 | return 0; | 452 | return 0; |
430 | } | 453 | } |
431 | 454 | ||
@@ -446,7 +469,7 @@ int msdos_partition(struct parsed_partitions *state) | |||
446 | fb = (struct fat_boot_sector *) data; | 469 | fb = (struct fat_boot_sector *) data; |
447 | if (slot == 1 && fb->reserved && fb->fats | 470 | if (slot == 1 && fb->reserved && fb->fats |
448 | && fat_valid_media(fb->media)) { | 471 | && fat_valid_media(fb->media)) { |
449 | printk("\n"); | 472 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
450 | put_dev_sector(sect); | 473 | put_dev_sector(sect); |
451 | return 1; | 474 | return 1; |
452 | } else { | 475 | } else { |
@@ -491,21 +514,21 @@ int msdos_partition(struct parsed_partitions *state) | |||
491 | n = min(size, max(sector_size, n)); | 514 | n = min(size, max(sector_size, n)); |
492 | put_partition(state, slot, start, n); | 515 | put_partition(state, slot, start, n); |
493 | 516 | ||
494 | printk(" <"); | 517 | strlcat(state->pp_buf, " <", PAGE_SIZE); |
495 | parse_extended(state, start, size); | 518 | parse_extended(state, start, size); |
496 | printk(" >"); | 519 | strlcat(state->pp_buf, " >", PAGE_SIZE); |
497 | continue; | 520 | continue; |
498 | } | 521 | } |
499 | put_partition(state, slot, start, size); | 522 | put_partition(state, slot, start, size); |
500 | if (SYS_IND(p) == LINUX_RAID_PARTITION) | 523 | if (SYS_IND(p) == LINUX_RAID_PARTITION) |
501 | state->parts[slot].flags = ADDPART_FLAG_RAID; | 524 | state->parts[slot].flags = ADDPART_FLAG_RAID; |
502 | if (SYS_IND(p) == DM6_PARTITION) | 525 | if (SYS_IND(p) == DM6_PARTITION) |
503 | printk("[DM]"); | 526 | strlcat(state->pp_buf, "[DM]", PAGE_SIZE); |
504 | if (SYS_IND(p) == EZD_PARTITION) | 527 | if (SYS_IND(p) == EZD_PARTITION) |
505 | printk("[EZD]"); | 528 | strlcat(state->pp_buf, "[EZD]", PAGE_SIZE); |
506 | } | 529 | } |
507 | 530 | ||
508 | printk("\n"); | 531 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
509 | 532 | ||
510 | /* second pass - output for each on a separate line */ | 533 | /* second pass - output for each on a separate line */ |
511 | p = (struct partition *) (0x1be + data); | 534 | p = (struct partition *) (0x1be + data); |
diff --git a/fs/partitions/osf.c b/fs/partitions/osf.c index fc22b85d436a..48cec7cbca17 100644 --- a/fs/partitions/osf.c +++ b/fs/partitions/osf.c | |||
@@ -72,7 +72,7 @@ int osf_partition(struct parsed_partitions *state) | |||
72 | le32_to_cpu(partition->p_size)); | 72 | le32_to_cpu(partition->p_size)); |
73 | slot++; | 73 | slot++; |
74 | } | 74 | } |
75 | printk("\n"); | 75 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
76 | put_dev_sector(sect); | 76 | put_dev_sector(sect); |
77 | return 1; | 77 | return 1; |
78 | } | 78 | } |
diff --git a/fs/partitions/sgi.c b/fs/partitions/sgi.c index 43b1df9aa16c..ea8a86dceaf4 100644 --- a/fs/partitions/sgi.c +++ b/fs/partitions/sgi.c | |||
@@ -76,7 +76,7 @@ int sgi_partition(struct parsed_partitions *state) | |||
76 | } | 76 | } |
77 | slot++; | 77 | slot++; |
78 | } | 78 | } |
79 | printk("\n"); | 79 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
80 | put_dev_sector(sect); | 80 | put_dev_sector(sect); |
81 | return 1; | 81 | return 1; |
82 | } | 82 | } |
diff --git a/fs/partitions/sun.c b/fs/partitions/sun.c index a32660e25f7f..b5b6fcfb3d36 100644 --- a/fs/partitions/sun.c +++ b/fs/partitions/sun.c | |||
@@ -116,7 +116,7 @@ int sun_partition(struct parsed_partitions *state) | |||
116 | } | 116 | } |
117 | slot++; | 117 | slot++; |
118 | } | 118 | } |
119 | printk("\n"); | 119 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
120 | put_dev_sector(sect); | 120 | put_dev_sector(sect); |
121 | return 1; | 121 | return 1; |
122 | } | 122 | } |
diff --git a/fs/partitions/sysv68.c b/fs/partitions/sysv68.c index 9030c864428e..9627ccffc1c4 100644 --- a/fs/partitions/sysv68.c +++ b/fs/partitions/sysv68.c | |||
@@ -54,6 +54,7 @@ int sysv68_partition(struct parsed_partitions *state) | |||
54 | unsigned char *data; | 54 | unsigned char *data; |
55 | struct dkblk0 *b; | 55 | struct dkblk0 *b; |
56 | struct slice *slice; | 56 | struct slice *slice; |
57 | char tmp[64]; | ||
57 | 58 | ||
58 | data = read_part_sector(state, 0, §); | 59 | data = read_part_sector(state, 0, §); |
59 | if (!data) | 60 | if (!data) |
@@ -73,7 +74,8 @@ int sysv68_partition(struct parsed_partitions *state) | |||
73 | return -1; | 74 | return -1; |
74 | 75 | ||
75 | slices -= 1; /* last slice is the whole disk */ | 76 | slices -= 1; /* last slice is the whole disk */ |
76 | printk("sysV68: %s(s%u)", state->name, slices); | 77 | snprintf(tmp, sizeof(tmp), "sysV68: %s(s%u)", state->name, slices); |
78 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
77 | slice = (struct slice *)data; | 79 | slice = (struct slice *)data; |
78 | for (i = 0; i < slices; i++, slice++) { | 80 | for (i = 0; i < slices; i++, slice++) { |
79 | if (slot == state->limit) | 81 | if (slot == state->limit) |
@@ -82,11 +84,12 @@ int sysv68_partition(struct parsed_partitions *state) | |||
82 | put_partition(state, slot, | 84 | put_partition(state, slot, |
83 | be32_to_cpu(slice->blkoff), | 85 | be32_to_cpu(slice->blkoff), |
84 | be32_to_cpu(slice->nblocks)); | 86 | be32_to_cpu(slice->nblocks)); |
85 | printk("(s%u)", i); | 87 | snprintf(tmp, sizeof(tmp), "(s%u)", i); |
88 | strlcat(state->pp_buf, tmp, PAGE_SIZE); | ||
86 | } | 89 | } |
87 | slot++; | 90 | slot++; |
88 | } | 91 | } |
89 | printk("\n"); | 92 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
90 | put_dev_sector(sect); | 93 | put_dev_sector(sect); |
91 | return 1; | 94 | return 1; |
92 | } | 95 | } |
diff --git a/fs/partitions/ultrix.c b/fs/partitions/ultrix.c index db9eef260364..8dbaf9f77a99 100644 --- a/fs/partitions/ultrix.c +++ b/fs/partitions/ultrix.c | |||
@@ -39,7 +39,7 @@ int ultrix_partition(struct parsed_partitions *state) | |||
39 | label->pt_part[i].pi_blkoff, | 39 | label->pt_part[i].pi_blkoff, |
40 | label->pt_part[i].pi_nblocks); | 40 | label->pt_part[i].pi_nblocks); |
41 | put_dev_sector(sect); | 41 | put_dev_sector(sect); |
42 | printk ("\n"); | 42 | strlcat(state->pp_buf, "\n", PAGE_SIZE); |
43 | return 1; | 43 | return 1; |
44 | } else { | 44 | } else { |
45 | put_dev_sector(sect); | 45 | put_dev_sector(sect); |