[dm-devel] multipath-tools/kpartx kpartx.c
bmarzins at sourceware.org
bmarzins at sourceware.org
Fri Apr 8 05:34:35 UTC 2011
CVSROOT: /cvs/dm
Module name: multipath-tools
Branch: RHEL5_FC6
Changes by: bmarzins at sourceware.org 2011-04-08 05:34:34
Modified files:
kpartx : kpartx.c
Log message:
more work for 578109. The previous loop deleting fix didn't work if there were
no partitions on the loop device. Now it handles that case as well.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/kpartx/kpartx.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.9.2.4&r2=1.9.2.5
--- multipath-tools/kpartx/kpartx.c 2011/03/07 05:19:37 1.9.2.4
+++ multipath-tools/kpartx/kpartx.c 2011/04/08 05:34:33 1.9.2.5
@@ -182,7 +182,8 @@
int
main(int argc, char **argv){
- int fd, i, j, k, n, op, off, arg;
+ int i, j, k, n, op, off, arg;
+ int fd = -1;
struct slice all;
struct pt *ptp;
enum action what = LIST;
@@ -342,8 +343,10 @@
printf("%s: %d slices\n", ptp->type, n);
#endif
- if (n > 0)
+ if (n > 0) {
close(fd);
+ fd = -1;
+ }
else
continue;
@@ -371,15 +374,6 @@
slices[j].size, device,
slices[j].start);
}
- if (loopcreated && S_ISREG (buf.st_mode)) {
- if (del_loop(device)) {
- if (verbose)
- printf("can't del loop : %s\n",
- device);
- exit(1);
- }
- printf("loop deleted : %s\n", device);
- }
break;
case DELETE:
@@ -457,6 +451,17 @@
if (n > 0)
break;
}
+ if (what == LIST && loopcreated && S_ISREG (buf.st_mode)) {
+ if (fd != -1)
+ close(fd);
+ if (del_loop(device)) {
+ if (verbose)
+ printf("can't del loop : %s\n",
+ device);
+ exit(1);
+ }
+ printf("loop deleted : %s\n", device);
+ }
dm_lib_release();
dm_lib_exit();
More information about the dm-devel
mailing list