GNU bug report logs - #25930
optimize mv for multiple bind mounts

Previous Next

Package: coreutils;

Reported by: Ruediger Meier <sweet_f_a <at> gmx.de>

Date: Thu, 2 Mar 2017 09:52:01 UTC

Severity: normal

Done: Assaf Gordon <assafgordon <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Sven Joachim <svenjoac <at> gmx.de>
To: L A Walsh <coreutils <at> tlinx.org>
Cc: Ruediger Meier <sweet_f_a <at> gmx.de>, 25930 <at> debbugs.gnu.org
Subject: bug#25930: optimize mv for multiple bind mounts
Date: Sat, 04 Mar 2017 09:01:14 +0100
On 2017-03-02 13:16 -0800, L A Walsh wrote:

> Sven Joachim wrote:
>> ,----
>> |   EXDEV  oldpath and newpath are not on the same mounted filesystem.
>> |          (Linux  permits  a  filesystem  to  be  mounted at multiple
>> |          points, but rename() does not work across  different  mount
>> |          points, even if the same filesystem is mounted on both.)
>>   
> ----
>    That's unfortunate, as Windows recognizes moves between
> the same device and does a rename vs. a copy (i.e. it doesn't
> matter if the mounted object from the mount is different, as
> long as the rename happens between the same devices).

Linux used to do the same in kernel 2.2, but changed the behavior when
bind mounts were introduced in 2.4.0.  In other words, it's deliberate.

>    Anyone know why Linux doesn't do detection by device vs.
> by mount point?  Both pieces of info have their use, but for rename
> seems that 'by device' would be optimal.

It is meant as a security measure, bind mounts give you the option to
confine file renames and hard links to a directory subtree even if that
directory does not live on its own filesystem.  See this mail by Al Viro
on that matter: http://yarchive.net/comp/linux/bind_mounts.html.

Cheers,
       Sven




This bug report was last modified 6 years and 210 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.