mount: create loop devices with LO_FLAGS_AUTOCLEAR flag
The "autolooped" mount (mount [-oloop] IMAGE /DIR/DIR) always creates AUTOCLEARed loopdevs, so that umounting drops them (and this does not require any code in the umount userspace). This happens since circa linux-2.6.25: commit 96c5865559cee0f9cbc5173f3c949f6ce3525581 Date: Wed Feb 6 01:36:27 2008 -0800 Subject: Allow auto-destruction of loop devices IOW: in this case, umount does not have to use -d to drop the loopdev. The explicit loop mount (mount /dev/loopN /DIR/DIR) does not do this. In this case, umount without -d should not drop loopdev. Unfortunately, bbox umount currently always implies -d, this probably needs fixing. function old new delta set_loop 537 597 +60 singlemount 1101 1138 +37 losetup_main 419 432 +13 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 110/0) Total: 110 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@ -1329,10 +1329,15 @@ extern int get_linux_version_code(void) FAST_FUNC;
|
||||
|
||||
extern char *query_loop(const char *device) FAST_FUNC;
|
||||
extern int del_loop(const char *device) FAST_FUNC;
|
||||
/* If *devname is not NULL, use that name, otherwise try to find free one,
|
||||
/*
|
||||
* If *devname is not NULL, use that name, otherwise try to find free one,
|
||||
* malloc and return it in *devname.
|
||||
* return value: 1: read-only loopdev was setup, 0: rw, < 0: error */
|
||||
extern int set_loop(char **devname, const char *file, unsigned long long offset, int ro) FAST_FUNC;
|
||||
* return value is the opened fd to the loop device, or < on error
|
||||
*/
|
||||
extern int set_loop(char **devname, const char *file, unsigned long long offset, unsigned flags) FAST_FUNC;
|
||||
/* These constants match linux/loop.h (without BB_ prefix): */
|
||||
#define BB_LO_FLAGS_READ_ONLY 1
|
||||
#define BB_LO_FLAGS_AUTOCLEAR 4
|
||||
|
||||
/* Like bb_ask below, but asks on stdin with no timeout. */
|
||||
char *bb_ask_stdin(const char * prompt) FAST_FUNC;
|
||||
|
Reference in New Issue
Block a user