According to the Al Viro[1], kernel has no way to detect that a single file is used by multiple loop devices, and multiple mounts of the same file using different loop devices will result in a data corruption. Exactly this now happens, if multiple btrfs sub-volumes in one file are mounted with "-oloop". Make use of multiple -oloop mounting the same file safe: Do a loop devices lookup, and if a loop device is already initialized, use it. Hopefully it is possible, as "losetup -d" will return OK, even if the device itself is in use, and is not released. Problems: There is a risk of race condition between the lookup and real mount. Once loop device is initialized read-only, kernel offers no way to turn it to read-write. It has to fail. References: https://lkml.org/lkml/2016/2/26/897 Signed-off-by: Stanislav Brabec <sbrabec@suse.cz> |
||
---|---|---|
Documentation | ||
bash-completion | ||
config | ||
disk-utils | ||
include | ||
lib | ||
libblkid | ||
libfdisk | ||
libmount | ||
libsmartcols | ||
libuuid | ||
login-utils | ||
m4 | ||
misc-utils | ||
po | ||
schedutils | ||
sys-utils | ||
term-utils | ||
tests | ||
text-utils | ||
tools | ||
.editorconfig | ||
.gitignore | ||
.travis-functions.sh | ||
.travis.yml | ||
AUTHORS | ||
COPYING | ||
ChangeLog | ||
Makefile.am | ||
NEWS | ||
README | ||
README.licensing | ||
autogen.sh | ||
configure.ac | ||
util-linux.doap |
README
util-linux util-linux is a random collection of Linux utilities Note that in years 2006-2010 this project used the name "util-linux-ng". MAILING LIST: E-MAIL: util-linux@vger.kernel.org URL: http://vger.kernel.org/vger-lists.html#util-linux DOWNLOAD: ftp://ftp.kernel.org/pub/linux/utils/util-linux/ SOURCE CODE: Web interface: http://git.kernel.org/cgit/utils/util-linux/util-linux.git https://github.com/karelzak/util-linux Checkout: git clone git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git util-linux NLS (PO TRANSLATIONS): PO files are maintained by: http://translationproject.org/domain/util-linux.html VERSION SCHEMA: Standard releases: <major>.<minor>[.<maint>[.<bugfix>]] major = fatal and deep changes minor = typical release with new features maint = maintenance releases; bug fixes only bugfix = unplanned releases for critical/security bugs Development releases: <major>.<minor>-rc<N>