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: NoneSeverity: 3 - Normal
Item Group: NoneStatus: None
Privacy: PublicAssigned 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 File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

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

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

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 3 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sat 04 Oct 2008 05:33:17 AM UTCowslaStatusNeed Info=>None
      Open/ClosedOpen=>Closed
    Tue 19 Aug 2008 01:10:13 AM UTCowslaStatusNone=>Need Info

    Back to the top


    Powered by Savane 3.1-cleanup1