summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/loopdev.h3
-rw-r--r--sys-utils/losetup.84
-rw-r--r--sys-utils/losetup.c7
3 files changed, 11 insertions, 3 deletions
diff --git a/include/loopdev.h b/include/loopdev.h
index 238b308fe..4e68da81f 100644
--- a/include/loopdev.h
+++ b/include/loopdev.h
@@ -37,7 +37,8 @@
enum {
LO_FLAGS_READ_ONLY = 1,
LO_FLAGS_USE_AOPS = 2,
- LO_FLAGS_AUTOCLEAR = 4, /* New in 2.6.25 */
+ LO_FLAGS_AUTOCLEAR = 4, /* kernel >= 2.6.25 */
+ LO_FLAGS_PARTSCAN = 8, /* kernel >= 3.2 */
};
#define LO_NAME_SIZE 64
diff --git a/sys-utils/losetup.8 b/sys-utils/losetup.8
index 43dc76815..3d407217a 100644
--- a/sys-utils/losetup.8
+++ b/sys-utils/losetup.8
@@ -49,7 +49,7 @@ Setup loop device:
.in +8
.RB [ \-p
.IR pfd ]
-.RB [ \-r ]
+.RB [ \-rP ]
.RB { \-f [ \-\-show ]| \fIloopdev\fP }
.I file
.sp
@@ -99,6 +99,8 @@ the data end is set to no more than \fIsize\fP bytes after the data start
read the passphrase from file descriptor with number
.I num
instead of from the terminal
+.IP "\fB\-P, \-\-partscan\fP"
+force kernel to scan partition table on newly created loop device
.IP "\fB\-r, \-\-read-only\fP"
setup read-only loop device
.IP "\fB\-\-show\fP"
diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c
index 35c1c919d..7e80ee513 100644
--- a/sys-utils/losetup.c
+++ b/sys-utils/losetup.c
@@ -206,6 +206,7 @@ static void usage(FILE *out)
" -o, --offset <num> start at offset <num> into file\n"
" --sizelimit <num> device limited to <num> bytes of the file\n"
" -p, --pass-fd <num> read passphrase from file descriptor <num>\n"
+ " -P, --partscan create partitioned loop device\n"
" -r, --read-only setup read-only loop device\n"
" --show print device name after setup (with -f)\n"
" -v, --verbose verbose mode\n"), out);
@@ -243,6 +244,7 @@ int main(int argc, char **argv)
{ "offset", 1, 0, 'o' },
{ "sizelimit", 1, 0, OPT_SIZELIMIT },
{ "pass-fd", 1, 0, 'p' },
+ { "partscan", 0, 0, 'P' },
{ "read-only", 0, 0, 'r' },
{ "show", 0, 0, OPT_SHOW },
{ "verbose", 0, 0, 'v' },
@@ -257,7 +259,7 @@ int main(int argc, char **argv)
loopcxt_init(&lc, 0);
loopcxt_enable_debug(&lc, getenv("LOOPDEV_DEBUG") ? TRUE : FALSE);
- while ((c = getopt_long(argc, argv, "ac:d:De:E:fhj:o:p:rvV",
+ while ((c = getopt_long(argc, argv, "ac:d:De:E:fhj:o:p:PrvV",
longopts, NULL)) != -1) {
if (act && strchr("acdDfj", c))
@@ -307,6 +309,9 @@ int main(int argc, char **argv)
passfd = strtol_or_err(optarg,
_("invalid passphrase file descriptor"));
break;
+ case 'P':
+ lo_flags |= LO_FLAGS_PARTSCAN;
+ break;
case OPT_SHOW:
showdev = 1;
break;