Lines Matching refs:dm

63  * return the map bit offset of the fragment frag_id in the zone dm.
68 static int lookup_zone(const struct adfs_discmap *dm, const unsigned int idlen,
71 const unsigned int endbit = dm->dm_endbit;
73 unsigned char *map = dm->dm_bh->b_data;
74 unsigned int start = dm->dm_startbit;
115 scan_free_map(struct adfs_sb_info *asb, struct adfs_discmap *dm)
117 const unsigned int endbit = dm->dm_endbit;
121 unsigned char *map = dm->dm_bh->b_data;
163 struct adfs_discmap *dm, *dm_end;
166 dm = asb->s_map + zone;
171 result = lookup_zone(dm, idlen, frag_id, &mapoff);
176 dm ++;
177 if (dm == dm_end)
178 dm = asb->s_map;
183 result -= dm->dm_startbit;
184 result += dm->dm_startblk;
200 struct adfs_discmap *dm;
204 dm = asb->s_map;
208 total += scan_free_map(asb, dm++);
284 static int adfs_checkmap(struct super_block *sb, struct adfs_discmap *dm)
292 map = dm[i].dm_bh->b_data;
309 static void adfs_map_layout(struct adfs_discmap *dm, unsigned int nzones,
317 dm[0].dm_bh = NULL;
318 dm[0].dm_startblk = 0;
319 dm[0].dm_startbit = 32 + ADFS_DR_SIZE_BITS;
320 dm[0].dm_endbit = 32 + zone_size;
323 dm[zone].dm_bh = NULL;
324 dm[zone].dm_startblk = zone * zone_size - ADFS_DR_SIZE_BITS;
325 dm[zone].dm_startbit = 32;
326 dm[zone].dm_endbit = 32 + zone_size;
331 dm[nzones - 1].dm_endbit = 32 + size;
334 static int adfs_map_read(struct adfs_discmap *dm, struct super_block *sb,
340 dm[zone].dm_bh = sb_bread(sb, map_addr + zone);
341 if (!dm[zone].dm_bh)
348 static void adfs_map_relse(struct adfs_discmap *dm, unsigned int nzones)
353 brelse(dm[zone].dm_bh);
359 struct adfs_discmap *dm;
376 dm = kmalloc_array(nzones, sizeof(*dm), GFP_KERNEL);
377 if (dm == NULL) {
382 adfs_map_layout(dm, nzones, dr);
384 ret = adfs_map_read(dm, sb, map_addr, nzones);
390 if (adfs_checkmap(sb, dm))
391 return dm;
396 adfs_map_relse(dm, nzones);
397 kfree(dm);