Red Hat Bugzilla – Bug 671015
xfs_fsr returns XFS_IOC_SWAPEXT failed: filename: Invalid argument
Last modified: 2017-07-18 22:22:14 EDT
Description of problem: xfs_fsr fails with: XFS_IOC_SWAPEXT failed: [filename]: Invalid argument Version-Release number of selected component (if applicable): xfsprogs-3.1.2-1.fc14.x86_64 How reproducible: I'm uncertain how to produce this situation from scratch. Additional info: In my case, it happens for /var/cache/man/index.db, which is on the root filesystem. # xfs_bmap /var/cache/man/index.db /var/cache/man/index.db: 0: [0..39]: 204865160..204865199 1: [40..975]: 213619224..213620159 2: [976..1535]: 213658424..213658983 3: [1536..2047]: 213665112..213665623 4: [2048..2303]: 213664840..213665095 5: [2304..4223]: 213992320..213994239 6: [4224..4231]: hole 7: [4232..4919]: 213994248..213994935 # xfs_fsr -v /var/cache/man/index.db /var/cache/man/index.db XFS_IOC_SWAPEXT failed: /var/cache/man/index.db: Invalid argument system log reports: Jan 19 17:03:26 hostname kernel: [1314182.278187] Filesystem "md2": fs/xfs/xfs_dfrag.c: inode 0x1820fea8 format is incompatible for exchanging. md2 is a clean raid 1 with default mount options. # grep md2 /etc/mtab /dev/md2 / xfs rw 0 0 # mdadm -D /dev/md2 /dev/md2: Version : 0.90 Creation Time : Mon Sep 27 09:07:59 2010 Raid Level : raid1 Array Size : 134217664 (128.00 GiB 137.44 GB) Used Dev Size : 134217664 (128.00 GiB 137.44 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 2 Persistence : Superblock is persistent Update Time : Wed Jan 19 17:09:17 2011 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 UUID : f0f8d714:f2f441c6:bfe78010:bc810f04 Events : 0.1511 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 # xfs_info /dev/md2 meta-data=/dev/md2 isize=256 agcount=4, agsize=8388604 blks = sectsz=512 attr=2 data = bsize=4096 blocks=33554416, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=16383, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 A somewhat similar bug was reported earlier, but that turned out to be an selinux context problem. In this case, this doesn't appear to be the case: # ls -Z index.db -rw-r--r--. root root system_u:object_r:man_t:s0 index.db Further to this, if I _copy_ the file, and run xfs_fsr against the copy, the following happens: # cp index.db index.db.bak # ls -l index.db* -rw-r--r--. 1 root root 2515043 Jan 19 03:19 index.db -rw-r--r--. 1 root root 2515043 Jan 19 17:16 index.db.bak # xfs_fsr -v index* index.db XFS_IOC_SWAPEXT failed: index.db: Invalid argument index.db.bak index.db.bak: zero size, ignoring ... but repeating it a second time works for the copy. # xfs_fsr -v index* index.db XFS_IOC_SWAPEXT failed: index.db: Invalid argument index.db.bak index.db.bak already fully defragmented.
Misc version details: $ rpm -qf `which xfs_fsr` xfsprogs-3.1.2-1.fc14.x86_64 $ uname -r 2.6.35.10-74.fc14.x86_64
swapext can fail for a few reasons... ah, you provided the dmesg. Excellent! > Jan 19 17:03:26 hostname kernel: [1314182.278187] Filesystem "md2": > fs/xfs/xfs_dfrag.c: inode 0x1820fea8 format is incompatible for exchanging. That went in with this commit: commit e09f98606dcc156de1146c209d45a0d6d5f51c3f Author: Dave Chinner <david@fromorbit.com> Date: Thu Jan 14 01:33:54 2010 +0000 xfs: xfs_swap_extents needs to handle dynamic fork offsets When swapping extents, we can corrupt inodes by swapping data forks that are in incompatible formats. This is caused by the two indoes having different fork offsets due to the presence of an attribute fork on an attr2 filesystem. xfs_fsr tries to be smart about setting the fork offset, but the trick it plays only works on attr1 (old fixed format attribute fork) filesystems. Changing the way xfs_fsr sets up the attribute fork will prevent this situation from ever occurring, so in the kernel code we can get by with a preventative fix - check that the data fork in the defragmented inode is in a format valid for the inode it is being swapped into. This will lead to files that will silently and potentially repeatedly fail defragmentation, so issue a warning to the log when this particular failure occurs to let us know that xfs_fsr needs updating/fixing. To help identify how to improve xfs_fsr to avoid this issue, add trace points for the inodes being swapped so that we can determine why the swap was rejected and to confirm that the code is making the right decisions and modifications when swapping forks. A further complication is even when the swap is allowed to proceed when the fork offset is different between the two inodes then value for the maximum number of extents the data fork can hold can be wrong. Make sure these are also set correctly after the swap occurs. Signed-off-by: Dave Chinner <david@fromorbit.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Alex Elder <aelder@sgi.com> If you're familiar with tracepoints, can you enable these and watch? This should do it: # mount -t debugfs none /sys/kernel/debug # echo 1 > /sys/kernel/debug/tracing/tracing_enabled # echo 1 > /sys/kernel/debug/tracing/events/xfs/xfs_swap_extent_before/enable # echo 1 > /sys/kernel/debug/tracing/events/xfs/xfs_swap_extent_after/enable <run your failing fsr run> # cat /sys/kernel/debug/tracing/trace and paste that output here. Thanks! -Eric
There's was an update to xfs_fsr itself that minimises the occurrences of this failure: http://git.kernel.org/?p=fs/xfs/xfsprogs-dev.git;a=commit;h=bdb041f58dc436dcb10b698ed8715fb889589b90 xfs_fsr: Improve handling of attribute forks V2 It should be in xfsprogs 3.1.2, so I'm interested to see what configuration on inode is not being handled now. The tracing output should tell us.
As chance would have it, cron.daily/man-db.cron replaced the file overnight, so the test case disappeared (for now). :-/ I also see the same problem for a F12 system -- also with an attr=2 filesystem. file: /var/log/wtmp Filesystem "dm-2": fs/xfs/xfs_dfrag.c: inode 0x1001b883 format is incompatible for exchanging. Unfortunately F12 doesn't have event debug options for xfs (I'll attach a trace of the xfs function calls - not sure whether that'll help). Both wtmp and the apropos database are sparse files, with the holes changing over time, which might have something to do with this. I'll run a few scripts here that create and modify a multitude of sparse dbs overnight, and see whether I can replicate the problem on the F14 system too.
Created attachment 474550 [details] xfs function trace attached function trace from F12 system with similar problem on attr=2 sparse file.
(In reply to comment #5) > Created attachment 474550 [details] > xfs function trace > > attached function trace from F12 system with similar problem on attr=2 sparse > file. That's a function trace, which is not very useful for diagnosing the problem because it doesn't tell us any details about the inode state before and after the swap that is causing problems. Can you run the trace commands that Eric asked you to in comment #2? They are the trace points I added specifically to debug this class of problem..... Cheers, Dave.
Is this still happening? Can you try what was suggested in comment #2? If not we'll have to close this one for lack of information, I'm afraid. Thanks, -Eric
maybe I can help here since I do have the same problem (Fedora 16, WD20EARS) # echo 1 > /sys/kernel/debug/tracing/tracing_enabled # echo 1 > /sys/kernel/debug/tracing/events/xfs/xfs_swap_extent_before/enable # echo 1 > /sys/kernel/debug/tracing/events/xfs/xfs_swap_extent_after/enable # xfs_fsr -v -t 7200 /storage/videos/ # cat /sys/kernel/debug/tracing/trace # tracer: nop # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | <...>-21999 [002] 41361.301117: xfs_swap_extent_before: dev 8:33 ino 0x803f1e62 (target), extent format, num_extents 8, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [002] 41361.301118: xfs_swap_extent_before: dev 8:33 ino 0x800000b3 (temp), extent format, num_extents 3, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [001] 41387.781155: xfs_swap_extent_before: dev 8:33 ino 0x803f1e65 (target), extent format, num_extents 7, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [001] 41387.781156: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 2, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41418.183222: xfs_swap_extent_before: dev 8:33 ino 0x803f1e8c (target), extent format, num_extents 7, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [002] 41418.183223: xfs_swap_extent_before: dev 8:33 ino 0x800000b3 (temp), extent format, num_extents 3, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41438.763103: xfs_swap_extent_before: dev 8:33 ino 0x803f1e92 (target), extent format, num_extents 7, Max in-fork extents 7, broot size 0, fork offset 112 <...>-21999 [002] 41438.763104: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 2, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41464.309170: xfs_swap_extent_before: dev 8:33 ino 0x803f1f9f (target), extent format, num_extents 7, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [002] 41464.309171: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 2, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [001] 41508.901103: xfs_swap_extent_before: dev 8:33 ino 0x803f2906 (target), extent format, num_extents 8, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [001] 41508.901104: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 4, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41545.617357: xfs_swap_extent_before: dev 8:33 ino 0x803f290a (target), extent format, num_extents 8, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [002] 41545.617358: xfs_swap_extent_before: dev 8:33 ino 0x800000b3 (temp), extent format, num_extents 4, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41618.852187: xfs_swap_extent_before: dev 8:33 ino 0x803f28f1 (target), extent format, num_extents 7, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [002] 41618.852189: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 6, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [000] 41659.280334: xfs_swap_extent_before: dev 8:33 ino 0x803f2909 (target), extent format, num_extents 7, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [000] 41659.280335: xfs_swap_extent_before: dev 8:33 ino 0x800000b3 (temp), extent format, num_extents 3, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [001] 41703.184998: xfs_swap_extent_before: dev 8:33 ino 0x803f291f (target), extent format, num_extents 7, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [001] 41703.184999: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 3, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41757.124627: xfs_swap_extent_before: dev 8:33 ino 0x803f2992 (target), extent format, num_extents 7, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [002] 41757.124628: xfs_swap_extent_before: dev 8:33 ino 0x800000b3 (temp), extent format, num_extents 4, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [001] 41805.595002: xfs_swap_extent_before: dev 8:33 ino 0x803f2a91 (target), extent format, num_extents 8, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [001] 41805.595004: xfs_swap_extent_before: dev 8:33 ino 0x800000b3 (temp), extent format, num_extents 4, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [003] 41842.077528: xfs_swap_extent_before: dev 8:33 ino 0x803f2a94 (target), extent format, num_extents 7, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [003] 41842.077530: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 4, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [001] 41881.908009: xfs_swap_extent_before: dev 8:33 ino 0x803f2c1e (target), extent format, num_extents 8, Max in-fork extents 9, broot size 0, fork offset 0 <...>-21999 [001] 41881.908010: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 3, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [001] 41935.961044: xfs_swap_extent_before: dev 8:33 ino 0x832d4ffe (target), extent format, num_extents 6, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [001] 41935.961045: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 5, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [001] 41936.218933: xfs_swap_extent_after: dev 8:33 ino 0x832d4ffe (target), extent format, num_extents 5, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [001] 41936.218934: xfs_swap_extent_after: dev 8:33 ino 0xb4 (temp), extent format, num_extents 6, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41987.290780: xfs_swap_extent_before: dev 8:33 ino 0x832d4fff (target), extent format, num_extents 5, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41987.290782: xfs_swap_extent_before: dev 8:33 ino 0xb4 (temp), extent format, num_extents 4, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41987.599739: xfs_swap_extent_after: dev 8:33 ino 0x832d4fff (target), extent format, num_extents 4, Max in-fork extents 6, broot size 0, fork offset 104 <...>-21999 [002] 41987.599741: xfs_swap_extent_after: dev 8:33 ino 0xb4 (temp), extent format, num_extents 5, Max in-fork extents 6, broot size 0, fork offset 104 Regards, Olaf
maybe also useful: # rpm -qf `which xfs_fsr` xfsprogs-3.1.5-1.fc16.x86_64 # uname -r 3.1.6-1.fc16.x86_64 and the console output from above trace: # xfs_fsr -v -t 7200 /storage/videos/ /storage/videos Start-Inode=0 ino=176 Es wird keine Verbesserung vorgenommen (übersprungen): ino=176 ino=175 Es wird keine Verbesserung vorgenommen (übersprungen): ino=175 ino=177 Es wird keine Verbesserung vorgenommen (übersprungen): ino=177 ino=172 Es wird keine Verbesserung vorgenommen (übersprungen): ino=172 ino=174 Es wird keine Verbesserung vorgenommen (übersprungen): ino=174 ino=1460128 Es wird keine Verbesserung vorgenommen (übersprungen): ino=1460128 ino=1463138 Es wird keine Verbesserung vorgenommen (übersprungen): ino=1463138 ino=2147483776 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2147483776 ino=2151615875 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151615875 ino=2151615883 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151615883 ino=2151615885 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151615885 ino=2151620194 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151620194: Das Argument ist ungültig ino=2151620197 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151620197: Das Argument ist ungültig ino=2151620236 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151620236: Das Argument ist ungültig ino=2151620242 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151620242: Das Argument ist ungültig ino=2151620225 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620225 ino=2151620461 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620461 ino=2151615892 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151615892 ino=2151615903 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151615903 ino=2151620193 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620193 ino=2151620205 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620205 ino=2151620223 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620223 ino=2151620238 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620238 ino=2151620239 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620239 ino=2151620241 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620241 ino=2151620450 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620450 ino=2151620451 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620451 ino=2151620454 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620454 ino=2151620465 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620465 ino=2151620474 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620474 ino=2151620477 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620477 ino=2151620478 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620478 ino=2151620482 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620482 ino=2151620487 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620487 ino=2151620498 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620498 ino=2151620971 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620971 ino=2151620511 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151620511: Das Argument ist ungültig ino=2151620967 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620967 ino=2151620974 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620974 ino=2151620500 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620500 ino=2151620894 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620894 ino=2151620960 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620960 ino=2151620962 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620962 ino=2151620963 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620963 ino=2151620968 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620968 ino=2151620970 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620970 ino=2151620979 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151620979 ino=2151621005 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151621005 ino=2151622201 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622201 ino=2151622199 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622199 ino=2151622203 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622203 ino=2151622204 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622204 ino=2151622205 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622205 ino=2151622206 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622206 ino=2151622207 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622207 ino=2151622208 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622208 ino=2151622210 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622210 ino=2151622212 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622212 ino=2151622221 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622221 ino=2151622223 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622223 ino=2151622224 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622224 ino=2151622225 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622225 ino=2151622234 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622234 ino=2151622304 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622304 ino=2151622309 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622309 ino=2151622311 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622311 ino=2151622216 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622216 ino=2151622222 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622222 ino=2151622226 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622226 ino=2151622228 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622228 ino=2151622238 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622238 ino=2151622239 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622239 ino=2151622305 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622305 ino=2151622306 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622306 ino=2151622307 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622307 ino=2151622308 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622308 ino=2151622310 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622310 ino=2151622312 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622312 ino=2151622918 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151622918: Das Argument ist ungültig ino=2151622922 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151622922: Das Argument ist ungültig ino=2151622897 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151622897: Das Argument ist ungültig ino=2151622921 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151622921: Das Argument ist ungültig ino=2151622943 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151622943: Das Argument ist ungültig ino=2151623058 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151623058: Das Argument ist ungültig ino=2151622891 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622891 ino=2151622903 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622903 ino=2151622929 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622929 ino=2151623046 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623046 ino=2151622890 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622890 ino=2151622892 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622892 ino=2151622893 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622893 ino=2151622894 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622894 ino=2151622895 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622895 ino=2151622896 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622896 ino=2151622901 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622901 ino=2151622904 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622904 ino=2151622906 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622906 ino=2151622907 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622907 ino=2151622908 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622908 ino=2151622910 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622910 ino=2151622911 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622911 ino=2151622914 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622914 ino=2151622915 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622915 ino=2151622919 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622919 ino=2151622927 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622927 ino=2151622928 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622928 ino=2151622935 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622935 ino=2151622938 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151622938 ino=2151623044 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623044 ino=2151623054 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623054 ino=2151623287 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623287 ino=2151623313 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151623313: Das Argument ist ungültig ino=2151623316 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151623316: Das Argument ist ungültig ino=2151623304 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623304 ino=2151623598 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623598 ino=2151623307 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623307 ino=2151623308 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623308 ino=2151623309 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623309 ino=2151623560 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623560 ino=2151623565 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623565 ino=2151623596 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623596 ino=2151623597 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623597 ino=2151623710 XFS_IOC_SWAPEXT fehlgeschlagen: ino=2151623710: Das Argument ist ungültig ino=2151623696 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623696 ino=2151623685 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623685 ino=2151623704 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623704 ino=2151623604 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623604 ino=2151623681 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623681 ino=2151623695 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623695 ino=2151623701 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623701 ino=2151623705 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623705 ino=2151623706 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623706 ino=2151623707 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623707 ino=2151623711 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2151623711 ino=2200779605 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200779605 ino=2200780832 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200780832 ino=2200780834 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200780834 ino=2200784899 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784899 ino=2200784870 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784870 ino=2200784871 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784871 ino=2200784894 extents vorher: 6 nachher: 5 ino=2200784894 ino=2200784897 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784897 ino=2200784895 extents vorher: 5 nachher: 4 ino=2200784895 ino=2200784898 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784898 ino=2200785338 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200785338 ino=2200784869 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784869 ino=2200784892 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784892 ino=2200784896 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784896 ino=2200785341 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200785341 ino=2200784900 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784900 ino=2200784868 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784868 ino=2200784888 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784888 ino=2200784889 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784889 ino=2200784893 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200784893 ino=2200785340 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2200785340 ino=2267785635 Es wird keine Verbesserung vorgenommen (übersprungen): ino=2267785635
(In reply to comment #8) > maybe I can help here since I do have the same problem (Fedora 16, WD20EARS) > > # echo 1 > /sys/kernel/debug/tracing/tracing_enabled > # echo 1 > /sys/kernel/debug/tracing/events/xfs/xfs_swap_extent_before/enable > # echo 1 > /sys/kernel/debug/tracing/events/xfs/xfs_swap_extent_after/enable > # xfs_fsr -v -t 7200 /storage/videos/ > # cat /sys/kernel/debug/tracing/trace > # tracer: nop I'll trim this a bit to make it obvious why XFs is throwing the error, and why it is correct to do so. > 0x803f1e62 (target), extent format, num_extents 8, Max in-fork extents 9, > 0x800000b3 (temp), extent format, num_extents 3, Max in-fork extents 6, So the first pair shows the target has more extents than the temp file can fit in the data fork, therefore they cannot be swapped. The reason appears to be that: > fork offset 0 > fork offset 104 the temp file has attributes while the defrag target file does not. So, the temp file that xfs_fsr is creating has attributes and it would be interesting to know what they are to see what they are. That's because xfs-fsr is not supposed to create attributes on the temp files unless the target file has attributes (which the fork offset of 0 says it doesn't). All of the failures follow this pattern, but from what I see the problem is somethign do do with inconsistency of attributes between the inodes that defrag is working on. Are you using default ACLs or some kind of security policy that creates attribute automatically when new files are created? Cheers, Dave.
Hi Dave, in what for infos are you interested in? I'm a Linux lamer on such low level questions ;-) Suggestions as on Comment #2 are very useful therefore. Anyway, I'm not on my box at home at this time. So far: I've enabled selinux, imo no special security policies are applied, but I have to check the defaults (ls -Z you mean ?). The xfs HD (WD20EARS, no lvm) is mounted on /storage/videos with (basically) options noatime,nodiratime,allocsize=512m at fstab. More informations later. Regards, Olaf
ok, more infos: # find /storage/videos/ -type f -exec ls -Z {} \; | awk -e '{print $4}' | sort -u system_u:object_r:file_t:s0 system_u:object_r:samba_share_t:s0 unconfined_u:object_r:file_t:s0 # mount|grep videos /dev/sdc1 on /storage/videos type xfs (rw,noatime,nodiratime,seclabel,attr2,delaylog,allocsize=524288k,noquota) # sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux Current mode: enforcing Mode from config file: enforcing Policy version: 26 Policy from config file: targeted what is required even more?
are these information still insufficient?
# xfs_fsr -vvv \{aed7ec6a-7659-494a-8837-cabce9e6f506\}.vdi {aed7ec6a-7659-494a-8837-cabce9e6f506}.vdi XFS_IOC_SWAPEXT failed: {aed7ec6a-7659-494a-8837-cabce9e6f506}.vdi: Invalid argument The kernel version is 3.3.0, x86_64 xfsprogs-3.1.5-1.fc16.x86_64 # cat /sys/kernel/debug/tracing/trace # tracer: nop # # entries-in-buffer/entries-written: 2/2 #P:2 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | | xfs_fsr-3895 [000] .... 108290.726664: xfs_swap_extent_before: dev 7:0 ino 0x400dd2e4 (target), btree format, num_extents 1463, broot size 120, fork offset 104 xfs_fsr-3895 [000] .... 108290.726666: xfs_swap_extent_before: dev 7:0 ino 0x1c4917 (temp), extent format, num_extents 1, broot size 0, fork offset 104
The patch at http://oss.sgi.com/archives/xfs/2012-03/msg00554.html should fix Gabriel's problem. Turns out to be different from the original reported problem, though.