xfs
[Top] [All Lists]

Re: [PATCH v3 00/10] xfs_ioc_bulkstat code refactoring and consolidation

To: Jeff Liu <jeff.liu@xxxxxxxxxx>
Subject: Re: [PATCH v3 00/10] xfs_ioc_bulkstat code refactoring and consolidation
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Wed, 30 Jul 2014 09:27:48 +1000
Cc: "xfs@xxxxxxxxxxx" <xfs@xxxxxxxxxxx>
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <538D92B6.5050402@xxxxxxxxxx>
References: <538D92B6.5050402@xxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Tue, Jun 03, 2014 at 05:17:42PM +0800, Jeff Liu wrote:
> Hi folk,
> 
> This is the revised patches for xfs_ioc_bulkstat consolidation and code
> refactoring. As per Christoph's comments, I'm not include the per AG
> inumber patch in this series given that I don't actually introduce the
> relevant inumbers interface now. Similar to that reason, I also dropped
> the per AG bulkstat patch, it would be included in parallel quota check
> series.
> 
> 
> v3->v2:
> - one major bug fix is at xfs_bulkstat_ag_ichunk() regarding the user buffer
>   pointer operations, it should be defined as a pointer-to-pointer since it
>   would be updated inside xfs_bulkstat_ag_ichunk().
> 
> - separate xfs_inumber consolidate patch into two patches, the first one
>   fix the formater function return value and consolidate the codes, another
>   one does the actual logic changes for better error handling.
> 
> - Add a separate patch to get rid of the redundant user buffer count
>   checks at xfs_bulkstat()
> 
> - fixed agino calculation issue at xfs_bulkstat_grab_ichunk().
> 
> v2: http://oss.sgi.com/archives/xfs/2014-04/msg00554.html
> v1: http://oss.sgi.com/archives/xfs/2013-12/msg00901.html
> 
> 
> Any comments are welcome!

Hi Jeff, I ported this to the current dev tree based on the
xfs-libxfs-restructure branch, and I keep seeing fsstress failing
with memory corruption after random bulkstat ioctls. I see regular
failures with generic/013, generic/068, xfs/167 and the other
fstress tests also randomly fail. The typical failure is glibc
detected memory heap corruption on freeing the bulkstat structure
after the ioctl:

generic/068 42s ...*** Error in `./ltp/fsstress': double free or corruption 
(!prev): 0x00007f0224000b70 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7aa26)[0x7f022bce3a26]
/lib/x86_64-linux-gnu/libc.so.6(+0x7b7a3)[0x7f022bce47a3]
./ltp/fsstress[0x40260e]
./ltp/fsstress[0x402db5]
./ltp/fsstress[0x402359]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f022bc8a995]
./ltp/fsstress[0x402477]
======= Memory map: ========
00400000-0040c000 r-xp 00000000 08:01 511772                             
/home/dave/src/xfstests-dev/ltp/fsstress
0060c000-0060d000 rw-p 0000c000 08:01 511772                             
/home/dave/src/xfstests-dev/ltp/fsstress
0060d000-0062e000 rw-p 00000000 00:00 0                                  [heap]
7f0224000000-7f0224021000 rw-p 00000000 00:00 0 
7f0224021000-7f0228000000 ---p 00000000 00:00 0 
7f022ba53000-7f022ba68000 r-xp 00000000 08:01 244777                     
/lib/x86_64-linux-gnu/libgcc_s.so.1
7f022ba68000-7f022bc68000 ---p 00015000 08:01 244777                     
/lib/x86_64-linux-gnu/libgcc_s.so.1
7f022bc68000-7f022bc69000 rw-p 00015000 08:01 244777                     
/lib/x86_64-linux-gnu/libgcc_s.so.1
7f022bc69000-7f022be0b000 r-xp 00000000 08:01 245384                     
/lib/x86_64-linux-gnu/libc-2.17.so
7f022be0b000-7f022c00b000 ---p 001a2000 08:01 245384                     
/lib/x86_64-linux-gnu/libc-2.17.so
7f022c00b000-7f022c00f000 r--p 001a2000 08:01 245384                     
/lib/x86_64-linux-gnu/libc-2.17.so
7f022c00f000-7f022c011000 rw-p 001a6000 08:01 245384                     
/lib/x86_64-linux-gnu/libc-2.17.so
7f022c011000-7f022c015000 rw-p 00000000 00:00 0 
7f022c015000-7f022c02c000 r-xp 00000000 08:01 245380                     
/lib/x86_64-linux-gnu/libpthread-2.17.so
7f022c02c000-7f022c22b000 ---p 00017000 08:01 245380                     
/lib/x86_64-linux-gnu/libpthread-2.17.so
7f022c22b000-7f022c22c000 r--p 00016000 08:01 245380                     
/lib/x86_64-linux-gnu/libpthread-2.17.so
7f022c22c000-7f022c22d000 rw-p 00017000 08:01 245380                     
/lib/x86_64-linux-gnu/libpthread-2.17.so
7f022c22d000-7f022c231000 rw-p 00000000 00:00 0 
7f022c231000-7f022c232000 r-xp 00000000 08:01 325472                     
/lib/x86_64-linux-gnu/libaio.so.1.0.1
7f022c232000-7f022c431000 ---p 00001000 08:01 325472                     
/lib/x86_64-linux-gnu/libaio.so.1.0.1
7f022c431000-7f022c432000 r--p 00000000 08:01 325472                     
/lib/x86_64-linux-gnu/libaio.so.1.0.1
7f022c432000-7f022c433000 rw-p 00001000 08:01 325472                     
/lib/x86_64-linux-gnu/libaio.so.1.0.1
7f022c433000-7f022c437000 r-xp 00000000 08:01 324661                     
/lib/x86_64-linux-gnu/libattr.so.1.1.0
7f022c437000-7f022c636000 ---p 00004000 08:01 324661                     
/lib/x86_64-linux-gnu/libattr.so.1.1.0
7f022c636000-7f022c637000 r--p 00003000 08:01 324661                     
/lib/x86_64-linux-gnu/libattr.so.1.1.0
7f022c637000-7f022c638000 rw-p 00004000 08:01 324661                     
/lib/x86_64-linux-gnu/libattr.so.1.1.0
7f022c638000-7f022c659000 r-xp 00000000 08:01 245381                     
/lib/x86_64-linux-gnu/ld-2.17.so
7f022c844000-7f022c848000 rw-p 00000000 00:00 0 
7f022c855000-7f022c856000 rw-p 00000000 00:00 0 
7f022c856000-7f022c859000 rw-p 00000000 00:00 0 
7f022c859000-7f022c85a000 r--p 00021000 08:01 245381                     
/lib/x86_64-linux-gnu/ld-2.17.so
7f022c85a000-7f022c85c000 rw-p 00022000 08:01 245381                     
/lib/x86_64-linux-gnu/ld-2.17.so
7fffd18b7000-7fffd18d8000 rw-p 00000000 00:00 0                          [stack]
7fffd19fc000-7fffd19fe000 r-xp 00000000 00:00 0                          [vdso]
7fffd19fe000-7fffd1a00000 r--p 00000000 00:00 0                          [vvar]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  
[vsyscall]


I haven't been able to track down the issue yet, so could you pass
an eye over my updated patchset and see if you can spot the mistake
I made?  The patchset is in the xfs-bulkstat-refactor-NEEDS-FIXING
branch in the xfsdev repo which I just pushed. 

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>