I don't have a solid explanation, but I would liken it to having
multiple processes writing to the same file at the same time -
corruption ensues. I don't think there is any level at which the two
mounts could coordinate - they have separate block devices, separate
caches, etc. Even if you sync, who flushes first? This would explain
your mixed results.
I don't think you can prevent the two simultaneous mounts. However,
you should avoid doing this.
brassow
On May 23, 2005, at 12:21 AM, Manu Tayal wrote:
Hi All,
I tried the following steps:
1) Set up a loopback device
# dd if=/dev/zero of=/tmp/store1 bs=1024 seek=2047 count=1
# losetup /dev/loop1 /tmp/store1
# mke2fs /dev/loop1
# mount /dev/loop1 /mnt/loopdev
2) Create a linearly mapped device for the loopback device
# echo 0 $(blockdev --getsize /dev/loop1) linear /dev/loop1 0 |
dmsetup create new
# mount /dev/mapper/new /mnt/new
Both the devices created and mounted now refer to the same physical
device.
3) Write to both the devices separately:
# touch /mnt/loopdev/a.txt
# touch /mnt/new/b.txt
OBSERVATION:
===========
1) The file created in /mnt/loopdev is not visible under /mnt/new and
vice-versa. Thought, it might be due to the buffers maintained by
devices.
"sync" did not help in flushing.
2) On unmounting the devices and mounting it again gives unpredictable
results:
a. Sometimes, a.txt is visible at both the places, with b.txt missing
at both places.
b. Sometimes, b.txt is visible at both the places, with a.txt missing
at both places.
c. Sometimes, I get "Input/output" error in one of the mount points.
Questions:
=========
1) Can somebody explain the behavior?
2) Once a linear mapping is created for /dev/loop1 as /dev/mapper/new,
how
can I prevent the user from using /dev/loop1 and always use
/dev/mapper/new
for all the reads and writes?
3) What happens to all the open connections to files being used for
/dev/loop1 after I have mapped it to /dev/mapper/new?
Thanks and Regards,
Manu.
<disclaimer.txt>--
dm-devel@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/dm-devel