diff options
author | Karel Zak | 2011-09-30 01:38:38 +0200 |
---|---|---|
committer | Karel Zak | 2011-09-30 01:38:38 +0200 |
commit | f0d3ff0a6f3c5b0bd891f7ab6f2bdeb4431b1aa6 (patch) | |
tree | 3afe76793dafc5925c0bcb401ee3c67573f528c0 /libmount/src/context_loopdev.c | |
parent | mount: use new lib/loopdev.c code (diff) | |
download | kernel-qcow2-util-linux-f0d3ff0a6f3c5b0bd891f7ab6f2bdeb4431b1aa6.tar.gz kernel-qcow2-util-linux-f0d3ff0a6f3c5b0bd891f7ab6f2bdeb4431b1aa6.tar.xz kernel-qcow2-util-linux-f0d3ff0a6f3c5b0bd891f7ab6f2bdeb4431b1aa6.zip |
libmount: support -o loop=<devname>
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libmount/src/context_loopdev.c')
-rw-r--r-- | libmount/src/context_loopdev.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libmount/src/context_loopdev.c b/libmount/src/context_loopdev.c index 377dd769e..561ab397d 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)) |