aboutsummaryrefslogtreecommitdiff
path: root/util-linux/losetup.c
diff options
context:
space:
mode:
Diffstat (limited to 'util-linux/losetup.c')
-rw-r--r--util-linux/losetup.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/util-linux/losetup.c b/util-linux/losetup.c
index 4424d9cbb..d356f49c2 100644
--- a/util-linux/losetup.c
+++ b/util-linux/losetup.c
@@ -127,12 +127,37 @@ int losetup_main(int argc UNUSED_PARAM, char **argv)
127 d = *argv++; 127 d = *argv++;
128 128
129 if (argv[0]) { 129 if (argv[0]) {
130 if (set_loop(&d, argv[0], offset, (opt & OPT_r)) < 0) 130 if (set_loop(&d, argv[0], offset, (opt & OPT_r) ? BB_LO_FLAGS_READ_ONLY : 0) < 0)
131 bb_simple_perror_msg_and_die(argv[0]); 131 bb_simple_perror_msg_and_die(argv[0]);
132 return EXIT_SUCCESS; 132 return EXIT_SUCCESS;
133 } 133 }
134 } 134 }
135 135
136 /* TODO: util-linux 2.28 shows this when run w/o params:
137 * NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO
138 * /dev/loop0 0 0 1 0 /PATH/TO/FILE 0
139 *
140 * implemented by reading /sys:
141 *
142 * open("/sys/block", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
143 * newfstatat(3, "loop0/loop/backing_file", {st_mode=S_IFREG|0444, st_size=4096, ...}, 0) = 0
144 * stat("/dev/loop0", {st_mode=S_IFBLK|0660, st_rdev=makedev(7, 0), ...}) = 0
145 * open("/sys/dev/block/7:0/loop/offset", O_RDONLY|O_CLOEXEC) = 5
146 * read(5, "0\n", 4096) = 2
147 * open("/sys/dev/block/7:0/loop/sizelimit", O_RDONLY|O_CLOEXEC) = 5
148 * read(5, "0\n", 4096) = 2
149 * open("/sys/dev/block/7:0/loop/offset", O_RDONLY|O_CLOEXEC) = 5
150 * read(5, "0\n", 4096) = 2
151 * open("/sys/dev/block/7:0/loop/autoclear", O_RDONLY|O_CLOEXEC) = 5
152 * read(5, "1\n", 4096) = 2
153 * open("/sys/dev/block/7:0/ro", O_RDONLY|O_CLOEXEC) = 5
154 * read(5, "0\n", 4096) = 2
155 * open("/sys/dev/block/7:0/loop/backing_file", O_RDONLY|O_CLOEXEC) = 5
156 * read(5, "/PATH/TO/FILE", 4096) = 37
157 * open("/sys/dev/block/7:0/loop/dio", O_RDONLY|O_CLOEXEC) = 5
158 * read(5, "0\n", 4096) = 2
159 */
160
136 bb_show_usage(); /* does not return */ 161 bb_show_usage(); /* does not return */
137 /*return EXIT_FAILURE;*/ 162 /*return EXIT_FAILURE;*/
138} 163}