Lines Matching refs:buffer
687 static int ldm_relative(const u8 *buffer, int buflen, int base, int offset) in ldm_relative() argument
691 if (!buffer || offset < 0 || base > buflen) { in ldm_relative()
692 if (!buffer) in ldm_relative()
700 if (base + buffer[base] >= buflen) { in ldm_relative()
702 buffer[base], buflen); in ldm_relative()
705 return buffer[base] + offset + 1; in ldm_relative()
758 static int ldm_get_vstr (const u8 *block, u8 *buffer, int buflen) in ldm_get_vstr() argument
762 BUG_ON (!block || !buffer); in ldm_get_vstr()
769 memcpy (buffer, block + 1, length); in ldm_get_vstr()
770 buffer[length] = 0; in ldm_get_vstr()
786 static bool ldm_parse_cmp3 (const u8 *buffer, int buflen, struct vblk *vb) in ldm_parse_cmp3() argument
791 BUG_ON (!buffer || !vb); in ldm_parse_cmp3()
793 r_objid = ldm_relative (buffer, buflen, 0x18, 0); in ldm_parse_cmp3()
794 r_name = ldm_relative (buffer, buflen, 0x18, r_objid); in ldm_parse_cmp3()
795 r_vstate = ldm_relative (buffer, buflen, 0x18, r_name); in ldm_parse_cmp3()
796 r_child = ldm_relative (buffer, buflen, 0x1D, r_vstate); in ldm_parse_cmp3()
797 r_parent = ldm_relative (buffer, buflen, 0x2D, r_child); in ldm_parse_cmp3()
799 if (buffer[0x12] & VBLK_FLAG_COMP_STRIPE) { in ldm_parse_cmp3()
800 r_stripe = ldm_relative (buffer, buflen, 0x2E, r_parent); in ldm_parse_cmp3()
801 r_cols = ldm_relative (buffer, buflen, 0x2E, r_stripe); in ldm_parse_cmp3()
812 if (len != get_unaligned_be32(buffer + 0x14)) in ldm_parse_cmp3()
816 ldm_get_vstr (buffer + 0x18 + r_name, comp->state, in ldm_parse_cmp3()
818 comp->type = buffer[0x18 + r_vstate]; in ldm_parse_cmp3()
819 comp->children = ldm_get_vnum (buffer + 0x1D + r_vstate); in ldm_parse_cmp3()
820 comp->parent_id = ldm_get_vnum (buffer + 0x2D + r_child); in ldm_parse_cmp3()
821 comp->chunksize = r_stripe ? ldm_get_vnum (buffer+r_parent+0x2E) : 0; in ldm_parse_cmp3()
837 static int ldm_parse_dgr3 (const u8 *buffer, int buflen, struct vblk *vb) in ldm_parse_dgr3() argument
842 BUG_ON (!buffer || !vb); in ldm_parse_dgr3()
844 r_objid = ldm_relative (buffer, buflen, 0x18, 0); in ldm_parse_dgr3()
845 r_name = ldm_relative (buffer, buflen, 0x18, r_objid); in ldm_parse_dgr3()
846 r_diskid = ldm_relative (buffer, buflen, 0x18, r_name); in ldm_parse_dgr3()
848 if (buffer[0x12] & VBLK_FLAG_DGR3_IDS) { in ldm_parse_dgr3()
849 r_id1 = ldm_relative (buffer, buflen, 0x24, r_diskid); in ldm_parse_dgr3()
850 r_id2 = ldm_relative (buffer, buflen, 0x24, r_id1); in ldm_parse_dgr3()
861 if (len != get_unaligned_be32(buffer + 0x14)) in ldm_parse_dgr3()
865 ldm_get_vstr (buffer + 0x18 + r_name, dgrp->disk_id, in ldm_parse_dgr3()
881 static bool ldm_parse_dgr4 (const u8 *buffer, int buflen, struct vblk *vb) in ldm_parse_dgr4() argument
887 BUG_ON (!buffer || !vb); in ldm_parse_dgr4()
889 r_objid = ldm_relative (buffer, buflen, 0x18, 0); in ldm_parse_dgr4()
890 r_name = ldm_relative (buffer, buflen, 0x18, r_objid); in ldm_parse_dgr4()
892 if (buffer[0x12] & VBLK_FLAG_DGR4_IDS) { in ldm_parse_dgr4()
893 r_id1 = ldm_relative (buffer, buflen, 0x44, r_name); in ldm_parse_dgr4()
894 r_id2 = ldm_relative (buffer, buflen, 0x44, r_id1); in ldm_parse_dgr4()
905 if (len != get_unaligned_be32(buffer + 0x14)) in ldm_parse_dgr4()
910 ldm_get_vstr (buffer + 0x18 + r_objid, buf, sizeof (buf)); in ldm_parse_dgr4()
925 static bool ldm_parse_dsk3 (const u8 *buffer, int buflen, struct vblk *vb) in ldm_parse_dsk3() argument
930 BUG_ON (!buffer || !vb); in ldm_parse_dsk3()
932 r_objid = ldm_relative (buffer, buflen, 0x18, 0); in ldm_parse_dsk3()
933 r_name = ldm_relative (buffer, buflen, 0x18, r_objid); in ldm_parse_dsk3()
934 r_diskid = ldm_relative (buffer, buflen, 0x18, r_name); in ldm_parse_dsk3()
935 r_altname = ldm_relative (buffer, buflen, 0x18, r_diskid); in ldm_parse_dsk3()
941 if (len != get_unaligned_be32(buffer + 0x14)) in ldm_parse_dsk3()
945 ldm_get_vstr (buffer + 0x18 + r_diskid, disk->alt_name, in ldm_parse_dsk3()
947 if (!ldm_parse_guid (buffer + 0x19 + r_name, disk->disk_id)) in ldm_parse_dsk3()
964 static bool ldm_parse_dsk4 (const u8 *buffer, int buflen, struct vblk *vb) in ldm_parse_dsk4() argument
969 BUG_ON (!buffer || !vb); in ldm_parse_dsk4()
971 r_objid = ldm_relative (buffer, buflen, 0x18, 0); in ldm_parse_dsk4()
972 r_name = ldm_relative (buffer, buflen, 0x18, r_objid); in ldm_parse_dsk4()
978 if (len != get_unaligned_be32(buffer + 0x14)) in ldm_parse_dsk4()
982 memcpy (disk->disk_id, buffer + 0x18 + r_name, GUID_SIZE); in ldm_parse_dsk4()
997 static bool ldm_parse_prt3(const u8 *buffer, int buflen, struct vblk *vb) in ldm_parse_prt3() argument
1002 BUG_ON(!buffer || !vb); in ldm_parse_prt3()
1003 r_objid = ldm_relative(buffer, buflen, 0x18, 0); in ldm_parse_prt3()
1008 r_name = ldm_relative(buffer, buflen, 0x18, r_objid); in ldm_parse_prt3()
1013 r_size = ldm_relative(buffer, buflen, 0x34, r_name); in ldm_parse_prt3()
1018 r_parent = ldm_relative(buffer, buflen, 0x34, r_size); in ldm_parse_prt3()
1023 r_diskid = ldm_relative(buffer, buflen, 0x34, r_parent); in ldm_parse_prt3()
1028 if (buffer[0x12] & VBLK_FLAG_PART_INDEX) { in ldm_parse_prt3()
1029 r_index = ldm_relative(buffer, buflen, 0x34, r_diskid); in ldm_parse_prt3()
1044 if (len > get_unaligned_be32(buffer + 0x14)) { in ldm_parse_prt3()
1046 get_unaligned_be32(buffer + 0x14)); in ldm_parse_prt3()
1050 part->start = get_unaligned_be64(buffer + 0x24 + r_name); in ldm_parse_prt3()
1051 part->volume_offset = get_unaligned_be64(buffer + 0x2C + r_name); in ldm_parse_prt3()
1052 part->size = ldm_get_vnum(buffer + 0x34 + r_name); in ldm_parse_prt3()
1053 part->parent_id = ldm_get_vnum(buffer + 0x34 + r_size); in ldm_parse_prt3()
1054 part->disk_id = ldm_get_vnum(buffer + 0x34 + r_parent); in ldm_parse_prt3()
1056 part->partnum = buffer[0x35 + r_diskid]; in ldm_parse_prt3()
1073 static bool ldm_parse_vol5(const u8 *buffer, int buflen, struct vblk *vb) in ldm_parse_vol5() argument
1079 BUG_ON(!buffer || !vb); in ldm_parse_vol5()
1080 r_objid = ldm_relative(buffer, buflen, 0x18, 0); in ldm_parse_vol5()
1085 r_name = ldm_relative(buffer, buflen, 0x18, r_objid); in ldm_parse_vol5()
1090 r_vtype = ldm_relative(buffer, buflen, 0x18, r_name); in ldm_parse_vol5()
1095 r_disable_drive_letter = ldm_relative(buffer, buflen, 0x18, r_vtype); in ldm_parse_vol5()
1101 r_child = ldm_relative(buffer, buflen, 0x2D, r_disable_drive_letter); in ldm_parse_vol5()
1106 r_size = ldm_relative(buffer, buflen, 0x3D, r_child); in ldm_parse_vol5()
1111 if (buffer[0x12] & VBLK_FLAG_VOLU_ID1) { in ldm_parse_vol5()
1112 r_id1 = ldm_relative(buffer, buflen, 0x52, r_size); in ldm_parse_vol5()
1119 if (buffer[0x12] & VBLK_FLAG_VOLU_ID2) { in ldm_parse_vol5()
1120 r_id2 = ldm_relative(buffer, buflen, 0x52, r_id1); in ldm_parse_vol5()
1127 if (buffer[0x12] & VBLK_FLAG_VOLU_SIZE) { in ldm_parse_vol5()
1128 r_size2 = ldm_relative(buffer, buflen, 0x52, r_id2); in ldm_parse_vol5()
1135 if (buffer[0x12] & VBLK_FLAG_VOLU_DRIVE) { in ldm_parse_vol5()
1136 r_drive = ldm_relative(buffer, buflen, 0x52, r_size2); in ldm_parse_vol5()
1149 if (len > get_unaligned_be32(buffer + 0x14)) { in ldm_parse_vol5()
1151 get_unaligned_be32(buffer + 0x14)); in ldm_parse_vol5()
1155 ldm_get_vstr(buffer + 0x18 + r_name, volu->volume_type, in ldm_parse_vol5()
1157 memcpy(volu->volume_state, buffer + 0x18 + r_disable_drive_letter, in ldm_parse_vol5()
1159 volu->size = ldm_get_vnum(buffer + 0x3D + r_child); in ldm_parse_vol5()
1160 volu->partition_type = buffer[0x41 + r_size]; in ldm_parse_vol5()
1161 memcpy(volu->guid, buffer + 0x42 + r_size, sizeof(volu->guid)); in ldm_parse_vol5()
1162 if (buffer[0x12] & VBLK_FLAG_VOLU_DRIVE) { in ldm_parse_vol5()
1163 ldm_get_vstr(buffer + 0x52 + r_size, volu->drive_hint, in ldm_parse_vol5()