[dm-devel] [multipath-tools] kpartx: DELETE logic question

Petr Uzel petr.uzel at suse.cz
Tue Jun 16 12:44:49 UTC 2009


Hi all,

In current multipath-tools, the deletion of devmappings is
done by following code snippet:

405  case DELETE:
406  for (j = n-1; j >= 0; j--) {
407    if (safe_sprintf(partname, "%s%s%d",
408             mapname, delim, j+1)) {
409       fprintf(stderr, "partname too small\n");
410       exit(1);
411    }
412    strip_slash(partname);
413  
414    if (!slices[j].size || !dm_map_present(partname))
415        continue;
416  
417    if (!dm_simplecmd(DM_DEVICE_REMOVE,
418                partname, 0)) {
419      r++;
420      continue;
421     }
422     if (verbose)
423     printf("del devmap : %s\n", partname);
424   }


I wonder what's the logic behind the test on line 414. The second part
(testing whether the mapping exists) is obvious. But what about the
first part? Why don't we want to delete mapping for partition with
size==0, i.e. partition that no longer exists in the partition table?

Suppose following scenario:
- create 3 primary partitions on dm-0
- run kpartx -a /dev/dm-0
- delete partition #2
- run kpartx -d /dev/dm-0

The result is that mapping for partition #2 is not deleted - is this
what is expected?


Thanks,


-- 
Best regards / s pozdravem

Petr Uzel, Packages maintainer
---------------------------------------------------------------------
SUSE LINUX, s.r.o.                          e-mail: puzel at suse.cz
Lihovarská 1060/12                          http://www.suse.cz
190 00 Prague 9                             
Czech Republic                              




More information about the dm-devel mailing list