Lines Matching defs:root
55 struct ahdi_root *root;
68 if ((root = disk_read (fd, AHDI_BBLOCK, 1)) == NULL) {
71 cksum_ok = ahdi_cksum (root) == root->ar_checksum;
73 printf ("Previous root sector checksum was ");
76 bzero ((void *) root->ar_parts,
79 if ((root = malloc (sizeof (struct ahdi_root))) == NULL) {
83 bzero ((void *) root, sizeof (struct ahdi_root));
86 printf ("Clearing root sector - forcing incorrect checksum\n");
92 printf ("Writing root sector\n");
95 /* All partitions in root sector (including first XGM) */
100 if (ptable->parts[i].root == 0) {
104 root->ar_parts[j].ap_flg = 0x01;
106 root->ar_parts[j].ap_id[k] =
109 printf ("%c", root->ar_parts[j].ap_id[k]);
112 root->ar_parts[j].ap_st = ptable->parts[i].start;
113 root->ar_parts[j].ap_size = ptable->parts[i].size;
115 printf ("/%u/%u\n", root->ar_parts[j].ap_st,
116 root->ar_parts[j].ap_size);
121 root->ar_parts[j].ap_flg = 0x01;
122 root->ar_parts[j].ap_id[0] = 'X';
123 root->ar_parts[j].ap_id[1] = 'G';
124 root->ar_parts[j].ap_id[2] = 'M';
125 root->ar_parts[j].ap_st = ptable->parts[i].root;
126 root->ar_parts[j].ap_size = ptable->parts[i].size + 1;
128 xgmsec = ptable->parts[i].root;
131 root->ar_parts[j].ap_st,
132 root->ar_parts[j].ap_size);
146 root->ar_hdsize = ptable->secperunit;
148 root->ar_bslst = (u_int32_t) BSL_OFFSET;
149 root->ar_bslsize = (u_int32_t) BSL_SIZE;
153 root->ar_checksum = ahdi_cksum (root);
155 root->ar_checksum ^= 0x5555;
163 if (!disk_write (fd, AHDI_BBLOCK, 1, root)) {
164 free (root);
172 if (ptable->parts[i].root == 0)
175 printf ("Writing auxiliary root at sector %u\n",
176 ptable->parts[i].root);
178 bzero ((void *) root, sizeof (struct ahdi_root));
179 rsec = ptable->parts[i].root;
183 root->ar_parts[j].ap_flg = 0x01;
185 root->ar_parts[j].ap_id[k] =
188 printf ("%c", root->ar_parts[j].ap_id[k]);
191 root->ar_parts[j].ap_st = ptable->parts[i].start -
193 root->ar_parts[j].ap_size = ptable->parts[i].size;
195 printf ("/%u/%u\n", root->ar_parts[j].ap_st,
196 root->ar_parts[j].ap_size);
201 if (ptable->parts[i].root != ptable->parts[i+1].root &&
202 ptable->parts[i+1].root != 0) {
203 root->ar_parts[j].ap_flg = 0x01;
204 root->ar_parts[j].ap_id[0] = 'X';
205 root->ar_parts[j].ap_id[1] = 'G';
206 root->ar_parts[j].ap_id[2] = 'M';
207 root->ar_parts[j].ap_st =
208 ptable->parts[i+1].root - xgmsec;
209 root->ar_parts[j].ap_size =
213 root->ar_parts[j].ap_st,
214 root->ar_parts[j].ap_size);
217 if (ptable->parts[i].root == ptable->parts[i+1].root) {
218 /* Next partition has same auxiliary root */
222 root->ar_parts[j].ap_flg = 0x01;
224 root->ar_parts[j].ap_id[k] =
227 printf ("%c", root->ar_parts[j].ap_id[k]);
230 root->ar_parts[j].ap_st =
232 root->ar_parts[j].ap_size =
235 printf ("/%u/%u\n", root->ar_parts[j].ap_st,
236 root->ar_parts[j].ap_size);
243 if (!disk_write (fd, rsec, 1, root)) {
245 free (root);
259 free (root);