bugrdiff-backup - Bugs: bug #23994, Crash when backing up an ext3...

 
 

bug #23994: Crash when backing up an ext3 folder to fat32

Submitted by:  None
Submitted on:  Mon 04 Aug 2008 09:01:01 AM UTC  
 
Category:  None Severity:  3 - Normal
Item Group:  None Status:  None
Privacy:  Public Assigned to:  None
Open/Closed:  Closed

Add a New Comment (Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Sat 04 Oct 2008 05:33:17 AM UTC, comment #4: 

Ok, since this is due to kernel changes, I am closing this as a bug report for now (I think the 2.6.26 change reverts the EPERM error of the 2.6.25 "improvements").

If this bug report is encountered again, I will add an FAQ entry about it (perhaps there is a flag for 'quiet mode' ?), or possibly catch OSError / EPERM in the rpath.chmod() function.

Andrew Ferguson <owsla>
Project Administrator
Sat 04 Oct 2008 05:18:05 AM UTC, comment #3: 

Actually, that previous comment was from 2.6.25.

But this one is from 2.6.26:

commit 2d518f84e5ecd1d71df0e6ac5176d212f68c27ce
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date:   Thu Jun 12 15:21:28 2008 -0700

    fat: relax the permission check of fat_setattr()

   

    New chmod() allows only acceptable permission, and if not acceptable, it
    returns -EPERM.  Old one allows even if it can't store permission to on
    disk inode.  But it seems too strict for users.

   

    E.g.  https://bugzilla.redhat.com/show_bug.cgi?id=449080: With new one,
    rsync couldn't create the temporary file.

   

    So, this patch allows like old one, but now it doesn't change the
    permission if it can't store, and it returns 0.

   

    Also, this patch fixes missing check.

   

    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit e97e8de388723f9491514fa0434ddf1fd713a188
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date:   Mon Apr 28 02:16:26 2008 -0700

    fat: fat_setattr() fix

   

    Fix fat_setattr() on the case of showexec option. If user specified
    showexec option, inode->i_mode may not have S_IXUGO. This just use
    inode->i_mode to fix it.

   

    And with this patch, we don't allow chmod() on memory inode, it's just
    bad behaviour. IOW, we allow changing S_IWUGO only which can be stored
    to disk.

   

    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Andrew Ferguson <owsla>
Project Administrator
Sat 04 Oct 2008 05:12:27 AM UTC, comment #2: 

In the Linux Kernel 2.6.26 ChangeLog, I found:

commit 19c561a60ffe52df88dd63de0bff480ca094efe4
Author: Jan Engelhardt <jengelh@computergmbh.de>
Date:   Wed Feb 6 01:36:08 2008 -0800

    fs/fat/: refine chmod checks

   

    Prohibit mode changes in non-quiet mode that cannot be stored reliably with
    the on-disk format.

   

    Suppose a vfat filesystem is mounted with umask=0 and [not-quiet].  Then
    all files will have mode 0777.  Trying to change the owner will fail,
    because fat does not know about owners or groups.  chmod 0770, on the other
    hand, will succeed, even though fat does not know about the permission
    triplet [user/group/other].

   

    So this patch changes fat's not-quiet behavior so that only UNIX modes are
    accepted that can be mapped lossless between the fat disk format and the
    local system.  There is only one attribute, and that is the readonly
    attribute, which is mapped to the UNIX write permission bit(s).  chmod 0555
    is therefore valid (taking away the +w bits <=> setting the readonly
    attribute).  Since chmod 0775 and chmod 0755 is an ambiguous case as to
    whether to set or clear the readonly bit, these modes are also denied.

   

    In quiet mode, chmod and chown will continue to "succeed" as they did
    before, meaning that a subsequent stat() will temporarily return the new
    mode as long as the inode is not reread from disk, and chown will silently
    do nothing, not even return the new uid/gid in stat().

   

    Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
    Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Andrew Ferguson <owsla>
Project Administrator
Sat 16 Aug 2008 07:54:57 PM UTC, comment #1: 

Hi,

There have been changes to the FAT permissions in new Linux kernels. What kernel version are you running? (I do not have this problem on 2.6.24 / Ubuntu 8.04)

Also, what are the permissions on the test file?

Based on this bug report and an email on the mailing list, it looks like new Linux kernels have changed how chmod works on FAT32 filesystems. I guess rdiff-backup will have to have a work-around. :-(

Andrew

Andrew Ferguson <owsla>
Project Administrator
Mon 04 Aug 2008 09:01:01 AM UTC, original submission:  

Hi

I am backing up my ext3 drive to a fat32 usb drive. Since I am not doing it very regularly, I don't know exaktly when it stopped working. Around that time Debian testing moved from 1.1.15 to 1.1.16. In case this is a Debian only problem just tell me and I will go to them.

I created a test directory containing nothing but the empty file test.dat and tried to back it up. (see below)

Thank you for your efforts

using Debian testing

$ rdiff-backup -v9 . /backup/test/

Mon Aug  4 10:36:44 2008  Using rdiff-backup version 1.1.17
Mon Aug  4 10:36:44 2008  Cannot change permissions on target directory.
Mon Aug  4 10:36:44 2008  Making directory /backup/test/rdiff-backup-data
Mon Aug  4 10:36:44 2008  ACLs not supported by filesystem at .
Mon Aug  4 10:36:44 2008  Unable to import win32security module. Windows ACLs
not supported by filesystem at .
Mon Aug  4 10:36:44 2008  escape_dos_devices not required by filesystem at .
Mon Aug  4 10:36:44 2008  -----------------------------------------------------------------
Detected abilities for source (read only) file system:
  Access control lists                         Off
  Extended attributes                          On
  Windows access control lists                 Off
  Case sensitivity                             On
  Escape DOS devices                           Off
  Mac OS X style resource forks                Off
  Mac OS X Finder information                  Off
-----------------------------------------------------------------
Mon Aug  4 10:36:44 2008  Making directory /backup/test/rdiff-backup-data/rdiff-backup.tmp.0
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/5-_ a.snapshot.gz
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/5-_ a.snapshot.gz
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/uniᄉ
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/uniᄉ
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/:\"
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/A
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/A
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/foo
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/foo
Mon Aug  4 10:36:44 2008  Making directory /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/hl
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/hardlinked_file1
Mon Aug  4 10:36:44 2008  Hard linking /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/hl/hardlinked_file2 to /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/hardlinked_file1
Mon Aug  4 10:36:44 2008  Warning: hard linking not supported by filesystem at /backup/test/rdiff-backup-data
Mon Aug  4 10:36:44 2008  Extended attributes not supported by filesystem at /backup/test/rdiff-backup-data/rdiff-backup.tmp.0
Mon Aug  4 10:36:44 2008  ACLs not supported by filesystem at /backup/test/rdiff-backup-data/rdiff-backup.tmp.0
Mon Aug  4 10:36:44 2008  Unable to import win32security module. Windows ACLs
not supported by filesystem at /backup/test/rdiff-backup-data/rdiff-backup.tmp.0
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/dir_inc_check
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/dir_inc_check
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/regfile
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/regfile
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/high_perms_file
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/high_perms_dir
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/high_perms_file
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/high_perms_dir
Mon Aug  4 10:36:44 2008  Touching /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/symlinked_file1
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0/symlinked_file1
Mon Aug  4 10:36:44 2008  escape_dos_devices not required by filesystem at /backup/test/rdiff-backup-data/rdiff-backup.tmp.0
Mon Aug  4 10:36:44 2008  Deleting /backup/test/rdiff-backup-data/rdiff-backup.tmp.0
Mon Aug  4 10:36:44 2008  Removing directory /backup/test/rdiff-backup-data/rdiff-backup.tmp.0
Mon Aug  4 10:36:44 2008  -----------------------------------------------------------------
Detected abilities for destination (read/write) file system:
  Ownership changing                           Off
  Hard linking                                 N/A
  fsync() directories                          On
  Directory inc permissions                    Off
  High-bit permissions                         Off
  Symlink permissions                          Off
  Extended filenames                           On
  Windows reserved filenames                   On
  Access control lists                         Off
  Extended attributes                          Off
  Windows access control lists                 Off
  Case sensitivity                             On
  Escape DOS devices                           Off
  Mac OS X style resource forks                Off
  Mac OS X Finder information                  Off
-----------------------------------------------------------------
Mon Aug  4 10:36:44 2008  Backup: must_escape_dos_devices = 0
Mon Aug  4 10:36:44 2008  Making directory /backup/test/rdiff-backup-data/increments
Mon Aug  4 10:36:44 2008  Starting mirror . to /backup/test
Mon Aug  4 10:36:44 2008  Processing changed file .
Mon Aug  4 10:36:44 2008  Processing changed file test.dat
Mon Aug  4 10:36:44 2008  Regular copying ('test.dat',) to /backup/test/rdiff-backup.tmp.1
Mon Aug  4 10:36:44 2008  Writing file object to /backup/test/rdiff-backup.tmp.1
Mon Aug  4 10:36:44 2008  Copying attributes from ('test.dat',) to /backup/test/rdiff-backup.tmp.1
Mon Aug  4 10:36:44 2008  Exception '[Errno 1] Operation not permitted: '/backup/test/rdiff-backup.tmp.1'' raised of class '<type 'exceptions.OSError'>':
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 302, in error_check_Main
    try: Main(arglist)
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 322, in Main
    take_action(rps)
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 278, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 344, in Backup
    backup.Mirror(rpin, rpout)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 38, in Mirror
    DestS.patch(dest_rpath, source_diffiter)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 232, in patch
    ITR(diff.index, diff)
  File "/var/lib/python-support/python2.5/rdiff_backup/rorpiter.py", line 281, in _call_
    last_branch.fast_process(*args)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 529, in fast_process
    if self.patch_to_temp(mirror_rp, diff_rorp, tf):
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 556, in patch_to_temp
    rpath.copy_attribs(diff_rorp, new)
  File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 185, in copy_attribs
    rpout.chmod(rpin.getperms())
  File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 898, in chmod
    self.conn.os.chmod(self.path, permissions & Globals.permission_mask)

Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 23, in <module>
    rdiff_backup.Main.error_check_Main(sys.argv[1:])
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 302, in error_check_Main
    try: Main(arglist)
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 322, in Main
    take_action(rps)
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 278, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 344, in Backup
    backup.Mirror(rpin, rpout)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 38, in Mirror
    DestS.patch(dest_rpath, source_diffiter)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 232, in patch
    ITR(diff.index, diff)
  File "/var/lib/python-support/python2.5/rdiff_backup/rorpiter.py", line 281, in _call_
    last_branch.fast_process(*args)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 529, in fast_process
    if self.patch_to_temp(mirror_rp, diff_rorp, tf):
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 556, in patch_to_temp
    rpath.copy_attribs(diff_rorp, new)
  File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 185, in copy_attribs
    rpout.chmod(rpin.getperms())
  File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 898, in chmod
    self.conn.os.chmod(self.path, permissions & Globals.permission_mask)
OSError: [Errno 1] Operation not permitted: '/backup/test/rdiff-backup.tmp.1'

Anonymous

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by owsla (Posted a comment)
  •  

    Do you think this task is very important?
    If so, you can add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

     

     

    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2008-10-04 owsla StatusNeed Info => None
        Open/ClosedOpen => Closed
    2008-08-19 owsla StatusNone => Need Info

    Back to the top


    Powered by Savane 3.5