On Thu, Sep 01, 2016 at 10:37:36PM +0300, Alexander Gordeev wrote:
> Hi ,
> 
> 01.09.2016, 21:25, "Jaegeuk Kim" <[email protected]>:
> > Hello,
> >
> > On Thu, Sep 01, 2016 at 08:40:07PM +0300, Alexander Gordeev wrote:
> > ...
> >>  >>  [ 49.274678] ------------[ cut here ]------------
> >>  >>  [ 49.280216] WARNING: at 
> >> /home/alex/work/s2l/amb_S2l_SDK_2.5/SDK2.5/s2l_linux_sdk/ambarella/kernel/linux-3.10/fs/f2fs/segment.c:1105
> >>  new_curseg+0x268/0x394 [f2fs]()
> >>  >
> >>  > This means there is no free segment.
> >>  > Could you print out the below information before this f2fs_bug_on?
> >>  > - prefree_segments(sbi)
> >>  > - free_segments(sbi)
> >>  >
> >>  >>  ...
> >>  >>  [ 49.518054] ---[ end trace 49dca462b4f988ff ]---
> >>  >>  [ 49.522689] ------------[ cut here ]------------
> >>  >>  [ 49.527375] WARNING: at 
> >> /home/alex/work/s2l/amb_S2l_SDK_2.5/SDK2.5/s2l_linux_sdk/ambarella/kernel/linux-3.10/fs/f2fs/segment.c:1144
> >>  new_curseg+0x2f0/0x394 [f2fs]()
> >>  >
> >>  > This is caused by the above segno which was -1.
> >>  >
> >>  >>  ...
> >>  >>  [ 49.764853] ---[ end trace 49dca462b4f98900 ]---
> >>  >>  [ 49.857344] ------ segno = 7540, next_blkoff = 0, next_segno = 
> >> 4294967295 --------
> >>  >>  [ 49.913664] ------ blkaddr = 3889152 --------
> >>  >>  [ 49.918173] Unable to handle kernel NULL pointer dereference at 
> >> virtual address 00000000
> >>  >
> >>  > Also, we can see next_segno was -1, which incur no se entry for this 
> >> segment.
> >>  > At this moment, I'd really like to see its 
> >> /sys/kernel/debug/f2fs/status whether
> >>  > there is really not enough free segments.
> >>
> >>  I collected both /sys/kernel/debug/f2fs/status and numbers of blocks.
> >>  The oops happens only when I try to delete anything. Also it can be caused
> >>  by GC, but I turned background GC off. So I mounted the fs, dumped the 
> >> status
> >>  and then tried to remove a file. Here is what I got:
> >>
> >>  =====[ partition info(sda). #0, RW]=====
> >>  [SB: 1] [CP: 2] [SIT: 2] [NAT: 34] [SSA: 16] [MAIN: 7540(OverProv:424 
> >> Resv:50)]
> >
> > Could you check your mkfs.f2fs version?
> > I want to check ovp and resv numbers.
> 
> I currently used mkfs.f2fs from my board's SDK. It prints this:
> F2FS-tools: mkfs.f2fs Ver: 1.4.1 (2015-03-04)
> 
> Should I upgrade it?
> I think the problem will go away if I recreate the FS. At the moment
> it reproduces every time. I wonder if we need it again.

Yes, please upgrade to the latest version to make sure.
And, it needs to format it again.
Seems there is no further information that we can use from the old partition.

Thanks,

> 
> > You can get the latest one from:
> > http://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git
> >
> >>  Utilization: 94% (3443739 valid blocks)
> >>    - Node: 4458 (Inode: 1115, Other: 3343)
> >>    - Data: 3439281
> >>    - Inline_xattr Inode: 0
> >>    - Inline_data Inode: 0
> >>    - Inline_dentry Inode: 0
> >>    - Orphan Inode: 0
> >>
> >>  Main area: 7540 segs, 3770 secs 3770 zones
> >>    - COLD data: 6192, 3096, 3096
> >>    - WARM data: 6186, 3093, 3093
> >>    - HOT data: 6198, 3099, 3099
> >>    - Dir dnode: 4836, 2418, 2418
> >>    - File dnode: 5003, 2501, 2501
> >>    - Indir nodes: 7533, 3766, 3766
> >>
> >>    - Valid: 6728
> >>    - Dirty: 5
> >>    - Prefree: 0
> >>    - Free: 807 (0)
> >
> > Here, we have 807 free segments, but no section that we can use right now.
> 
> Ah, I see now.
> 
> >>  CP calls: 0 (BG: 0)
> >>  GC calls: 0 (BG: 0)
> >>    - data segments : 0 (0)
> >>    - node segments : 0 (0)
> >>  Try to move 0 blocks (BG: 0)
> >>    - data blocks : 0 (0)
> >>    - node blocks : 0 (0)
> >>
> >>  Extent Cache:
> >>    - Hit Count: L1-1:0 L1-2:0 L2:0
> >>    - Hit Ratio: 0% (0 / 0)
> >>    - Inner Struct Count: tree: 0(0), node: 0
> >>
> >>  Balancing F2FS Async:
> >>    - inmem: 0, wb_bios: 0
> >>    - nodes: 0 in 1
> >>    - dents: 0 in dirs: 0 ( 0)
> >>    - datas: 0 in files: 0
> >>    - meta: 0 in 155
> >>    - NATs: 0/ 1
> >>    - SITs: 0/ 7540
> >>    - free_nids: 3496
> >>
> >>  Distribution of User Blocks: [ valid | invalid | free ]
> >>    [-----------------------------------------------|-|--]
> >>
> >>  IPU: 0 blocks
> >>  SSR: 0 blocks in 0 segments
> >>  LFS: 0 blocks in 0 segments
> >>
> >>  BDF: 78, avg. vblocks: 510
> >>
> >>  Memory: 2325 KB
> >>    - static: 1647 KB
> >>    - cached: 54 KB
> >>    - paged : 624 KB
> >>
> >>  [ 107.562070] ------ blkaddr = 2590606, se->cur_valid_map = 8477f040 
> >> --------
> >>  [ 107.570415] ------ blkaddr = 2590607, se->cur_valid_map = 8477f040 
> >> --------
> >
> > ...
> >>  [ 108.334883] ------ blkaddr = 2590713, se->cur_valid_map = 8477f040 
> >> --------
> >>  [ 108.341966] ------ blkaddr = 2590714, se->cur_valid_map = 8477f040 
> >> --------
> >>  [ 108.349047] ------ blkaddr = 2590715, se->cur_valid_map = 8477f040 
> >> --------
> >>  [ 108.356004] ------ blkaddr = 2590716, se->cur_valid_map = 8477f040 
> >> --------
> >>  [ 108.363130] ------ blkaddr = 2590717, se->cur_valid_map = 8477f040 
> >> --------
> >>  [ 108.370210] ------ blkaddr = 2590718, se->cur_valid_map = 8477f040 
> >> --------
> >>  [ 108.377244] ------ prefree_segments = 0, free_segments = 807 ------
> >>  [ 108.383526] ------------[ cut here ]------------
> >>  [ 108.388231] WARNING: at 
> >> /home/alex/work/s2l/s2l_linux_sdk/ambarella/kernel/linux-3.10/fs/f2fs/segment.c:1105
> >>  new_curseg+0x280/0x3b8 [f2fs]()
> >>  ...
> >>  [ 108.628965] ---[ end trace c59ce5906bb6d95e ]---
> >>  [ 108.633563] ------------[ cut here ]------------
> >>  [ 108.638240] WARNING: at 
> >> /home/alex/work/s2l/s2l_linux_sdk/ambarella/kernel/linux-3.10/fs/f2fs/segment.c:1144
> >>  new_curseg+0x308/0x3b8 [f2fs]()
> >>  ...
> >>  [ 108.878788] ---[ end trace c59ce5906bb6d95f ]---
> >>  [ 108.885201] ------ segno = 7540, next_blkoff = 0, next_segno = 
> >> 4294967295 --------
> >
> > So, new_curseg failed to find a free section, and gave 7540 which is the end
> > of main area. And then, it tried to allocate that LBA and got panic due to 
> > wrong
> > bitmap position when setting its SIT bitmap.
> >
> > For now, the root cause is due to zero free section, and I'd like to check
> > whether ovp and reserved space were correctly assigned or not.
> > Or, there was a missing flow which consumed reserved space entirely without
> > any cleaning.
> 
> I think, this is the SD card, I tried to defragment some time ago.
> Probably I shouldn't ever do it.
> Still IMHO the code should handle even such cases. For example, someone
> can craft a FS, and it might make bad things...
> 
> -- 
>  Alexander

------------------------------------------------------------------------------
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to