Messages in this thread | | | Date | Tue, 5 Feb 2008 20:34:49 +0100 | From | Marcin Slusarz <> | Subject | Re: [PATCH 6/6] udf: super.c reorganization |
| |
On Tue, Feb 05, 2008 at 05:22:19PM +0100, Jan Kara wrote: > Actually, the loop below would be even more readable it you did: > > if (map->s_partition_num == le16_to_cpu(p->partitionNumber)) > break; > And do the work after we exit from the loop. > > > > for (i = 0; i < sbi->s_partitions; i++) { > > + struct partitionHeaderDesc *phd; > > + > > map = &sbi->s_partmaps[i]; > > udf_debug("Searching map: (%d == %d)\n", > > map->s_partition_num, > > le16_to_cpu(p->partitionNumber)); > > - if (map->s_partition_num == > > - le16_to_cpu(p->partitionNumber)) { > > - map->s_partition_len = > > - le32_to_cpu(p->partitionLength); /* blocks */ > > - map->s_partition_root = > > - le32_to_cpu(p->partitionStartingLocation); > > - if (p->accessType == > > - cpu_to_le32(PD_ACCESS_TYPE_READ_ONLY)) > > - map->s_partition_flags |= > > - UDF_PART_FLAG_READ_ONLY; > > - if (p->accessType == > > - cpu_to_le32(PD_ACCESS_TYPE_WRITE_ONCE)) > > - map->s_partition_flags |= > > - UDF_PART_FLAG_WRITE_ONCE; > > - if (p->accessType == > > - cpu_to_le32(PD_ACCESS_TYPE_REWRITABLE)) > > + if (map->s_partition_num != > > + le16_to_cpu(p->partitionNumber)) > > + continue; > > + > > + map->s_partition_len = > > + le32_to_cpu(p->partitionLength); /* blocks */ > > + map->s_partition_root = > > + le32_to_cpu(p->partitionStartingLocation); > > + if (p->accessType == cpu_to_le32(PD_ACCESS_TYPE_READ_ONLY)) > > + map->s_partition_flags |= UDF_PART_FLAG_READ_ONLY; > > + if (p->accessType == cpu_to_le32(PD_ACCESS_TYPE_WRITE_ONCE)) > > + map->s_partition_flags |= UDF_PART_FLAG_WRITE_ONCE; > > + if (p->accessType == cpu_to_le32(PD_ACCESS_TYPE_REWRITABLE)) > > + map->s_partition_flags |= UDF_PART_FLAG_REWRITABLE; > > + if (p->accessType == cpu_to_le32(PD_ACCESS_TYPE_OVERWRITABLE)) > > + map->s_partition_flags |= UDF_PART_FLAG_OVERWRITABLE; > > + > > + if (strcmp(p->partitionContents.ident, > > + PD_PARTITION_CONTENTS_NSR02) && > > + strcmp(p->partitionContents.ident, > > + PD_PARTITION_CONTENTS_NSR03)) > > + break; > > + > > + phd = (struct partitionHeaderDesc *) > > + (p->partitionContentsUse); > > + if (phd->unallocSpaceTable.extLength) { > > + kernel_lb_addr loc = { > > + .logicalBlockNum = le32_to_cpu( > > + phd->unallocSpaceTable.extPosition), > > + .partitionReferenceNum = i, > > + }; > > + > > + map->s_uspace.s_table = > > + udf_iget(sb, loc); > > + if (!map->s_uspace.s_table) { > > + udf_debug("cannot load unallocSpaceTable " > > + "(part %d)\n", i); > > + return 1; > > + } > > + map->s_partition_flags |= > > + UDF_PART_FLAG_UNALLOC_TABLE; > > + udf_debug("unallocSpaceTable (part %d) @ %ld\n", > > + i, map->s_uspace.s_table->i_ino); > > + } > > + if (phd->unallocSpaceBitmap.extLength) { > > + struct udf_bitmap *bitmap = > > + udf_sb_alloc_bitmap(sb, i); > > + map->s_uspace.s_bitmap = bitmap; > > + if (bitmap != NULL) { > > + bitmap->s_extLength = le32_to_cpu( > > + phd->unallocSpaceBitmap.extLength); > > + bitmap->s_extPosition = le32_to_cpu( > > + phd->unallocSpaceBitmap.extPosition); > > map->s_partition_flags |= > > - UDF_PART_FLAG_REWRITABLE; > > - if (p->accessType == > > - cpu_to_le32(PD_ACCESS_TYPE_OVERWRITABLE)) > > + UDF_PART_FLAG_UNALLOC_BITMAP; > > + udf_debug("unallocSpaceBitmap (part %d) @ %d\n", > > + i, bitmap->s_extPosition); > > + } > > + } > > + if (phd->partitionIntegrityTable.extLength) > > + udf_debug("partitionIntegrityTable (part %d)\n", i); > > + if (phd->freedSpaceTable.extLength) { > > + kernel_lb_addr loc = { > > + .logicalBlockNum = le32_to_cpu( > > + phd->freedSpaceTable.extPosition), > > + .partitionReferenceNum = i, > > + }; > > + > > + map->s_fspace.s_table = > > + udf_iget(sb, loc); > > + if (!map->s_fspace.s_table) { > > + udf_debug("cannot load freedSpaceTable " > > + "(part %d)\n", i); > > + return 1; > > + } > > + map->s_partition_flags |= > > + UDF_PART_FLAG_FREED_TABLE; > > + udf_debug("freedSpaceTable (part %d) @ %ld\n", > > + i, map->s_fspace.s_table->i_ino); > > + } > > + if (phd->freedSpaceBitmap.extLength) { > > + struct udf_bitmap *bitmap = > > + udf_sb_alloc_bitmap(sb, i); > > + map->s_fspace.s_bitmap = bitmap; > > + if (bitmap != NULL) { > > + bitmap->s_extLength = le32_to_cpu( > > + phd->freedSpaceBitmap.extLength); > > + bitmap->s_extPosition = le32_to_cpu( > > + phd->freedSpaceBitmap.extPosition); > > map->s_partition_flags |= > > - UDF_PART_FLAG_OVERWRITABLE; > > - > > - if (!strcmp(p->partitionContents.ident, > > - PD_PARTITION_CONTENTS_NSR02) || > > - !strcmp(p->partitionContents.ident, > > - PD_PARTITION_CONTENTS_NSR03)) { > > - struct partitionHeaderDesc *phd; > > - > > - phd = (struct partitionHeaderDesc *) > > - (p->partitionContentsUse); > > - if (phd->unallocSpaceTable.extLength) { > > - kernel_lb_addr loc = { > > - .logicalBlockNum = le32_to_cpu(phd->unallocSpaceTable.extPosition), > > - .partitionReferenceNum = i, > > - }; > > - > > - map->s_uspace.s_table = > > - udf_iget(sb, loc); > > - if (!map->s_uspace.s_table) { > > - udf_debug("cannot load unallocSpaceTable (part %d)\n", i); > > - return 1; > > - } > > - map->s_partition_flags |= > > - UDF_PART_FLAG_UNALLOC_TABLE; > > - udf_debug("unallocSpaceTable (part %d) @ %ld\n", > > - i, map->s_uspace.s_table->i_ino); > > - } > > - if (phd->unallocSpaceBitmap.extLength) { > > - struct udf_bitmap *bitmap = > > - udf_sb_alloc_bitmap(sb, i); > > - map->s_uspace.s_bitmap = bitmap; > > - if (bitmap != NULL) { > > - bitmap->s_extLength = > > - le32_to_cpu(phd->unallocSpaceBitmap.extLength); > > - bitmap->s_extPosition = > > - le32_to_cpu(phd->unallocSpaceBitmap.extPosition); > > - map->s_partition_flags |= UDF_PART_FLAG_UNALLOC_BITMAP; > > - udf_debug("unallocSpaceBitmap (part %d) @ %d\n", > > - i, bitmap->s_extPosition); > > - } > > - } > > - if (phd->partitionIntegrityTable.extLength) > > - udf_debug("partitionIntegrityTable (part %d)\n", i); > > - if (phd->freedSpaceTable.extLength) { > > - kernel_lb_addr loc = { > > - .logicalBlockNum = le32_to_cpu(phd->freedSpaceTable.extPosition), > > - .partitionReferenceNum = i, > > - }; > > - > > - map->s_fspace.s_table = > > - udf_iget(sb, loc); > > - if (!map->s_fspace.s_table) { > > - udf_debug("cannot load freedSpaceTable (part %d)\n", i); > > - return 1; > > - } > > - map->s_partition_flags |= > > - UDF_PART_FLAG_FREED_TABLE; > > - udf_debug("freedSpaceTable (part %d) @ %ld\n", > > - i, map->s_fspace.s_table->i_ino); > > - } > > - if (phd->freedSpaceBitmap.extLength) { > > - struct udf_bitmap *bitmap = > > - udf_sb_alloc_bitmap(sb, i); > > - map->s_fspace.s_bitmap = bitmap; > > - if (bitmap != NULL) { > > - bitmap->s_extLength = > > - le32_to_cpu(phd->freedSpaceBitmap.extLength); > > - bitmap->s_extPosition = > > - le32_to_cpu(phd->freedSpaceBitmap.extPosition); > > - map->s_partition_flags |= UDF_PART_FLAG_FREED_BITMAP; > > - udf_debug("freedSpaceBitmap (part %d) @ %d\n", > > - i, bitmap->s_extPosition); > > - } > > - } > > + UDF_PART_FLAG_FREED_BITMAP; > > + udf_debug("freedSpaceBitmap (part %d) @ %d\n", > > + i, bitmap->s_extPosition); > > } > > - break; > > } > > + break; > > } > > if (i == sbi->s_partitions) > > udf_debug("Partition (%d) not found in partition map\n",
Ok. I didn't notice that. But it won't be as trivial as the rest. Separate patch?
Marcin
| |