Changes by: jkemi
Update of /cvsroot/linux-ntfs/dynamic-disk/linux/fs/partitions
In directory usw-pr-cvs1:/tmp/cvs-serv12172
Modified Files:
ldm.c ldm.h
Log Message:
Fix bug in parse_comp (comp->parent_id). Remove fixed chunksize, minor cleanups.
Index: ldm.c
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/linux/fs/partitions/ldm.c,v
retrieving revision 1.65
retrieving revision 1.66
diff -U2 -r1.65 -r1.66
--- ldm.c 12 Mar 2002 05:35:53 -0000 1.65
+++ ldm.c 12 Mar 2002 14:07:07 -0000 1.66
@@ -42,5 +42,5 @@
u8 n, u8 parts, u8 chunk_s, kdev_t dev);
#else
-# define ldm_md_addpart(...) do {} while (0)
+# define ldm_md_addpart(...) do {} while (0)
#endif
@@ -708,8 +708,7 @@
}
/* Register to LDM_MD */
- //FIXME chunk size is in a vblk and must be read
ldm_md_addpart(v->vblk.volu.guid, c->obj_id,
- c->vblk.comp.type, part->partnum,
- c->vblk.comp.parts, COMP_CHUNKSIZE, dev);
+ c->vblk.comp.type, part->partnum, c->vblk.comp.n_childs,
+ c->vblk.comp.chunksize / (4096 / 512), dev);
#endif
}
@@ -875,9 +874,13 @@
comp = &vb->vblk.comp;
- comp->type = buffer[0x18 + r_vstate];
- comp->parts = ldm_get_vnum (buffer + 0x1D + r_vstate);
- comp->parent_id = ldm_get_vnum (buffer + 0x2F + r_vstate);
ldm_get_vstr (buffer + 0x18 + r_name, comp->state,
sizeof (comp->state));
+ comp->type = buffer[0x18 + r_vstate];
+ comp->n_childs = ldm_get_vnum (buffer + 0x1D + r_vstate);
+ comp->parent_id = ldm_get_vnum (buffer + 0x2D + r_child);
+
+ comp->chunksize = (r_stripe)
+ ? ldm_get_vnum (buffer + 0x2E + r_parent)
+ : 0;
return TRUE;
@@ -1151,11 +1154,12 @@
volu = &vb->vblk.volu;
- volu->partition_type = buffer[0x42 + r_size];
- volu->size = ldm_get_vnum (buffer + 0x3E + r_child);
- memcpy (volu->volume_state, buffer + 0x19 + r_vtype,
- sizeof (volu->volume_state));
- memcpy (volu->guid, buffer + 0x43 + r_size, sizeof (volu->guid));
+
ldm_get_vstr (buffer + 0x18 + r_name, volu->volume_type,
sizeof (volu->volume_type));
+ memcpy (volu->volume_state, buffer + 0x19 + r_vtype,
+ sizeof (volu->volume_state));
+ volu->size = ldm_get_vnum (buffer + 0x3E + r_child);
+ volu->partition_type = buffer[0x42 + r_size];
+ memcpy (volu->guid, buffer + 0x43 + r_size, sizeof (volu->guid));
if (buffer[0x12] & VBLK_FLAG_VOLU_DRIVE) {
ldm_get_vstr (buffer + 0x53 + r_size, volu->drive_hint,
@@ -1207,6 +1211,6 @@
// FIXME: this is ugly.
/* Compensate for vblk_head. */
- const u8 *buffer = src - 0x10;
- const int buflen = size + 0x10;
+ const u8 *buffer = src - VBLK_SIZE_HEAD;
+ const int buflen = size + VBLK_SIZE_HEAD;
BOOL result = FALSE;
@@ -1302,5 +1306,5 @@
* @list: List of fragments.
*/
-static inline struct frags *ldm_frag_find(list_t *list, u32 group)
+static struct frags *ldm_frag_find(list_t *list, u32 group)
{
list_t *item;
@@ -1319,5 +1323,5 @@
* ldm_frag_listfree -
*/
-static inline void ldm_frag_listfree(list_t *list)
+static void ldm_frag_listfree(list_t *list)
{
list_t *item, *tmp;
@@ -1479,5 +1483,5 @@
const int skip = ldb->vm.vblk_offset / 512;
const int finish = (ldb->vm.vblk_size * ldb->vm.last_vblk_seq) / 512;
- const int body_size = ldb->vm.vblk_size - 0x10;
+ const int body_size = ldb->vm.vblk_size - VBLK_SIZE_HEAD;
LIST_HEAD(fraglist);
struct vblk *vb = NULL;
@@ -1504,5 +1508,5 @@
for (i = 0; i < perbuf; i++) {
const u8 *block = data + i*ldb->vm.vblk_size;
- const u8 *body_data = block + 0x10;
+ const u8 *body_data = block + VBLK_SIZE_HEAD;
struct vblk_head vbh;
@@ -1526,5 +1530,5 @@
vb = kmalloc (sizeof(*vb), GFP_KERNEL);
if (!vb) {
- ldm_crit ("Out of memory in get vblks.\n");
+ ldm_crit ("Out of memory.\n");
goto out;
}
Index: ldm.h
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/linux/fs/partitions/ldm.h,v
retrieving revision 1.38
retrieving revision 1.39
diff -U2 -r1.38 -r1.39
--- ldm.h 12 Mar 2002 05:35:53 -0000 1.38
+++ ldm.h 12 Mar 2002 14:07:07 -0000 1.39
@@ -71,4 +71,6 @@
/* size of a vblk's static parts */
+#define VBLK_SIZE_HEAD 16
+
#define VBLK_SIZE_COMP 22
#define VBLK_SIZE_PART 28
@@ -83,5 +85,4 @@
#define COMP_BASIC 0x02 /* Basic disk */
#define COMP_RAID 0x03 /* Raid-set */
-#define COMP_CHUNKSIZE 16 /* Chunksize in 4k units */
/* Other constants. */
@@ -167,5 +168,6 @@
u64 parent_id;
u8 type;
- u8 parts;
+ u8 n_childs;
+ u16 chunksize;
};
|