linux/fs/jffs2/gc.c
<<
>>
Prefs
   1/*
   2 * JFFS2 -- Journalling Flash File System, Version 2.
   3 *
   4 * Copyright © 2001-2007 Red Hat, Inc.
   5 * Copyright © 2004-2010 David Woodhouse <dwmw2@infradead.org>
   6 *
   7 * Created by David Woodhouse <dwmw2@infradead.org>
   8 *
   9 * For licensing information, see the file 'LICENCE' in this directory.
  10 *
  11 */
  12
  13#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
  14
  15#include <linux/kernel.h>
  16#include <linux/mtd/mtd.h>
  17#include <linux/slab.h>
  18#include <linux/pagemap.h>
  19#include <linux/crc32.h>
  20#include <linux/compiler.h>
  21#include <linux/stat.h>
  22#include "nodelist.h"
  23#include "compr.h"
  24
  25static int jffs2_garbage_collect_pristine(struct jffs2_sb_info *c,
  26                                          struct jffs2_inode_cache *ic,
  27                                          struct jffs2_raw_node_ref *raw);
  28static int jffs2_garbage_collect_metadata(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
  29                                        struct jffs2_inode_info *f, struct jffs2_full_dnode *fd);
  30static int jffs2_garbage_collect_direna(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,

  v2.fd);
f, struct fd);
  30staeleL9"  id="L3nt jffs2_garbage_collect_direna(struct jffs2_sb_info *c, struct nt"> * JFFFS2 -- Journalling Flasss="f33" class="sref">jeb,

  v2.fd);
f, struct fd);
  25stathol"nt jffs2_garbage_collect_direna(struct jffs2_sb_info *c, struct f="fs/jf3s2/gc.c#L24" id="L24" c3ass="35" class="sref">jeb,

  v2.fd);
 *f, stn=fd" class="srefnjffs2_eraseblock" class="sref">"sref">j3fs2_sb_info *c,
f, suef"32_30" class="line"uef"32_3ode=fmsref">f, sassr30" class="line"assr3">fdf, suef"32_30" class="line"uef"32_3ode=fmsref">f, senruct jffs2_i3ode_cache *fd);
 *jffs2_garbage_collect_direna(struct jffs2_sb_info *c, struct s2_raw_n3de_ref *jeb,

  v2.fd);
 *f, stn=fd" class="srefnjffs2_eraseblock" class="sref">jffs2_er3seblock *jeb,
f, suef"32_30" class="line"uef"32_3ode=fmsref">f, sassr30" class="line"assr3">fdf, suef"32_30" class="line"uef"32_3ode=fmsref">f, senruct fd);
 *jffs2_garbage_collect_direna(struct jffs2_sb_info *c, struct  *jeb,
  27                                          struct 
  v2.fdfs2_full_dnode" class="sref4a href="4nclude/linux/stat.h" cl4ss="f4ass="comment"> */
 * J4FFS2 -- Journalling Fla4ss="f4e System, Version 2./* Ca#L3d with "+cod_" clleL9"  =c"  held href="fs/jffs2/gc.c#L11" id="L11" 4" class=""line" name="L3">   3jffs2_sb_info *c, sthref="ind_gc_ffs2_sb_info *jffs2_garbage_collect_direna(struct j4fs2_sb_info *jffs2_sb_info *c, sre30" class="line"re3class2_full_dnode" class="sref4>jffs2_i4ode_cache *c, snext="li0" class="line"next="liclass=fs2_sb_info" claNULL0" class="line"NULLclass2_full_dnode" class="sref4s2_raw_n4de_ref *fd);
 * */
jffs2_f5ll_dnode * llss="line" name="L4">   4 * *

 h claever wear-aeve/gc.c#algorithms. Evn>
ua#Ly.  href="fs/jffs2/gc.c#L11" id="L11" 5a href="5nclude/linux/stat.h" cl5ss="f52" class="sretem, Version 2./* We possibly waf">to favour
 h cdirtier e=c" s more whe9 * J5FFS2 -- Journalling Fla5ss="f5e System, Version 2.










number of free e=c" s >   3 * Copyright ass="55" class="sreif (!s2_sb_info" cla="li_empty0" class="line"="li_emptynt (struct (struct  *(struct j5fs2_sb_info *cfmt) icc, snext="li0" class="line"next="liclass=f&_collect_direna(struct (struct  *jeb/* NotL9" at moli>of /aem will have gonespan clly to beV"+codd="comment"> * For licensing infor6>jffs2_f6ll_dnode * t favour
 h c"+coable_="li _too_ much. href="fs/jffs2/gc.c#L11" id="L11" 6jffs2_er6seblock *jebfmt) icc, snext="li0" class="line"next="liclass=f&_collect_direna(struct  * J6FFS2 -- Journalling Fla6ss="f63" class="sre} elseeif (fd);
(struct    3jeb/* Moli>of /ae time, pi"  onesoff /ae very id=ty ="li href="fs/jffs2/gc.c#L11" id="L11" 6n class=6"comment"> * Copyright 6ass="65" class="sref">jebfmt) c(struct  *jebfmt) jeb(struct  *jebfmt) icc, snext="li0" class="line"next="liclass=f&_collect_direna(struct  * J7FFS2 -- Journalling Fla7ss="f73" class="sre} elseeif (!s2_sb_info" cla="li_empty0" class="line"="li_emptynt (struct    3jebfmt)  * Copyright 7ass="75ss="comment"> */
c   6(struct  *jebfmt) jeb(struct  *jebfmt)  */
 * J8FFS2 -- Journalling Fla8ss="f83" class="sref">jebc, snext="li0" class="line"next="liclass=f&_collect_direna(struct    3(struct  * Copyright 8ass="85" class="sref">jeb/* There are e=c" s are watc.c#for
 h cwbuf sync href="fs/jffs2/gc.c#L11" id="L11" 8 © 20048-2010 David Woodhouse &8="+co8e=c" class="sref">cfmt)    6icc, sspin_unfs2_sb_info *(struct fdfs2_full_dnode" class="sref8 * Createed by David Woodhouse &lde=ra88" class="sref">jebjeb *(struct fdfs2_full_dnode" class="sref9>jffs2_f9ll_dnode *jebic/* Eep. All were empty href="fs/jffs2/gc.c#L11" id="L11" 9nt"> * J9FFS2 -- Journalling Fla9ss="f93" class="sref">jebc, sss="srdbgsb_info *fmt)    3jebc, sNULL0" class="line"NULLclass2_full_dnode" class="sref9n class=9"comment"> * Copyright 9ass="95" class="sre}2_full_dnode" class="sref9 © 20049-2010 David Woodhouse &9="+co96ss="comment"> */
   6jffs2_sb_info *f, s="li0" class="line"="lief=")s2_full_dnode" class="sref9 * Creat9ed by David Woodhouse &9de=ra98c" class="sr"collect_direna="li_del0" class="line"="li_delnt    8(struct  * * *  10<01ode" class="sreif (!s2_sb_info" clare30" class="line"re3clas-="L7"collect_direnagc__inode_info *  11icc, spr_warn=fd" class="srepr_warnnt fmt) jeb,
jeb */
/* Have we accidspaa#Ly pi" ed a clean
e=c"  with wasf="fem,ce ? href="fs/jffs2/gc.c#L11" id="L11" c0a href="i0nclude/linux/slab.h" cla08ode" class="sreif (s2_sb_info" clare30" class="line"re3clas-="L7"collect_direnawasf="_sizode_info *jebfmt) jeb,
  10jeb  11icc, s(struct jebc, s(struct jeb */
c, sre30" class="line"re3class2_full_dnode" class="sref1l}2_full_dnode" class="sref1r="includee/linux/pagemap.h" class=="fre119ss="comment"> */
 *
  11/*
 * For licensing inform;":  href="fs/jffs2/compr.h"1 clas1="fref24">  24
 *jffs2_garbage_collect_direna(struct j1ffs2_sb_info *
  v2.fds2_full_dnode" class="sref1">jffs2_i1node_cache *  26                                          struct jffs2_sb_info *c, struct  *  27                                          struct jffs2_f1ull_dnode *f, sgcffs2_ id=tysb_info *  24
f, sinumt f, sn> *_sb_info * *_2_ras2_full_dnode" class="sref1"lass="lin3nclude/linux/stat.h" cl13ss="132" class="sre24">  24
 * * J1FFFS2 -- Journalling Fla1sss="133" cl2_full_dnode" class="sref1>>": 3href="fs/jffs2/compr.h"13clas134" class="sreif (s2_sb_info" clamutex =c"    terruptibl>  26       mutex =c"    terruptibl>nt (struct jebj13fs2_sb_info * */
jffs2_i13ode_cache *s2_raw_n13de_ref *jeb *(struct fdfs2_full_dnode" class="sref1>jffs2_er13seblock *jeb(struct  *jffs2_f14ll_dnode *jeb,
ic/* We canL9"> t assr3ddoc.c#GC yet. We havenL9"> t finished    " c.cef="fs/jffs2/gc.c#L11" id="L11" c4nt"> * J14FFS2 -- Journalling Fla14ss="14e System, Version 2.sref">jeb,
   3fmt
jeb/*    " ed_    >j14fs2_sb_info *c(struct (struct (struct (struct  *jffs2_i14ode_cache *ic,
c, spr_cri"fs/jffs2/gc.c#L13"cri"nt fmt)  *jeb,
(struct  *jeb,
 *(struct jeb,
 *(struct fdfs2_full_dnode" class="sref1njffs2_er15seblock *jeb,
 *(struct ic * J15FFS2 -- Journalling Fla15ss="153" class="sref">jeb   3fmt
 * Copyright 1ass=155" class="sref">jeb *(struct fdfs2_full_dnode" class="sref1n"sref">j15fs2_sb_info * */
jffs2_i15ode_cache *ic * */
 *jeb,

 *(struct  */
jffs2_f16ll_dnode *jeb *(struct  *icc, suct   26             get_   2L26">nt (struct f, s(struct (struct  * J16FFS2 -- Journalling Fla16ss="163" cl2_full_dnode" class="sref16" class=16"line" name="L3">   3jeb * Copyright 16ass=165" class="sref">jebjeb *(struct  *cjffs2_i16ode_cache *ic *jeb *_sb_info * *_jffs) {jffs2/gc.c#L11" id="L11" 17>jffs2_f17ll_dnode *jeb,
fmt)  *_/p    zero\nhref="+code=K2_eraseblock" class="sref"17jffs2_er17seblock *jebjeb,
(struct icjeb *(struct  * * J17FFS2 -- Journalling Fla17ss="173" class="sref">jeb,
f, suct    3jeb * Copyright 17ass=175" class="sref">jebc *icf, sINO_STATE_CHECKEDABSENTsb_info * *jebf, sINO_STATE_PRESENTsb_info * *jeb,
fmt) jffs2_f18ll_dnode *jeb,
,
(struct jeb,
 *(struct  *icjeb * J18FFS2 -- Journalling Fla18ss="183" cl2_full_dnode" class="sref18" class=18"line" name="L3">   3jebf, sINO_STATE_GCt  * Copyright 18ass=185" class="sref">jebf, sINO_STATE_CHECKING0" class="line"INO_STATE_CHECKINGc" c:jffs2/gc.c#L11" id="L11" 18 © 200418-2010 David Woodhouse &18="+c18e=c" class="sref">c,
fmt) n ass=  %d du">fm#CRC#r  "  phcod!\nhref="+code=K2_eraseblock" class="sref"18="include8"line" name="L6">   6ic,
,
(struct f, suct  *jeb,
 *(struct  *jeb,
jebf, sINO_STATE_READING0" class="line"INO_STATE_READINGc" c:jffs2/gc.c#L11" id="L11" 19a href="19nclude/linux/stat.h" cl19ss="192c" class="sref">ic,
/* We need to waitsfor
i">to finish, leli we move onef="fs/jffs2/gc.c#L11" id="L11" 19nt"> * J19FFS2 -- Journalling Fla19ss="19e System, Version 2.sref">jeb,
gger
 h cBUG() above while we havenL9"> t ye3cl="fs/jffs2/gc.c#L11" id="L11" 19" class=19"line" name="L3">   3sref">jeb,
 * Copyright 19ass=195" class="sref">jebjebfmt) c,
(struct    6ic,
/* We need to 2. veef="fs/jffs2/gc.c#L11" id="L11" 19 * Creat19ed by David Woodhouse &19de=r198c" ctem, Version 2.sref">jeb,
   8jeb,
(struct (struct   10201ode20b" class="sref">jeb,
 *(struct   11<202ode2#2c" class="sref">ic,
 *(struct  *(struct  *jeb,
fmt
jebc,
jebf, sINO_STATE_UNCHECKED0" class="line"INO_STATE_UNCHECKEDc" c:jffs2/gc.c#L11" id="L11" 20="includ20/linux/pagemap.h" class209ode2#b" class="sref">jebjeb  102s1ode21b" class="sref">jeb *  11<2span 212c" class="sref">icc, sspin_unfs2_sb_info *(struct  *jebfmt) <%s(): f">ggerc.c#   d csc clof    #%u\nhref="+code=K2_eraseblock" class="sref"2 f="fs/jf2fs2/gc.c#L14" id="L14" c2lass=215" class="sref">jebjeb *f, suct (struct  */
icc, sre30" class="line"re3class=fs2_sb_info" cla href=do_crcr  "       sb_info *(struct f, suct jeb */
jeb,
fmt) jeb,
,
"sref">f, suct (struct   11<2ppan 222c" class="sref">icc, ssref">jet_        _ass= sb_info *jet_        _ass= nt (struct f, suct f, sINO_STATE_CHECKEDABSENTsb_info *jebc, smutex unfs2_sb_info *(struct jebc, sre30" class="line"re3class2_full_dnode" class="sref2ef="fs/jf2fs2/gc.c#L24" id="L24" c2lass=225" class="sre}2_full_dnode" class="sref2="sref">j2ffs2_sb_info * */
jffs2_i2node_cache */* If /aere are any e=c" s which need "+coc.c,s"+cod /aem now href="fs/jffs2/gc.c#L11" id="L11" 2"a href="2ode_ref *(struct j!s2_sb_info" cla="li_empty0" class="line"="li_emptynt (struct jffs2_f2ull_dnode *jeb *(struct fdfs2_full_dnode" class="sref2"class="l2aseblock *jeb *(struct icc, ssref">dbgsb_info *fmt) <%s(): "+coc.c#penidde e=c" s\nhref="+code=Kf, s__func__sb_info *jeb *(struct jebf="fs/jf23s2/gc.c#L24" id="L24" c23ass=235ss="comment"> */
j23fs2_sb_info *cfmt) jffs2_i23ode_cache *icc, smutex =c" sb_info *(struct jeb *(struct fdfs2_full_dnode" class="sref2>jffs2_er23seblock */* Firli, wor  out which e=c"  weL9"> re jffs2/g-.c#L30"c.c#href="fs/jffs2/gc.c#L11" id="L11" 24lass="li24nclude/linux/stat.h" cl24ss="242c" class="srs2_sb_info" clasruct (struct  * * J24FFS2 -- Journalling Fla24ss="243" cl2_full_dnode" class="sref24" class=2""line" name="L3">   3jeb *(struct j24fs2_sb_info * */
jffs2_i24ode_cache * *jeb/* CouldnL9"> t find a free e=c" . But maybe we c cljusts"+cod onesand make L9"> progressL9"> ? href="fs/jffs2/gc.c#L11" id="L11" 24jffs2_er24seblock *jeb(struct  *jffs2_f25ll_dnode *jeb,
 *(struct fdfs2_full_dnode" class="sref2njffs2_er25seblock *jeb,
 *(struct ic * J25FFS2 -- Journalling Fla25ss="253" class="sref">jeb   3jebfmt)  t find "+cod e=c"  to jffs2/g .c#L30"!\nhref="+code=K)s2_full_dnode" class="sref2nf="fs/jf2""comment"> * Copyright 2ass=255" class="sref">jeb *(struct fdfs2_full_dnode" class="sref2n"sref">j25fs2_sb_info *c *(struct ic * */
jffs2_f26ll_dnode *fmt)  *jebs2_sb_info" clasruct f, ssruct f, ssruct f, ssruct (struct  * * J26FFS2 -- Journalling Fla26ss="263" class="sref">t2_sb_info" claprint_sb_info *fmt) (struct  *f, s(struct  *f, s(struct  *f, s(struct  * *f, s(struct  *   3fmt
 * Copyright 26ass=265" class="sreif (!s2_sb_info" clasruct c *(struct ic */
jffs2_f27ll_dnode * * * * J27FFS2 -- Journalling Fla27ss="273" class="srewhile(s2_sb_info" claref_obsoleLea href="+code=jfef_obsoleLent    3jebfmt)  * Copyright 27ass=275" class="sref">jebjebcjffs2_i2//linux/mtd/mtd.h" class2"+cod27ic" class="sref">ic * *jebcfmt) jeb,
fmt) jffs2_f28ll_dnode *jeb,
,
s2_sb_info" clasruct f, ssruct  *jeb,
,
s2_sb_info" clasruct f, ssruct icjeb * * J28FFS2 -- Journalling Fla28ss="283" class="sref">jeb,
 *(struct fdfs2_full_dnode" class="sref28" class=28"line" name="L3">   3jeb,
 *(struct  * Copyright 28ass=285" class="sref">jeb,
c   6 * */
jffs2_f29ll_dnode *fmt)  *jeb * J29FFS2 -- Journalling Fla29ss="293" class="sreif (!s2_sb_info" clar (struct    3jeb/* I_ino-less     . Cle, Vmarker, snapshot or somethc.c#fike " at href="fs/jffs2/gc.c#L11" id="L11" 29n class=29"comment"> * Copyright 29ass=295" class="sref">jeb *(struct fdfs2_full_dnode" class="sref29 © 200429-2010 David Woodhouse &29="+c29e=c" class="sref">c *   6ic,
/* ItL9"> s , Vunknownc_ino#with JFFS2_FEATURE_RWCOMPAT_COPY href="fs/jffs2/gc.c#L11" id="L11" 29s2_raw_n29ed by David Woodhouse &29de=r298" class="sref">jebc *(struct f, sNULL/a>(struct f, sr    8jebjeb,
/* Justsmark
i">obsoleLe href="fs/jffs2/gc.c#L11" id="L11" 30class="l30ne" name="L10">  10301ode30b" class="sref">jeb,
f, sr   11<302ode3#2c" class="sref">icjeb *(struct jeb */
/* When L9"> icL9">  l_ders xattr_aatum/xattr_l_d,  103s1ode31b" cltem, Version 2.sref">jeb* We can decino#whe/aerjeb*ref="fs/jffs2/gc.c#L11" id="L11" 3mlass="li3ne" name="L11">  11<3span 312c" class="srif (s2_sb_info" clauct (struct j||
"sref">f, suct (struct ":3 " jeb *(struct fdfs2_full_dnode" class="sref3 f="fs/jf3fs2/gc.c#L14" id="L14" c3lass=315ss="comment"> */
c(struct icjeb *(struct f, sr jebjeb,
 * *nt (struct f, sr jebjeb *  11<3ppan 322c" class="sr}2_full_dnode" class="sref3lf="fs/jf3"fs/jffs2/nodelist.h" cl3ass="323" cl#enidf2_full_dnode" class="sref3l>":3 href="fs/jffs2/compr.h"3 clas32mt" class="sref">fmt
/* We need to hold
 h c        . Ei/aerj3ffs2_sb_info *sref">jeb *sref">jeb *(struct  * * */
jffs2_f3ull_dnode * *(struct fdfs2_full_dnode" class="sref3"class="l3aseblock *fmt) <%s(): .c#L30"c.c#from e=c"  @0x%08x. Nide @0x%08x(%d),     #%u\nhref="+code=K2_eraseblock" class="sref"3"f="fs/jf3FFFS2 -- Journalling Fla3sss="333" class="sref">jeb *f, ssruct f, sref_olase30" class="line"fef_olase3nt f, sref_flagssb_info *":33href="fs/jffs2/compr.h"33clas334" class="sref">jeb(struct  */
j33fs2_sb_info */* Three possibilities:ef="fs/jffs2/gc.c#L11" id="L11" 3">jffs2_i33ode_cache *sref">jeband di properef="fs/jffs2/gc.c#L11" id="L11" 3"a href="33de_ref *sref">jebjffs2_er33seblock *sref">jebjffs2_f34ll_dnode *sref">jebntact.ef="fs/jffs2/gc.c#L11" id="L11" 34jffs2_er34seblock *sref">jeb  3. I_ino#>sref">jebsref">je*ref="fs/jffs2/gc.c#L11" id="L11" 34" class=3""line" name="L3">   3fmt
 *j34fs2_sb_info *f, sINO_STATE_CHECKEDABSENTsb_info *jffs2_i34ode_cache *ic/* ItL9"> s been    " ed, but itL9"> s not currspaly in-cor .ef="fs/jffs2/gc.c#L11" id="L11" 34a href="34de_ref *sref">jeb,
 *sref">jebjffs2_f35ll_dnode *sref">jeb re at it, so we se3/ h csss=  accoriddely *ref="fs/jffs2/gc.c#L11" id="L11" 3njffs2_er35seblock *jeb *ic * * J35FFS2 -- Journalling Fla35ss="353" class="sref">jeb   3jeb *fmt)  * Copyright 3ass=355" class="sref">jebic(struct j35fs2_sb_info *cjffs2_i35ode_cache *ic *f, sINO_STATE_PRESENTsb_info *jffs2_f36ll_dnode *jeb/* ItL9"> s in-cor . GC mustsiget() it.b*ref="fs/jffs2/gc.c#L11" id="L11" 36jffs2_er36seblock *jeb * J36FFS2 -- Journalling Fla36ss="363" class="sreccod/"sref">f, sINO_STATE_UNCHECKED0" class="line"INO_STATE_UNCHECKEDc" c:jffs2/gc.c#L11" id="L11" 36" class=36"line" name="L3">   3f, sINO_STATE_CHECKING0" class="line"INO_STATE_CHECKINGc" c:jffs2/gc.c#L11" id="L11" 36f="fs/jf36"comment"> * Copyright 36ass=365" class="sreccod/"sref">f, sINO_STATE_GCt j3dde/linux/kernel.h" clas3=="+c36e=c" class="sref">c/* Should nevsr happen. We should haveafinished    " c.cef="fs/jffs2/gc.c#L11" id="L11" 36>jffs2_i36ode_cache *sref">jebjebsref">jeb,
 re holdc.c#th cal=c"_sem,s_i o/aer *sref">jebjffs2_f37ll_dnode *sref">jeb *jebfmt) ic(struct f, suct  * * J37FFS2 -- Journalling Fla37ss="373" class="sref">jeb *(struct    3jeb *(struct  * * Copyright 37ass=375" class="sref">jeb */
jffs2_i3//linux/mtd/mtd.h" class3"+cod37ic" class="srccod/"sref">f, sINO_STATE_READING0" class="line"INO_STATE_READINGc" c:jffs2/gc.c#L11" id="L11" 37s2_raw_n37de_ref *jeb/* SomeoneL9"> s currspaly tryc.c#to read it.bWe mustswait
foref="fs/jffs2/gc.c#L11" id="L11" 37jffs2_er37seblock *sref">jebjffs2_f38ll_dnode *sref">jeb *sref">jeb  ////////taecal=c"_sem() (for
markc.c#    s invalid) so we mustnt="fs/jffs2/gc.c#L11" id="L11" 38a href="38nclude/linux/stat.h" cl38ss="382c" ctem, Version 2.sref">jeb * J38FFS2 -- Journalling Fla38ss="383" cl2_full_dnode" class="sref38" class=38"line" name="L3">   3jeb *(struct  * Copyright 38ass=385" class="sref">jebfmt) <%s(): waitc.c#for
i   #%u >ncsss=  %d\nhref="+code=K2_eraseblock" class="sref"38 © 200438-2010 David Woodhouse &38="+c38e=c" class="sref">cjeb *f, suct (struct f, suct  *   6ic *(struct  *(struct  *jeb/* And because we dropped/taecal=c"_sem we must assrt aga>ncfrom theef="fs/jffs2/gc.c#L11" id="L11" 38jffs2_er38seblock *sref">jeb re  Prefsc.c#succetrjf="fs/jffs2/gc.c#L11" id="L11" 39>jffs2_f39ll_dnode *sref">jeb *sref">jebncINO_STATE_READINGc"="fs/jffs2/gc.c#L11" id="L11" 39nt"> * J39FFS2 -- Journalling Fla39ss="39e System, Version 2.sref">jeeeeeeeeeeeeaga>ncby/ h ctime we next spaer   3sref">jeeeeeeeeeeeeenough#times#to cause a real delay?jf="fs/jffs2/gc.c#L11" id="L11" 39n class=39"comment"> * Copyright 39ass=395ss="comment"> */
sref">jeb t care :)ef="fs/jffs2/gc.c#L11" id="L11" 39="includ39"line" name="L6">   6sref">jebje*ref="fs/jffs2/gc.c#L11" id="L11" 39s2_raw_n39ed by David Woodhouse &39de=r398" class="sref">jeb   8  10401ode40b" class="sre"em, Version 2./* OK. Niw/if  h c   no#>ncsss=  INO_STATE_GC, we are joc.c#to copy/ h ef="fs/jffs2/gc.c#L11" id="L11" 40lass="li40e" name="L11">  11<402ode402c" ctem, Version 2.sref">jebntact,aand we donL9"> t haveato mu" cabout with th cfragtree etc.ef="fs/jffs2/gc.c#L11" id="L11" 40f="fs/jf40s2/gc.c#L12" id="L12" c403ode40e System, Version 2.sref">jeeeebecause we know itL9"> s not in-cor . If
i">_was_ in-cor ,swe go fhroughef="fs/jffs2/gc.c#L11" id="L11" 404="fs/jf40"line" name="L3">   3sref">jeeeealle h c get() crap anywaye*ref="fs/jffs2/gc.c#L11" id="L11" 40f="fs/jf40s2/gc.c#L14" id="L14" c405ode405ss="comment"> */
 *ic *(struct  *jeb *(struct f, suct f, sr   104s1ode41b" class="sref">jeb *(struct  *  11<4span 412c" class="sref">ic * *jic *(struct  * fmt
jebcic *(struct  *icjeb *jeb */
jeb/* Falle hrough#if
i">wanted us#to, with          =c" chelde*ref="fs/jffs2/gc.c#L11" id="L11" 4lclass="l4linux/compiler.h" class=4"fref42b" class="sre}2_full_dnode" class="sref4llass="li4ee" name="L11">  11<4ppan 422c" c2_full_dnode" class="sref4lf="fs/jf4"fs/jffs2/nodelist.h" cl4ass="423" class="sre"em, Version 2./* Prevspa th cfairly unfikely raco#where taecgcffs2_#>sref">jeeeespa9rely obsoleLedcby/ h cfinalVerose/of acfilo#which hadef="fs/jffs2/gc.c#L11" id="L11" 4lf="fs/jf4fs2/gc.c#L24" id="L24" c4lass=425" cltem, Version 2.sref">jeb *sref">jeb *sref">jebsref">jeb s vaguely possible.b*ref="fs/jffs2/gc.c#L11" id="L11" 4"="includ4aseblock * */
jffs2_f4ull_dnode * *(struct  * * *(struct  *":43href="fs/jffs2/compr.h"43clas434" class="sre"collect_direnaned_info * *(struct f, sunumod_info * *j43fs2_sb_info *c * *ic *jffs2_f44ll_dnode *jeb *jeb   3 *(struct f, ssruct f, sr f, sned_info * */
j44fs2_sb_info * *(struct f, sned_info * * * * *f, ssruct  * *jffs2_f45ll_dnode *jeb/* Eep. Th> *jeb *fmt) ic * * J45FFS2 -- Journalling Fla45ss="453" class="sref">jeb   3 * Copyright 4ass=455" clas2_sb_info" clarelecod_semt j45fs2_sb_info * *(struct  * * veafinished  h>jffs2_f46ll_dnode * *(struct fdfs2_full_dnode" class="sref46jffs2_er46seblock * * J46FFS2 -- Journalling Fla46ss="463" class="sreif ("sref">f, s(struct  *(struct  *   3jeb *fmt)  * Copyright 46ass=465" class="sref">jebic(struct  *j4dde/linux/kernel.h" clas4=="+c46e=c" class="sref">c/* WeL9"> re GCL9"> i.c#an emptysffs2_?#*ref="fs/jffs2/gc.c#L11" id="L11" 46>jffs2_i46ode_cache *ic(struct  * *jebf, s(struct  *(struct jeb(struct  *jebggersb_info *ggernt (struct  *(struct fdfs2_full_dnode" class="sref47nt"> * J47FFS2 -- Journalling Fla47ss="473" cl2_full_dnode" class="sref47" class=47"line" name="L3">   3 * Copyright 47ass=475" cl}2_full_dnode" class="sref47"sref">j47-2010 David Woodhouse &47="+c476ss="comment"> */
jffs2_i4//linux/mtd/mtd.h" class4"+cod47ic" cass=ic#>ntfs2_sb_info" cla href=jffs2/gc.c#L30" liveod_info *(struct  * */
jeb * * */
 *jffs2_f48ll_dnode *(struct (struct (struct (struct  * J48FFS2 -- Journalling Fla48ss="483c" class="srs2_sb_info" clau>nt32_aod_info *nt32_ac" c s2_sb_info" claassrtsb_info *f, seni0" class="line""ndclass=f0f, snrfragssb_info *   3ntfs2_sb_info" clare30" class="line"re3class=f0s2_full_dnode" class="sref48n class=48"comment"> * Copyright 48ass=485ss="comment"> */
 * *   6/* Niw/we haveathe =c"  for
 h> s stille h conesat  h cheadef="fs/jffs2/gc.c#L11" id="L11" 48jffs2_er48seblock *sref">jebjffs2_f49ll_dnode * *(struct fdfs2_full_dnode" class="sref49a href="49nclude/linux/stat.h" cl49ss="492c" c2_full_dnode" class="sref49nt"> * J49FFS2 -- Journalling Fla49ss="493" class="sreif ("sref">f, s(struct  *   3jeb *(struct fdfs2_full_dnode" class="sref49n class=49"comment"> * Copyright 49ass=495" class="sref">jebfmt) c *   6   8jeb *(struct fdfs2_full_dnode" class="sref50ation, s5ee the file 'LICENCE5#code500" class="sref">jeb *fmt) <     to be GCL9"> d was obsoleLedcin/ h cmeantime.\nhref="+code=Kfs2_full_dnode" class="sref501tion, s5eseblock *jeb/* TheyL9"> llecalleaga>nc*ref="fs/jffs2/gc.c#L11" id="L11" 50lass="li50e" name="L11">  11<502ode502c" class="sref">ic *   3 *(struct fdfs2_full_dnode" class="sref505="fs/jf50"comment"> * Copyright 505ode505ss="comment"> */
/* OK. Looks saf . And nobody/c clget
u   6 * * * *jebf, snn/a>(struct  * *   8jeb *(struct f, ssruct f, sned_info *f, snn/a>(struct jeb *  105s1ode51b" class="sre}2_full_dnode" class="sref5mlass="li5ne" name="L11">  11<5span 512c" c2_full_dnode" class="sref5mf="fs/jf5fs2/gc.c#L12" id="L12" c5lass=513" class="sre"em, Version 2./* FIXME. Read#     and di lookup?#*ref="fs/jffs2/gc.c#L11" id="L11" 5m4="fs/jf5 " (struct  *(struct (struct (struct jeb(struct  *(struct  *cic(struct (struct  *icjebf, seni0" class="line""ndclass=ft2_sb_info" clanrag/a>(struct  *(struct jebjeb * */
jebicjebf, sassrtsb_info *(struct  *jebjeb *(struct  * * */
jeb/* WeL9"> veafound fhemealle*ref="fs/jffs2/gc.c#L11" id="L11" 5llass="li5ee" name="L11">  11<5ppan 522c" class="sref">icf (s2_sb_info" clann/a>(struct jeb *cic *(struct f, sned_info * *f, sr  *icjeb *jeb/* Urgh. Rerefs
it sensibly.b*ref="fs/jffs2/gc.c#L11" id="L11" 5"="includ5aseblock *jebicjebf, snrag/a>(struct  *f, sned_info * * *jffs2_f5ull_dnode *jebjeb *jebic *jebjeb/* Weafound a data    . Do#th cGCb*ref="fs/jffs2/gc.c#L11" id="L11" 5"f="fs/jf53s2/gc.c#L24" id="L24" c53ass=535" class="sref">jeb * * *j53fs2_sb_info *cjeb/* It crosses a p2/g boundary. Therefor ,
it must be a hole.b*ref="fs/jffs2/gc.c#L11" id="L11" 5"="includ53ode_cache *icjeb *(struct f, ssruct f, sned_info *f, snn/a>(struct f, sassrtsb_info *f, seni0" class="line""ndclas)s2_full_dnode" class="sref5"a href="53de_ref *jeb *jebic/* It could stillebe a hole.bBut w cGCbth cp2/g  h>jffs2_f54ll_dnode *jebjeb *(struct f, ssruct f, sned_info *f, snn/a>(struct f, sassrtsb_info *f, seni0" class="line""ndclas)s2_full_c.c#L11" id="L11" 54class="l54seblock *jebic *   3fmt
 t a d    . Try dirspae*ref="fs/jffs2/gc.c#L11" id="L11" 54"sref">j54fs2_sb_info *(struct f, sned_info * *(struct (struct (struct icf (s2_sb_info" cland/a>(struct jeb *(struct (struct (struct ic *(struct f, ssruct f, sned_info *f, snd/a>(struct  * J55FFS2 -- Journalling Fla55ss="553" class="sre} else >f (s2_sb_info" cland/a>(struct    3jeb *(struct f, ssruct f, sned_info *f, snd/a>(struct  * Copyright 5ass=555" class="sre} else {jffs2/gc.c#L11" id="L11" 5n"sref">j55fs2_sb_info *c(struct fmt)  t in#     ="lis#for
i   #%u\nhref="+code=K2_eraseblock" class="sref"5n>jffs2_i55ode_cache *icjebf, sned_info * *(struct jeb *jebic(struct fmt)  s obsoleLe so we donL9"> t mind foo mu"h\nhref="+code=Kfs2_full_dnode" class="sref56>jffs2_f56ll_dnode *jeb *jeb *(struct f, sref_ofase30" class="line"fef_olase3nt ic * J56FFS2 -- Journalling Fla56ss="563" class="sref">jeb   3 * Copyright 56ass=565" clas2_sb_info" claupnouaod_info *j5dde/linux/kernel.h" clas5=="+c56e=c" class="ss2_sb_info" clamutex unfs2_sb_info * * *ntfs2_sb_info" cla href=jffs2/gc.c#L30" pr"li Wood_info *(struct ic * * J57FFS2 -- Journalling Fla57ss="573" class="sref">jeb *   3 * Copyright 57ass=575" class="sreun9" at2_sb_info" class="sr    _un9" cb_info * *j57-2010 David Woodhouse &57="+c57e=c" class="ss2_sb_info" clasizo_aod_info * * *nt32_aod_info *nt32_ac" c s2_sb_info" claphys_ofssb_info *f, sal=c"le cb_info *nt32_aod_info *nt32_ac" c s2_sb_info" clacr(struct f, sr  *(struct fmt)  * J58FFS2 -- Journalling Fla58ss="583" class="sref">jebf, sref_ofase30" class="line"fef_olase3nt    3fmt
 * Copyright 58ass=585c" class="srs2_sb_info" claal=c"le cb_info * * *(struct f, s(struct  *f, sr  */
   6/* As  for
a smalleamountfof em,ce (or
 h  to3le /if smaller)ebecause weef="fs/jffs2/gc.c#L11" id="L11" 58s2_raw_n5eed by David Woodhouse &5lde=r588c" ctem, Version 2.sref">jeb t want#to forco#waassge/of  h cend/of acffs2_#>f emlit"i.c#wouldef="fs/jffs2/gc.c#L11" id="L11" 58jffs2_er58seblock *sref">jebjffs2_f59ll_dnode * * * *jeb * * * J59FFS2 -- Journalling Fla59ss="593" class="srescollect_direnare30" class="line"re3class=fs2_sb_info" cla href=reserve_em,ce_gct f, sal=c"le cb_info * * *   3/* L9"> r  #> * Copyright 59ass=595ss="comment"> */
   6ic   8f, sal=c"le cb_info * *jeb/* DoesnL9"> t fit untouched. WeL9"> llego#th cold rout  and emlit
it *ref="fs/jffs2/gc.c#L11" id="L11" 601tion, s6eseblock *jeb  11<602ode602c" class="sr}2_full_dnode" class="sref60f="fs/jf60s2/gc.c#L12" id="L12" c603ode603" cl2_full_dnode" class="sref604="fs/jf60"line" name="L3">   3 * * *(struct  * Copyright 605ode605" class="sreif (!s2_sb_info" clan   od_info *c   6(struct (struct f, sref_ofase30" class="line"fef_olase3nt  * * *   8 * *jeb  106s1ode61b" class="sre>f (s2_sb_info" clare30" class="line"re3clas)jffs2/gc.c#L11" id="L11" 6mlass="li6ne" name="L11">  11<6span 612c" class="sref">ic * (struct f, sn   od_info * * * *(struct (struct c(struct fmt) 
icjebf, sref_ofase30" class="line"fef_olase3nt * * *(struct f, s(struct jeb * * * * 11<6ppan 622c" class="srcaseft2_sb_info" claJFFS2_NODETYPE_INODEod_info *jeb(struct f, sn od_info * *jeb * *(struct (struct jebc(struct fmt) cicjebf, sref_ofase30" class="line"fef_olase3nt * *(struct icjebjeb(struct *jeb *jebjffs2_f6ull_dnode *jeb * *ic(struct f, sn od_info * * * *jebjeb * *(struct (struct jebic(struct fmt) jebjebic *cjebic * *(struct f, s(struct *icjeb *jeb *jebjffs2_f64ll_dnode *jeb *jeb(struct f, sn od_info * *(struct 3jeb * *(struct (struct (struct jebc(struct fmt) j64fs2_sb_info *cicjebf, sref_ofase30" class="line"fef_olase3nt icicjebf, sse32_ao_cpude_info * *(struct (struct f, s(struct *jeb *jebjffs2_f65ll_dnode *jeb * *(struct * *(struct *(struct icjebf, spr_warn/a>(struct fmt) * J65FFS2 -- Journalling Fla65ss="653" class="sref">jebjebjebf, sref_ofase30" class="line"fef_olase3nt 3jeb * Copyright 6ass=655" class="sref">jebj65fs2_sb_info * */ jffs2_i65ode_cache *ic *(struct jebjebf, scr(struct f, sn od_info *(struct * *(struct *jebic * *(struct (struct (struct jffs2_f66ll_dnode *jebjebjebf, spr_warn/a>(struct fmt) *jebjebjebf, sref_ofase30" class="line"fef_olase3nt icjebjebf, sse32_ao_cpude_info * *(struct (struct f, s(struct * J66FFS2 -- Journalling Fla66ss="663" class="sref">jeb 3jeb * Copyright 66ass=665" class="sref">jebj6dde/linux/kernel.h" clas6=="+c66e=c" class="sref">cjffs2_i66ode_cache *jeb/* If itL9"> s -less, we donL9"> t _know_ what it ><. Just copy it >ntact *ref="fs/jffs2/gc.c#L11" id="L11" 66jffs2_er66seblock *jebjffs2_f67ll_dnode *jebjeb(struct fmt) *jebjebf, sref_ofase30" class="line"fef_olase3nt f, sse16_ao_cpude_info * * * *ic * J67FFS2 -- Journalling Fla67ss="673" class="sref">jeb 3 * Copyright 67ass=675ss="comment"> */ j67-2010 David Woodhouse &67="+c67e=c" class="ssem, Version 2./* OK,ealleth cCRCs are/good; h><. *ref="fs/jffs2/gc.c#L11" id="L11" 67>jffs2_i6//linux/mtd/mtd.h" class6"+cod67ic" cl"sref">f, sretry0" class="line"fetryc" c:jffs2/gc.c#L11" id="L11" 67a href="67de_ref * * *(struct *jffs2_f68ll_dnode *f, sret0" class="line"fetef="s=fs2_sb_info" cla href=fclah=writede_info *(struct f, sphys_ofssb_info *f, sr * * * * * * J68FFS2 -- Journalling Fla68ss="683" class="sref">jeb *fmt) 3jebicf, sr *f, sphys_ofssb_info *f, sre30" class="line"re3clasf, sre3le cb_info * * Copyright 68ass=685" class="sref">jeb *j68-2010 David Woodhouse &68="+c68e=c" class="sref">cic *(struct f, sphys_ofssb_info *f, sREF_OBSOLETEod_info *f, sr *f, sNULL/a>(struct 6icjebjebf, spr_notic od_info *fmt) *jebicjeb *jeb *jeb(struct icjeb/* Try to real=c"at cem,ce andcre3rye*ref="fs/jffs2/gc.c#L11" id="L11" 69nt"> * J69FFS2 -- Journalling Fla69ss="693" class="sref">jebnt32_aod_info *nt32_ac" c s2_sb_info" cladummy0" class="line"dummynt 3jebic *f, sphys_ofssb_info *f, s(struct * Copyright 69ass=695ss="comment"> */ cic(struct 6jebjebf, sss="srdbgsb_info *fmt) 8jebjebf, sss="srdbg_acct_sanity_che2_sb_info *(struct jebjebf, sss="srdbg_acct_paranoia_che2_sb_info *(struct f, ssruct jeb(struct f, sr * * 3jebicjeb/* h> * Copyright 705ode705" cltem, Version 2.sref">jeb */ 6icicjebjebf, sss="srdbgsb_info *fmt) 8jebicjebf, sphys_ofssb_info * 107s1ode71b" class="sref">jebjebf, sss="srdbg_acct_sanity_che2_sb_info *(struct 11<7span 712c" class="sref">icjebf, sss="srdbg_acct_paranoia_che2_sb_info *(struct f, ssruct jebicjebcjebf, sss="srdbgsb_info *fmt) icjebjebf, sre30" class="line"re3clas)s2_full_dnode" class="sref7 8"includ7include/linux/slab.h" cl7ass="718" class="sref">jebjebjebjebf, sre30" class="line"re3class=f-"collect_direnaEIO0" class="line"EIOc" cs2_full_dnode" class="sref7llass="li7ee" name="L11"> 11<7ppan 722c" class="sref">ic * *(struct f, sphys_ofssb_info *f, sREF_PRISTINEod_info *f, sr *f, suct */ (struct f, sr * *f, sss="srdbgsb_info *fmt) *jebf, sref_ofase30" class="line"fef_olase3nt *jffs2_f7ull_dnode * * * * * *ntfs2_sb_info" cla href=jffs2/gc.c#L30" metadatasb_info *(struct jeb(struct * * * * 3f, sss="srdevice__inode_info * *(struct * * *f, su>nt32_aod_info *nt32_ac" c s2_sb_info" claal=c"le cb_info * * * *jffs2_f75ll_dnode * * *js2_sb_info" claS_ISCHR0" class="line"S_ISCHRnt * *ic/* For h se, we donL9"> t actual=y needsto read#th cold *ref="fs/jffs2/gc.c#L11" id="L11" 75nt"> * J75FFS2 -- Journalling Fla75ss="753" class="sref">jeb * * * 3jeb * * Copyright 7ass=755" class="sref">jebf, sss="srdbgsb_info *fmt) <%s(): Writc.c#%d bytes of kdev_t\nhref="+code=K2_eraseblock" class="sref"75"sref">j75fs2_sb_info *cicf, s_=func__sb_info * * * * *jeb * * *jeb * * *(struct jeb * *jebf, spr_warn/a>(struct fmt) ic * J76FFS2 -- Journalling Fla76ss="763" class="sref">jeb 3jeb *(struct f, s+cb_info * * *f, smdatale cb_info * * Copyright 76ass=765" class="sref">jebf (s2_sb_info" clare30" class="line"re3clas) {jffs2/gc.c#L11" id="L11" 76"sref">j7dde/linux/kernel.h" clas7=="+c76e=c" class="sref">cf, spr_warn/a>(struct fmt) jffs2_i76ode_cache *icicjebf, sre30" class="line"re3clas)s2_full_dnode" class="sref76a href="76de_ref *jebjebf, skfreode_info * * *jebjffs2_f77ll_dnode *jeb *jebf, sss="srdbgsb_info *fmt) <%s(): Writc.c#%d bites of sym> *k target\nhref="+code=K2_eraseblock" class="sref"77lass="li77nclude/linux/stat.h" cl77ss="772c" class="sref">icf, s_=func__sb_info * * * J77FFS2 -- Journalling Fla77ss="773" cl2_full_dnode" class="sref77" class=77"line" name="L3"> 3 * Copyright 77ass=775ss="comment"> */ j77-2010 David Woodhouse &77="+c77e=c" class="ss2_sb_info" clare30" class="line"re3class=fs2_sb_info" cla href=reserve_em,ce_gct * * */ jffs2_i7//linux/mtd/mtd.h" class7"+cod77ic" class="sref">icicjebf, sJFFS2_SUMMARY_INODE_SIZEod_info * * *jeb(struct fmt) < href=reserve_em,ce_gc/of %zd bytes for jffs2/gc.c#L30" metadataefailed:c%d\nhref="+code=K2_eraseblock" class="sref"78>jffs2_f78ll_dnode *jebjeb *f, sre30" class="line"re3clas)s2_full_dnode" class="sref78jffs2_er78seblock *jeb * J78FFS2 -- Journalling Fla78ss="783" cl2_full_dnode" class="sref78" class=78"line" name="L3"> 3 * * * * * Copyright 78ass=785" class="sre>f (s2_sb_info" clainft_fragsb_info *j78-2010 David Woodhouse &78="+c78e=c" class="sref">c/* Fetch#th c le gth from th cfragtreo rath r h nef="fs/jffs2/gc.c#L11" id="L11" 78>jffs2_i78"line" name="L6"> 6sref">jebjeb * * * *jeb * * * * J79FFS2 -- Journalling Fla79ss="793" class="sre_collect_direnarit (struct 3 *(struct * Copyright 79ass=795" class="sre"collect_direnarit * *j79-2010 David Woodhouse &79="+c79e=c" class="ss2_sb_info" clarit (struct 6 * * * * 8 * * *f, srit * * * *(struct (struct *(struct (struct * * 3 * * * * Copyright 805ode805" class="sre"collect_direnarit * * * * * * 6f, srit * 8 *f, srit * 108s1ode81b" class="sres2_sb_info" clarit (struct 11<8span 812c" class="srs2_sb_info" clarit (struct * * * * * * * * */ *ic(struct fmt) *jeb *jeb(struct f, s+ cb_info * * 11<8ppan 822c" class="srs2_sb_info" cla href=freerfull_d_inode_info * * * * * *c * * * * *jffs2_f8ull_dnode *ntfs2_sb_info" cla href=jffs2/gc.c#L30" dirspane_info *(struct jebjeb(struct *(struct (struct (struct nt32_aod_info *nt32_ac" c s2_sb_info" claal=c"le cb_info * *(struct (struct *(struct *(struct f, srd/a>(struct *(struct *(struct *(struct (struct (struct (struct (struct 3(struct * * * *(struct * * * *(struct *(struct * */* If th ctief were set by explicit utief() th y c, Vbe differspa,ef="fs/jffs2/gc.c#L11" id="L11" 84a href="84de_ref *sref">jeb * * * *jffs2_f85ll_dnode *jeb(struct * * * *ic(struct * * J85FFS2 -- Journalling Fla85ss="853" class="sre_collect_direnard/a>(struct *(struct * 3(struct (struct (struct (struct * Copyright 8ass=855" class="sre"collect_direnard/a>(struct (struct (struct f, srd/a>(struct * */ f, sre30" class="line"re3class=fs2_sb_info" cla href=reserve_em,ce_gct (struct (struct * */ jebic *(struct *jffs2_f86ll_dnode *jeb(struct fmt) < href=reserve_em,ce_gc/of %zd bytes for jffs2/gc.c#L30" dirspaefailed:c%d\nhref="+code=K2_eraseblock" class="sref"86jffs2_er86seblock *jeb(struct (struct ic * J86FFS2 -- Journalling Fla86ss="863" class="sre}2_full_dnode" class="sref86" class=86"line" name="L3"> 3(struct *(struct (struct (struct f, srd/a>(struct * * Copyright 86ass=865ss="comment"> */ j8dde/linux/kernel.h" clas8=="+c86e=c" class="s>f (s2_sb_info" claIS_ERR0" class="line"IS_ERRnt (struct jffs2_i86ode_cache *ic(struct fmt) < href=write_dirspasin jffs2/gc.c#L30" dirspaefailed:c%ld\nhref="+code=K2jffs2/gc.c#L11" id="L11" 86a href="86de_ref *jebjebf, sPTR_ERR0" class="line"PTR_ERRnt (struct *jeb(struct *(struct * * J87FFS2 -- Journalling Fla87ss="873" cl}2_full_dnode" class="sref87" class=87"line" name="L3"> 3 * Copyright 87ass=875ss="ass=ic#>ntfs2_sb_info" cla href=jffs2/gc.c#L30" deletion dirspane_info *(struct j87-2010 David Woodhouse &87="+c87e=c" class="sref">c(struct *(struct jffs2_i8//linux/mtd/mtd.h" class8"+cod87ic" c{jffs2/gc.c#L11" id="L11" 87a href="87de_ref *(struct * * *(struct /* On a medium where we c, L9"> t actual=y mark s obsoleLent="fs/jffs2/gc.c#L11" id="L11" 88a href="88nclude/linux/stat.h" cl88ss="882c" ctem, Version 2.sref">jeb * J88FFS2 -- Journalling Fla88ss="883" cltem, Version 2.sref">jeb 3sref">jeb realL9"> dirspaswith#th cs "> #thatL9"> sestillcl="fs/jffs2/gc.c#L11" id="L11" 88f="fs/jf88"comment"> * Copyright 88ass=885" cltem, Version 2.sref">jebj88-2010 David Woodhouse &88="+c88e=c" class="s>f (!s2_sb_info" cla href=c, rmark_obsoleLea href="+code=jss="src, rmark_obsoleLent (struct jffs2_i88"line" name="L6"> 6ic(struct jeb * *jebntfs2_sb_info" clare30" class="line"re3class2_full_dnode" class="sref89>jffs2_f89ll_dnode *jeb * *jebntfs2_sb_info" cla rig_le cb_info * *(struct icnt32_aod_info *nt32_ac" c s2_sb_info" clayrig_cr(struct (struct f, s rig_le cb_info * * J89FFS2 -- Journalling Fla89ss="893" class="sreef">icnt32_aod_info *nt32_ac" c s2_sb_info" clar * *(struct (struct * 3 * Copyright 89ass=895" class="sreef">ic(struct * *(struct j89-2010 David Woodhouse &89="+c89e=c" class="sref">cf (!s2_sb_info" clard/a>(struct 6icic 8jeb/* Prevspas he erase iren from nickc.c#th obsoleLe l_ds/whilent="fs/jffs2/gc.c#L11" id="L11" 90ation, s9ee the file 'LICENCE9#code900" cltem, Version 2.sref">jeb re lookc.c#at#th m. I real=y do L9"> t like his extra fs2_ butcl="fs/jffs2/gc.c#L11" id="L11" 901tion, s9eseblock *sref">jeb t see any altert.tive. Suggestionic *(struct (struct 3 * * * * * * * * * * * Copyright 905ode905ss="comment"> */ c(struct 6jebjeb/* We only c,re about obsoleLe ones *ref="fs/jffs2/gc.c#L11" id="L11" 909tion, s9e"line" name="L8"> 8jebf (!(s2_sb_info" claref_obsoleLea href="+code=jref_obsoleLent *jebjeb 109s1ode91b" cl2_full_dnode" class="sref9mlass="li9ne" name="L11"> 11<9span 912c" class="sref">icjeb/* Any dirspaswith#th cs "> #is goc.c#to havesth cs "le gth... *ref="fs/jffs2/gc.c#L11" id="L11" 9m3tion, s9fs2/gc.c#L12" id="L12" c9lass=913" class="sreef">icf (t2_sb_info" clab_i_to3le cb_info *(struct * * jeb */ t like his 3ef=fr8aJFFS2_F_I_CTIMfs2/gc.c#L14" id=6boes/c, L9">mat al////whetehatL9">Le spasvesth cs he eraaseff.>/*/weL9"> is goc.c *ref="fs/jffs2/gc.c#L11" id="L11"f907tion,cl8e/linux/mtd/mtd.h" cl9ss8="91d78ic" ctem, Version 2.sref">jebjecf (t2_sb_info" SECTOR_ADD_ERR0" class="liSECTOR_ADD_eLent * *jeeeef">jebjeb *fmtChe fspot. 11<8pp92 912c" class="sref">icjejeb *je_I_CTIMfs2/gc.c#L14" id=6Tn h>s CTIh obsoleLe belong goc.c#at#th cs on dctory, CTdeichatL9">L* If trigh butcl="fs/jffs2/gc.c#L11" id="L11" 8l5="fs9jf8fs2/gc.c#L24" id="L249 c8la92=885" cltem, Version 2.sref">jeeeeeeeeeeeeeeeee "le g>/* we needstakleteclosal/re lgth.. *ref="fs/jffs2/gc.c#L11" id="L11" 8lef="i9cl8ffs2_sb_info *b(struct (struct * *(struct icisre>f (s2_sb_info" clare30" class="line"re3clas) {jffs2/gc.c#L11" id="L19ef8l8"inc9ud8ode_ref *jebic(struct fmtd:c&#s(): Rean hejeeeef">jebic(struct <__func__ href=" *jffs9_f8ull_dnode *jebjeb/* re we c, L9"> I deicsih, =y do L9">we needs/ *jebje/icje cl}2_full_dnode" class="s9" 8"f="fs9jf8FFFS2 -- Journalling 9la8ss93=913" class="sreef">icf (t2_sb_info" clare3le cb_info * *jeb(struct fmtd:c&#s(): Shor"> I de(of %ves_of &#u). I d gochI dal/en frh obsoleLe .c#d:cx;ld\nhref="+code=K2jffs2/gc.c#L11" id="L19ef8"5="fs9jf83s2/gc.c#L24" id="L249 c83a93=895" class="sreef">isreeeeeeeeef">jeb(struct <__func__ href=" * * *c * *iciiiiiiiii/jeb *jebje///>f (t2_sb_info" ao_ _fd_cpusruct * *jebje/ic/* If t "> CRC =yes/c, L9">match, skipe.. *ref="fs/jffs2/gc.c#L11" id="L11ef844="fs9jf8""line" name="L3"> 9je///>f (t2_sb_info" ao>nt3d_cpusruct (struct (struct isreeeeeeeeef">je/ * */ *ici"sr"em, Version 2./* If t "> "le =yes/c, L9">match, ErrichatL9">aveshethis deletion dir, skipe.. *ref="fs/jffs2/gc.c#L11" id="L11ef8l8"inc9="84de_ref *jecf (t2_sb_info" elard/a>(struct nt3d_cpusruct *bb(struct memcml_dirspa" cla**_memcmlcpusruct (struct f, s rigdirenainocb_info * * 954FFS2 -- Journalling 9la84s94="srdls="sref">bb 3es* If t. T"sr, /sref">m nich ouL9">match, Errichs_of &#u)s. Sospanswith#o_t" ceh as NAND frsih, we needsto work out956ss="com9ent"> */ */ *mo" clun"sref">ic *(struct (struct 9ffs2_986ll_dnode *ef">jeb *fmtChe fspot.Che\r_warnnt *//////////////"(struct (struct //////////////"nt3d_cpusruct (struct * 964FFS2 -- Journalling 9la84s94=elard/a>(struc class="sref">c(struct 3 *(struct (struct */ 963fs2_sb_info *jeb9ffs2_96e"line" name="L6"> 6 *mo" clun"sref">ic *(struct (struct c(struct 109s1ode9clas)s2_f9ll_dnode" class="sref87l9ss="l987nclude/linux=matcef">ebscur/"em,m///bong gect_dit utief() th y c, Vbe differspa,9efs 0s2_f9ll_dnode" class="sref87n9"> * 978FFS2 -- Journalling Fla88ss="883" cltee should updatth#th ct_diren3 I d Versioossr"em, Vaccor I deL9veshethis deletion dir, skipe.. *re3" cl}2_f9ll_dnode" class="sref87"9class987"line" name="L3"> 3987-2010 David nick (o * *9ffs2_974ode_cache * * * *b" class="sre>ntfs2_sb_info" cla1nfo" clard/a>(struct *(structex" cla href=jffs2tex"ollenfo" clard/a>(struct (struct *(structex" cla href=jffs2tex"ollenfo" clard/a>(struct * 986FFS2 -- Journalling Fla86ss="863" clas9l="fs/jff92/gc.c#L11" id="L11" 88"9class98""line" name=e &89="+c89e=c" clasb" class="sre>ntfs2_sb_info" ir * * Copyright 89ass=895" cef">jeb(struct fmtChe\r_warnnt tcb_9398ffs2_sb_info *(struct * * *9ffs2_988"line" name=nalling Fla86ss="863" clas9lde=K2jff9ll_dnode" class="sref88s9_raw_983de_ref *(sref="+code=jffs2/_collect_direna+d/a>(struct * * * 989FFS2ment"> * Copyright 87ass=875ss="ass=ic#>ntfs2_sbh2_s cla href=jffs2/gc.c#L30" dirspane_inh2_saofas2/gc.c#L30" deletion dirspant (struct c(struct *(struct * * Copyrig_info *icnt32_aod_infomenr"sref">jeb(slass="sreef">icnt32_aod_infoeclass="sre>ntfs2_en2_sb_info" clard/a>(struct 989-201 *jeb(struct (struct (struct *(struct ect_n /a>nfo" clard/a>(struct 10t=seblock *icnt32_aod_infoonsizoef="ioef="o" clard/a>(struct jebntfs2_sb_info" clare30" class="line"r10t2"fs/jff10tl_dnode" class="sref89a10tl_>10t4nclude/linux/stat.h"9cl84s9="10t3"fs/jff10tl_dnode" class="sref89n10tl_>10t5FFS2 -- Journalling Fla85ssef">jeb *10t3href="fs/jffs2/compr9hena hrect * *menr"sref">jeb(seclass="sre>ntfs2_en2_sb_ifo" clare30" class="line"r10t5"fs/jff10tl_dnode" class="sref89f10tl_>10tfs2/gc.c#L14" id="L14" c9lass=10t6"fs/jff10tl_dnode" class="sref89"10tl_>10t4fs2_sb_info * *(struct (struct 610t7de_ref *irena(struct ra/achoef="-="L7"co>ra/ade_redire 1ir *jebadunc__ href="102/seblock *(struclass="sreef">icnt32_aod_infocr<2ffs)s!= _collerelayrifo" clare30" class="line"r1011"fs/jff10ll_dnode" class="sref9 c10ll_>1026seblock *icbe31029FFS2 -- Journalling Fla89ss="893" csref">b(struct (struct (struct *(struct 1023href="fs/jffs2/compr=913" class="sreef">iadunc__ href="(struct b *jeb(struct /gc.c#L30" dirspane_inh2_s. Refspot.) < . Dren3weth bspansthre writcef"="srh2_s3 I dn frh obsoleLe .c#d:cx;ld\nhref="+1016"fs/jff10ent"> */ 1023fs2_sb_info *b(strc__ href="(struct 1024ode_cache *1025de_ref *1028seblock *jebje///>f (t2_sb_info" ao_ _fd_cpusruct (struc hrdcf="-="L7"collect_direna typ od_info * *jeb(struct jeb(struct <__uct jebje///>f (t2_sb_info" ao_ _fd_cpusruct (struc hrdcf="-="L7"collect_direna __arn/a>(struct < typ 2ffs)s!Ip 2fcf="-="L7"colle typ 2ffs)s!Ip 2fb_inifo" clare30" class="line"r1023"fs/jff10ll_dnode" class="sre 9m310ll_>10l4FFS2 -- Journalling 9la84s94d89ic" class="sref">ic10l4s2/gc.c#L24" id="L24e914" class="sreeeeeeeeef">je///>f (t2_sb_info" ao>nt3d_cpusruct (s/////////>f (t2_sb_inclab_i_to3)ena ct_direna(struct *10lffs2_sb_info *jeb(struct jeb(struct <__uct jebje///>f (t2_sb_info" ao>nt3d_cpusruct (s/////////>f (t2_sb_inclab_i_to3)lect_direna(struct (struct ic10ll_>10llhref="fs/jffs2/comprnalling Fla86ss="863" clas1031"fs/jff102/gc.c#L11" id="L11f"8"c102/g>10l6seblock *cr<2ffs)s!= _collerelayrig_cr(struct *(struct (struct 10l6nclude/linux/stat.h"e914" class="sreeeecr<2ffs)s!= _collerelayrigyp od_info *je///>f (t2_sb_info" ao>nt3d_cpusruct (s cr<2ffs)s!= _collec cr *10l4FFS2 -- Journalling 9la84s94=elard/a>(strucef">jeb(struct /* If t calculagcd3Vers0xs(): /ian frh obsoleLe .c#d:cx;ld\nhref="+1034"fs/jff102/gc.c#L11" id="L19ef8"4102/g>10l3href="fs/jffs2/compr9h"83c93e914" class="sreeeeeeeeef">jeb(struct <__uct 10l9"comment"> * Copyrig_info * *je///>f (t2_sb_info" ao>nt3d_cpusruct (s cr<2ffs)s!= _collec cr(struct (struct t like his 3ef=fr8aJFFFIXME:/Wion uld possibeL9"10l4ode_cache *(strucef">jeb(struct mat ranges0xs(): /ia/tm,0xs(): /ia/of ictat #s(): S3weth bspanstn frh obsoleLe .c#d:cx;ld\nhref="+1038"fs/jff10ll_dnode" class="srff8l810ll_>10lode_ref *jebjeb(seclass="sre>ntfs2_en2_sb_irena hrect * * *10l1029seblock *ia hfdclas-="L7"ciollect_direnard/a>(s 3epr2ffs)s!= _coller3eprayrigyp od_info * * 11<9span 82e=c" class="ef">jeb(struct /*arh2_s3 I d!n frh obsoleLe .c#d:cx;ld\nhref="+1043"fs/jff10ll_dnode" class="sre 8"f10ll_>1024FFS2 -- Journalling 9la84s94="srdls=ass="sreeeeeeeeef">jeb(struct <__uct *(strucef">jeb(struct mat ranges0xs(): /ia/tm,0xs(): /ia/of ictat #s(): S3weth bspanstn frh obsoleLe .c#d:cx;ld\nhref="+1045"fs/jff102/gc.c#L11" id="L11ef8"5102/g>1029"comment"> * Copyrig_info * *jeb(seclass="sre>ntfs2_en2_sb_irena hrect * * * */ 1024ode_cache * *(smagi<2ffs)s!= _collemagi(struct nto" a2ffs)s!= _collerpuo>nto" aaofase30" class="lie tyMAGIC_BITMASKcf="-="L7"colle tyMAGIC_BITMASKlect_direnainocb_info *(struc hrdcf="-="L7"collect_direna g_cr(struct nto" a2ffs)s!= _collerpuo>nto" aaofase30" class="lie typ 2ffs)s!Ip 2fcf="-="L7"colle typ 2ffs)s!Ip 2fb_inifo" clare30" class="line"r1052"fs/jff10ll_dnode" class="sref8nl10ll_>10lenclude/linux/stat.h" cl902ode902c" >ia hfdclas-="L7"ciollect_direnard/a>(s/////////>f (t2_sb_inclab_i_to3g_cr(struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofasct_direna(struct (struct (shdr cr<2ffs)s!= _collehdr cr<_to3g_cr(struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofasr(struct * * 310l9"comment"> * Copyright 89ass=895" clia hfdclas-="L7"ciollect_direnard/a>(sinocachoef="-="L7"collectg_cr(struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofasr(struct * * *(st_versia hfdclas-="L7"t_versilectg_cr(struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofas++r(struct * */ 10l4ode_cache *(st nto"riaofasr(struct jeb * */ 10l6de_ref *lia hfdclas-="L7"ciollect_direnard/a>(sd (struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofasr(struct ntfs2_en2_sb_ -rod_info *jeb *(s (struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofas0_direnainocb_info *102/g>102/seblock *(struc>ia hfdclas-="L7"ciollect_direnard/a>(s 3epr2ffs)s!= _coller3eprayrigp od_info * *1026seblock nalling Fla86ss="863" clas1062"fs/jff10ll_dnode" class="sref86l10ll_>1024nclude/linux/stat.h"9cl84s9="1063"fs/jff10ll_dnode" class="sref86n10ll_>1025FFS2 -- Journalling Fla85ssrra//////ctat2_sb_ifra/ /a>_die3le cb_info *c *102""line" name=e &8nalling Fla85ssrra//////ctat2_sb_ifra/ /a>info" clard/a>(struct * Copyrigh t like his 3ef=fr8aJFFFef t mat ictat Version7;ves#th ira/tlas rac, L9c, io ethis deletion dir, skipe.. *r1026"fs/jff10ent"> */ 1025fs2_c.c#L24" id="L249 c8la92=885" cltem, Ve*n7;vesi_lect ctncsre_lect maynswith:c&#been updattd ye_9veshethis deletion dir, skipe.. *r102erase=free2/gc.c#L11" id="L11" 86>ee2/g>1024ode_cache *b_info" cla+cb_infob_info" cla+cb_info< *1026de_ref *elseirenainocb_info *(struct *(smtat2_sb_info" clasmtatollee_cr(struct nto"mtat2_sb_info" clas puo>nto"mtataofase30" class="lie tyF_I_M 2fcf="-="L7"colle tyF_I_M 2faofasr(struct *(suilass="sre>ntfs2_uila g_cr(struct nto" a2ffs)s!= _collerpuo>nto" aaofase30" class="lie tyF_I_UIDcf="-="L7"colle tyF_I_UIDaofasr(struct *(sgilass="sre>ntfs2_gila g_cr(struct nto" a2ffs)s!= _collerpuo>nto" aaofase30" class="lie tyF_I_GIDcf="-="L7"colle tyF_I_GIDaofasr(struct *10l4FFS2 -- Journalling Fla85sssia hfdclas-="L7"ciollect_direnard/a>(si (struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofasr(struct *(sa"em,a hfdclas-="L7"a"em,_dire_cr(struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofasr(struct (struct *10l4fs2_sb_info *(s "em,a hfdclas-="L7"c"em,_dire_cr(struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofasr(struct (struct *eeseb>10l7fs2_sb_info *(sm"em,a hfdclas-="L7"m"em,_dire_cr(struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofasr(struct (struct *10l3de_ref *(sdata cr<2ffs)s!= _colledata cr<_dire_cr(struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofas0_direnainocb_info *ia hfdclas-="L7"ciollect_direnard/a>(s cr<2ffs)s!= _collec cr(struct nto"rig_cr<2_ras=ft2_spuo>nto"riaofasr(struct *(struct *b(struct (struct *10l6nclude/linux/stat.h"="+86odere"+c85de=ournalling Fla85ss tySUMMARY!Ip 2f_SIZfcf="-="L7"colle tySUMMARY!Ip 2f_SIZf" cl_direnainocb_info *10l5FFS2 -- Jour=913" class="sreef">icf">b *10l href="fs/jffs2/compr" class="sreef"ef">jeb(struct 10l9"comment"> * Copyrig_info(struct icf">b *10l"re3clas) {jffs2/gc.c="+86ode=86b" class="s="sref">jebntfs2_sb_info" clare30" class="line"r108erase=free2/gc.c#L11" id="L11" 88>ee2/g>10l8"line" name=nalling Fla86ss="863" clas10l8"fs/jff10ll_dnode" class="sref88s10ll_>10l3de_ref *ect_n /a>fo" e=sre30" class="linet" cestctat2_sb_info" class="srut" cestctataofasr(struct (struct * * * *(struct ect_n /a>_ir *jeb(struct (struct ect_n /a>_idirenainocb_info *(struct ect_n /a>_direnainocb_info *10l""line" name=e &8nalling Fla85sseeeeef">je///>f (t2_sb_info" ao>nt3d_cpusruct (st_versia hfdclas-="L7"t_versilectar" class="liee fr_e * * Copyright 89ass=895" cs="sruaddu="ntictat2_sb_info" class="sruaddu="ntictataofasr(struct (struct (struct ect_n /a>_direnainocb_info *10l"re3clas) {jffs2/gc.ce &8nalling Fla85ssrrpu_ao_ e3nnt *(struct *(struct (strucs="sruj="L7"mt_direnleasr(stclas-="L7"ciollenfo" clastcla10l4t_direna(seclass="sre>ntft.h"9cl8RRaofasr *(struct jref="+c83delect_namoclas(strucs="sruj="L7"mt_diren1/ctat2_sb_1fra/ /a>nfo" clard/a>(str1ct ic *jeb *o" clard/a>(struc1 c(struct ia sref87lonly get 84s94info" clard/a>(struct (stkept4/////a> me=e &8nahis 3ef=fr8aJFFFef t mat ictat 1 7rect ect_n /a>_dire1dnode10ipe.. *rerinues2_full_dnode" class="* number89ic" clas. (Except4ra/ade_redire 1ir <1e cb_11rdMjffss2_f9ll_dnode" class=D1"+c83delect_namD> * *(struct (slt;= 1ocb_info *adu1c__ href="(s 3epr2ffs)s!= _coller3eprayrigyp od_inR clardclaf1026seb_sb_in"fs/j(s) butas-="me=b_sb_in"!= line" name=e &8b_sb_in" *cr<2ffs)s!= _collerelay1ifo" 11 cef">jeb(struct"ef">jeb(struct (struct t_direna+d/a>(struct (structling Fla86ss="863" clas10l4"fs/jff10ll_dnode" class="sref89"10ll_>10l""line" name=e &8nallt_direna+d/a>(struct /h1s4eeace7d41sbfdiren_direnar /h1shrect *jeb<1/////1c1-overlapped"L7"IS_ERR. Md VersREF_NORMALment"REF_PRISTINE"*e his 3ef=fr8aJFFFef t mat ictat 1a7rect (struing Fcr */ing FcrPTR_ERRa hfdclas-="L7"PTR_Eeell_>10l4ode_cache *(strucs="sruj="L7"mt_diren1ef">b(str1__ hre(strucs="sruj="L7"mt_diren1e9rect 1024ode claifra/ /a>_die3le cb_infojebnlookups="sref89>9ffs2_989"line" name=lookups="sref89>bsolela86ss="863" clas1062"fs/jff10ll_dnode" class="sref86l10ll_>1024nclude/linux/stat.h"9cl84s9="106_warn/a>(struct (structncsre_lect maynswith:c&#a>(strucs="sruj="L7"mt_diren1ss="sref">1ebje///>f (t2_sb_inf1" ao_1_fd_cpusruct _die3le cb_info * *10lls2/g1.c#L24" id="L249 c84a94=t189ass1895" cef">jeb_die3le cb_info(struct (struc/gc.c#L11" id="L11" 86>ee2/been updattd ye_9vefdclas-="L7"ciolle, 0lect_direna(structncsre_lect maynswith:c&#ainfo *jeb *<91"beeace7d41">jebje///>f (t2_sb_1nfo" 1o_ _fd_cpusruct _die3le cb_info10t4nclude/ref86l7de=r878"0l6FFS2 -- Journallfdclas-="L7"ciolle, 0lcb_info *_die3le cb_info10t4nclude/ref86l7de=r878"0o * *<91"hrect 10l4ode_cache++c856ss="co9"+84o94o *<91""L249 c841L24" id="L24e914" class="1reeee1eeeef">je///>f (t2_sb_info" ao>nt3d_cpusruct rfdclas-="L7"ciolle, 0lect_direna(struct --c856ss="co9"+84o94o *<91"7rect 10lffs2_sb_info1/a> *1a 9re8f=9+c82e=c" clasfs/jff10ll_dnode" class="sr1ache *1a hr9f=83+93d89ic" c=t 891ss=891" cef">jebj1bje//sb_ifra/ /a>_die3le fdclas-="L7"ciolle, 0lect_direna(struct cb_info *f (t2_sb1inclab_i_to3)lect_direna<1a>(st1uct (s 3epr2ffs)s!= _coller3eprayrigyp od_inOlfcf="-=stL7"chas"fs/jslle tyCOMPR_ZEc__arn/a>(struct"ef">jeb(strucs="sruj="L7"mt_diren1reerse10291fs/jff102/gc.c#L11" id="L19e 901102/g>10l(s a>(strucs="sruj="L7"mt_diren1raod_info<1g>10l6seblock * *_die3lePTR_ERRa hfdclas-="L7"PTR_Eeell_>10l4ode_cachecb_info *(strucef">jeb(s 3epr2ffs)s!= _coller3eprayrigyp od_inNewcf="-=has"no"fs/jslle tyCOMPR_ZEc__arn/a>(struct"ef">jeb(strucs="sruj="L7"mt_diren1rhrect jeb(s a>(strucs="sruj="L7"mt_diren1r"L249 c841pyrig_info *jefs/jff10ll_dnode" class="sr1>7rect (struct 10t4fs2_sb_1dnode" cla1s="sr"f907eell_>10l4ode_c1che10l"resref89"10ll_>10l"re3clas) {jffs2/gc.ce &8nalling Fla85ssrrpu_ao_ e3nnt (strucs="sruj="L7"mt_diren1r9rect jeb10l3de_ref * *10t4nclude/ref86l10ll_>1024nclude/linux/stat.h"9cl8RRaofasrfdclas-="L7"ciolle, 0lc>(strucs="sruj="L7"mt_diren1fef="-="L71collect_direnainocachode_1nfonto"ria1> *10l1021seblocfs/jff10ll_dnode" class="sr1ar staticinfoonsizoef="ss="sreef">icf">l_>10t4nclude/ref86l10ll_>ss="sreef">icf">l_>10x/stang Fla89ss="893" csia hfdclasb/a>(struct 102 href=1fs/jf1s2/compr9h"8 c92eelard/a>(strucef">jebbbbbbbbng Fla89ss="893" csia hfdcla2_sb_/a>(struct jeb(seclass="sre>ntfjeb10t6seblock *(struct 1s/jff10ll_dnode" class="sr1-7rect * * * * *(struct *(a>(struct (arig__info" enapr_warn/a>arig__infoo(struct onsizoef="(struc unsigned collecnt *(struct ia hfdclas-unsigned long/l_dnode" class=d_info(struct (struc unsigned collecnt (s (struct (st1uct <15-="L7"a"em,_dire_cr(strua>menr"sref">jeb(seclass="sre>ntfs2_en2_sb_ifo" clare30" class="line"r10t5"fs/jff10tl_dnode" class="sref89f10tl_>10tfs2/gc.c1iollect_di1enard/a>(st_versia hfdcla1-="L715class="sref89"10tl_>10t4fs2_sb_1n=eeent>1014ode_cache *10l"resref89db>9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrW hfdcla" clare/tla 87de=e clat lia 1fdclas-="L7"ciollect_dire1ard/a1(sd (structling Fla86ss="863" clas10l4"fs/jff10ll_dn0ll_dnode" class="sref8nf10ll_>10l9"comment"> * Copyright 89ass=895" clia hfdclaru="(_info" enapr_warn/a>(struct mat ranges0xs(): /ia/tm,ss="sref89f10tl_>10tfs2/gc.c1 *nto"ria1ain106="fs1jff102/gc.c#L11" id="L11"186>1016o" clac2_sb_info * *mat ranges0xs(): /ia/tm,s="sref89f10tl_>10tfs2/gc.c1(structarig__info" enapr_warn/a>arig__infoo *(struct 10tfs2/gc.c11024nblockia hfdclas-="L7"_r>1024nblockiee2/been updattd ye_9v" cla+cb_infoerasdclnblockia hfdclas-="L7"_r>erasdclnblocki:c&#bstrucarn/a>(struct <" cla+cb_info *<1muthrpu_ao_ e3nnt c1 his 3ef=fr8aJFFFef t mat ictat 1e &8nallin1 Fla85ssrra//////ctat2_sb1ifra/1/a>info" clard/a>(struct 1 his 3ef=fr8aJFFFef t mat ictat 1eref">lia 1_info eraseblockrdaia heef86a much line"r his 3ef=fr8aJFFFef t mat ictat 1 *1strucioef="(smtat2_1b_inf17 cef">jeb9ffs2_989"line" name=="sref89>bsol" class= fra/rcb_info1suila17_ _fd_cpusruct mi"(max1sgila17>(struct 10l4FFS2 -- Jour1allin17eeef">jeb *(struct _die3lePAGE_CACHct_direna(struct PAGE_CACHct_dirdirem1ss="sref89f10tl_>10tfs2/gc.c1as-="L7"ci1llect_direnard/a>(sa"em,a1hfdcl17t_direna(seclass=="(max *(struct PAGE_CACHct_dirdires="sref89f10tl_>10tfs2/gc.c1aollect_di1llect_direnard/a>(s "em,a1hfdcl17class="sref89"10tl_>10t4fs2_sb_1as-="L7"ci1llect_direnard/a>(sm"em,a1hfdcl17" clia hfdclas-="L7"ciollect_direnar cb_infojebnlookups="sref89>9ffs2_989"line" name=lookups="sref89>bsolela86ss="863" clas1062"fs/jff10ll_dnode" class="sref86l10ll_>1024nclude/linux/stat.h"9cl84s9="106_warn/a>(struct < */ 10l6de_ref *c(s1ruct c10l href1"fs/j1fs2/compr" class="sreewhile(ifra/ /a>_die3le cb_infojref"8previnfo * * *c * *(seclass="sre>ntfsb_ifra/ /a>_die3le cb_info(struct *9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrExrefedcladownna< cover ma102/g"fs/j (ar ee2/de_ref *jeb(struct (struct 1025fs2_c.c#L24" id="L249 c8la92=885" cltem, Ve*n7;vesi_lect ctncsre_lect maynswith:c&#e_ref *ect_n /a>_idirenainoc1_info19 deletion dir, skipe._sb_info" __funccontinuee_ref *nt3d_cpusruct c_die3le cb_info10t4nclude/ref86l7de=r878"|| !fra/ /a>_die3le cb_info10t4nclude/ref86l7de=r878c#d:cx;ld\nhref="+1043"fs/jff10ll_dnode" cb_info *ect_n /a>_dire1ainoc1_info *9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayr_irst fs/j in/pagddardL7"IS(ar ee2/de_ref *(seclass="sre>ntfffffffff85="+c856ss="co9"+84o94o *<92/ctat2_sb_2fra/ /a>nfo" clard/a>(str2ct icjeb(struct co" clard/a>(struc2 *(seclass="sre>ntfjeb1025fs2_c.c#L24" id="L249 c8la92=885" cltem, Ve*n7;vesi_lect c_>10t4nclude/ref86l7de=r878c#d:cx;ld\nhref="+1043"fs/jff10ll_dnode" c856ss="co9"+84o94o *<92/7rect ect_n /a>_dire2dnode20info * *<92/8rect (seclass="sre>ntfffffffffnt la86ss="863" clas106" cla+cb_info(struct (strdirel/carn/a>(struct <" cla+cb_info *<92achoef="-=2L7"co>ra/ade_redire 1ir <2e cb_21o"rig_cr<2_ras=ft2_spuo>nto"ria2nfoadu2c__ href=" *cr<2ffs)s!= _collerelay2ifo" 21 cef">jeb9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrExrefedcladownna< cover fs/j (ar ee2/n0ll_dnode" class="s9" 8"f12_hrect (strucef">jebbbbbbbbuncffffffffnt (struct (strx/stat.h"9cl8RRaofas"+1043"fs/jff10ll_dnode" cde_refjeb<2/////21t_direna(seclass="sre>ntfjeb(struct 1025fs2_c.c#L24" id="L249 c8la92=885" cltem, Ve*n7;vesi_lect ctncsre_lect maynswith:c&#e_ref * *<92ef">b(str21"fs/jf"sre10ll_dnode" class="fs/jff10fs/jff10ll_dnode" class="sr2e9rect (seclass="sre>ntfffffffffs/jf!fra/ /a>_die3leISDIRTYsre_lect maynswISDIRTYx/stat.h"9cl8RRaofas7"bsre_lect maynswjebdirem, Ve*n7;vesi_lect cdirty_/gc.c#L11" id="L11"dirty_/gc.:c&#been updattd ye_9v7"bsre_lect maynswjebdirem, Ve*n7;vesi_lect cwasted_/gc.c#L11" id="L11"wasted_/gc.L7"c))l_info *2ebje///>f (t2_sb_inf2" ao_2_fd_cpusruct 9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrNot exrefedcladownna< cover fs/j (ar 10lls2/g2.c#L24" id="L249 c84a94=t289ass2895" cef">jebjebee2/n0ll_dnode" class="s9" 8"f12"beeace7d42">jebje///>f (t2_sb_2nfo" 2o_ _fd_cpusruct (struct *<92"hrect 10lffs2_sb_info2/a> *2a 9re8f=9+c82e=c" claseeeeeeeeeeeeeeeent 9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrExrefedcladownna< cover fs/j (ar bj22t_direna(seclass="sre>ntfffffffffllinereser56ss="co9"+84o9 cb_infoee2/n0ll_dnode" class="s9" 8"f12/>f (t2_sb2inclab_i_to3)lect_direna<2a>(st2uct (struct (struct 1025fs2_c.c#L24" id="L249 c8la92=885" cltem, Ve*n7;vesi_lect ctncsre_lect maynswith:c&#e_ref *jeb *<92>10l6nclud2/linux/stat.h"e914" class2"sree23_ _fd_cpusruct jeb * *(seclass==sref">c7rect (struct 10t4fs2_sb_2dnode" cla2s="sr"f907eell_>10l4ode_c2chec1 ma106ofc////x=jeb(seclass=1025fs2_c.c#L24" id="L249 c8la92=885" clte class="s="sref">jebnlookups="sref89>9ffs2_989"line" name=lookups="sref89>bsolela86ss="863" clas1062"fs/jff10ll_dnode" class="sref86l10ll_>1024nclude/linux/stat.h"9cl84s9="106_warn/a>(struct <>mat ranges0xs(): /ia/tm,m1ss="sref89f10tl_>10tfs2/gc.c2fef="-="L72collect_direnainocachode_2nfonto"ria2> *10ljref"8node" class="sref88ref"8nodex/stat.h"9cl8RRaofasrcb_infoee2/(slt;= r102erase=free2max *1022seblocinfo *c102 href=2fs/jf2s2/compr9h"8 c92eelard/a>(strusb_ifra/ /a>_die3le cb_infoee2/(slt; r102erase=free2max *jeb(seclass="sre>ntfjeb9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrExrefedclaup0a< cover ma102/g"fs/j (ar *ee2/de_ref *ee2/e_ref9rect (seclass="sre>ntfffffffffcontinuee_ref * *_ia hfdclas-="L7"ciolle2t_dir25 cef">jeb_die3le cb_info10t4nclude/ref86l7de=r878"|| !fra/ /a>_die3le cb_info10t4nclude/ref86l7de=r878c#d:cx;ld\nhref="+1043"fs/jff10ll_dnode" cb_info *9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrLast fs/j in/pagddardL7"IS(ar nto"ria2fasr<25olle typ 2ffs)s!Ipt ee2/de_ref *10l4FFS2 -- Jourt *<92inocachoef2"-="L7"collectg_cr(st2uct <25t_direna(seclass="sre>ntfclas) {jffs2/gc.c#L11" i"gotm,e30"2iollect_di2enard/a>(st_versia hfdcla2-="L725class="sref89"10tl_>10t4fs2_sb_2n=eeent>1024ode_cache *clia 2fdclas-="L7"ciollect_dire2ard/a25me="L *rerinues2_full_dnode" class="""""""""""""""""""""""""""in/a/block whiec ardstL7"cconsideredinuean?lIb_so,adolec csrrpu_aoVer. his 3ef=fr8aJFFFef t mat ictat 2 *1026die3lef=fr8aJFFFef t mat ictat 2jeb1025fs2_c.c#L24" id="L249 c8la92=885" cltem, Ve*n7;vesi_lect c_>10t4nclude/ref86l7de=r878c#d:cx;ld\nhref="+1043"fs/jff10ll_dnode" c8f=fr8aJFFFef t mat ictat 2<10l6nclud2 tyCOMPR_ZEROcf="-="L7"2olle 26_ _fd_cpusruct *<92ef86n10ll_21025FFS2 -- Journalling F2a85ss26>(struct *<2muthrpu_ao_ e3nnt la86ss="863" clas106" cla+cb_info(struct (strdirel/carn/a>(struct <" cla+cb_info *<92e &8nallin2 Fla85ssrra//////ctat2_sb2ifra/268x;ldinfo * * *_coll1, 3epr2ffs)s!= _coller3eprayrExrefedclaup0a< cover fs/j (ar lia 2_info(seclass="sre>ntfffffffffllinereserllineresnt *ee2/n0ll_dnode" class="s9" 8"f12f=elard/a>2strucioef="jeb(struct (strx/stat.h"9cl8RRaofas"+1043"fs/jff10ll_dnode" cde_ref(smtat2_2b_inf27 cef">jebmat ranges0xs(): /ia/tm,lt>1025fs2_c.c#L24" id="L249 c8la92=885" cltem, Ve*n7;vesi_lect ctncsre_lect maynswith:c&#been updattd ye_9veshethis deletion dir, skipe.. *r102erase=free2/gc.c#L11" id="L11" 86>ee2/e_ref2suila27_ _fd_cpusruct *<92ff86n10ll_2="L7"ciollect_direnard/a>2sgila27olle typ 2ffs)s!Ipt *10l4FFS2 -- Jour2allin27eeef">jeb_die3leISDIRTYsre_lect maynswISDIRTYx/stat.h"9cl8RRaofas7"bsre_lect maynswjebdirem, Ve*n7;vesi_lect cdirty_/gc.c#L11" id="L11"dirty_/gc.:c&#been updattd ye_9v7"bsre_lect maynswjebdirem, Ve*n7;vesi_lect cwasted_/gc.c#L11" id="L11"wasted_/gc.L7"c)cb_info *(sa"em,a2hfdcl27t_direna(seclass=========================nt 9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrNot exrefedclaupna< cover fs/j (ar (s "em,a2hfdcl27info *(sm"em,a2hfdcl27" clia hfdclas-="L7"c/jff10llinereserrrrrrrrrer========nt ee2/n0ll_dnode" class="s9" 8"f12fref">lia 2n1078"fs/jff102/gc.c#L11"2id="L27t_direna(seclass="sre>ntfffffffffllinereserllineresnt (struct (struct <2 puo>28ct *<92fasr(s2ruct jeb *9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrExrefedclaup0a< cover fs/j (ar 10l href2"fs/j2fs2/compr" class="sreeuct ee2/n0ll_dnode" class="s9" 8"f12_sdirspas:2pot.(seclass=========================esnt (struct *mat ranges0xs(): /ia/tm,lt>1025fs2_c.c#L24" id="L249 c8la92=885" cltem, Ve*n7;vesi_lect ctncsre_lect maynswith:c&#been updattd ye_9veshethis deletion dir, skipe.. *r102erase=free2/gc.c#L11" id="L11" 86>ee2/e_ref * *<92fref">lia 2ruct (seclass="sre>ntfc_ref * *10l3se2lock<2a> *9ffs2_989"line" name=db>_coll1, 3epr2ffs)s!= _coller3eprayrExrefeed 87de=ea< ne"r1node" (ar jeb(struct arig__infoo(arig_ode" class="sref89arig_ode(_info" enapr_warn/a>(struct mat ranges0xs(): /ia/tm,ss="sref89f10tl_>10tfs2/gc.c2o/&_co2ef">ect_n /a>_idirenainoc2_info290t1"fs/jff10ll_dnode" class="sr2o5de=ourna20l6nclude/linux/stat.h"="286ode29olle typ 2ffs)s!Iphpr_warnDren39"D1t ranges0xs(): D1x/stat.h"9cl8RRaofasBUG_ONmat ranges0xs(): /ia/tm,lstrucarn/a>(struct ee2/dss="sref89f10tl_>10tfs2/gc.c2olass="sre2o>nt3d_cpusruct mat ranges0xs(): /ia/tm,lslt; r102erase=free2arig_ode" class="sref89arig_ode10tfs2/gc.c2osdirspas:2ass=895" cs="sruaddu="(struct (struct arig__infoo10tfs2/gc.c2oollect_di2asect_n /a>_dire2ainoc2_info * * *( sref">c"*e his 3ef=fr8aJFFFef t mat ictat 3/ctat2_sb_3fra/ /a>nfo" clard/a>(str3ct c1 try4/o GC ////_s/a>_/pagdd clawhiec ira/it_ne"r1() his 3ef=fr8aJFFFef t mat ictat 3/1tat2_sb_3fass="sref88=10ll_>10l3se3nfo" 30die3l *rerinues2_full_dnode" class="*ss="colggerediss="sre f">icf"ion"in/064"first clare? his 3ef=fr8aJFFFef t mat ictat 3/2tat2_sb_3ff">jeb_pagddshouldlec cdlldlock, heec ll ne"r1noutath4 his 3ef=fr8aJFFFef t mat ictat 31beeace7d433/10t=">o" clard/a>(struc3 1 ne"r1nitnoutaagain"in/ira/it_ne"r1, whiec arda littl4 his 3ef=fr8aJFFFef t mat ictat 314eeace7d433l6nclude/linux/stat.h"="32 -- 3ournal *rerinues2_full_dnode" class="*ss="suboptimal, butaatcleast heec _d4corrcf". his 3ef=fr8aJFFFef t mat ictat 3 hrect (strupg_ptard/a>(s jebngc_fetch_pagd9ffs2_989"line" name=gc_fetch_pagdx/stat.h"9cl8RRaofas< cla+cb_info(struct ect_n /a>_dire3dnode30class="sref89"10tl_>10t4fs2_sb_3/8rect (s *(seclass=t.h"9cl8RRaofaspr_war"_pagd()"returned error: _sb_ildra/ade_redire 1ir <3e cb_31ct (s (s jeb * *(struct 10tfs2/gc.c3_hrect (struct jeb<3/////31t_direna(seclass=r102erase=free2"sref89=9inclu98""line" name=ct_direna+cb_info datale" cdatale" comprtypd9ffs2_989"line"comprtypd *(struct 3ebje///>f (t2_sb_inf3" ao_3_fd_cpusruct * *ofat.h"9cl8RRaofas"iuct 10lls2/g3.c#L24" id="L249 c84a94=t389ass3895" cef">jebocle"ocle"e" cru="(JFFS2_SUMMARY_INODct_direna(struct JFFS2_SUMMARY_INODct_diro10tfs2/gc.c3_aod_info<3href="+86odere"+c85d=t 893ss=8932eblocinfo *jebje///>f (t2_sb_3nfo" 3o_ _fd_cpusruct icf"_87de=efailed: _sb_id * *<93"7rect 10lffs2_sb_info3/a> *3a 9re8f=9+c82e=c" clasc_ref *b cdatale" * *ocle"ocle"e" c -e 86>ofat.h"9cl8RRaofas"iuct mat ranges0xs(): /ia/tm, -e*n7;vesi_lect ca>(struct j32t_direna(seclass=na+cb_info datale" *mat ranges0xs(): /ia/tm, -e*n7;vesi_lect ca>(struct f (t2_sb3inclab_i_to3)lect_direna<3a>(st33o"rig_cr<2_ras=ft2_spuo>nto"ria3reerse10293fs/jff102/gc.c#L11" id="L39e 903102/g>10l *(s _die3lePAGE_CACHct_direna(struct PAGE_CACHct_dirdire -1)cs="sref89f10tl_>10tfs2/gc.c3raod_info<3g>10l6seblock * *10l6nclud3/linux/stat.h"e914" class3"sree33_ _fd_cpusruct comprtypd9ffs2_989"line"comprtypd * * * *(seclass==.h"9cl8RRaofas"iuct * * * *10l6seblo_sb_incpu_to_je3ebloc( 86>ofat.h"9cl8RRaofas"iuct b10l4ode_c3che * *10l6seblo_sb_incpu_to_je3ebloc( *10l6seblo_sb_incrcg>bloc(0a la86ss="863" clas106"iuct ofang Fla89ss="893" csia hfdclaunknown__>10t4nclude/ref86lhfdclaunknown__>10"106)m4)cs="sref89f10tl_>10tfs2/gc.c3r9rect jeb(struct * * *10l6seblo_sb_incpu_to_je3ebloc( *10tfs2/gc.c3> *10l *10l6seblo_sb_incpu_to_je3ebloc(+"collect_direnain"fs/jff10ll_dnode" class="sref86l10ll_>1highest_versio"10tfs2/gc.c3>aod_info<3gc.c#L11" id="L19e"8"c1023g>10234r_warn/a>(struct *10t4nclude/ref86lm>10"106"0o *10t4nclude/ref86lcpu_to_jem>10x/stat.h"9cl8RRaofasJFFS2_F_I_MODc * * * * * * * * * *10l6seblo_sb_incpu_to_je3ebloc( *(struct JFFS2_F_I__dirbloc( *jeb(seclass= * * *10l6seblo_sb_incpu_to_je3ebloc( *(struct JFFS2_F_I_ATIMrbloc( * * * * *10l6seblo_sb_incpu_to_je3ebloc( *(struct JFFS2_F_I_CTIMrbloc( *b * *10l6seblo_sb_incpu_to_je3ebloc( *(struct JFFS2_F_I_MTIMrbloc( *(seclass=t.h"9cl8RRaofas"iuct *(struct *10l6seblo_sb_incpu_to_je3ebloc( *(struct * * *10l6seblo_sb_incpu_to_je3ebloc( *10l *10l6seblo_sb_incpu_to_je3ebloc( *jeb * * * * * * *10l6seblo_sb_incpu_to_je3ebloc( *10l6seblo_sb_incrcg>bloc(0a la86ss="863" clas106"iuct ofat.h"9cl8RRaofas"iuct *10l6seblo_sb_incpu_to_je3ebloc( *10l6seblo_sb_incrcg>bloc(0a s="863" clas106comprbut"fs/jff10ll_dnocomprbutct *(st3uct <358x;ldinfo *(st_versia hfdcla3-="L735info * * * * *b *lia 3fdclas-="L7"ciollect_dire3ard/a35t_direna(seclass=t.h"9cl8RRaofashfdclafree_comprbut"fs/jff10ll_dnohfdclafree_comprbutx/stat.h"9cl8RRaofas *nto"ria3ain106="fs3jff102/gc.c#L11" id="L11"386>103602/g>10l *jeb10tfs2/gc.c3<4eeace7d431025FFS2 -- Journalling F3a85ss36olle typ 2ffs)s!Ipt * *<93e &8nallin3 Fla85ssrra//////ctat2_sb3ifra/36t_direna(seclass=c_ref * *b *(struct *lia 3_info(seclass=sb_ifra/ /a>_die3le "fs/jff10ll_dnode" class="sref86l10ll_>1metadatac#L11" id="L11"metadata * * *jeb *jeb * *3suila37_ _fd_cpusruct *3sgila37olle typ 2c_ref *10l4FFS2 -- Jour3allin37+cb_info *(sa"em,a3hfdcl37t_direna(t.h"9cl8RRaofashfdclagc_release_pagd9ffs2_989"line" name=gc_release_pagdx/stat.h"9cl8RRaofas< cla+cb_info(s *b(sm"em,a3hfdcl37" clic_ref *lia 3n1078"fs/jff102/gc.c#L11"3id="L37t_dir
The ariginal LXR software by/064"ref *http://sourceforgd.net/projects/lxr">LXR ull_unityo *mailto:lxr@f10ux.no">lxr@f10ux.no lxr.f10ux.no kindly hosted by/ref *http://www.redpill-f10pro.no">Redpill L10pro ASo