From: Karel Zak Date: Thu, 29 Sep 2011 23:38:38 +0000 (+0200) Subject: libmount: support -o loop= X-Git-Tag: v2.21-rc1~362 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f0d3ff0a6f3c5b0bd891f7ab6f2bdeb4431b1aa6;p=thirdparty%2Futil-linux.git libmount: support -o loop= Signed-off-by: Karel Zak --- diff --git a/libmount/src/context_loopdev.c b/libmount/src/context_loopdev.c index 377dd769e8..561ab397dc 100644 --- a/libmount/src/context_loopdev.c +++ b/libmount/src/context_loopdev.c @@ -65,8 +65,8 @@ int mnt_context_is_loopdev(struct libmnt_context *cxt) int mnt_context_setup_loopdev(struct libmnt_context *cxt) { - const char *backing_file, *optstr; - char *loopdev = NULL, *val = NULL; + const char *backing_file, *optstr, *loopdev = NULL; + char *val = NULL; size_t len; struct loopdev_cxt lc; int rc = 0, lo_flags = 0; @@ -102,6 +102,9 @@ int mnt_context_setup_loopdev(struct libmnt_context *cxt) val = strndup(val, len); rc = val ? loopcxt_set_device(&lc, val) : -ENOMEM; free(val); + + if (rc == 0) + loopdev = loopcxt_get_device(&lc); } /* @@ -182,12 +185,14 @@ int mnt_context_setup_loopdev(struct libmnt_context *cxt) cxt->flags |= MNT_FL_LOOPDEV_READY; if ((cxt->user_mountflags & MNT_MS_LOOP) && - loopcxt_is_autoclear(&lc)) + loopcxt_is_autoclear(&lc)) { /* * autoclear flag accepted by kernel, don't store * the "loop=" option to mtab. */ cxt->user_mountflags &= ~MNT_MS_LOOP; + mnt_optstr_remove_option(&cxt->fs->user_optstr, "loop"); + } if (!(cxt->mountflags & MS_RDONLY) && loopcxt_is_readonly(&lc))