Issue1172

Title clone fails on vfat without quiet mount option
Priority bug Status chatting
Superseder Nosy List abuehl, charris, dov, gavenkoa, jmprieto
Assigned To Topics

Created on 2008-06-09.20:37:02 by jmprieto, last changed 2008-07-06.20:07:32 by gavenkoa.

Files
File name Uploaded Type Edit Remove
chmod_supporting_os_nonsupporting_fs.patch.txt dov, 2008-06-15.18:46:22 text/plain
Messages
msg6478 (view) Author: gavenkoa Date: 2008-07-06.20:07:32
Also who use fat32 on Linux get issue1203 .
msg6476 (view) Author: gavenkoa Date: 2008-07-06.19:36:45
I have same problem when clone, pulling, pushing to rep that placed on vfat fs.
Trace stop on os.chmod() in all cases.

Using mount with `quiet' opt resolve this problem.
msg6372 (view) Author: charris Date: 2008-06-20.19:52:05
I see this bug also using fedora 8, but I can't pinpoint exactly when it showed up.
msg6304 (view) Author: jmprieto Date: 2008-06-17.15:41:32
Sorry for the delay. clone still fails with the same error as before. With 
clone --pull -U + update I get:

$ hg update --traceback
Exception exceptions.OSError: (1, 'Operation not permitted', '/media/My 
Passport/mercurial/.hg/.dirstate-90vIPp') in <bound method lock.__del__ of 
<mercurial.lock.lock object at 0xb78b308c>> ignored
800 files updated, 0 files merged, 0 files removed, 0 files unresolved

$ ls -a .hg/
.  ..  .branch.cache-54ZiVe  .branch.cache-cJgn5D  .dirstate-90vIPp  
00changelog.i  branch  hgrc  requires  store  undo.branch  undo.dirstate  wlock
msg6288 (view) Author: dov Date: 2008-06-15.18:57:01
Something like the attached. Does it solve the issue? (note: this patch is to be
applied over v2 of the patch for issue1149 (file642). )
msg6286 (view) Author: dov Date: 2008-06-15.18:14:47
hmm, I see there's a comment in checkexec() (in util.py)which says as much:

    # VFAT on some Linux versions can flip mode but it doesn't persist
    # a FS remount. Frequently we can detect it if files are created
    # with exec bit on.

So I guess this just has to do with which version of Linux is being used...
msg6285 (view) Author: dov Date: 2008-06-15.18:07:11
I think that a patch similar to that in issue1149 is needed here, too --- with
something like 'can_chmod' instead on 'can_symlink'.

However, I'm not able to reproduce the bug --- chmod actually seems to be
"working" for me. I'm trying it on a vfat image formatted with mkfs.vfat and
mounted on the loopback device:

/home/dov/fat32.img on /mnt/vfat type vfat
(rw,noexec,nosuid,nodev,loop=/dev/loop0,user=dov)

'hg debugfs' on this mount says:
exec: no
symlink: no
case-sensitive: no

but chmod doesn't complain, either through python or through the shell. In fact,
it even appears to change the permissions as requested, although this is not
preserved after unmounting and remounting.
msg6245 (view) Author: jmprieto Date: 2008-06-10.21:17:52
Still fails with the patch.
msg6244 (view) Author: dov Date: 2008-06-10.20:56:02
This latter problem will probably be fixed by the patch for issue1149 (file637).
If you can try applying it and let us know if it helps, that would be great!
msg6243 (view) Author: jmprieto Date: 2008-06-10.20:03:03
1. Nope, sorry. It's mount's quiet option (quiet:  Turn on the quiet flag.  
Attempts to chown or chmod files do not return errors, although they fail. Use 
with caution!)
2. hg clone --pull -U works. hg update fails:
$ hg update --traceback
Traceback (most recent call last):
  File "mercurial/dispatch.py", line 45, in _runcatch
  File "mercurial/dispatch.py", line 364, in _dispatch
  File "mercurial/dispatch.py", line 417, in _runcommand
  File "mercurial/dispatch.py", line 373, in checkargs
  File "mercurial/dispatch.py", line 356, in <lambda>
  File "mercurial/commands.py", line 2855, in update
  File "mercurial/hg.py", line 274, in update
  File "mercurial/merge.py", line 474, in update
  File "mercurial/merge.py", line 308, in applyupdates
  File "mercurial/merge.py", line 64, in resolve
  File "mercurial/localrepo.py", line 570, in wwrite
  File "mercurial/util.py", line 1204, in set_flags
OSError: [Errno 1] Operation not permitted: '/media/My 
Passport/mercurial/.hgignore'
abort: Operation not permitted: /media/My Passport/mercurial/.hgignore
msg6241 (view) Author: abuehl Date: 2008-06-09.22:18:08
(1) I don't understand "without quiet option" in the title. Do you mean if you
specify --quiet or -q the clone works? (this makes no sense)
(2) Does hg clone --pull -U work to that volume? What says hg update after that?
msg6239 (view) Author: jmprieto Date: 2008-06-09.20:37:01
$ hg clone --traceback ~/opt/hg/crew mercurial
Traceback (most recent call last):
  File "mercurial/dispatch.py", line 45, in _runcatch
  File "mercurial/dispatch.py", line 364, in _dispatch
  File "mercurial/dispatch.py", line 417, in _runcommand
  File "mercurial/dispatch.py", line 373, in checkargs
  File "mercurial/dispatch.py", line 358, in <lambda>
  File "mercurial/commands.py", line 546, in clone
  File "mercurial/hg.py", line 189, in clone
  File "mercurial/hg.py", line 171, in force_copy
  File "mercurial/util.py", line 708, in copyfiles
  File "/usr/lib/python2.5/shutil.py", line 81, in copy
    copymode(src, dst)
  File "/usr/lib/python2.5/shutil.py", line 60, in copymode
    os.chmod(dst, mode)
OSError: [Errno 1] Operation not permitted: '/media/My 
Passport/mercurial/.hg/00changelog.i'
abort: Operation not permitted: /media/My Passport/mercurial/.hg/00changelog.i


$ hg version
Mercurial Distributed SCM (version a51093361e1c)

Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


$ mount | grep My
/dev/sdb1 on /media/My Passport type vfat 
(rw,nosuid,nodev,noatime,flush,uid=1000,utf8,shortname=lower)
History
Date User Action Args
2008-07-06 20:07:32gavenkoasetnosy: jmprieto, dov, abuehl, gavenkoa, charris
messages: + msg6478
2008-07-06 19:36:47gavenkoasetnosy: + gavenkoa
messages: + msg6476
title: clone fails on vfat without quiet option -> clone fails on vfat without quiet mount option
2008-06-20 19:52:05charrissetnosy: + charris
messages: + msg6372
2008-06-17 15:41:36jmprietosetnosy: jmprieto, dov, abuehl
messages: + msg6304
2008-06-15 18:57:01dovsetnosy: jmprieto, dov, abuehl
messages: + msg6288
2008-06-15 18:56:32dovsetnosy: jmprieto, dov, abuehl
messages: - msg6287
2008-06-15 18:46:23dovsetfiles: + chmod_supporting_os_nonsupporting_fs.patch.txt
nosy: jmprieto, dov, abuehl
messages: + msg6287
2008-06-15 18:14:47dovsetnosy: jmprieto, dov, abuehl
messages: + msg6286
2008-06-15 18:07:12dovsetnosy: jmprieto, dov, abuehl
messages: + msg6285
2008-06-10 21:17:53jmprietosetnosy: jmprieto, dov, abuehl
messages: + msg6245
2008-06-10 20:56:03dovsetnosy: jmprieto, dov, abuehl
messages: + msg6244
2008-06-10 20:03:05jmprietosetnosy: jmprieto, dov, abuehl
messages: + msg6243
2008-06-10 10:41:40dovsetnosy: + dov
2008-06-09 22:18:11abuehlsetstatus: unread -> chatting
nosy: jmprieto, abuehl
messages: + msg6241
2008-06-09 22:06:06abuehlsetnosy: + abuehl
2008-06-09 20:37:02jmprietocreate