linux/fs/nfsd/nfs4acl.c
<<
4" /spaion /formon a 4" href="../linux+v3.7.4/fs/nfsd/nfs4acl.c">4" img src="../.static/gfx/right.png" alt=">>">4" /spaion4" spai class="lxr_search">4" 4" input typluehidden" namluenavtarget" n value">4" input typluetext" namluesearch" iduesearch">4" butttiotypluesubmit">Search4" Prefsn /a>4" /spaion /divon form acopti="ajax+*" method="post" onsubmit="return false;">4" input typluehidden" namlueajax_lookup" idueajax_lookup" n value">4 /formon4 div class="headingbotttm">n div iduefile_contents"o
 
1 /a> spai class="comment">/* /spaion
 
2 /a> spai class="comment"> *  CommtioNFSv4 ACL handling code. /spaion
 
3 /a> spai class="comment"> * /spaion
 
4 /a> spai class="comment"> *  Copyright (c) 2002, 2003 The Regents of the University of Michigan. /spaion
 
5 /a> spai class="comment"> *  All rights reserved. /spaion
 
6 /a> spai class="comment"> * /spaion
 
7 /a> spai class="comment"> *  Marius Aamodt Eriksen <marius@umich.edu> /spaion
 
8 /a> spai class="comment"> *  Jeff Sedlak <jsedlak@umich.edu> /spaion
 
9 /a> spai class="comment"> *  J. Bruce Fields <bfields@umich.edu> /spaion
 8.10a> spai class="comment"> * /spaion
 11 /a> spai class="comment"> *  Redistributptioand use in source and binary forms, with or without /spaion
 12 /a> spai class="comment"> *  modi8 spai class="comment"> *  modi8 spaay fo, 2v.12312
  
  
 12 /a> spai class="comme"> *  Co1pyright (c) 2002, 2003 1The R1gents of the University of MinamlueL12">
 12 /a> spai class="comme"> *  Al1l rights reserved. /spa1ion
 12 /a> spai class="comme"> * /sp1aion
 
6 /a> spai class="comment1"> *  Ma1rius Aamodt Eriksen <1;mari1s@umich.edu> /spaion
 12 /a> spai class="comme"> *  Je1ff Sedlak <jsedlak@u1mich.1du> /spaion
 12 /a> spai class="comme"> *  J.1 Bruce Fields <bfiel1ds@um1ch.edu> /spaion
 
6 /a> spai class="comment2nt"> * /2paion
 12 /a> spai class="comm2nt"> *  2edistributptioand use i2 sour2e and binary forms, with or wittttfee0spaioors may bef="fl.Lo endorseass=promote prodfsss=deri" nnamlueL12">
 12 /a> spai class="comm2"> *  CommmtioNFSv4 ACL handling "> * 2modi8 spaay fo, 2v.12312
 
6 /a> spai class="comment2"> * /sp2aion
 
4 /a> spai class="comment2"> *  Co2pyright (c) 2002, 2003 2The R2gents of the University of MichTHIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIEDmlueL4">
 
4 /a> spai class="comment2"> *  Al2l rights reserved. /spa2ion
 
4 /a> spai class="comment2"> * /sp2aion
 
4 /a> spai class="comment2"> *  Ma2rius Aamodt Eriksen <2;mari2s@umich.edu> /spaion
 
4 /a> spai class="comment2"> *  Je2ff Sedlak <jsedlak@u2mich.2du> /spaion
 
4 /a> spai class="comment2"> *  J.2 Bruce Fields <bfiel2ds@um2ch.edu> /spaion
 
4 /a> spai class="comment3nt"> * /3paion
 
4 /a> spai class="comment3nt"> *  3edistributptioand use i3 sour3e and binary forms, with or witBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OFmlueL4">
 
4 /a> spai class="comment3"> *  Co3mmtioNFSv4 ACL handling3"> * 3modi8 spaay fo, 2v.12312
 
4 /a> spai class="comment3"> * /spaaion
 
4 /a> spai class="comment3"> *  Co3pyright (c) 2002, 2003 3The R3gents of the University of MichSOFTWARE, EVEN IF ADVISED OFhTHE POSSIBILITY OFhSUCH DAMAGEamlueL3">
 
3 /a> spai class="comment""> *  Al3l rights reserved. /spa3ion
 
3 /a> spai class="comment""> * /sp3aion
 
3 /a> spai class="comment""> *  Ma3rius Aamodt Eriksen <3;mari3s@umi#inclu n 0" i
 
3 /a> inclu nx/righ/slab.hius Aamodf /a">/righ/slab.h@umine" >
 
3 /a> spai class="comment""> *  Je3ff Sedlak <jsedlak@u3mich.38@umi#inclu n 0" i
 
3 /a> inclu nx/righ/ss=_fs.hius Aamodf /a">/righ/ss=_fs.h@umine" >
 
3 /a> spai class="comment""> *  J.3 Bruce Fields <bfiel3ds@um39@umi#inclu n 0" i
 
3 /a> inclu nx/righ/export.hius Aamodf /a">/righ/export.h@umine" >
 
3 /a> spai class="comment4nt"> * /4paioncommh@uminquo i>
 
3 /a> spai class="comment4nt"> *  4edistributptioand use i4 sour41#L7">
 
3 /a> spai class="comment4"> *  Co4mmtioNFSv4 ACL handling4"> * 42#L7">
 
3 /a> spai class="comment4"> * /sp4aion
efc#t transla
 
3 /a> spai class="comment4"> *  Coppyright (c) 2002, 2003 TThe R4gents#def 20rn ajax_pree" n=NFS4_READ_MODE
 div idue /a">NFS4_READ_MODEents (n ajax_pree" n=NFS4_ACE_READ_DATA
 div idue /a">NFS4_ACE_READ_DATAents)>
 
3 /a> spai class="comment4"> *  Al4l rights reserved. /spa4ionNFS4_WRITE_MODEents (n ajax_pree" n=NFS4_ACE_WRITE_DATA
 div idue /a">NFS4_ACE_WRITE_DATAents |rn ajax_pree" n=NFS4_ACE_APPEND_DATA
 div idue /a">NFS4_ACE_APPEND_DATAents)>
 
3 /a> spai class="comment4"> * /sp4aionNFS4_EXECUTE_MODEents n ajax_pree" n=NFS4_ACE_EXECUTE
 div idue /a">NFS4_ACE_EXECUTE#L7">
 
3 /a> spai class="comment4"> *  Ma4rius Aamodt Eriksen <4;mari47ents#def 20rn ajax_pree" n=NFS4_ANYONE_MODE
 div idue /a">NFS4_ANYONE_MODEents (n ajax_pree" n=NFS4_ACE_READ_ATTRIBUTES
 div idue /a">NFS4_ACE_READ_ATTRIBUTESents |rn ajax_pree" n=NFS4_ACE_READ_ACL
 div idue /a">NFS4_ACE_READ_ACLents |rn ajax_pree" n=NFS4_ACE_SYNCHRONIZE
 div idue /a">NFS4_ACE_SYNCHRONIZEents)>
 
3 /a> spai class="comment4"> *  Je4ff Sedlak <jsedlak@u4mich.48ents#def 20rn ajax_pree" n=NFS4_OWNER_MODE
 div idue /a">NFS4_OWNER_MODEents (n ajax_pree" n=NFS4_ACE_WRITE_ATTRIBUTES
 div idue /a">NFS4_ACE_WRITE_ATTRIBUTESents |rn ajax_pree" n=NFS4_ACE_WRITE_ACL
 div idue /a">NFS4_ACE_WRITE_ACLents)>
 
3 /a> spai class="comment4"> *  J.4 Bruce Fields <bfiel4ds@um49#L7">
 
3 /a> spai class="comment5nt"> * /5paion
 
3 /a> spai class="comment5nt"> *  5edistributptioand use i5 sour51ents#def 20rn ajax_pree" n=NFS4_MASK_UNSUPP
 div idue /a">NFS4_MASK_UNSUPPents (n ajax_pree" n=NFS4_ACE_DELETE
 div idue /a">NFS4_ACE_DELETEents |rn ajax_pree" n=NFS4_ACE_WRITE_OWNER
 div idue /a">NFS4_ACE_WRITE_OWNERents \>
 
3 /a> spai class="comment5"> *  Co5mmtioNFSv4 ACL handling5"> * 52#L7"                |rn ajax_pree" n=NFS4_ACE_READ_NAMED_ATTRS
 div idue /a">NFS4_ACE_READ_NAMED_ATTRSents |rn ajax_pree" n=NFS4_ACE_WRITE_NAMED_ATTRS
 div idue /a">NFS4_ACE_WRITE_NAMED_ATTRSents)>
 
3 /a> spai class="comment5"> * /sp5aion
 
3 /a> spai class="comment5"> *  Co5pyright (c) 2002, 2003 5The R5gents of the University of /*oflagsf="fl.Lo simula
 
3 /a> spai class="comment5"> *  Alll rights reserved. /spaiionNFS4_INHERITANCE_FLAGSents (n ajax_pree" n=NFS4_ACE_FILE_INHERIT_ACE
 div idue /a">NFS4_ACE_FILE_INHERIT_ACEents \>
 
3 /a> spai class="comment5"> * /sp5aionNFS4_ACE_DIRECTORY_INHERIT_ACEents)>
 
3 /a> spai class="comment5"> *  Ma5rius Aamodt Eriksen <5;mari57#L7">
 
3 /a> spai class="comment5"> *  Je5ff Sedlak <jsedlak@u5mich.58ents#def 20rn ajax_pree" n=NFS4_SUPPORTED_FLAGS
 div idue /a">NFS4_SUPPORTED_FLAGSents (n ajax_pree" n=NFS4_INHERITANCE_FLAGS
 div idue /a">NFS4_INHERITANCE_FLAGSents \>
 
3 /a> spai class="comment5"> *  J.5 Bruce Fields <bfiel5ds@um59#L7"                |rn ajax_pree" n=NFS4_ACE_INHERIT_ONLY_ACE
 div idue /a">NFS4_ACE_INHERIT_ONLY_ACEents \>
 
3 /a> spai class="comment6nt"> * /6paionNFS4_ACE_IDENTIFIER_GROUPents)>
 
3 /a> spai class="comment6nt"> *  6edistributptioand use i6 sour61#L7">
 
3 /a> spai class="comment6"> *  Co6mmtioNFSv4 ACL handling6"> * 62ents#def 20rn ajax_pree" n=MASK_EQUAL
 div idue /a">MASK_EQUALents(n ajax_pree" n=mask1
 div idue /a">mask1ents,rn ajax_pree" n=mask2
 div idue /a">mask2ents) \>
 
3 /a> spai class="comment6"> * /sp6aionmask1ents) &rn ajax_pree" n=NFS4_ACE_MASK_ALL
 div idue /a">NFS4_ACE_MASK_ALLents) == ((n ajax_pree" n=mask2
 div idue /a">mask2ents) &rn ajax_pree" n=NFS4_ACE_MASK_ALL
 div idue /a">NFS4_ACE_MASK_ALLents) )>
 
3 /a> spai class="comment6"> *  Co6pyright (c) 2002, 2003 6The R64#L7">
 
3 /a> spai class="comment6"> *  Al6l rights reserved. /spa6ionu32#L7">
 
3 /a> spai class="comment6"> * /spaaionmask_from_posixents(unstgnfl.short   ajax_pree" n=reri
 div idue /a">rerients,runstgnfl.int   ajax_pree" n=flags
 div idue /a">flagsents)>
 
3 /a> spai class="comment6"> *  Ma6rius Aamodt Eriksen <6;mari67#L7"{>
 
3 /a> spai class="comment6"> *  Je6ff Sedlak <jsedlak@u6mich.68#L7"        int   ajax_pree" n=mask
 div idue /a">mask#L7" =rn ajax_pree" n=NFS4_ANYONE_MODE
 div idue /a">NFS4_ANYONE_MODEentsi>
 
3 /a> spai class="comment6"> *  J.6 Bruce Fields <bfiel6ds@um69#L7">
 
3 /a> spai class="comment7nt"> * /7paionflagsents &rn ajax_pree" n=NFS4_ACL_OWNER
 div idue /a">NFS4_ACL_OWNERents)>
 
3 /a> spai class="comment7nt"> *  7edistributptioand use i7 sour71#L7"                  ajax_pree" n=mask
 div idue /a">mask#L7" |=rn ajax_pree" n=NFS4_OWNER_MODE
 div idue /a">NFS4_OWNER_MODEentsi>
 
3 /a> spai class="comment7"> *  Co7mmtioNFSv4 ACL handling7"> * 72#L7"        if (n ajax_pree" n=reri
 div idue /a">rerients &rn ajax_pree" n=ACL_READ
 div idue /a">ACL_READents)>
 
3 /a> spai class="comment7"> * /sp7aionmask#L7" |=rn ajax_pree" n=NFS4_READ_MODE
 div idue /a">NFS4_READ_MODEentsi>
 
3 /a> spai class="comment7"> *  Co7pyright (c) 2002, 2003 7The R74#L7"        if (n ajax_pree" n=reri
 div idue /a">rerients &rn ajax_pree" n=ACL_WRITE
 div idue /a">ACL_WRITEents)>
 
3 /a> spai class="comment7"> *  Al7l rights reserved. /spa7ionmask#L7" |=rn ajax_pree" n=NFS4_WRITE_MODE
 div idue /a">NFS4_WRITE_MODEentsi>
 
3 /a> spai class="comment7"> * /sp7aionrerients &rn ajax_pree" n=ACL_WRITE
 div idue /a">ACL_WRITEents) &&r(n ajax_pree" n=flags
 div idue /a">flagsents &rn ajax_pree" n=NFS4_ACL_DIR
 div idue /a">NFS4_ACL_DIRents))>
 
3 /a> spai class="comment7"> *  Marrius Aamodt Eriksen <;mari77#L7"                  ajax_pree" n=mask
 div idue /a">mask#L7" |=rn ajax_pree" n=NFS4_ACE_DELETE_CHILD
 div idue /a">NFS4_ACE_DELETE_CHILDentsi>
 
3 /a> spai class="comment7"> *  Je7ff Sedlak <jsedlak@u7mich.78#L7"        if (n ajax_pree" n=reri
 div idue /a">rerients &rn ajax_pree" n=ACL_EXECUTE
 div idue /a">ACL_EXECUTEents)>
 
3 /a> spai class="comment7"> *  J.7 Bruce Fields <bfiel7ds@um79#L7"                  ajax_pree" n=mask
 div idue /a">mask#L7" |=rn ajax_pree" n=NFS4_EXECUTE_MODE
 div idue /a">NFS4_EXECUTE_MODEentsi>
 
3 /a> spai class="comment8nt"> * /8paionmask#L7"i>
 
3 /a> spai class="comment8nt"> *  8edistributptioand use i8 sour81#L7"}>
 
3 /a> spai class="comment8"> *  Co8mmtioNFSv4 ACL handling8"> * 82#L7">
 
3 /a> spai class="comment8"> * /sp8aionu32#L7">
 
3 /a> spai class="comment8"> *  Co8pyright (c) 2002, 2003 8The R84#L7"  ajax_pree" n=deny_mask_from_posix
 div idue /a">deny_mask_from_posixents(unstgnfl.short   ajax_pree" n=reri
 div idue /a">rerients,rn ajax_pree" n=u32
 div idue /a">u32#L7"   ajax_pree" n=flags
 div idue /a">flagsents)>
 
3 /a> spai class="comment8"> *  Al8l rights reserved. /spa8ion
 
3 /a> spai class="comment8"> * /sp8aionu32#L7"   ajax_pree" n=mask
 div idue /a">mask#L7" =r0i>
 
3 /a> spai class="comment8"> *  Ma8rius Aamodt Eriksen <8;mari87#L7">
 
3 /a> spai class="comment8"> *  Jefff Sedlak <jsedlak@ummich.88#L7"        if (n ajax_pree" n=reri
 div idue /a">rerients &rn ajax_pree" n=ACL_READ
 div idue /a">ACL_READents)>
 
3 /a> spai class="comment8"> *  J.8 Bruce Fields <bfiel8ds@um89#L7"                  ajax_pree" n=mask
 div idue /a">mask#L7" |=rn ajax_pree" n=NFS4_READ_MODE
 div idue /a">NFS4_READ_MODEentsi>
 
3 /a> spai class="comment9nt"> * /9paionrerients &rn ajax_pree" n=ACL_WRITE
 div idue /a">ACL_WRITEents)>
 
3 /a> spai class="comment9nt"> *  9edistributptioand use i9 sour91#L7"                  ajax_pree" n=mask
 div idue /a">mask#L7" |=rn ajax_pree" n=NFS4_WRITE_MODE
 div idue /a">NFS4_WRITE_MODEentsi>
 
3 /a> spai class="comment9"> *  Co9mmtioNFSv4 ACL handling9"> * 92#L7"        if ((n ajax_pree" n=reri
 div idue /a">rerients &rn ajax_pree" n=ACL_WRITE
 div idue /a">ACL_WRITEents) &&r(n ajax_pree" n=flags
 div idue /a">flagsents &rn ajax_pree" n=NFS4_ACL_DIR
 div idue /a">NFS4_ACL_DIRents))>
 
3 /a> spai class="comment9"> * /sp9aionmask#L7" |=rn ajax_pree" n=NFS4_ACE_DELETE_CHILD
 div idue /a">NFS4_ACE_DELETE_CHILDentsi>
 
3 /a> spai class="comment9"> *  Co9pyright (c) 2002, 2003 9The R94#L7"        if (n ajax_pree" n=reri
 div idue /a">rerients &rn ajax_pree" n=ACL_EXECUTE
 div idue /a">ACL_EXECUTEents)>
 
3 /a> spai class="comment9"> *  Al9l rights reserved. /spa9ionmask#L7" |=rn ajax_pree" n=NFS4_EXECUTE_MODE
 div idue /a">NFS4_EXECUTE_MODEentsi>
 
3 /a> spai class="comment9"> * /sp9aionmask#L7"i>
 
3 /a> spai class="comment9"> *  Ma9rius Aamodt Eriksen <9;mari97#L7"}>
 
3 /a> spai class="comment9"> *  Je9ff Sedlak <jsedlak@u9mich.98#L7">
 
3 /a> spai class="comment9"> *  J.  Bruce Fields <bfieldds@um9ch.edu> /spaion
 8.10a> spai class="commennt"> * /sppaion
 
3 /a> spai class="comment10nt"> *  R0edistributptioand use in014acfs1#L7">
 
3 /a> spai class="comment10nt"> *  m0odi8 spai class="comment024acfsmodi8 spaay fo, 2v.12312
 12 /a> spai class="comme0"> * /sp10aion
efc#t mapp"linbelow isnamlueL12">
 12 /a> spai class="comme0"> *  Co10pyright (c) 2002, 2003 1044acfsgents of the University of Micpessimis"lx.  An f=".mis"lx eL5" onfwould befneedfl.Lo lass=e DENY's,namlueL12">
 12 /a> spai class="comme05> *  Co10l rights reserved. /spa10l acfshref="fs/nfsd/nfs4acl.c#L6" idbut we espect.Lo coalesfs4all ALLOWs4acl.DENYs before mapp"linLo n>
enamlueL12">
 12 /a> spai class="comme0"> * /sp10aion
 
3 /a> spai class="comment10"> *  Ma10rius Aamodt Eriksen <107 acfs7#L7">
 
3 /a> spai class="comment10"> *  Je10ff Sedlak <jsedlak@u108 acfs8entsss="lxrvoid>
 
3 /a> spai class="comment10"> *  J.10 Bruce Fields <bfiel109 acfs9#L7"  ajax_pree" n=low_n>
e_from_ss="
 div idue /a">low_n>
e_from_ss="ents(n ajax_pree" n=u32
 div idue /a">u32#L7"   ajax_pree" n=reri
 div idue /a">rerients,runstgnfl.short *  ajax_pree" n=m" n
 div idue /a">m>
enats,runstgnfl.int   ajax_pree" n=flags
 div idue /a">flagsents)>
 
3 /a> spai class="comment1ent"> * /sspaion *  Reedistributptioand use in 14acf11#L7"        n ajax_pree" n=u32
 div idue /a">u32#L7"   ajax_pree" n="rdue_m" n
 div idue /a">"rdue_m" n#L7" =rn ajax_pree" n=NFS4_WRITE_MODE
 div idue /a">NFS4_WRITE_MODEentsi>
 
3 /a> spai class="comment1ent"> *  mmodi8 spai class="commentt"> *112#L7">
 
3 /a> spai class="comment1e"> * /sp11aionflagsents &rn ajax_pree" n=NFS4_ACL_DIR
 div idue /a">NFS4_ACL_DIRents)>
 
3 /a> spai class="comment1e"> *  Co11pyright (c) 2002, 2003 11The 114#L7"                  ajax_pree" n="rdue_m" n
 div idue /a">"rdue_m" n#L7" |=rn ajax_pree" n=NFS4_ACE_DELETE_CHILD
 div idue /a">NFS4_ACE_DELETE_CHILDentsi>
 
3 /a> spai class="comment1e"> *  Al11l rights reserved. /spa11ion<115#L7"        *  ajax_pree" n=m" n
 div idue /a">m>
enats =r0i>
 
3 /a> spai class="comment1e"> * /sp11aionrerients &rn ajax_pree" n=NFS4_READ_MODE
 div idue /a">NFS4_READ_MODEents) == n ajax_pree" n=NFS4_READ_MODE
 div idue /a">NFS4_READ_MODEents)>
 
3 /a> spai class="comment1e"> *  Ma11rius Aamodt Eriksen <11;mar117#L7"                *  ajax_pree" n=m" n
 div idue /a">m>
enats |=rn ajax_pree" n=ACL_READ
 div idue /a">ACL_READentsi>
 
3 /a> spai class="comment1e"> *  Je11ff Sedlak <jsedlak@u11mich118#L7"        if ((n ajax_pree" n=reri
 div idue /a">rerients &rn ajax_pree" n="rdue_m" n
 div idue /a">"rdue_m" n#L7") == n ajax_pree" n="rdue_m" n
 div idue /a">"rdue_m" n#L7")>
 
3 /a> spai class="comment1e"> *  J.11 Bruce Fields <bfiel11ds@u119#L7"                *  ajax_pree" n=m" n
 div idue /a">m>
enats |=rn ajax_pree" n=ACL_WRITE
 div idue /a">ACL_WRITEentsi>
 
3 /a> spai class="comment12nt"> * /12paionrerients &rn ajax_pree" n=NFS4_EXECUTE_MODE
 div idue /a">NFS4_EXECUTE_MODEents) == n ajax_pree" n=NFS4_EXECUTE_MODE
 div idue /a">NFS4_EXECUTE_MODEents)>
 
3 /a> spai class="comment12nt"> *  R2edistributptioand use i12 sou121#L7"                *  ajax_pree" n=m" n
 div idue /a">m>
enats |=rn ajax_pree" n=ACL_EXECUTE
 div idue /a">ACL_EXECUTEentsi>
 
3 /a> spai class="comment12nt"> *  moodi8 spai class="comment""> *12modi8}>
 
3 /a> spai class="comment12"> * /sp12aion
 
3 /a> spai class="comment12"> *  Co12pyright (c) 2002, 2003 12The 12gents /suct   ajax_pree" n=acdefee0a 20r
 div idue /a">acdefee0a 20rnats {>
 
3 /a> spai class="comment12"> *  Al12l rights reserved. /spa12ion<125#L7"         /suct   ajax_pree" n=ss="_acd
 div idue /a">ss="_acd#L7"  *  ajax_pree" n=acd
 div idue /a">acd#L7"i>
 
3 /a> spai class="comment12"> * /sp12aionlt /_lts"#L7"    ajax_pree" n=acdel
 div idue /a">acdel#L7"i>
 
3 /a> spai class="comment12"> *  Ma12rius Aamodt Eriksen <12;mar12s@umi}i>
 
3 /a> spai class="comment12"> *  Je12ff Sedlak <jsedlak@u12mich128#L7">
 
3 /a> spai class="comment12"> *  J.12 Bruce Fields <bfiel12ds@u12ch.edss="lxrshort   ajax_pree" n=acd2 
 

 div idue /a">acd2 
 
ents( /suct   ajax_pree" n=ss="_acd
 div idue /a">ss="_acd#L7" *)i>
 
3 /a> spai class="comment13nt"> * /13paion_posix_to_ss=v4_ef=ents( /suct   ajax_pree" n=posix_com
 div idue /a">rosix_com#L7" *,  /suct   ajax_pree" n=ss="_acm
 div idue /a">ss="_acm#L7" *,>
 
3 /a> spai class="comment13nt"> *  R3edistributptioand use i13 sou131#L7"                                unstgnfl.int)i>
 
3 /a> spai class="comment13nt"> *  m3mmtioNFSv4 ACL handling13"> *132#L7">
 
3 /a> spai class="comment13"> * /sp1aaionss="_acm#L7" *>
 
3 /a> spai class="comment13"> *  Co13pyright (c) 2002, 2003 13The 134#L7"  ajax_pree" n=ss="_acm_posix_to_ss=v4
 div idue /a">ss="_acm_posix_to_ss=v4ents( /suct   ajax_pree" n=posix_com
 div idue /a">rosix_com#L7" *  ajax_pree" n=pcom
 div idue /a">rcom#L7",  /suct   ajax_pree" n=posix_com
 div idue /a">rosix_com#L7" *  ajax_pree" n=dpcom
 div idue /a">drcom#L7",>
 
3 /a> spai class="comment13"> *  Al13l rights reserved. /spa13ion<135#L7"                        unstgnfl.int   ajax_pree" n=flags
 div idue /a">flagsents)>
 
3 /a> spai class="comment1""> * /sp13aion
 
3 /a> spai class="comment1""> *  Ma13rius Aamodt Eriksen <13;mar137#L7"         /suct   ajax_pree" n=ss="_acm
 div idue /a">ss="_acm#L7" *  ajax_pree" n=acl
 div idue /a">acl#L7"i>
 
3 /a> spai class="comment1""> *  Je13ff Sedlak <jsedlak@u13mich138#L7"        int   ajax_pree" n=siz="fdiv idue /a">siz=nats =r0i>
 
3 /a> spai class="comment1""> *  J.13 Bruce Fields <bfiel13ds@u139#L7">
 
3 /a> spai class="comment14nt"> * /14paionrcom#L7") {>
 
3 /a> spai class="comment14nt"> *  14edistributptioand use i14 sou141#L7"                if (n ajax_pree" n=rosix_com_vali"
 div idue /a">rosix_com_vali"ents(n ajax_pree" n=rcom
 div idue /a">rcom#L7") 0" i 0)>
 
3 /a> spai class="comment14"> *  Co14mmtioNFSv4 ACL handling14"> *142#L7"                        jax_loo  ajax_pree" n=ERR_PTR
 div idue /a">ERR_PTRents(-  ajax_pree" n=EINVAL
 div idue /a">EINVAL#L7")i>
 
3 /a> spai class="comment14"> * /sp14aionsiz=nats += 2*  ajax_pree" n=pcom
 div idue /a">rcom#L7"-ne" n ajax_pree" n=aefeunt
 div idue /a">aefeunt#L7"i>
 
3 /a> spai class="comment14"> *  Co1ppyright (c) 2002, 2003 1TThe 144#L7"        }>
 
3 /a> spai class="comment14"> *  Al14l rights reserved. /spa14ion<145#L7"        if (n ajax_pree" n=dpcom
 div idue /a">drcom#L7") {>
 
3 /a> spai class="comment14"> * /sp14aionrosix_com_vali"ents(n ajax_pree" n=dpcom
 div idue /a">drcom#L7") 0" i 0)>
 
3 /a> spai class="comment14"> *  Ma14rius Aamodt Eriksen <14;mar147#L7"                        jax_loo  ajax_pree" n=ERR_PTR
 div idue /a">ERR_PTRents(-  ajax_pree" n=EINVAL
 div idue /a">EINVAL#L7")i>
 
3 /a> spai class="comment14"> *  Je14ff Sedlak <jsedlak@u14mich148#L7"                  ajax_pree" n=siz="fdiv idue /a">siz=nats += 2*  ajax_pree" n=dpcom
 div idue /a">drcom#L7"-ne" n ajax_pree" n=aefeunt
 div idue /a">aefeunt#L7"i>
 
3 /a> spai class="comment14"> *  J.14 Bruce Fields <bfiel14ds@u149#L7"        }>
 
3 /a> spai class="comment15nt"> * /15paion *  15edistributptioand use i15 sou151#L7"        nspaay fo, 2v.12312
 
3 /a> spai class="comment15"> *  Co15mmtioNFSv4 ACL handling15"> *152#L7"          ajax_pree" n=acl
 div idue /a">acl#L7" =rn ajax_pree" n=ss="_acm_new
 div idue /a">ss="_acm_newents(n ajax_pree" n=siz="fdiv idue /a">siz=nats)i>
 
3 /a> spai class="comment15"> * /sp15aionacl#L7" == n ajax_pree" n=NULL
 div idue /a">NULLents)>
 
3 /a> spai class="comment15"> *  Co15pyright (c) 2002, 2003 15The 154#L7"                jax_loo  ajax_pree" n=ERR_PTR
 div idue /a">ERR_PTRents(-  ajax_pree" n=ENOMEM
 div idue /a">ENOMEMnats)i>
 
3 /a> spai class="comment15"> *  Al1ll rights reserved. /spa1iion<155ents>
 
3 /a> spai class="comment15"> * /sp15aionrcom#L7")>
 
3 /a> spai class="comment15"> *  Ma15rius Aamodt Eriksen <15;mar157#L7"                  ajax_pree" n=_posix_to_ss=v4_ef="fdiv idue /a">_posix_to_ss=v4_ef=ents(  ajax_pree" n=pcom
 div idue /a">rcom#L7", n ajax_pree" n=acl
 div idue /a">acl#L7", n ajax_pree" n=flags
 div idue /a">flagsents &r~n ajax_pree" n=NFS4_ACL_TYPE_DEFAULT
 div idue /a">NFS4_ACL_TYPE_DEFAULTnats)i>
 
3 /a> spai class="comment15"> *  Je15ff Sedlak <jsedlak@u15mich158#L7">
 
3 /a> spai class="comment15"> *  J.15 Bruce Fields <bfiel15ds@u159#L7"        if (n ajax_pree" n=dpcom
 div idue /a">drcom#L7")>
 
3 /a> spai class="comment16nt"> * /16paion_posix_to_ss=v4_ef=ents(  ajax_pree" n=dpcom
 div idue /a">drcom#L7", n ajax_pree" n=acl
 div idue /a">acl#L7", n ajax_pree" n=flags
 div idue /a">flagsents |rn ajax_pree" n=NFS4_ACL_TYPE_DEFAULT
 div idue /a">NFS4_ACL_TYPE_DEFAULTnats)i>
 
3 /a> spai class="comment16nt"> *  16edistributptioand use i16 sou161#L7">
 
3 /a> spai class="comment16"> *  Co16mmtioNFSv4 ACL handling16"> *162#L7"        jax_loo  ajax_pree" n=acl
 div idue /a">acl#L7"i>
 
3 /a> spai class="comment16"> * /sp16aion
 
3 /a> spai class="comment16"> *  Co16pyright (c) 2002, 2003 16The 164#L7">
 
3 /a> spai class="comment16"> *  Al16l rights reserved. /spa16ion<165entssssuct   ajax_pree" n=posix_com_summary
 div idue /a">rosix_com_summarynats {>
 
3 /a> spai class="comment16"> * /sp1aaionow20r#L7"i>
 
3 /a> spai class="comment16"> *  Ma16rius Aamodt Eriksen <16;mar167#L7"        unstgnfl.short   ajax_pree" n=users
 div idue /a">users#L7"i>
 
3 /a> spai class="comment16"> *  Je16ff Sedlak <jsedlak@u16mich168#L7"        unstgnfl.short   ajax_pree" n=grogro
 
3 /a> spai class="comment16"> *  J.16 Bruce Fields <bfiel16ds@u169#L7"        unstgnfl.short   ajax_pree" n=grogro
 
3 /a> spai class="comment17nt"> * /17paionNFS4_OWNER_M  ajax_pree" n=ue /a450#L7") {>
 
3 /a> spai class="comme spaik  unsitu
 div idu1e /a">NFS4_OWNER_MODEent1si>
 13 /a> i class="comment12"> *  Ma12riusCL_READ
 1div idue /a">ACL_READent1s)>
 17> spai class="comment12"> * /sp12aiE
 div id1ue /a">NFS4_READ_MODEent1si>
 174 spai class="coi class="comment12"> * /sp12aiEight (c) iv idue /a">ACL_WRITEent1s)>
 13 /a> 7" =rn ajax_preessuct3=.d_pree" n=pcom
 div idue _TYPE_DEFAULTnats)iNpcom
 div idue _TYree" n=_posix_to_ss=v4_ef="t16"> *  Co16pyright (c) 2002, 2003 16The 164#L7">
 
3 /a> spai class="comme class="comment14"/#L7"i>
 
3 /a> 4"/
3 /a> spai class="comment15"> *  J=mask
 di1v idue /a">mask#L7" |=rn1 ajax17gnfl.int   ajax_pree" n=flags
 div i=flags
 d1iv idue /a">flagsents &a1mp;rn17mment1""> * /sp13aion
 
3 /a> spai ="f6Tcomme class="comment14"#L7"i>
 
3 /a> 4"4_ef=" class="comment14>
 
3 /a> spai cprved. /spa12ion<125#L7"         /sucdue /a">m1ask#L7" |=rn ajax_pree" 1n=NFS17TYPE_DEFAULT
 div idue /a">NFS4_ACLee" n=rer1i
 div idue /a">rerients1 &1rn ajax_pree" f="fs/nfsd/nfs4acl.c#L1" idueL1" class="line" namlueL1">
 
11k
 div id1ue /a">mask#L7" |=rn aja1x_pre18pts4to jax_looNFS errors;lL555555555* Od us4"/. spai spai4"/.spai cass=" initializ4"> *; previou10aion spai cleL12">amlueL will bights reserved. /spa10l acfshref="fs/ndiv idue 1/a">mask#L7"i>
 
3 /a> s1pai c18 INTERRUPTION) HOWEVER CAUSE55555555* initializ=" in spai class="coloop.  But, j spato pla5s4acgccine"ndi
 12 /a> spai coand use 1i8 sour81#L7"}>
 
3 /a> 1spai 18OSIXL3" sawhen sett"lin3" s,55555555*15edistributptioand use i15 sou151#L7"mment8"> 1* /sp8aion spai clemse          ajax_plemse   Ma15rius Aamodt Erik/#L7"i>
 
3 /a> 4"/
3 /, 0="tiz=of( class="comment14"/#L7"i>
 
3 /a> 4"/
3 /a", n ajax_pree" n=flags
 div idu>rerients1,rn ajax_pree" n=u32
 di1v idu185cl#L7" == n 
 
3 /a> spai c4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"  ai class="comment8"> * /sp8aion7, n ajax_pree" n=flags
 div idu>mask
 di1a">flagsents)>
 
3 /a> s1pai c18eserved. /spa3ion spai c4>
 
3 /a> spai cprved.">
 
3 /a> spai clree" n=_posix_to_ss=v4_eflak@u14mich148#L7"    ="f6ie/#L7"i>
 
3 /a>   ="f6ie/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4_eflak@u14mich148#L7"                  ajax_pree" n=siz="fdiv idue /a">siz=nats += 2*   idue /a"1>mask#L7" =r0i>
 
3 /a> 1spai 18TYPE_DEFAULT
 div idue /a">NFS4_ACLjax_pree"1 n=reri
 div idue /a">re1rient1 &rn ajax_14mich148#L7"  FOREACH
 divENTRY         ajax_pFOREACH
 divENTRY  Ma15rius Aamodt Erik#L7"i>
 
3 /a> 4"4_ef="         ajax_pree" n=_posix_to_ss=v4_ef="fdiv idue /a">_4>
 
3 /a> spai cprved.a> spai class="comment14"> *  Al1 n=mask
 1div idue /a">mask#L7" |=1rn aj19     if (n ajax_pree"switchl1ll rights reserve#L7"i>
 
3 /a> 4"4_eflak@u14mich148#L7"  e_tag#L7"i>
 
3 /a> e_tagved.a> spai class="comment14"> *  Al1  /8paion1=reri
 div idue /a">reri1ents 1amp;rn ajax_pree" n=ACCCCCCCCC
3 /i class="comment12ntUSER_OBJ#L7"i>
 
3 /a> 12ntUSER_OBJp;rn:spai class="comment14"> *  Al1 iv idue 1v idue /a">mask#L7" |=rn1 ajax19ts(n ajax_pree" n=rcom
 div i7" == n 
 
3 /a> spai c4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"  mmarynats {>
 
3 /a> spai cla">
 
3 /a> spai clve#L7"i>
 
3 /a> 4"4_eflak@u14mich148#L7"  e_ue /a">ACL_WRITEente_ue /siz="fdiv idue /a">siz=nats += 2*  =flags
 d1iv idue /a">flagsents &a1mp;rn1ajax_pree" n=NFS4_ACL_________________break"fdiv idue /a">siz=nats += 2*  =ment8"> 1ask#L7" |=rn ajax_pree" 1n=NFS19acl#L7" == n ajax_preCCCCCCCC
3 /i class="comment12ntion
 
3 /a> 12ntion *  Al1 rerients1i
 div idue /a">rerients1 &1rn ajax_pree" n=ACL_EXm
 div i7" == n 
 
3 /a> spai c4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"  >users#L7"i>
 
3 /a> spai cla">
 
3 /a> spai clve#L7"i>
 
3 /a> 4"4_eflak@u14mich148#L7"  e_ue /a">ACL_WRITEente_ue /siz="fdiv idue /a">siz=nats += 2*  =mask
 di1ue /a">mask#L7" |=rn aja1x_pre19   if (n ajax_pree" n________________break"fdiv idue /a">siz=nats += 2*  =        1a href="fs/nfsd/nf9s4acl196#L719(n ajax_pree" n=dpcom
 div id
3 /i class="comment12ntUSER#L7"i>
 
3 /a> 12ntUSERp;rn:spai class="comment14"> *  Al1 idue /a"1/a">mask#L7"i>
 
3 /a> s1pai c19ents(-  ajax_pree" n=m
 div i7" == n 
 
3 /a> spai c4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"  >ow20r#L7"i>
 
3 /a> spai claspai class="commentve#L7"i>
 
3 /a> 4"4_eflak@u14mich148#L7"  e_ue /a">ACL_WRITEente_ue /siz="fdiv idue /a">siz=nats += 2*  =onsiz=nats += 2* 2> /spa2on *  Al2a href="f2/nfsd/nfss4acfssh.edu>2 /spa20   ajax_pree" n=ss="_acm
 div idue /a
 
3 /a> spai c4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"  >user/#L7"i>
 
3 /a> spai classspai class="commentve#L7"i>
 
3 /a> 4"4_eflak@u14mich148#L7"  e_ue /a">ACL_WRITEente_ue /siz="fdiv idue /a">siz=nats += 2* 2r all....2i/mlueL3">
 
3 /a> spai 2lass=20ts(n ajax_pree" n=rcom
 div i7" == n break"fdiv idue /a">siz=nats += 2* 2&spaay fo,/o/*oWe only mapofrom  i2ueLto20jax_pree" n=NFS4_ACL_________
3 /i class="comment12ntUDING/a> spai class=12ntUDINGp;rn:spai class="comment14"> *  Al2a spai clalass="line" na sidsl.c#b2"linm20acl#L7" == n ajax_preCCCCCCCC idue /a
 
3 /a> spai c4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"  gro
 
3 /a> spai cla">
 
3 /a> spai clve#L7"i>
 
3 /a> 4"4_eflak@u14mich148#L7"  e_ue /a">ACL_WRITEente_ue /siz="fdiv idue /a">siz=nats += 2* 2niversity2of Micpessimis"lx.  An f2".mis20n ajax_pree" n=ACL_EXm
 div i7" == n break"fdiv idue /a">siz=nats += 2* 2&fsd/nfs4al.c#L6" idbut we espect.2o coa20   if (n ajax_pree" n________
3 /i class="comment12ntASK_/a> spai class=12ntASK_p;rn:spai class="comment14"> *  Al2al2c#L7" i"> * /sp10aion spai c4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"   Eriksen <6;mari67#L7"{>
 
3 /a> spai classve#L7"i>
 
3 /a> 4"4_eflak@u14mich148#L7"  e_ue /a">ACL_WRITEente_ue /siz="fdiv idue /a">siz=nats += 2* 2ndu> /si/mlueL3">
 
3 /a> spai 2lass=20ents(-  ajax_pree" n=m
 div i7" == n break"fdiv idue /a">siz=nats += 2* 2&> /spa 
3 /a> spai class="comm2nt10"20 ajax_pree" n="rdue_m jax_loo  ajax_pree" n=acl
 di2_pree" n=2" n
 div idue /a">m>
ena2s,run21     if (n aj jax_loo  ajax_pree" n=acl
 di2_c#L11" iduueL11" class="line" l.c. /spa21omment15nt"> * /15paioneffe2">
 omm2"> *  C 42#L7">
 
3 /a> spai class="comment4"> *2 div idue2/a">"rdue_m" n#L7" =rn a2ax_pr21fss="orst case: ef= (deny, a4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"  >ow20r#L7"i>
 
3 /a> spai clasx_pre
3 /a> spai classve/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"   Eriksen <6;mari67#L7"{>
"fdiv idue /a">siz=nats += 2* 2FS4_WRITE2MODEentsi>
 
3 /a> spai 2lass=2comment1ent"> 
 
3 /a> spai c4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"  >users#L7"i>
 
3 /a> spai cla"x_pre
3 /a> spai classve/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"   Eriksen <6;mari67#L7"{>
"fdiv idue /a">siz=nats += 2* 2F spai clav idue /a">flagsents &am2;rn a21acl#L7" == n 
 
3 /a> spai c4"/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"  >user/#L7"i>
 
3 /a> spai classsx_pre
3 /a> spai classve/#L7"i>
 
3 /a> 4"/
3 /lak@u14mich148#L7"   Eriksen <6;mari67#L7"{>
"fdiv idue /a">siz=nats += 2* 2Fiversity2n#L7" |=rn ajax_pree" n=2FS4_A2E_DELE jax_loo  ajax_pree" n=acl
 di2_fsd/nfs4ats reserved. /spa11ion<125#L7"21eserved. /spa3ion
enamlueL12">
 12 /a> spai cl2 ajax_pre2" n=m" n
 div idue /a">m2
enat21omment10"> *  Ma10rius Aamodt Eriksen <107 2ue_m" n
 2iv idue /a">"rdue_m" n#L2") ==21*  Je10ff Sedlak <e /a">ss="_acd#L7" *)i>
 
3 /a> spai class="comment13nt"> * /13paion spai classvess=v4
 div idue /a">ss="_acm_posix_to_ss=v4ents( nd/nf13s4ac13c#L7"{>
 
3 /a> spai class="comment1""> *  Ma13rius Aamodt Eriksv idue /a">rcom#L7",  /suct   2jax_pree"2n=m" n
 div idue /a">m>
2nats 22     if (n ajax_pree"
 div iddddddddddddddddddddddddd
 div idue /a">drcom#L7",>
 
3 /a> spai class="comment13"> *  Al13l rights reserved. /s2>NFS4_EXE2UTE_MODEents) == n ajax_2ree" 2=NFS4_ spai class="comment14"> *  Al2pree" n=m2 n
 div idue /a">m>
enat2 |=rn22fss="orst cassp13aion
 
3 /a> spai ="f6Tcomme class="comment14"#L7"i>
 
3 /a> 4"4_ef=" class="comment1spai _ spai ="f6The 164#L7">
 
3spai _ spai ="f6T"{>
"fdiv idue /a">siz=nats += 2* 2">ACL_EXE2UTEentsi>
 
3 /a> spai c2ass="223ss="orst cassp13aion *u12mich128#L7">
 
3"{>
"fdiv idue /a">siz=nats += 2* 2" spai cla*12modi8}>
 
3 /a> spai 2lass=224ss="orst cassp13aion
 
3 /a> spai class="comme /a> spai classve/#L7"i>
 
3 /a> 4"/
3 /"fdiv idue /a">siz=nats += 2* 2"iversity2003 12The 12gents /suct 2 ajax2pree" n=acdefee /a450#L7") {>
 
3 /a> spai c cla#L7"i>
 
3 /a>  cla
3 /"fdiv idue /a">siz=nats += 2* 2"fsd/nfs4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7"  *e /a">drcom#L7",>
 eommea">ACL_WRITEenteomme"{>
 
3ACL_WRITE
 div ids="commentt"> *112#L7">
 
3 /a> spai class="comment1e"> * /s">drcom#L7", n ajax_pree" n=acl
 div idue /a">acl#L7" ?fdiv idue /a">siz=nats += 2* 2"idue /a"2n=lt /_lts"
 div idue /a2>lt /22       if (n ajax_pree" n=rcom
 div k <jsedlak@u5mich.58ents#def 20rn ajax_pree" n=NFS4_SUPPORTEDdue /a">NFS4_INHERITANCE_FLAGSents \>
 
3 /a> spai class="comment5"> *  J.5 Bruce Field: 0", n ajax_pree" n=flags
 div id2ue /a">ac2el#L7"i>
 
3 /a> spai cl2ss="c2mment12"> *  Ma12rius Aamodt Erikse2 <12;ma212s@umi}i>
 
3 /a> spai 2lass=22&rn ajax_14mich148#L7"  BUG.5 /a> spai class=BUG.5   Ma15rius Aamodt Erik> * /sp14aionacd2 
 
ents2 /suc230amp;rn ajax_14mich148#L7"  Eight (c) iv idue /a">ACL_WRITEent1s)>
 13 /a> 7" =rn ajax /a> spai classvess=v4
 div idue /a">ss="_ac> spaclass="comment14"/#L7"i>
 
3 /a> 4"/
3 /a, n ajax_pree" n=flags
 div id2cNFS4_EXE2idue /a">rosix_com#L7" *2  /su23TYPE_DEFAULT
 div idue /a">NFS4_AC2nt13nt"> 2  R3edistributptioand us2 i13 23fss="orst case: ef= (deny, a4"#L7"i>
 
3 /a> 4"4_ef 
3 /a> spai classve> * /sp14aion
 
3 /a>   ="f6ie/ /a>, n ajax_pree" n=flags
 div id2c>ACL_EXE2nfl.int)i>
 
3 /a> spai 2lass=23omment1ent"> 
 
3 /a> spai c *u12mich128#L7">
 
3"{>
">
 
3 /a> spai clree" n=_posix_to_ss=v4_eflak@u14mich148#L7"   ce/#L7"i>
 
3 /a>  ce/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4_eflak@u14mich148#L7"  n ce/#L7"i>
 
3 /a> n ce/ /a>, n ajax_pree" n=flags
 div id2c spai claef="fs/nfsd/nf1ss4ac133e2ts /s23mment16"> * /sp16aionrosi2_com#L7" *  ajLITY AND FITNESS FOR Atptioacspai  cla*  J.yth="conot grant39;re i clespai42#L7">
 
3 /a> spai class="comment4"> *2a13ion<132#L7"                    2   un23ss="comment8"> *  Al8l right cla#L7"i>
 
3 /a>  cla
3 /">
" n=pcom
 div idaionac2el_pree" n=2lags
 div idue n=rer1i
 div idue /a">rerients1 &1rn ajax_pree" f="fs/nf2Ma13rius 2amodt Eriksen <13;mar127#L7"2      "fs/ndiv idue 1/a">mask#L7"i>
 
3imisiisis equitio">m (ts4tsimpler)5555osi2_pa21owOSS is ajLerients1 &1rn ajax_pree" f="fs/nf2M spai cl2"i>
 
3 /a> spai class="2ommen23ius Aamodt Eriksen <9;mark#L7"i>
 
3TY AND FITNi clr f="fs/nz=" in spai class="coloop.  But, j sp23mich138#27"        int   ajax_pre2" n=s24eL1">
 
11k
 div id1ue /a">mask#L7" |ioacspai  cla*  J.yth="conot grant39;rl13ds@u132#L7">
 
3 /a> spai class2"comm24ags
 div idue /a">flagsents)                2   un23ss="lak@u14mich148#L7"  >user/#L7"i>
 
3 /a> spai c cla
3 /">
" n=p spai c4"/#L7"i>
 
3 /a> 4"/
3 4mich148#L7"  >user/#L7"i>
 
3 /a> spai c cla
3 /">
" n=p spai c4"/#L7"i>
 
3 /a> 4"/
3 4mich148#L7"  >user/#L7"i>
 
3 /a> spai c cla
3 /">
" n=p spai c4"/#L7"i>
 
3 /a> 4"/
3 /l4mich148#L7"  >user/#L7"i>
 
3 /a> spai c cla
3 /">
" n=p unstgnfl.short   ajax_pree" n=grogroflagsents)                2   un23ss=_eflak@u14mich148#L7"  e_tag#L7"2ndling14"2 *142#L7"               2     2  jax_loo  ajax_pree" n=ERR_PTR
 div i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> > spai class="comme"> *  Jement6"> *  Ma6rius Aamod4_IACCESSentNIEDod4_Icomm_SUPPORTEDdue /a">NFS4_IACCESSentNIEDod4_Icommee" n=grogro
 
3 /a_pree" n=siz="fdiv idue 2a">si24ax_pree" n=flags
 div idue /a">flagsi>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> cd
 div idu2 /a">2s"_acd#L7"  s4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7n=grogroflagsi>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> aco_ss_i classve/#L7"i>
 
aco_ss_i cld#L7"  s4aree" n=ss="_ * /sp8aionflagsents)                2   un23ss=L7"                  ajax_pree" n=_posix_to_ssss="_ac> spaclass="comment14"/#LL7"      2 }>
 
3 /a> spai class="2ommen214"> *  Al14l rights r idue /a">flagsi>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> who> spai class="commewho> sp  Jement6"> *  Ma6rius Aamod4L_WHO;bfiel6ds@um69#L7">
 
3 /a> spWHO;bfield#L7n=grogroflagsi>
 
3 /a> spai 2lass=23o++n=grogro
 
3 /a>  ce/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4++n=grogrosiz=2ats += 2*  ajax_pree" n=dpcom
 div idue /a">2rcom#L7"-2e" n ajax_pree" n=aefeun2
 div2idue /a">aefeunt#L7"i>
 
3 /a> spai2class="co2ment14"> *  J.14 Bruce F2elds 25ags
 div idue /a">flagsents)i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> > spai class="comme"> *  Jement6"> *  Ma6rius Aamod4_IACCESSenfwouEDod4_Icomm_SUPPORTEDdue /a">NFS4_IACCESSenfwouEDod4_Icommd#L7n=grogro spai 2lass=23o  ce/ /a> s
 
3 /a> cd
 div idu2 /a">2s"_acd#L7"  s4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7n=grogroACL_EXE2nfl.int)i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> aco_ss_i classve/#L7"i>
 
aco_ss_i cld#L7"  s4aree" n=ss="_p8aionflagsents)8#L7"   Eriksen <6;mari67#L7"{>
 
3 /a> spai classve#L7"i>
 
3 /a> 4"4_eL7"                  ajax_pree" n=_posix_to_ss=v4_ef="fdiv idue /a">_posibfiel6ds@um69#L7">
 
3 /a> spai class="n=grogro
 
3 /ap15aion sp  Jement6"> *  Ma6rius Aamod4L_WHO;bfiel6ds@um69#L7">
 
3 /a> spWHO;bfield#L7n=grogrorerients1,rn ajaxi>
 
3 /a> spai 2lass=23o++n=grogro *2a13ion<132#L7"    8#L7"   ce/#L7"i>
 
3 /a>  ce/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4++n=grogro
 
3 /a> spai cla2s="co25"fs/nfsd/1"        1n ajax_pr#L7"   Eriksen <6;ma++n=grogroflagsents &r~n ajax2pree" n=N2S4_ACL_TYPE_DEFAULT
 div2idue 2a">NFS4_ACL_TYwhilee /a">mask#L7" |=1rn aj19     if (n ajax_pree"switchl1ll rights reserve#L7"i>
 
3 /a> 4"4ents(n ajax_pree" n719(n ajax_pree" n=dpcom
 div id
3 _eflak@u14mich148#L7"  e_tag#L7"2u15mich152#L7">
 
3 /a> spai class2"comm2nt15"> *  J.15 Bruce Fields <bfiel                2   un23ss="come /a">flagsents)8#L7"   Eriksen <6;mari67#L7"{>
 
3 /a> spai classve#L7"i>
 
3 /a> 4"4_e{>
 
3ACL_WRITE
 div iser/#L7"i>
 
3 /a> spai c cla
3 /">
" n=pi classve/#L7"i>
 
3 /a> 4""n=grogroacl#L7", n ajax_pree2 n=fl26   if (n ajax_pree" n=reri
 div idue                2   un23ss="lak@u14mich148#L7"  >user/#L7"i>
 
3 /a> spai c cla
3 /">
" n=p spai c4"/#L7"i>
 
3 /a> 4"/
3 /l4mich148#L7"  >user/#L7"i>
 
3 /a> spai c cla
3 /">
" n=p spai c4"/#L7"i>
 
3 /a> 4"/
3 4mich148#L7"  >user/#L7"i>
 
3 /a> spai c cla
3 /">
" n=p unstgnfl.short   ajax_pree" n=grogroflagsents)                2   un23ss=_eflak@u14mich148#L7"  e_tag#L7"2 i16 sou121#L7">
 
3 /a> spai clas2="com26ts += 2* 2&spaay fo,/o/*oWe on=ERR_PTR
 div i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> > spai class="comme"> *  Jement6"> *  Ma6rius Aamod4_IACCESSentNIEDod4_Icomm_SUPPORTEDdue /a">NFS4_IACCESSentNIEDod4_Icommee" n=grogro *162#L7"        jax_loo  aja2_pree264"> *  Al2a spai clalass="lin     nspaay fo, 2
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> cd
 div idu2 /a">2s"_acd#L7"  s4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7n=grogro spai c2ass="comment16"> * /sp162ionflagsi>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> aco_ss_i classve/#L7"i>
 
aco_ss_i cld#L7"  s4aree" n=ss="_ * /sp8aionflagsents)                2   un23ss=L7"                  ajax_pree" n=_posix_to_ssss="_ac> spaclass="comment14"/#L/a> spai 2lass="comment16"> *  Al12l rig26ts += 2* 2&fsd/nfs4al.c#L6" ipai clav idue /i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> who> spai class="commewho> sp  Jement6"> *  Ma6rius Aamod4L_WHO;NAME> spai class="comment1eL_WHO;NAME>d#L7n=grogro spai class="comment162> * /264"> *  Al2al2c#L7" i"> * /sp1pai clav idue /i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> whoai class="commewho13 23fss="orst case: ef=L7"   Eriksen <6;mari67#L7"{>
 
3 /a> spa  if (n ajax_preepa  d#L7n=grogro spai class="comment162> *  26ts += 2* 2ndu> /si/mlueL3"rients1,rn ajaxi>
 
3 /a> spai 2lass=23o++n=grogro
 
3 2a> spai class="comment162> *  26ts += 2*  =on
 
3 /a>  ce/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4++n=grogro
 
3 /a2 spai class="comment16">2*  J.27t15"> *  J.15 Bruce Fx_pree" n=dpcom
 div idue /a">27"i>
 
3 2a> spai class="comment172t"> *27   if (n ajax_pree" n=reri
 div iduei>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> > spai class="comme"> *  Jement6"> *  Ma6rius Aamod4_IACCESSenfwouEDod4_Icomm_SUPPORTEDdue /a">NFS4_IACCESSenfwouEDod4_Icommd#L7n=grogro spai 2lass=23o  ce/ /a> s
 
3 /a> cd
 div idu2 /a">2s"_acd#L7"  s4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7n=grogro spaik  unsit2
 div27 jax_loo  ajax_pree" n=ERR_PTR
 div i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> aco_ss_i classve/#L7"i>
 
aco_ss_i cld#L7"  s4aree" n=ss="_p8aionflagsents)8#L7"   Eriksen <6;mari67#L7"{>
 
3 /a> spai classve#L7"i>
 
3 /a> 4"4_e{>
 
3ACL_WRITE
 div iser/#L7"i>
 
3 /a> spai c cla
3 /">
" n=pi classve/#L7"i>
 
3 /a> 4"/a> spai class="comment1""> *   /a> i cl2ss="comment12"> *  Ma12r2usCL_274"> *  Al2a spai clalass="line" na si=on spaclass="comment14"/#Lass="comm2nt12"> * /sp12aiE
 div i21ue /27ts += 2* 2niversity2o idue /a">flagsi>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> who> spai class="commewho> sp  Jement6"> *  Ma6rius Aamod4L_WHO;NAME> spai class="comment1eL_WHO;NAME>d#L7n=grogro
 
32/a> 4"/
3 /a> spai class2"comm274"> *  Al14l rights r idue /a">flagsi>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> whoai class="commewho13 23fss="orst case: ef=L7"   Eriksen <6;mari67#L7"{>
 
3 /a> spa  if (n ajax_preepa  d#L7n=grogroflagsi>
 
3 /a> spai 2lass=23o++n=grogro 2pai cprved. /spa12ion<122#L7" 27 jax_loo  ajax_pree" n=ERR_PTR
 div 8#L7"   ce/#L7"i>
 
3 /a>  ce/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4++n=grogrogrom>
ena4"> *; pr2viou10aionrosix_>amlueL w2ll bights reserved. /spa20l ac28sou151#L7"    pree"2n=posix_com
 div iI8 INTEdbut of /a> 4",s"lxapplyon
 12 /a> spai coand use 1i8 sour81#L7"}>
  sinclxa  /a>Edbn bec18 moS; LOSn"> * /a> 4." |ioacspai  cla*  J.yth="conot grant39;r3" s,55552555*15edistributptioand 2se i128s
 div id2c spai claef="fs/nfsd/nf1"i>
 
3 /2> 4"/
3 /a", n ajax_pree2 n=fl2gs
 div idu>rerpree"2n=posix_com
 div in
 
32* /sp8aion7, n ajax_pree2 n=fl2gs
 div idu>mask
 di1a">flagsents)>2 
3 /a> s2pai c18eserved. /spa3ion2a3hre2="fs/nfsd/1"        1n ajax_ps="comment14"#L7"i>
 
3 /a> 4"4_ef=" class="comment1s3fss="orst case: ef=L7"   Eriksen <6;man=grogro 2ree" n=siz="fdiv idue /a2>siz=2ats += 2*   idue /a"1>mask#L7" =r0i2
 
3 /a> 2spai 18TYPE_DEFAULT
 div2idue 2a">NFS4_ACLjax_pree"1 n=reri
i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> > spai class="comme"> *  Jement6"> *  Ma6rius Aamod4_IACCESSenfwouEDod4_Icomm_SUPPORTEDdue /a">NFS4_IACCESSenfwouEDod4_Icommd#L7n=grogro sp2i cprved.a> spai class="2ommen29s
 div id2cd2 
 

 2iv idue  2
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> cd
 div idu2 /a">2s"_acd#L7"  s4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7n=grogro
 
3 /a>2e_tagved.a> spai class="2ommen29ags
 div idue /a">flagsents)i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> aco_ss_i classve/#L7"i>
 
aco_ss_i cld#L7"  s4aree" n=ss="_p8aionflagsents)8#r/#L7"i>
 
3 /a> spai c cla
3 /">
" n=p spai c4"/#L7"i>
 
3 /a> 4"/
L7"                  ajax_pree" n=_posix_to_ssss="_ac> spaclass="comment14"/#L /a> 12nt2SER_OBJp;rn:spai class="2ommen29sou151#L7"        nspaay fo, 2
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> who> spai class="commewho> sp  Jement6"> *  Ma6rius Aamod4L_WHO;    if (n ajax_pree" Aamod4L_WHO;    id#L7n=grogroo pla5s42te_ue /siz="fdiv idue /a2>siz=29s
 div id2c>ACL_EXE2nfl.int)i>
 
3 /a> spai 2lass=23o++n=grogrosiz=29ts += 2* 2F spai clav idue /i>L7"   ce/#L7"i>
 
3 /a>  ce/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4++n=grogro 12nti2ngroflagsents)>2_________2______break"fdiv idue /a2>siz=2ats += 2*  =  whilee /a">mask#L7" |=1rn aj19     if (n ajax_pree"switchl1ll rights reserve#L7"i>
 
3 /a> 4"4ents(n ajax_pree" n719(    if (n ajax_pree"
 div id
3 /i_eflak@u14mich148#L7"  e_tag#L7"2
 
3 /a> 22ntUSERp;rn:spai class="2ommen214"> *  Al1 idue /a"1/_pree"1 n=reri
i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> > spai class="comme"> *  Jement6"> *  Ma6rius Aamod4_IACCESSenfwouEDod4_Icomm_SUPPORTEDdue /a">NFS4_IACCESSenfwouEDod4_Icommd#L7n=grogro 2te_ue /siz="fdiv idue /a2>siz=2ats += 2*  =on spai 2lass=23o  ce/ /a> s
 
3 /a> cd
 div idu2 /a">2s"_acd#L7"  s4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7ak@u5mich.58ents#def 20rn ajDENT0ee"1 n=reri
i>
 
3 /a> spai E_7n=grogro< /a> spai E_7n=gro>gro 2te_ue /siz="fdi3 idue /a"3siz=nats += 2* 2> /sp32on
  2 fspai 2lass=23o  ce/ /a> s
 
3 /a> aco_ss_i classve/#L7"i>
 
aco_ss_i cld#L7"  s4aree" n=ss="_p8aionflagsents)8#r/#L7"i>
 
3 /a> spai c clL7"{>
 
3 /a> spai classve#L7"i>
 
3 /a> 4"4_e{>
 
3ACL_WRITE
 div iser/#L7"i>
 
3 /a> spai c cla
3 /">
" n=pi classve/#L7"i>
 
3 /a> 4"/a> spai class="comment1""> *   /a> i cl2ss="comment12">3 class="c3mment14"> *  Al2a href="32/nfs3/nfss4acfssh.edu>2 /spa20   ajax_preeeeeeeeeeeeeeeeeeeeee" n=_posix_to_ssss="_ac> spaclass="comment14"/#L /a> 12nt2SER_OBJp;rn:spa3 idue /a"3siz=nats += 2* 2r all...32i/ml3eL3">
 
3 /a> spai 2laspai 2lass=23o  ce/ /a> s
 
3 /a> who> spai class="commewho> sp  Jement6"> *  Ma6rius Aamod4L_WHO;NAME> spai class="comment1eL_WHO;NAME>d#L7n=grogro
 
32/a> 4"/
3 /a> s3 idue /a"3siz=nats += 2* 2&spaay f3,/o/*3We only mapofrom  i2uespai 2lass=23o  ce/ /a> s
 
3 /a> whoai class="commewho13 23fss="orst case: ef=L7"   Eriksen <6;mari67#L7"{>
 
3 /a> spa  if (n ajax_preepa  d#L7n=grogro *  Al2a spai c3alass3"line" na sidsl.c#b2"lspai 2lass=23o++n=grogro
 
3 /a>  ce/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4++n=grogro 12nti2ngro *  Al2al2c#L7"3i"> *3/sp10aion
ena4"> *; pr2viou10aion 2spai 18TYPE_DEF3 idue /a"3siz=nats += 2* 2&> /s3a 
3 30 idue /a">rerients1 &1rn ajax_preeJ.yth="cononot grant39;r37"i>
 
32* /sp8aion7, n 3loo  ajax3pree" n=acl
 di2_pree" n32" n
31/a> spai2class="co2ment14"> *  J.13loo  ajax3pree" n=acl
 di2_c#L11" 3duueL31s)i>
 
3 /a> spai 2lass=23o s="orst case: ef= (deny, a4"#L7"i>
 
3 /a> 4"4_ef=" class="comment1spai _ spai ="f6The 164#L7">
 
3spai _ spai ="f6T"{>
"fdi3 spai cla3s="comment4"> *2 div idu32/a">3rdue_m
 
3spai _ spai ="f6T"{>
"fdi3 idue /a"3siz=nats += 2* 2FS4_WRIT32MODE3ntsi>
 
3 /a> spai 2lass=2com="comment8"> *  Al8l right cla#L7"i>
 
3 /a>  cla
3 /">
" n=pcom
 div idaionusers#L7
 
3 /a> spai c cla
3 /">
" n=p unstgnfl.short   ajax_pree" n=grogroflagsent         2   un23ss=_eflak@u14mich148#L7"  e_tag#L7"2 i16 sou121#L7">
 
3 /a> 3 idue /a"3siz=nats += 2* 2Fiversit32n#L731 /a">flagsi>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> who> spai class="commewho>ement6"> *  Ma6rius Aamod4_IACCESSentNIEDod4_Icomm_SUPPORTEDdue /a">NFS4_IACCESSentNIEDod4_Icommee" n=grogro *162#L7"        jax3loo  ajax3pree" n=acl
 di2_fsd/nfs3ats r31 /a">flagsi>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> whoai class="commewho13 237"  s4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7n=grogro
 
3 /a>2e_tagved.a> spa3/spa3ion<33href="fs/nfsd/2 idue /a32NFS431 /a">flagsi>
 
3 /a> spai 2lass=23o++n=grog_i classve/#L7"i>
 
aco_ss_i cld#L7"  s4aree" n=ss="_ * /sp8aionflagsents)                2   un23ss=L7"                  ajax_pree" n=_posix_to_ssss="_ac> spaclass="comment14"/#L/a> spai 2lass="comment163mlueL12">3 12 /a> spai cl2 ajax_pr32" n=31"1 n=reri
i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> > spai class="comme"> *  J sp  Jement6"> *  Ma6rius Aamod4L_WHO;    if (n ajax_pree" Aamod4L_WHO;    id#L7n=grogroo pla5s42te_ue /siz="fdi3us Aamodt3Eriksen <107 2ue_m" n
32iv i31 2iv idue  2
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> cd
 dirorco3#L7",  /suct   2jax_pree32n=m"3n
 div idue /a">m>
2na#L7"i>
 
3 /a>  ce/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4++n=grogro 12nti2nNFS4_EX32UTE_32s)i>
 
3 /a> >
ena4"> *; pr2viou10aion *  Al2pree" n=32 n
 32istributptioand us2 i13 23fss="orst case: ef= (denyro 12nti2nACL_EX32UTEe32t1si>
 13 /a> i class="comment12">3 idue /a"3siz=nats += 2* 2" spai c3a*12m3di8}>
 
3 /a> aj19     if (n ajax_pree"switchl1ll rights reserve#L7"i>
 
3 /a> 4"4ents(n ajax_pree" n719(    if (n ajax_pree"
 div id
3 /i_eflak@u14mich148#L7"  e_tag#L7"2
 
3 /a> 22ntUSERp;rn:spa3 idue /a"3siz=nats += 2* 2"iversit32003 32 /a">flagsi>
 
3 /a> spai 2lass=23o ="come /a">flagsents)8#L7"   Eriksen <6;mari67#L7"{>
 
3 /a> spai classve#L7"i>
 
3 /a> 4"4_e{>
 
3ACL_WRITE
 div iser/#L7"i>
 
3 /a> spai c cla
3 /">
" n=pi classve/#L7"i>
 
3 /a> 4""n=grogroacl#L7", n 3 idue /a"3siz=nats += 2* 2"fsd/nfs3aree"32 /a">flagsi>
 
3 /a> spai 2lass=23o ="lak@u14mich148#L7"  >user/#L7"i>
 
3 /a> spai c cla
3 /">
" n=p spai c4"/#L7"i>
 
3 /a> 4e" n=grogrol         2   un23ss=_eflak@u14mich148#L7"  e_tag#L7"2 i16 sou121#L7">
 
3 /a> 3jax_pree"3n=flags
 div id2ue /a">a32el#L32L3"rients1,rn ajaxi>
 
3 /a> spai 2lass=23o++n=grogpai class="commewho>ement6"> *  Ma6rius Aamod4_IACCESSentNIEDod4_Icomm_SUPPORTEDdue /a">NFS4_IACCESSentNIEDod4_Icommee" n=grogro *162#L7"        jax3*  Ma12ri3s Aamodt Erikse2 <12;m3212s@32nfsion<132#L7"    8#L7"   ce/#L7"i>
 
3 /a>  ce/ /a> s
 
3 /a> cd
 div idu2 /a">2s"_acd#L7"  s4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7ak@u5mich.58ents#def 20rn ajDENT0ee"1 n=reri
i>
 
3 /a> spai E_7n=grogro< /a> spai E_7n=gro>gro 2te_ue /siz="fdi3jax_pree"3n=flags
 div id2cd2 
 

32iv i33
 div idue /a">m>
2nats 22   spai 2lass=23o++n=grog_i classve/#L7"i>
 
aco_ss_i cld#L7"  s4aree" n=ss="_ * /sp8aionflagsents)                2   un23ss=L7"                  ajax_pree" n=_posix_to_ssss="_ac> spaclass="comment14"/#L/a> spai 2lass="comment163jax_pree"3n=flags
 div id2cNFS4_EX32idue33nfss4acfssh.edu>2 /spa20   spai 2lass=23o  ce/ /a> s
 
3 /a> who> spai class="commewho> sp  Jement6"> *  Ma6rius Aamod4L_WHO;NAME> spai class="comment1eL_WHO;NAME>d#L7n=grogro
 
32/a> 4"/
3 /a> s3ULT
 div 3due /a">NFS4_AC2nt13nt">32  R333L3">
 
3 /a> spai 2lass=20ts(spai 2lass=23o  ce/ /a> s
 
3 /a> whoai class="commewho13 23fss="orst case: ef=L7"   Eriksen <6;mari67#L7"{>
 
3 /a> spa  if (n ajax_preepa  d#L7n=grogroACL_EX32nfl.33e on=ERR_PTR
 div i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> > spairo 12nti2ngro 12nti2nflagsi>
 
3 /a> >
ena4"> *; pr2viou10aion *2a13ion<132#L7"33" idbut we espect.2o ksen <6;ma++n=grogro
ena4"> *; pr2viou10aion33L7" =r0i2
 
3 /a> 2spai 18TYPE_DEF3 class="23mmen23ius Aamodt Eriksen3<9;33nfsion<132#L7         2   un23ssee"switchl1ll rights reserve#L7"i>
 
3 /a> 4"4ents(n ajax_pree" n719(    if (n ajax_pree"
 div __
3 /i class="comment12ntASK_//a> spai class="comment13"> * 3ajax_pre23 n=s24eL1">
 
11k
 div i31ue /34
 div idue /a">m>
2na#L7"i>
 
3 /a> =grogro3lagse3ts)                2   un23ss ce/ /a> s
 
3 /a> > spai class="comme"> *  Jement6"> *  Ma6rius Aamod4_IACCESSenfwouEDod4_Icomm_SUPPORTEDdue /a">NFS4_IACCESSenfwouEDod4_Icommd#L7n=grogro 2te_ue /siz="fdi3  if (n 23ax_p24ajax_pree" n=mask 3a">fl34o, 2
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> cd
 div idu2 /a">2s"_acd#L7"  s4aree" n=ss="_acd
 div idu2 /a">2s="_acd#L7n=grogro
 
3 /a> spai 2lass=23o++n=grog_i classve/#L7"i>
 
aco_ss_i cld#L7"  s4aree" n=ss="_p8aionflagsents)8#r/#L7"i>
 
3 /a> spai c clL7"{>
 
3 /a> spai classve#L7"i>
 
3 /a> 4"4_e{>
 
3ACL_WRITE
 div iser/pree" n=_posix_to_ssss="_ac> spaclass="comment14"/#L/a> spai 2lass="comment163iv idue 23">si24ax_pree" n=flags
 3iv id34 /i>
 
3 /a> spai 2lass=23o  ce/ /a> s
 
3 /a> who> spai class="commewho> sp  Jement6"> *  Ma6rius Aamod4L_WHO;bfiel6ds@um69#L7">
 
3 /a>EVERYONCCESSenfwouEDod4_Icommd
3 /a>EVERYONC>groflagsi>
spai 2lass=23o  ce/ /a> s
 
3 /a> spai clree" n=_posix_to_ss=v4++n=grogro 12nti2n *  Al14l right3 r id3e /a">>
ena4"> *; pr2viou10aion
ena4"> *; pr2viou10aionm2
enat21omment10"> *  Ma10r3 idue /a23siz=2ats += 2*  ajax_pre3" n=d34e /a">"rdue_m" n#L2"sort_i cl_rangement6"> *  Ma6rsort_i cl_range7"i>
spai class="comment13nt"> * /13paion spai classvesv idu2 /a">2s="_acdiv rnfsd/nf14s4ac143iv rnassvesv idu2 /a">2s="_acdengro
 
3 /a> 3n=aefeun23 div2idue /a">aefeunt#L73i>
 
35
 div idue /av idu2 /a">2s="_acdiortegrogro3lagse3ts)i>
 
3 /a> 
enat2 |=rn22fss="orst cassp13aion *  Jem /lak@u14mich148em >gro
"fdi3idue /a"23cl#L25s
 div id2c>ACL_EX32nfl.3nt)i>
 
3 /a> se /a2>rosi2_com#L7" *  ajLIjust do a bubble iort; easyriento|ioaplue , wOSSw* /15prepree" f="fs/nf2M spai cl2"i>
 
3 /a> spa3fs/nfsd/2315s425ts += 2* 2F spai c3av id3e /i>
7"}>
  sinclxa  /a>Edbn bec18 moSexprighngNESS /15psrienbe longNenoughrienjustify wOFOR Atpcspaif
en3"       23    25s
 div idu>rerient31,rn 3jaxi>
 
3 /a> aj19   !u2 /a">2s="_acdiortegro
 
3 /a> 3nclass="23n=EN25ment4"> *2a13ion<132#L7"35" idbut we espect.2o ksen <6;ma++niortegrolfor       2   un23ssirogro_WHO;bfiel6ds@um69iv rnfsd/nf14s4ac143iv rnassv>
 
3 /a> spai c irogro_     u2 /a">2s="_acdengro
 
3 /a> spai c irogro++ag#L7"2 i16 sou121#L7">
 
3 /a> 3n13;mar123gs
 2iv idue /a">flagsen3s &am35L3"rients1,rn ajaxi>
 
3 /a>          2   un23ssee4"4_ef 
3 /a> spai classve> * /sp14aion spai c irogro]#L7"i>
 
3 /a> 47n=grogroL7"2 i16 sou121#L7">
 
3 /a> 3nidue /a23due 2a">NFS4_ACL_TYwhile3 /a">35nfsion<132#L7"    8#L7"   ce/////////////////> * a#L7"i>
 
3 /a> =g4"4_ef 
3 /a> spai classve> * /sp14aion spai c irogro+1]#L7"i>
 
3 /a> 47n=grogroag#L7"2 i16 sou121#L7">
 
3 /a> 3ai class23comm2nt15"> *  J.15 Bruc3 Fiel3s <bfiel           ut we espect.2o ksen <6;ma++niortegrogro, a4"#L7"i>
 
3 /a> 4"4_ef 
3 /a> spai classve> * /sp14aion spai c irogro]flagsents)       ut we espect.2o ksen <6;ma++n> 4"4_ef 
3 /a> spai classve> * /sp14aion spai c irogro], a4"#L7"i>
 
3 /a> 4"4_ef 
3 /a> spai classve> * /sp14aion spai c irogro+1]
 
3 /a> pect.2o ksen <6;ma++n> 4"4_ef 
3 /a> spai classve> * /sp14aion spai c irogro+1], a4"#L7"i>
 
3 /aem /lak@u14mich148em >gro *  Al2a spai c3alass3"lin     nspaay fo, 2
 
3 /a> >
ena4"> *; pr2viou10aionflagsi>
>
ena4"> *; pr2viou10aion
ena4"> *; pr2viou10aion *  Al2al2c#L7"3i"> *3/sp1pa>
ena4"> *; pr2viou10aion 2spai 18TYPE_DEF3omment1623 *  26ts += 2*  =onm2
enat21omment10"> *  Ma10r3ment16">23  J.27t15"> *  J.15 Bruc3 Fx_p3ee" n=>"rdue_m" n#L2"sort_i clment6"> *  Ma6rsort_i cl7"i>
spai class="comment13nt"> * /13paion spai classv/a> spai class="comment13"> * 3omment1723"> *27   if (n ajax_pree3 n=re37DEents) == n ajax_2ree" 2=NFS4_ spa3mp;rn aj23_pre27ts += 2* 2r all...32i   37x_com
 div iI8 INTEdbut of /a> 4",s"lx/n hass="en>
 1 r55osresi  ct> * /s wOSSs firs." |ioaorda">gwith lass="comment14pp"linLo n>
en3k  unsit23 div27 jax_loo  ajax_pre3" n=E37r81#L7"}>
  sinclxa  /a>Edbn bec18 moSby uid/g 1if
en3*  Ma12r23sCL_274"> *  Al2a spai c3alass3"line" na si=ov idu2 /a">2s="_acdirogropree" n=_posix_tojrogro/s#2    ajax_2ree" n=acl
 div3Eclass="23comm274"> *  Al14l right3 r id3e /a">flagsi>
         2   un23ssee4"4_ef 
3 /a> spai classve> * /sp14aion spai class="comment13"> * 3of (n aj23" n=27 n=rosix_com_vali"3 d id3e /a">flagsi>
 
3 /a> return;I8 INTEdbut of /a> 4",s"lxno> * /s or s firs.
en3*13;mar123L7" 27 jax_loo  ajax_pre3" n=E3R_PTR
 div 8#L     2   un23ssirogro_WH1 spai classve> * /sp14aion spai c irogro]#L7"i>
 
3 /a> 47n4ents(n ajax_pree" n719(n ajax_pree" n=dpcom
 div id
3 _eflak@u14mich148#L7"  e_ta/s#2    ajax_2ree" n=acl
 div3ass="lin23 nam28n=acl
 di2_pree" n32" n
38
 div idue /a">m>
2na#L7"i>
 
3 /a> irogro++ *  Ma6rsort_i cl_range7"i>
3c#L11ss="lxrvoid   ajax_p /a> spai classves1pree" n=_posix_toirogro-114"/#L/a> spai 2lass="comment163ed. /spa23l ac28sou151#L7"    pree32n=po38due_m
 
3spai _ spai ="f6T"{>
"fdi3namlueL123>
 12 /a> spai coand use31i8 s38t)i>
 
3 /a> spai 2lass=23o+mp;rn ajax_14mich148#L7"  BUG.5 /a> spai class=BUG.5   Ma15rius Aamodt Erik> * /sp14aion spai c irogro]#L7"i>
 
3 /a> 47n4ents(n ajax_pree" n719(n aj!f (n ajax_pree"
 div id
3 _OBJ _eflak@u14mich148#id
3 _OBJment14"/#L/a> spai 2lass="comment163ptioand 23e i128s
 div id2c spai c3aef="38 /i>
 
3 /a> spai 2lass=23o jrogro_WH++ee" n=_posix_toirogrorerpree32n=po38 0r4)ree32n=po38 0r4a> spai c iro spai classve> * /sp14aion2s="_acdiortegro spai c iro
 
32* /sp8aion7,3n aja3_pree2 n=fl2gs
 div idu>mask
iv iduei>gro++
en3*  Ma12r23sCL_274"t6"> *  Ma6rsort_i cl_range7"i>
3c#3e /a">flmment1s3fss="orst case: 3f=L7"38 of /a> 4",s"43#L7"  *  Ma6rsort_i cl_range7"i>
3c#" 27 jax_#2d 
3 /a> 2ree" n=siz="3div i3ue /a2 += 2* 2&fsd/nfs3al.c#36" ipai 4_Icomm_S3PPORTEDdue /a">NFS4_IACC3SSenf39ents1 &1rn ajax_preeJ.yth="conon>2s"_acd#37"  s4aree" n=ss="_acd
 3iv id32 /a">/nfsd/nf1460ss="coc *u12mich128#Lo 4"4_3lags
 div id2ue /a">3
3 /a> 4"3
L7"                  aj3x_pre3" n=_pct> * /s wOSSs firs." |* Wosix_proax_p+= 2rosiNFSv4=r0ic28sis mabecabe_prit /a"s"43p" 2rs.+= mich128#Lo 4"4_3lags
 div id2ue /a">3
gro-114"/L_WHO;    if (n ajax_pre3" Aam39esi  ct> * /s wOSSs firs." |*_posch jax_i_p+onprits havepreens/nfsdedl#L25sosch deniedltspaigivenmich128#Lo 4"4_3lags
 div id2ue /a">3
jax_pree"id2c>ACL_EXE2nfl.int)i>
3
3 /a39syriento|ioaplue , wOSSw* /1*cl2"ity href="fs/n2jax_pree"2n=posix_com
 div i3 
3 /a>  3e/ /a> s
 
3 /a> spai cl3ee" n3_posixt10"> *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 * jax_2ru1eL_WHO
 div3jax_pree23nfsd div idu>rerpreenfsd128s
 div id2c spai c3aef="38 /i>
 /a">gromask
uL_WHO;NAME>jax_2ru1eL_WHO
 div3jax_pree24aree" n=ss="_ * /sp8aionflx_pree" n719(    if (n a3ax_pr3e"
 di}
 div id2c spai c3aef="38 /i>
 /" 27 jax_PPORTEDdue /a">NFS4_IACC3SSenf3ouEDod div id2c spai c3aef="38 /i>
4ENT0ee"1 4=reri
i>
 
3 /a> spai E_4n=gro4/s
 dit10"> *  Ma10r3ment16">23  J"comJ.2e_3 * 23  J"comJ.2e_3 * 
" n=pi c4assve40
2na#L7"i>
 
3 /a> iro *  Al14luid_mL_WHO
 div3jax_pree2ue> * /sp14aion *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 * ax_ats += 2* 2"fsd/nax_ao13 23fss="orst case: ef=L7"   Eri4t3 /spa204 _WHO;    if (n ajax_pre4ommen41eL_WH}
 div id2c spai c3aef="38 /i>
4sen <6;4ari67#L7"{>
 
3 /a> spa 4if (n40/a> 4." |ioacspai  cla*  J.yth="co4  Al2a sp4i c3alass3"line" na sids4.c#b240posixt10"> *  Ma10r3ment16">23  J.2e_3 * <_arra  ajax_2ree" n=acl
 div3e_3 * <_arra of /a1ss="lxrvoid   ajax_p /a> spai4
6Al2a sp4i idu>rerients1,rn ajaxr4ee" n4_posix_to_ss=vbec18 moSby uid/g 1n ajax_2ree" n=ano13 23fss="orst case: ef=L7"   Eri4t7Al2a sp4i2CL_WRITEe2te_ue /siz="4spect42o ksen <6;mt10"> *  Ma10r3ment16">23  J"comJ.2e_3 * 23  J"comJ.2e_3 *  spai classve> * /sp14ai4s#2CL_WRI4Ee2te_ue /siz="fdi3 clas4="c3m40"
 di}
 div id2c spai c3aef="38 /i>
4on
4na4"> *; pr2viou10aionre41r f="fs/nz=" in spai class=12mich128#Lo 4"4_3lags
 div id2ue /a">4ot grant34;r37"i>
 
32* /sp8aion7,4n 3lo41 /a">/nfsd/nf1460ss="coc *u|* Wosix_proax_p+= 2rosiNFSv4=r0ic28sis mabecabe_prosipartial jax_i_p+onsmich128#Lo 4"4_3lags
 div id2ue /a">4o2 /spa204eny, a4"#L7"i>
 
3 /a> 444_ef=41 n=_pct> * /s wOSSs firs." |* calcul* 
4
3spai _ spai ="f6T"{>
"4di3 s41oand us2 i13 23fss="orst case: ef=4
3 /a> sp4i c cla
3 /">
" n=p unst4nfl.s4ort   posix_toirogro23  J.2l_3 * flagse4t    4    2   un23ssref="fs/nfsd/n13s4acmpt  ajax_2ree" n=acmpt o13 23fss="orst case: ef=L7"   Eri4d4_Icomm_4UPPORTEDdue /a">NFS4_IAC4ESSen4NIEDod4_Icommet10"> *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 *  *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 * 
 
3 /a> spai 2lass=2com=23fss="orst case: ef=L7"   Eri4d#2CL_WRI4=L7"                  aj4x_pre4" n=_posix_to_t10"> *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 *  spai 2lass=23o ="lak@u14mich148#L7"  >user/#L7"i>
4ius Aamod4L_WHO;    if (n ajax_pre4" Aam4d4L_WHO;    idt10"> *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 * user/#L7"i>
4107 2ue_m4 n
32iv i31 2iv idue  2
4
3 /a4 spai 2lass=23t10"> *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 * 
 
3 /a> 4"4_e{            = 4/a> spai claD7" =un"cod27ts8sis x_>amref="fs/n2jax_pree"2n=posix_com
 div i4 
3 /a>  4e/ /a> s
 
3 /a> spai cl4ee" n42_WH0pree" n=_posix_toirogro"rdue_m" n#L2"comm * /sp14aionuser/#L7"i>
412 /spa204ti2n *  Ma10r3ment16">23  J.2e_3 * <_arra  ajax_2ree" n=acl
 div3e_3 * <_arra of /an=>"rdue_m" n#L2              2   un23ss="lak@u@u14mich148#L7"  >user/#L7"i>
4164#L7">
4  Al2pree" n=32 n
 32ist4ibutp42eL_WH}
 div id2c spai c3aef="38 /i>
4(denyro 12nti2n 4." |ioacspai  cla*  J.yth="co4ents(n aj4x_pree" n719(    if (n a4ax_pr425ar123 *  26ref." |ioacspai  cla*  J.yth="co4e4_Icomm_4ai c cla
3 /">
" n=pi cl4ssve/4L7"i>
8 moSby uid/g 1init_3 *  *  Ma10r3ment16">23  J.27s3 * 23  J.2l_3 * "rdue_m" n#L23 *  *  Al14lct3 r i  div id2c spai c3aef="38 /i>
4
3 /a> sp4i c cla
3 /">
" n=p spai4c4"/#47"i>
 1ss="lxrvoid   ajax_p /a> spai4idue /a324=lt3/_lts"
 div idue /a24l    4    2   un23ssref="fs/nfsd/n13s4aenfsc div idu>rerpreenfscak@u@u14mich148#L7"  >user/#L7"i>
41us Aamod4UPPORTEDdue /a">NFS4_IAC4ESSen42uEDod div id2c spai c3aef="38 /i>
4ENT0ee"1 4=reri
i>
 
3 /a> spai E_4n=gro43uEDod4_Icommd#L7n=gro *  Al14lmemsemf="fs/nf23/nf128s
 d3 *  *  Ma10r3ment16">23  J.27s3 * 23  J.2l_3 *  *  Ma6rsort_i cl_range7"i>
342   un23s4=L7"                  aj4x_pre43
2na#L7"i>
 
3 /a> iro
en3*13;mar1234ius Aamod4L_WHO;NAME> spai class="4ommen43t1723"> *27   if (n ajax_pree3 n=re37f="fs/n2jax_pree"2n=posix_com
 div i4sen <6;4ari67#L7"{>
 
3 /a> spa 4if (n43esi  ct> * /s wOSSs firs." |ioaorda">ga">rosiworst x_>a, eachsredividual 
 d couldpre2iv ia distincACL_EX32nfl.3nt)i>
 
3 /a> se /a2>ros4CL_EX32nf4.33e on=ERR_PTR
 div i>
4
3 /a43syriento|ioaplue , wOSSw* /15prepree" div d;rto pnt13"> *, butbighdonai cltass=sosch, so ightnfsc* 
 
3 /a> se /a2>ros4Cnts(n aj4e/ /a> s
 
3 /a> spai cl4ee" n4_posixnto|ioaplue , wOSSw* /15prepree" fpa3fs/to|ce2iv iei3o =:of_EX32nfl.3nt)i>
 
3 /a> se /a2>ros4C4_Icomm_4BJp;rn:spa3 * /sp16a3on<4 href4"fs/n2nto|ioaplue , wOSSw* /15prepree"ef="fs/n2jax_pree"2n=posix_com
 div i4t4"> *2a14ion<132#L7"33" idbut we 4spect43pree2 n=fl2gs
 div idu>mask
enfsc div idu>rerpreenfscak@ucomsizeofnt10"> *  Ma10r3ment16">23  J.2e_3 * <_arra  ajax_2ree" n=acl
 div3e_3 * <_arra of /  div id2c spai c3aef="38 /i>
4s#2CL_WRI4Ee2te_ue /siz="fdi3ac2el4pre3"43>
 
3 /a> spai c iro<+="fs/nfsd/n13s4acomm274"> *  Al14lct3 r i*sizeofnt10"> *  Ma10r3ment16">23  J"comJ.2e_3 * 23  J"comJ.2e_3 *  *  Ma6rsort_i cl_range7"i>
342us Aamod4na4"> *; pr2viou10aion iro spai classvkzenfsc div idu>rerprekzenfscf="fs/nf23/nf128s
 denfsc div idu>rerpreenfscak@uent14pp"linLo n>
GFP_KERNEL div idu>rerpreGFP_KERNELof /"> *  Ma6rsort_i cl_range7"i>
34 4"4ents(4 ajax_pree" n719(    if 4n aja4_pree"
 div __s +=OFOR Atpcspaif
 
11k
4div i31ue /34
 div idue 4a">m>446;ma++niortegrouser/#L7"i>
44_Icomm_S4PPORTEDdue /a">NFS4_IACC4SSenf4ouEDod4_Icommd#L7n=gro spai classvkzenfsc div idu>rerprekzenfscf="fs/nf23/nf128s
 denfsc div idu>rerpreenfscak@uent14pp"linLo n>
GFP_KERNEL div idu>rerpreGFP_KERNELof /"> *  Ma6rsort_i cl_range7"i>
34 en <6;47"  s4aree" n=ss="_acd
 4iv id42 /a">2s="_acds +=OFOR Atpcspaif
 
3ACL_WRITE
 div is4r/pre44 a4"#L7"i>
 
3 /aem //a> spai classvkfre *  Ma6rsort_i cl_range7"i>
34 nts(n aj4bfiel6ds@um69#L7">
 
3 /4>EVER4ONCCESSenfwouErouser/#L7"i>
444_Icomm_4e/ /a> s
 
3 /a> spai cl4ee" n44 2* 2niversit32of M3cpes idue /a">flagsi>
>4a">gro 12nti2n *  J.15 Bruc3 Fiel3s &43e /a">>
4na4"> *; pr2viou10aionflagsi>
>4aus Aamod42viou10aion2s="_a4diortegro *  Ma10r3ment16">23  J.27s3 * 23  J.2l_3 * "rdue_m" n#L23 *  spai ="f64he 1645uEDod4_Icommd#L7n=gro *  Ma6rsort_i cl_range7"i>
34em >gro *  Ma6rsort_i cl_range7"i>
34e /a> 4"44*  ajLIjust do a bubble 4ort; 4asyrie32of M3cpes idue /a">flagsi>
>4bn bec18 4oSexprighngNESS /15psrie4be lo45>gropree" n=_posix_tojro
 
3 /a> aj19  4!u2 /4">2s="3 *  268 moSby uid/g 1in
3 /a>#2    ajax_2rin
3 /spa23ts +s
 div idu>mask
edd_to  23    2  jax_loo  add_to  23 omment10"> *  Ma10r3ment16">23  J.27s3 * 23  J.2l_3 * "rdue_m" n#L23 *  *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 * "rdue_m" n#L2a3 * gro
 1ss="lxrvoid   ajax_p /a> spai4  u2 /a">4s="_acdengro 4",s"lxno> * /s or s3 * 
 
3 /a> 4"4_e{f 
3 /a> spai cl3nfsd div idu>rerpreenfsd128s |3 /a> spai classva3 * rerpreenfsd128s
 div id2c spai c3aef="38 /i>
4e/#L[ 
3 4a> spai c irogr45e /a2 += 2* 2&fsd/nfs3al.c#36" ipai4 
3 /a> s4ai c irog4o+1]#46ents1 &1rn ajax_preeJ.yth="cono4t;bfiel  4        ut we espect.2o 4sen &46 /a">/nfsd/nf1460ss="coc *u12mich128#Lo 4"4_3lags
 div id2ue /a">4ion * /s wOSSs firs." |* Cercabeprits (SYNCHRONIZE, DELETE, WRITE_OWNER, READ/WRITE_i cla_ATTRS pree"2n=posix_com
 div iI8 INTEdbut 4n
 
3 /a> se /a2>ros4L[ 
3 /a>4spai c iro
 
3 /a> se /a2>ros4Ln bec18 4iv3loo  aja23pree264"> *4 Al2a46posixnto|ioaplue , wOSSw* /12mich128#Lo 4"4_3lags
 div id2ue /a">4ierient3140aion *ue 2=NFS4_ sp cercabepmreeprits, beca sp iACL_EX32nfl.3nt)i>
 
3 /a> se /a2>ros4ena4"> *;4pr2viou10aionrosirul3_paboutbiosch rits on<"l_EX32nfl.3nt)i>
 
3 /a> se /a2>ros4e u2 /a">4a4"> *; pr2viou10aion43/sp1pa>
4na4"> *; pr2viou10aion42
 
3 /a>42spai 18TYPE_DEF3omment1423 * 47r f="fs/nz=" in spai class=|*_por>a, rosiprospam*  26rits mightpre27ttroducedgwitsomai#pplication=NFS4ai cl2"lch128#Lo 4"4_3lags
 div id2ue /a">42;bfiel  413paion/nfsd/nf1460ss="coc *u|* autom*  2enfy mapp+= 2fromtsomai23o = 
 d mreel.of_EX32nfl.3nt)i>
 
3 /a> se /a2>ros4classv/a>4spai class="comment13"> 4 3omm47 n=_pct> * /s wOSSs firs." |*of_EX32nfl.3nt)i>
 
3 /a> se /a2>ros4c 4",s"lx/n hass="en>
 4 r55o4resi  ct> * /s wOSSs firs." |* Ss=soerrver >23sispaiightccept425ts += , >23sispyclrr+= 2o">rosisieepofof_EX32nfl.3nt)i>
 
3 /a> se /a2>ros4c[ 
3 /a>4ajax_pre3" n=E37r81#L7"}4
  si47syriento|ioaplue , wOSSw* /1*cp8ai+= 2* 2F jax_i_p+ons=NFSn neax_pary.of_EX32nfl.3nt)i>
 
3 /a> se /a2>ros4cn bec18 4u2 /a">2s="_acdiro4uej>gro **explicit* DENYai cl2"nf a few6rits 43p" 2rs.+= mich128#Lo 4"4_3lags
 div id2ue /a">44_ef 
3 /4> spai classve> * /sp14a4on
 
3 /a> se /a2>ros4d3e /a">f4agsi>
 
3 /a> return;I8 4NTEdb47 aj23nto|ioaplue , wOSSw* /1*ef="fs/n2jax_pree"2n=posix_com
 div i47" 27 jax4loo  ajax_pre3" n=E3R_PT4
 div47uEDod div id2c spai c3aef="38 /i>
447n4ents(4 ajax_pree" n719(n ajax_4ree" 480ar123 *  268 moSby uid/g 1in
3 /a>#2    ajax_2rin
3 /spa23ref="fs/nfsd/n13s4acheck_4aree" n=ss="_ * /scheck_4aref="fs/nf23/nf128s
 duL_WHO;NAME>jax_2ru1eL_WHO
 div3jax_pree2lassve#L7"i>
 
3 /a> 4"4_e{> bec18 moSby uid/g 1is3duue/s#2    ajax_2ris3duueof //ree" n=_posix_tojro483c#L11ss="lxrvoid   ajax_p /a> spai4#L11ss="l4rvoid   ajax_p /a> spai 4lassv48uEDod4_Icommds += 2* 2niversit32lassve#L7"i>
 
3 /a> 4"4_e{ /a">fl= 2* 2niversit32pai classREAD_ATTRIBUTESve#L7"i>
 
3 /apai classREAD_ATTRIBUTES128s | /a">3lagse3ts)          READ_ACLve#L7"i>
 
3 /apai classREAD_ACLof /"/ree" n=_posix_tojro spai 2lass="commen4163ed4 /spa23l ac28sro
 
3 /aEINVAL128s
 div id2c spai c3aef="38 /i>
4ajax_pree4 n719(n aj!f (n ajax_pre4"
 di4 id
3 _OBJ _efs +=OFOR Atpcspaif48NCCESSenfwouEro *  J.15 Bruc3 Fiel3s &4
ej>grorerpree"2n=posix_com
 4iv in48iv i23ue /27ts += 2* 2niversit32lassve#L7"i>
 
3 /a> 4"4_e{ /a">fl= 2* 2niversit32pai classWRITE_ATTRIBUTESve#L7"i>
 
3 /apai classWRITE_ATTRIBUTES128s | /a">3lagse3ts)          WRITE_ACLve#L7"i>
 
3 /apai classWRITE_ACLof /"/ree" n=_posix_tojro
 
32* /sp8aion7,4n aja48ef="fs/nfsd/nf14s4ac143#L7" -on
 
3 /aEINVAL128s
 div id2c spai c3aef="38 /i>
4a3e /a">f4mment1s3fss="orst case: 4f=L7"48 of /a> 4",s"43#L7" m2nt15"> *  J.15 Bruc3 Fiel3s &4
" 27 jax4#2d 
3 /a> 2ree" n=siz="4div i4ue /a2 += 2* 2&fsd/nfs3al.c#36" ipai44_Icomm_S4PPORTEDdue /a">NFS4_IACC4SSenf49ents1 &1rn ajax_preeJ.yth="cono4>2s"_acd#47"  s4aree" n=ss="_acd
 4iv id42 /a">3 *  26t10"> *  Ma10r3ment16">23  J.27t15"> *  J.15 Bruc3 Fx_p3ee" n &1rn ajax_preeJ.yth="cono4>L11ss="l4
L7"                  aj4x_pre4" n=_pc Ma10r3ment16">23  J3 * <_toJ.27t15"> *  J.15 Bruc3 F3 * <_toJ.27omment10"> *  Ma10r3ment16">23  J.27s3 * 23  J.2l_3 * "rdue_m" n#L23 * 
 
3 /a> spai c clL7"{ &1rn ajax_preeJ.yth="cono4>"rdue_m" n#L2plass="comment14"/#pL/a> sp2nt15"> *  J.15 Bruc3 Fiel3s &4 
3 /a>  4e/ /a> s
 
3 /a> spai cl4ee" n495d
3 _OBJ _efposix_toirogro *  J.15 Bruc3 Fx_p3ee" n=>"rdue_m" n#L2plaid2cNFS4_EX32idue38s)   2nt15"> *  J.15 Bruc3 Fiel3s &4 ej>grorerients1,rn ajaxr4L7"  49posix_to_ss=vbec18 moSby uid/g 1nlass="comment14"/#nL/a> sp2nt15"> *  J.15 Bruc3 Fiel3s &4 _ef 
3 /4#2CL_WRITEe2te_ue /siz="4div i49pree2 n=fl2gsbec18 moSby uid/g 1if
lrrorf *  J.15 Bruc3 Fiel3s &4/3e /a">f4x_pree" n719(    if (n a4ax_pr49 aj23 * /264"> *  Al2al2c#L7"3i"> 4/" 27 jax4PPORTEDdue /a">NFS4_IACC4SSenf49mar123#L7"2  3nfsd/nf1460ss="coc *u12mich128#Lo 4"4_3lags
 div id2ue /a">5ENT0ee"1 5=reri
i>
 
3 /a> spai E_5n=gro50r f="fs/nz=" in spai class=|||||||||* ACLs withass=lass are tre* 5E1T0ee"1 5="  s4aree" n=ss="_acd
 5assve50 /a">/nfsd/nf1460ss="coc *u|||||||||* #L25effective x_>as:=soets8sere aid2c>27theritaspa=lass,=igmich128#Lo 4"4_3lags
 div id2ue /a">5E2T0ee"1 5=L7"                  aj5eeeee50 n=_pct> * /s wOSSs firs." |||||||||* set a zero-length defaultDEents 
 d:of_EX32nfl.3nt)i>
 
3 /a> se /a2>ros5t3 /spa205 _WHO;    if (n ajax_pre5ommen50esi  ct> * /s wOSSs firs." |ioaorda">ef="fs/n2jax_pree"2n=posix_com
 div i5sen <6;5ari67#L7"{>
 
3 /a> spa 5if (n50rt   ajax_pree" n=grof/a">fl= 2* 2niversit32r/#L7"i>
 
3 /a> spai c clL7" /a">flagsents)8#L7"  > who> sp6"> _DEFAULTve#L7"i>
 
3 /apai clasp6"> _DEFAULTof /"/nfsd/nf14s4ac143#L7"  ="f6ie/#L5  Al2a sp5i c3alass3"line" na sids5.c#b250"
 div id
3 /i_eflak@u14mich148#L7" plaid2cNFS4_EX32idue38s)   f 
3 /a> spai classl
 div3 Benfsc div idu>rerpresl
 div3 Benfscommen3 /a> 3n=aefeun23 GFP_KERNEL div idu>rerpreGFP_KERNELof /"> *  Ma6rsort_i cl_range7"i>
35
6Al2a sp5i idu>rerients1,rn ajaxr5ee" n50>2s="_acdiortegro sERR_PT6ommen-on *  Ma6rsort_i cl_range7"i>
35
7Al2a sp5i2CL_WRITEe2te_ue /siz="5spect50o ksen <6;ma++n=grogro<5s#2CL_WRI5Ee2te_ue /siz="fdi3 clas5="c3m508ar123#L7"2  3nfsd/nf1460ss="coc *u12mich128#Lo 4"4_3lags
 div id2ue /a">5E92CL_WRI5EPORTEDdue /a">NFS4_IACC5hr3 i50mar12nto|ioaplue , wOSSw* /1||||||||* Woets8sere aid2c>2effective lass,=8se2fonfsd+= 2will l6ds@ch128#Lo 4"4_3lags
 div id2ue /a">5nats += 25 2&> /s3a 
3 30 idue 5a">re51r f="fs/nz=" in spai class=1||||||||* up set/nf2M  3-eleclas2effective Eents las withaenfs@ch128#Lo 4"4_3lags
 div id2ue /a">5n1T0ee"1 5;r37"i>
 
32* /sp8aion7,5n 3lo51 /a">/nfsd/nf1460ss="coc *u|||||||||* /ax_i_p+ons=zero.of_EX32nfl.3nt)i>
 
3 /a> se /a2>ros5o2 /spa205eny, a4"#L7"i>
 
3 /a> 454_ef=51 n=_pct> * /s wOSSs firs." |ioaorda">ef="fs/n2jax_pree"2n=posix_com
 div i5164#L7">
5
3spai _ spai ="f6T"{>
"5di3 s51/spa23l ac28sou151#L7"    prnlass="comment14"/#nL/a> spf 
4<+="fs/nfsd/n13s4a3 *  spf+="fs/nfsd/n13s4a3 *  sp> *  Ma6rsort_i cl_range7"i>
35
3 /a> sp5i c cla
3 /">
" n=p unst5nfl.s51id
3 _OBJ _eflak@u14mich148#plaid2cNFS4_EX32idue38s)   f 
3 /a> spai classl
 div3 Benfsc div idu>rerpresl
 div3 Benfscommenou151#L7"    prnlass="comment14"/#nL/a> sp /a> 3n=aefeun23 GFP_KERNEL div idu>rerpreGFP_KERNELof /"> *  Ma6rsort_i cl_range7"i>
35+= 2* 2F 5pai c3av id3e /a">flagse5t    5    2   un23ssr +=OFOR Atpcspaif *  Ma6rsort_i cl7"i>
spai class="commen5d4_Icomm_5UPPORTEDdue /a">NFS4_IAC5ESSen51>2s="_acdiortegro sERR_PT6ommen-on *  Ma6rsort_i cl_range7"i>
35d7Al2a sp57"  s4aree" n=ss="_acd
 5iv id51s="23mmen214"> *  Al14l right3 r i5d#2CL_WRI5=L7"                  aj5x_pre51 of /a> 4",s"lxno> * /s or splass="comment14"/#pL/a> spf 
3 /a> spai classve> * /sp14aion spai c iro *  Ma6rsort_i cl_range7"i>
35d92CL_WRI5L_WHO;    if (n ajax_pre5" Aam51mar123#L7"2  3 /a> iro sp 2spai 18TYPE_DEF3 class="23mmen23ius Aamodt Eriksesd/nf14s4ac143#L7"  ="f6e/#L[ 
3 /a> spai c iro="f6e/#Ls
 d> *  Ma6rsort_i cl_range7"i>
35107 2ue_m5 n
32iv i31 2iv idue  2
5
3 /a52uEDod4_Icommd#L7n=gro spai cl4aree" n=ss="_ * /sp8aion *  Ma6rsort_i cl_range7"i>
35 
3 /a>  5e/ /a> s
 
3 /a> spai cl5ee" n52_WH0pree" n=_e" n=gro
spai class="commen512 /spa205ti2n spai c igotoa  Ma10r3ment16"3ut_lrr/s#2    ajax_2r3ut_lrrs
 d> *  Ma6rsort_i cl_range7"i>
35164#L7">
5  Al2pree" n=32 n
 32ist5ibutp52/spa23l ac28sou151#L7"    prfsd_mree>g_i crang/s#2    ajax_2rfsd_mree>g_i crangf="fs/nf23/nf128s
 d3 * f3 /a> iro sp 2spai 18TYPE_DEF3 clad/nf8s4actsss="lxrn ajax_pree /a">flagsents)8#r/#L7"i>
 
3 /a> spai c clL7"{>
 
3 /a> spai classve#L7"i>
 5(denyro 12nti2n sp 2spai 18TYPE_DEF3 clae> * /sp14aion spai c iro=NDEFINED_IDs
 d> *  Ma6rsort_i cl_range7"i>
351= 2* 2F 5x_pree" n719(    if (n a5ax_pr52>gropree" n=_posix_tojro
" n=pi cl5ssve/52>2s="_acdiortiv idueiortegod4L_WH1lfor       2   un23ssiro sp69iv rnfsd/nf14s4ac143iv rnassv>
 
3 /a> spai c irogro_  5
3 /a> sp5i c cla
3 /">
" n=p spai5c4"/#52ef="fs/nfsd/nf14s4ac1lak@u14mich148#plass="comment14"/#pL/a> spree" n=acl
 div3ass="lin23 nam285idue /a325=lt3/_lts"
 div idue /a25l    52>
 
3 /a> spai c iro<3 /a> iro sp 2spai 18TYPE_DEF3 class="23mmen23ius Aamodt Eriksesd/nf14s4ac143#L7"  ="f6[ 
3 /a> spai c iro="f6s
 d> *  Ma6rsort_i cl_range7"i>
35192CL_WRI5UPPORTEDdue /a">NFS4_IAC5ESSen52#L7"i>
 
3 /a> 47n=gr#L7n=gro
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 f 
3 /a> spai cl4aree" n=ss="_ * /sp8aion
 
3 /a> spai classve#L7"i>
 5ENT0ee"1 5=reri
i>
 
3 /a> spai E_5n=gro53dpcom
 div id
3 _eflae" n=gro
spai class="commen52   un23s5=L7"                  aj5x_pre536;ma++niortegro *  Ma6rsort_i cl_range7"i>
35ius Aamod5L_WHO;NAME> spai class="5ommen53e/#L[ 
3 /a> spai c iou151#L7"    prfsd_mree>g_i crang/s#2    ajax_2rfsd_mree>g_i crangf="fs/nf23/nf128s
 d3 * 
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 f 
3 /a> spai cl3nfsd div idu>rerpreenfsd128s, *  Ma6rsort_i cl_range7"i>
35i64#L7">
5ari67#L7"{>
 
3 /a> spa 5if (n53#L[ 
3 /a> spai c iroggggggggg/a">f3 /a> iro sp 2spai 18TYPE_DEF3 clad/nf8s4actsss="lxrn ajax_pree /a">flagsents)8#r/#L7"i>
 
3 /a> spai c clL7"{>
 
3 /a> spai classve#L7"i>
 5CL_EX32nf5.33e on=ERR_PTR
 div i>
5
3 /a53 a4"#L7"i>
 
3 /aem //a> spai classvplass="comment14"/#pL/a> sp 2spai 18TYPE_DEF3 clae> * /sp14aion
 
3 /ef 
3 /a> spai clue> * /sp14aion s
 
3 /a> spai cl5ee" n53"
 div id
3 /i_eflak@u14mich148#L7" edd_to  23    2  jax_loo  add_to  23 ommend/nf14s4ac143#L3 * f3 /a> iro
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 {>
 
3 /a> spai classve#L7"i>
 5C4_Icomm_5BJp;rn:spa3 * /sp16a3on<5 href53 2* 2niversit32of M3cpes idue /a">flagsi>
>5t4"> *2a15ion<132#L7"33" idbut we 5spect53s="23mmen214"> *  Al14l right3 r i5s#2CL_WRI5Ee2te_ue /siz="fdi3ac2el5pre3"53 of /a> 4",s"lxno> * /s or splass="comment14"/#pL/a> spree" n=acl
 div3ass="lin23 nam2852us Aamod5na4"> *; pr2viou10aion iro sp 2spai 18TYPE_DEF3 class="23mmen23ius Aamodt Eriksesd/nf14s4ac143#L7"  ="f6ie/#L[ 
3 /a> spai c iro
 
3 /a> spai 2lass=2com=f 
3 /a> spai cl4aree" n=ss="_ * /sp8aion
 
3 /a> spai classve#L7"i>
 5">
 
11k
5div i31ue /34
 div idue 5a">m>54_WH0pree" n=_e" n=gro
spai class="commen54_Icomm_S5PPORTEDdue /a">NFS4_IACC5SSenf54e/#L[ 
3 /a> spai c igotoa  Ma10r3ment16"3ut_lrr/s#2    ajax_2r3ut_lrrs
 d> *  Ma6rsort_i cl_range7"i>
35 en <6;57"  s4aree" n=ss="_acd
 5iv id54/spa23l ac28sou151#L7"    prfsd_mree>g_i crang/s#2    ajax_2rfsd_mree>g_i crangf="fs/nf23/nf128s
 d3 * f3 /a> iro sp 2spai 18TYPE_DEF3 clad/nf8s4actsss="lxrn ajax_pree /a">flagsents)8#r/#L7"i>
 
3 /a> spai c clL7"{>
 
3 /a> spai classve#L7"i>
 53 /a> 4"45e{>
 
3ACL_WRITE
 div is5r/pre54id
3 _OBJ _eflak@u14mich148#plass="comment14"/#pL/a> sp 2spai 18TYPE_DEF3 clae> * /sp14aion spai c iro=NDEFINED_IDs
 d> *  Ma6rsort_i cl_range7"i>
35 nts(n aj5bfiel6ds@um69#L7">
 
3 /5>EVER5ONCCESSenfwouEu14mich148#L7" edd_to  23    2  jax_loo  add_to  23 ommend/nf14s4ac143#L3 * f3 /a> iro
 534_Icomm_5e/ /a> s
 
3 /a> spai cl5ee" n54 2* 2
 
3 /a> spai classve#L7"i>
 534"> *2a152/a> 12nti2nlfor       2   un23ssiro sp>9iv rnfsd/nf14s4ac143iv rnassv>
 
3 /a> spai c irogro_  53e /a">>
5na4"> *; pr2viou10aion
 
3 /a> spai c iro<3 /a> iro spree" n=acl
 div3ass="lin23 nam285aus Aamod52viou10aion
 
3 /a> 47n=gr#L7n=gro sp 2spai 18TYPE_DEF3 class="23mmen23ius Aamodt Eriksesd/nf14s4ac143#L7"  ="f6i[ 
3 /a> spai c iro *  Ma6rsort_i cl_range7"i>
35s="_acdiv5rnfsd/nf14s4ac143iv rnas5vesv 55dpcom
 div id
3 _eflak@u14mich148#L7lrrorf
         2   un23ss="lak@uax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2niv[iv rnfsd/nf14s4ac143iv rnassv>
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 f 
3 /a> spai cl4aree" n=ss="_ * /sp8aion
 
3 /a> spai classve#L7"i>
 5a">2s="_a5diortegro
spai class="commen513aion spai c ispai c igotoa  Ma10r3ment16"3ut_lrr/s#2    ajax_2r3ut_lrrs
 d> *  Ma6rsort_i cl_range7"i>
35em >gro spai c iroou151#L7"    prfsd_mree>g_i crang/s#2    ajax_2rfsd_mree>g_i crangf="fs/nf23/nf128s
 d3 * 
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 f 
3 /a> spai cl3nfsd div idu>rerpreenfsd128s, *  Ma6rsort_i cl_range7"i>
35e /a> 4"45*  ajLIjust do a bubble 5ort; 55 a4"#L7"i>
 
3 /aem //////////////////////////a">f3 /a> iro sp 2spai 18TYPE_DEF3 clad/nf8s4actsss="lxrn ajax_pree /a">flagsents)8#r/#L7"i>
 
3 /a> spai c clL7"{>
 
3 /a> spai classve#L7"i>
 5bn bec18 5oSexprighngNESS /15psrie5be lo55"
 div id
3 /i_eflak@u14mich148#L7" plass="comment14"/#pL/a> sp 2spai 18TYPE_DEF3 clae> * /sp14aion
         2   un23ss="lak@uax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2niv[iv rnfsd/nf14s4ac143iv rnassv>
 
3 /ef 
3 /a> spai clue> * /sp14aion
 
3 /a> aj19  5!u2 /55>2s="_acdiortegrof3 /a> iro
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 {>
 
3 /a> spai classve#L7"i>
 5b4"> *2a15"35" idbut we espect.2o 5sen &55o ksen <6;ma++n=grogro<5  u2 /a">5s="_acdengro *  Al2al2c#L7"3i"> 5e/#L[ 
3 5a> spai c irogr55mar123#L7"2  3 /a> iro spree" n=acl
 div3ass="lin23 nam285 
3 /a> s5ai c irog5o+1]#56uEDod4_Icommd#L7n=gro sp 2spai 18TYPE_DEF3 class="23mmen23ius Aamodt Eriksesd/nf14s4ac143#L7"  MASK[ 
3 /a> spai c iroMASKo13 23fss="orst case: ef=L7"   Eri5t;bfiel  5        ut we espect.2o 5sen &56
2na#L7"i>
 
3 /a> irog_i crang/s#2    ajax_2rfsd_mree>g_i crangf="fs/nf23/nf128s
 d3 * 
 
3 /a> 4"4_e{f 
3 /a> spai cl3nfsd div idu>rerpreenfsd128s, /a">f3 /a> iro sp 2spai 18TYPE_DEF3 clad/nf8s4actsss="lxrn ajax_pree /a">flagsents)8#r/#L7"i>
 
3 /a> spai c clL7"{>
 
3 /a> spai classve#L7"i>
 5ion sp 2spai 18TYPE_DEF3 clae> * /sp14aion spai c iro=NDEFINED_IDs
 d> *  Ma6rsort_i cl_range7"i>
35n5spai c iro spree" n=acl
 div3ass="lin23 nam285 n bec18 5iv3loo  aja23pree264"> *5 Al2a56NCCESSenfwouEu14mich148#L7" plass="comment14"/#pL/a> sp 2spai 18TYPE_DEF3 class="23mmen23ius Aamodt Eriksesd/nf14s4ac143#L7"  OTHf6[ 
3 /a> spai c iroOTHf6s
 d> *  Ma6rsort_i cl_range7"i>
35nerient3150aion spai 2lass=23o ="lakf 
3 /a> spai cl4aree" n=ss="_ * /sp8aion
 
3 /a> spai classve#L7"i>
 5ena4"> *;5pr2viou10aion
spai class="commen5e u2 /a">5a4"> *; pr2viou10aion
 
3 /a> spai c iro *  Ma6rsort_i cl_range7"i>
353/sp1pa>
5na4"> *; pr2viou10aion irog_i crang/s#2    ajax_2rfsd_mree>g_i crangf="fs/nf23/nf128s
 d3 *  spai cl3nfsd div idu>rerpreenfsd128s, /a">f3 /a> iro sp 2spai 18TYPE_DEF3 clad/nf8s4actsss="lxrn ajax_pree /a">flagsents)8#r/#L7"i>
 
3 /a> spai c clL7"{>
 
3 /a> spai classve#L7"i>
 52
 
3 /a>52spai 18TYPE_DEF3omment1523 * 57uEDod4_Icommd#L7n=gro sp 2spai 18TYPE_DEF3 clae> * /sp14aion spai c iro=NDEFINED_IDs
 d> *  Ma6rsort_i cl_range7"i>
352;bfiel  513paion *  Ma6rsort_i cl_range7"i>
352on 5 3omm57uEDod4_Icommd43#L7" u14mich148#L7" plaid2cNFS4_EX32idue38s)   > *  Ma6rsort_i cl_range7"i>
352 4",s"lx/n hass="en>
 5 r55o5resi  c Ma10r3ment16"3ut_lrr/s#2    ajax_2r3ut_lrrs
 d: *  Ma6rsort_i cl_range7"i>
352[ 
3 /a>5ajax_pre3" n=E37r81#L7"}5
  si57id
3 _OBJ _eflak@u14mich148#pl
 div3 Breleasss="comment14"/#pl
 div3 Breleassf="fs/nf23/nf128s
 d"sort_i clment6"> *  Ma6rsor> *  Ma6rsort_i cl_range7"i>
352n bec18 5u2 /a">2s="_acdiro sERR_PT6ommen=gro *  Ma6rsort_i cl_range7"i>
352erient315#2    ajax_2ree" n=acl
 5iv3E
57fs/n2a++n=grogro<54_ef 
3 /5> spai classve> * /sp14a5on *  Al14l right3 r i5d3e /a">f5agsi>
 
3 /a> return;I8 5NTEdb57 aj233 *  268 moSby uid/g 1in
3 /a>#2    ajax_2rin
3 /spa23ts +s
 div idu>mask
enfsd_rits div idu>rerpreenfsd_ritsomment10"> *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 * "rdue_m" n#L2a3 * flagsents)8#uL_WHO;NAME>jax_2ru1eL_WHO
 div3jax_pree2lassve#L7"i>
 
3 /a> 4"4_e{rt_i cl7"i>
spai class="commen57" 27 jax5loo  ajax_pre3" n=E3R_PT5
 div57uEDodpai c irogro_  547n4ents(5 ajax_pree" n719(n ajax_5ree" 58uEDod4_Icommd#         = 4/a> spai claAnfsdaenf6rits 7ts8se2> 4" notaen43ady p8aied href="fs/n2jax_pree"2n=posix_com
 div i5=acl
 di25pree" n32" n
38
 div idu5 /a">58
2na#L7"i>
 
3 /a> irorerpreenfsd128s |3 /a> spai classvlassve#L7"i>
 
3 /a> 4"4_e{ /a">fl~3 /a> iro *  Ma6rsort_i cl_range7"i>
35#L11ss="l5rvoid   ajax_p /a> spai 5lassv58uEDoda++n=grogro<5= spai 2lass="commen5163ed58oand us2 i13 23fss="orst case: ef=5ajax_pree5 n719(n aj!f (n ajax_pre5"
 di5 id
3 3 *  268 moSby uid/g 1in
3 /a>#2    ajax_2rin
3 /spa23ts +s
 div idu>mask
p8ai_rits div idu>rerprep8ai_ritsomment10"> *  Ma10r3ment16">23  J.2e_3 * 23  J.2e_3 * "rdue_m" n#L2a3 * flagsents)8#uL_WHO;NAME>jax_2ru1eL_WHO
 div3jax_pree2lassve#L7"i>
 
3 /a> 4"4_e{rt_i cl7"i>
spai class="commen5=n bec18 5i 2lass=23o jro58NCCESpai c irogro_  54erient315u>rerpree"2n=posix_com
 5iv in58iv i23ue /27t          = 4/a> spai claD7" =enf6rits 7ts8se2> 4" notaen43ady enfsded href="fs/n2jax_pree"2n=posix_com
 div i5=_ef 
3 /5;r37"i>
 
32* /sp8aion7,5n aja58pree2 n=fl2gs
 div idu>mask
e3 *  spai classvlassve#L7"i>
 
3 /a> 4"4_e{ /a">fl~3 /a> irorerpreenfsd128s
 div id2c spai c3aef="38 /i>
5a3e /a">f5mment1s3fss="orst case: 5f=L7"58n aj232of M3cpes idue /a">flagsi>
>5
" 27 jax5#2d 
3 /a> 2ree" n=siz="5div i58uEDod div id2c spai c3aef="38 /i>
54_Icomm_S5PPORTEDdue /a">NFS4_IACC5SSenf590ar123 *  267t *  Ma10r3ment16"rind_ue> * /sp14aionomment10"> *  Ma10r3ment16">23  J.27s3 * 23  J.2l_3 * "rdue_m" n#L23 *  *  Ma10r3ment16">23  J.2e_3 * <_arra  ajax_2ree" n=acl
 div3e_3 * <_arra of /an=>"rdue_m" n#L2a div idu>rerpreeof / /a">flagsents)8#uid_mm274"> *  Al14luid_mL_WHO
 div3jax_pree2ue> * /sp14aion
spai class="commen5>2s"_acd#57"  s4aree" n=ss="_acd
 5iv id593c#L11ss="lxrvoid   ajax_p /a> spai5>L11ss="l5
L7"                  aj5x_pre59uEDod4_Icommdsec18 moSby uid/g 1if
5>lfor       2   un23ssirorerpreeof /ax_2ree" n=acl
 div3 s="comment14"/#n> sp>9iv rnfsd/nf14s4ac143iv rnassv>
 
3 /a> us2 i13 23fss="orst case: ef=5
n bec18 5e/ /a> s
 
3 /a> spai cl5ee" n595d
3 _OBJ _ef n=fl2gsb" n=grorerpreeof /ax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2niv[iv rnfsd/nf14s4ac143iv rnassv>
 
3 /ef 
3 /a> spai clue> * /sp14aion spai classvue> * /sp14aion
spai class="commen5>erient315v idu>rerients1,rn ajaxr5L7"  59>2s="_acdiortegro
5>_ef 
3 /5#2CL_WRITEe2te_ue /siz="5div i59pree2 n=fl2gs          = 4/a> spai claNotafound href="fs/n2jax_pree"2n=posix_com
 div i5/3e /a">f5x_pree" n719(    if (n a5ax_pr59 of /a> 4",s"lxno> * /s or sa div idu>rerpreeof /ax_2ree" n=acl
 div3 s="comment14"/#n> spree" n=acl
 div3ass="lin23 nam285/" 27 jax5PPORTEDdue /a">NFS4_IACC5SSenf59mar123#L7"2  3 /a> irorerpreeof /ax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2niv[iv rnfsd/nf14s4ac143iv rnassv>
 
3 /ef 
3 /a> spai clue> * /sp14aion spai classvue> * /sp14aion
 
3 /a> spai E_6n=gro60uEDod4_Icommd#L7n=grorerpreeof /ax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2niv[iv rnfsd/nf14s4ac143iv rnassv>
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 f 
3 /a> spai cl3nfsd div idu>rerpreenfsd128ssesd/nf14s4ac143#L3 * 
 
3 /a> irorerpreeof /ax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2niv[iv rnfsd/nf14s4ac143iv rnassv>
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 f 
3 /a> spai cl4aree" n=ss="_ * /sp8aion *  Ma6rsort_i cl_range7"i>
36E2T0ee"1 6=L7"                  aj6eeeee60 n=_p *  Ma6rsort_i cl_range7"i>
36E3T0ee"1 6=_WHO;    if (n ajax_pre6ommen60#L[ 
3 /a> sp43#L7" u14mich148#L7" if
6sen <6;6ari67#L7"{>
 
3 /a> spa 6if (n60syrie32of M3cpes idue /a">flagsi>
>6  Al2a sp6i c3alass3"line" na sids6.c#b260>gropree" n=_posix_tojrorerients1,rn ajaxr6ee" n60>2s="3 *  26ts +s
 div idu>mask
p8ai_rits_arra  ajax_2ree" n=ap8ai_rits_arra omment10"> *  Ma10r3ment16">23  J.2e_3 * <_arra  ajax_2ree" n=acl
 div3e_3 * <_arra of /an=>"rdue_m" n#L2a div idu>rerpreeof / /a">flagsents)8#uL_WHO;NAME>jax_2ru1eL_WHO
 div3jax_pree2lassve#L7"i>
 
3 /a> 4"4_e{rt_i cl7"i>
spai class="commen6
7Al2a sp6i2CL_WRITEe2te_ue /siz="6spect60"i>
 1ss="lxrvoid   ajax_p /a> spai6s#2CL_WRI6Ee2te_ue /siz="fdi3 clas6="c3m608ar123#L7"2  sec18 moSby uid/g 1if
6E92CL_WRI6EPORTEDdue /a">NFS4_IACC6hr3 i60uEDod div id2c spai c3aef="38 /i>
6nats += 26 2&> /s3a 
3 30 idue 6a">re61uEDod4_Icommdiv idueiortegod4L_WH1lfor       2   un23ssirorerpreeof /ax_2ree" n=acl
 div3 s="comment14"/#n> sp>9iv rnfsd/nf14s4ac143iv rnassv>
 
3 /a> us2 i13 23fss="orst case: ef=6n1T0ee"1 6;r37"i>
 
32* /sp8aion7,6n 3lo616;ma++niortegromask
p8ai_rits div idu>rerprep8ai_ritsommen/a">f3 /a> irorerpreeof /ax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2niv[iv rnfsd/nf14s4ac143iv rnassv>
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13  /a">flagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6o2 /spa206eny, a4"#L7"i>
 
3 /a> 464_ef=61uEDoda++n=grogro<6164#L7">
6
3spai _ spai ="f6T"{>
"6di3 s61oand us2 i13 23fss="orst case: ef=6
3 /a> sp6i c cla
3 /">
" n=p unst6nfl.s6142s="3 *  26ts +s
 div idu>mask
enfsd_rits_arra  ajax_2ree" n=aenfsd_rits_arra omment10"> *  Ma10r3ment16">23  J.2e_3 * <_arra  ajax_2ree" n=acl
 div3e_3 * <_arra of /an=>"rdue_m" n#L2a div idu>rerpreeof / /a">flagsents)8#uL_WHO;NAME>jax_2ru1eL_WHO
 div3jax_pree2lassve#L7"i>
 
3 /a> 4"4_e{rt_i cl7"i>
spai class="commen6+= 2* 2F 6pai c3av id3e /a">flagse6t    61NCCESpai c irogro_  6d4_Icomm_6UPPORTEDdue /a">NFS4_IAC6ESSen61posix_to_ss=vbec18 moSby uid/g 1if
6d7Al2a sp67"  s4aree" n=ss="_acd
 6iv id61s="23mmen214"> *  Al14l right3 r i6d#2CL_WRI6=L7"                  aj6x_pre61 of /a> 4",s"iv idueiortegod4L_WH1lfor       2   un23ssirorerpreeof /ax_2ree" n=acl
 div3 s="comment14"/#n> sp>9iv rnfsd/nf14s4ac143iv rnassv>
 
3 /a> us2 i13 23fss="orst case: ef=6n92CL_WRI6L_WHO;    if (n ajax_pre6" Aam61mar123#L7"2  L7"i>
 
3 /a> irorerpreenfsd_ritsommen/a">f3 /a> irorerpreeof /ax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2niv[iv rnfsd/nf14s4ac143iv rnassv>
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13  /a">flagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6107 2ue_m6 n
32iv i31 2iv idue  2
6
3 /a62uEDoda++n=grogro<6 
3 /a>  6e/ /a> s
 
3 /a> spai cl6ee" n62 /a"> *  Ma6rsort_i cl_range7"i>
3612 /spa206ti2nmask
proax_p_o /_v4_lass="comment14"/#proax_p_o /_v4_lasomment10"> *  Ma10r3ment16">23  J.27s3 * 23  J.2l_3 * "rdue_m" n#L23 * 
36164#L7">
6  Al2pree" n=32 n
 32ist6ibutp62#L[ 
3 /a> spai c irooooooooooooooooot10"> *  Ma10r3ment16"rang_lass="comment14"/#rang_lasof /an=>"rdue_m" n#L2aass="comment14"/#lasof / us2 i13 23fss="orst case: ef=6(denyro 12nti2ngro_  61= 2* 2F 6x_pree" n719(    if (n a6ax_pr62NCCESSenfwouEu14mich148#L7" uL_WHO;NAME>jax_2ru1eL_WHO
 div3jax_pree2lassve#L7"i>
 
3 /a> 4"4_e{sesd/nf14s4ac143#Laass="comment14"/#lasof /ax_2ree" n=acl
 div33 ax_p_ 23    2  jax_loo  a ax_p_ 23 comm
 div id2c spai c3aef="38 /i>
6e4_Icomm_6ai c cla
3 /">
" n=pi cl6ssve/62posix_to_ss=vbec18 moSby uid/g 1if
6
3 /a> sp6i c cla
3 /">
" n=p spai6c4"/#62s="23mmen214"> *  Al14l right3 r i6idue /a326=lt3/_lts"
 div idue /a26l    62 of /a> 4",s"lxno> * /s or si *  *  J.15 Bruc3 Fiel3s &6192CL_WRI6UPPORTEDdue /a">NFS4_IAC6ESSen62uEDod div id2c spai c3aef="38 /i>
6ENT0ee"1 6=reri
i>
 
3 /a> spai E_6n=gro63dpcom
 div idswitch n=gro"rdue_m" n#L2aass="comment14"/#lasof /  spai c irogro_  62   un23s6=L7"                  aj6x_pre636;ma++niortegx_>asd/nf14s4ac143#L7"  ="f6e/#L[ 
3 /a> spai c iro="f6e/#Ls
 d: *  Ma6rsort_i cl_range7"i>
36ius Aamod6L_WHO;NAME> spai class="6ommen63e/#L[ 
3 /a> spai c ib" n=gro spai classvpai classACCESS_ALLOWEDclass6"> s="comment14"/#pai classACCESS_ALLOWEDclass6"> of / spai c irogro_  6264#L7">
6ari67#L7"{>
 
3 /a> spa 6if (n63#L[ 
3 /a> spai c iro irorerpreenfsd_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6CL_EX32nf6.33e on=ERR_PTR
 div i>
6
3 /a63 a4"#L7"i>
 
3 /aem /} el>aspai c irogro_  62= 2* 2F 6e/ /a> s
 
3 /a> spai cl6ee" n63"
 div id
3 /i_eflak@ irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6C4_Icomm_6BJp;rn:spa3 * /sp16a3on<6 href63>2s="_acdiortegrogro<6t4"> *2a16ion<132#L7"33" idbut we 6spect63ef="fs/nfsd/nf14s4ac1break
 div id2c spai c3aef="38 /i>
6Cdue /a326Ee2te_ue /siz="fdi3ac2el6pre3"63 of /a> 4",s"x_>asd/nf14s4ac143#L7"  ="f6[ 
3 /a> spai c iro="f6s
 d: *  Ma6rsort_i cl_range7"i>
36i92CL_WRI6na4"> *; pr2viou10aion
 
3 /a> iro iro * /sp14aionommen=>"rdue_m" n#L23 *  spai classvpai classACCESS_ALLOWEDclass6"> s="comment14"/#pai classACCESS_ALLOWEDclass6"> of / spai c irogro_  6">
 
11k
6div i31ue /34
 div idue 6a">m>646;ma++niortegro irorerpreenfsd_ritsommen/a">f3 /a> iro
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13  /a">flagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
64_Icomm_S6PPORTEDdue /a">NFS4_IACC6SSenf64e/#L[ 
3 /a> spai c i} el>aspai c irogro_  6 en <6;67"  s4aree" n=ss="_acd
 6iv id64#L[ 
3 /a> spai c iro irorerprep8ai_ritsommen/a">f3 /a> iro
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13  /a">flagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
64L_EX32nf6e{>
 
3ACL_WRITE
 div is6r/pre64 a4"#L7"i>
 
3 /aem /////////
 div3jax_pree2lassve#L7"i>
 
3 /a> 4"4_e{sesd/nf14s4ac143#L3 * 
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 f 
3 /a> spai cl4aree" n=ss="_ * /sp8aion *  Ma6rsort_i cl_range7"i>
36 nts(n aj6bfiel6ds@um69#L7">
 
3 /6>EVER64"
 div id
3 /i_eflak@ irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
634_Icomm_6e/ /a> s
 
3 /a> spai cl6ee" n64>2s="_acdiortegrogro<634"> *2a162/a> 12nti2n
63e /a">>
6na4"> *; pr2viou10aion 4",s"x_>asd/nf14s4ac143#L7"  ="f6ie/#L[ 
3 /a> spai c iro
36aus Aamod62viou10aion
 
3 /a> 47n=gre" n=gro spai classvpai classACCESS_ALLOWEDclass6"> s="comment14"/#pai classACCESS_ALLOWEDclass6"> of / spai c irogro_  6s="_acdiv6rnfsd/nf14s4ac143iv rnas6vesv 65dpcom
 div id
3 _efla irorerpreenfsd_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6a">2s="_a6diortegroaspai c irogro_  613aion spai c ispai c i3 /a> irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6aen <6;6#2    ajax_2ree" n=acl
 6iv3  65#L[ 
3 /a> spai c irospai c i3 /a> iro
 
3 /a> 4"4_e{sesd/nf14s4ac143#L3 * 
 
3 /aem /////////3 /a> irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6bn bec18 6oSexprighngNESS /15psrie6be lo65"
 div id
3 /i_eflak@////////3 /a> irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6b4_Icomm_6rn 3jaxi>
 
3 /a> aj19  6!u2 /65>2s="_acdiortegro iro
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6b4"> *2a16"35" idbut we espect.2o 6sen &65ef="fs/nfsd/nf14s4ac1////////3 /a> iro
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6be /a">>
6s="_acdengro
 
3 /a> spai c irogro<6e/#L[ 
3 6a> spai c irogr65#L7"i>
 
3 /a> 47n=grbreak
 div id2c spai c3aef="38 /i>
6 
3 /a> s6ai c irog6o+1]#66uEDod4_Icommdx_>asd/nf14s4ac143#L7"  ="f6i[ 
3 /a> spai c iro
36t;bfiel  6        ut we espect.2o 6sen &666;ma++niortegromask
1 iro * /sp14aionommen=>"rdue_m" n#L23 *  spai classvpai classACCESS_ALLOWEDclass6"> s="comment14"/#pai classACCESS_ALLOWEDclass6"> of / spai c irogro_  6nf3 /a> iro
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13  sd/nf14s4ac143#Llassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6L[ 
3 /a>6spai c iro
 
3 /aem /} el>aspai c irogro_  6 n bec18 6iv3loo  aja23pree264"> *6 Al2a66"
 div id
3 /i_eflak@////////3 /a> irorerprep8ai_ritsommen/a">f3 /a> iro
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13  sd/nf14s4ac143#Llassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6L4_Icomm_60aion2s="_acdiortegro iro
 
3 /a> 4"4_e{sesd/nf14s4ac143#L3 * 
 
3 /ef 
3 /a> spai cl>ax_ats += 2* 2"fsd/nax_ao13 f 
3 /a> spai cl4aree" n=ss="_ * /sp8aion *;6pr2viou10aion irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6e u2 /a">6a4"> *; pr2viou10aion
 
3 /a> spai c iro irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
63/sp1pa>
6na4"> *; pr2viou10aion
 
3 /a> 47n=gr////////3 /a> irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
62
 
3 /a>62spai 18TYPE_DEF3omment1623 * 67dpcom
 div id
3 _efla iro
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
62;bfiel  613paion
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
62on 6 3omm67e/#L[ 
3 /a> spai c i} div id2c spai c3aef="38 /i>
62 4",s"lx/n hass="en>
 6 r55o67#L[ 
3 /a> spai c irobreak
 div id2c spai c3aef="38 /i>
62[ 
3 /a>6ajax_pre3" n=E37r81#L7"}6
  si67id
3 _OBJ _efx_>asd/nf14s4ac143#L7"  OTHf6[ 
3 /a> spai c iroOTHf6s
 d: *  Ma6rsort_i cl_range7"i>
362n bec18 6u2 /a">2s="_acdiro spai classvpai classACCESS_ALLOWEDclass6"> s="comment14"/#pai classACCESS_ALLOWEDclass6"> of / spai c irogro_  62erient316#2    ajax_2ree" n=acl
 6iv3E
67>2s="_acdiortegro irorerpreenfsd_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
64_ef 
3 /6> spai classve> * /sp14a6onf3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6d3e /a">f6agsi>
 
3 /a> return;I8 6NTEdb67>
 
3 /a> spai c iro irorerpreenfsd_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6d/sp1pa>
6loo  ajax_pre3" n=E3R_PT6
 div67#L7"i>
 
3 /a> 47n=gr////////3 /a> irorerpreenfsd_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
647n4ents(6 ajax_pree" n719(n ajax_6ree" 68dpcom
 div id
3 _efla iro
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6=acl
 di26pree" n32" n
38
 div idu6 /a">686;ma++niortegro iro
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6#L11ss="l6rvoid   ajax_p /a> spai 6lassv68e/#L[ 
3 /a> spai c i} el>aspai c irogro_  6= spai 2lass="commen6163ed68#L[ 
3 /a> spai c iro irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6ajax_pree6 n719(n aj!f (n ajax_pre6"
 di68 a4"#L7"i>
 
3 /aem /////////3 /a> irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6=n bec18 6i 2lass=23o jro68"
 div id
3 /i_eflak@////////3 /a> irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
64erient316u>rerpree"2n=posix_com
 6iv in68>2s="_acdiortegro irorerprep8ai_ritsommen/a">f3 /a> iroflagsents)8#lassve#L7"i>
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6=_ef 
3 /6;r37"i>
 
32* /sp8aion7,6n aja68ef="fs/nfsd/nf14s4ac1////////3 /a> iro
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6=3e /a">f6mment1s3fss="orst case: 6f=L7"68>
 
3 /a> spai c iro iro
 
3 /a> 4"4_e{r
 div id2c spai c3aef="38 /i>
6
" 27 jax6#2d 
3 /a> 2ree" n=siz="6div i68#L7"i>
 
3 /a> 47n=gr} div id2c spai c3aef="38 /i>
64_Icomm_S6PPORTEDdue /a">NFS4_IACC6SSenf69dpcom
 div id} div id2c spai c3aef="38 /i>
64acl
 di267"  s4aree" n=ss="_acd
 6iv id693c#L1} div id2c spai c3aef="38 /i>
64L11ss="l6
L7"                  aj6x_pre69 n=_p *  Ma6rsort_i cl_range7"i>
36>23  ve#L7"i>
 
3 /anang_lal_nanv4_to >23  omment10"> *  Ma10r3ment16"rang_lart_i clment6"> *rang_larpcom
n=>"rdue_m" n#L2aart_i clment6"> *larpcom ht10"> *  Ma10r3ment16">23  J.2rt_i clment6"> * 23  J.2rpcom
nn=>"rdue_m" n#L2"sort_i clment6"> *  Ma6rso  *  Ma6rsort_i cl_range7"i>
36
jax_pree6id2c>ACL_EXE2nfl.int)i>
6
3 /a69 a4"#L7"i>
 
3 /aem /////////////t10"> *  Ma10r3ment16">23  J.2rt_i clment6"> * 23  J.2rpcom
nn=>"rdue_m" n#L2d"sort_i clment6"> *d  Ma6rso  unsigned67t *  Ma10r3ment16"r/#L7"i>
 
3 /a> spai c clL7"{ *  Ma6rsort_i cl_range7"i>
36
n bec18 6e/ /a> s
 
3 /a> spai cl6ee" n69NCCESpai c irogro_  6>erient316v idu>rerients1,rn ajaxr6L7"  69>2s="_acdiortt10"> *  Ma10r3ment16">23  J.27s3 * 23  J.2l_3 * 
6>_ef 
3 /6#2CL_WRITEe2te_ue /siz="6div i69pree2 n=fl2gst10"> *  Ma10r3ment16"rang_lass="comment14"/#rang_lasof /an=>"rdue_m" n#L2aass="comment14"/#lasof /
 div id2c spai c3aef="38 /i>
6>3e /a">f6x_pree" n719(    if (n a6ax_pr698ar123#L7"2  sec18 moSby uid/g 1remm274"> *  Al14lremof /
 div id2c spai c3aef="38 /i>
6>" 27 jax6PPORTEDdue /a">NFS4_IACC6SSenf69uEDod div id2c spai c3aef="38 /i>
7ENT0ee"1 7=reri
i>
 
3 /a> spai E_7n=gro70uEDod4_Icommd#L7n=gro *  Al14lremof /sesd/nf14s4ac143#Linits3 * f3 /a> iro *larpcomax_2ree" n=acl
 div3 3 /sp16a3 div24ts +n 2* 2nivr
 div id2c spai c3aef="38 /i>
7E1T0ee"1 7="  s4aree" n=ss="_acd
 7assve70
2na#L7"i>
 
b" n=gro *  Al14lremof /{ *  Ma6rsort_i cl_range7"i>
37E2T0ee"1 7=L7"                  aj7eeeee70e/#L[ 
3 /a> spai c i43#L7" u14mich148#L7" remm274"> *  Al14lremof /
 div id2c spai c3aef="38 /i>
7E3T0ee"1 7=_WHO;    if (n ajax_pre7ommen70#L[ 
3 /a> sp#L7n=gro *  Al14lremof /sesd/nf14s4ac143#Linits3 * f3 /a> iro *larpcomax_2ree" n=acl
 div3 3 /sp16a3 div24ts +n 2* 2nivr
 div id2c spai c3aef="38 /i>
7E4T0ee"1 7=d2c>ACL_EXE2nfl.int)i>
7if (n7042na#L7"i>
 
b" n=gro *  Al14lremof /{ *  Ma6rsort_i cl_range7"i>
37E5T0ee"1 7=/ /a> s
 
3 /a> spai cl7.c#b270"
 div id
3 /i_eflak@gotoa  Ma10r3ment16"3ut_l3 * rerients1,rn ajaxr7ee" n70spai 2lass=23o++n=gro *  Al14lremof /ses-o++n=gro *  Al14lEINVALof /
 div id2c spai c3aef="38 /i>
7E7T0ee"1 7=2CL_WRITEe2te_ue /siz="7spect70pree2 n=fl2gsiv idueiortegod4L_WHaass="comment14"/#lasof /sesd/nf14s4ac143#Laart_i clment6"> *larpcomax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2nivn23ssiro *larpcomax_2ree" n=acl
 div33 /sp16a3 div24ts + 2* 2niv +sd/nf14s4ac143#Laart_i clment6"> *larpcomax_2ree" n=acl
 div3 3 /sp16a3 div24ts +n 2* 2nivn23ssirogro_  7s#2CL_WRI7Ee2te_ue /siz="fdi3 clas7="c3m70>
 
3 /a> spai c iro spai classvpai classACCESS_ALLOWEDclass6"> s="comment14"/#pai classACCESS_ALLOWEDclass6"> of / /a">f/a">fai c irogro_  7s92CL_WRI7EPORTEDdue /a">NFS4_IACC7hr3 i70#L7"i>
 
3 /a> 47n=gr////=gro spai classvpai classACCESS_DENIEDclass6"> s="comment14"/#pai classACCESS_DENIEDclass6"> of /{ *  Ma6rsort_i cl_range7"i>
37nats += 27 2&> /s3a 
3 30 idue 7a">re71dpcom
 div id
3 _efla
 
32* /sp8aion7,7n 3lo716;ma++niortegro
 
3 /a> spai c of / /a">fl~3 /a> iro
37n2T0ee"1 7eny, a4"#L7"i>
 
3 /a> 474_ef=71e/#L[ 
3 /a> spai c ispai c igotoa  Ma10r3ment16"3ut_d3 * 
"7di3 s71#L[ 
3 /a> spai c irob" nn=gro
 
3 /a> spai c of / /a">fl3 /a> irogro_  7
3 /a> sp7i c cla
3 /">
" n=p unst7nfl.s71 a4"#L7"i>
 
3 /aem /////////3 /a> irof3 /a> iroflagse7t    71"
 div id
3 /i_eflak@////////continue
 div id2c spai c3aef="38 /i>
7+6T0ee"1 7UPPORTEDdue /a">NFS4_IAC7ESSen71>2s="_acdiortegrogro<7d7Al2a sp77"  s4aree" n=ss="_acd
 7iv id71ef="fs/nfsd/nf14s4ac1b" n!n=gro
 
3 /a> spai c clL7" /a">fl3 /a> iro spai cpai c iroDI6of /r{ *  Ma6rsort_i cl_range7"i>
37n#2CL_WRI7=L7"                  aj7x_pre71>
 
3 /a> spai c iro
7n92CL_WRI7L_WHO;    if (n ajax_pre7" Aam71mar123#L7"2  L7"i>
 
3         = 4/a> spai clf="fs/n2jax_pree"2n=posix_com
 div i7107 2ue_m7 n
32iv i31 2iv idue  2
7
3 /a72uEDod3         = 4/a> spai ai c iro s
 
3 /a> spai cl7ee" n72 /a">3         = 4/a> spai ai c iro spai ai c iro spai ai c iro 12nti2n
 
3 /aem /3 /a> irof3 /a> irogropree" n=_posix_tojro
" n=pi cl7ssve/72>2s="_acdiortegro
 
3 /a> spai c of / /a">fl3 /a> iro
37
3 /a> sp7i c cla
3 /">
" n=p spai7c4"/#72ef="fs/nfsd/nf14s4ac1////////3 /a> irof3 /a> iro 4",s"a++n=grogro<7192CL_WRI7UPPORTEDdue /a">NFS4_IAC7ESSen72mar123#L7"2  n=>"rdue_m" n#L2"sort_i clment6"> *  Ma6rsosesd/nf14s4ac143#L>23  J3 * <_toJ.2rt_i clment6"> * 23  J3 * <_toJ.2rommen/a">f3 /a> iro
 
3 /a> spai c clL7"{
 div id2c spai c3aef="38 /i>
7ENT0ee"1 7=reri
i>
 
3 /a> spai E_7n=gro73dpcom
 div idb" n=gro spai cIS_ER6ommenn=>"rdue_m" n#L2"sort_i clment6"> *  Ma6rso  spai c irogro_  72   un23s7=L7"                  aj7x_pre736;ma++niortegromask
remm274"> *  Al14lremof /sesd/nf14s4ac143#LPTR_ER6[ 
3 /a> spai cPTR_ER6ommenn=>"rdue_m" n#L2"sort_i clment6"> *  Ma6rso 
 div id2c spai c3aef="38 /i>
7E2T0ee"1 7L_WHO;NAME> spai class="7ommen73e/#L[ 
3 /a> spai c in=>"rdue_m" n#L2"sort_i clment6"> *  Ma6rsosesd/nf14s4ac143#L=UL43#Laart_i clmen=UL4i>
71= 2* 2F 7x_pree" nas6vesv u  6264#L7">
6ari67#L7"{>7 
3 /7> spa 6if (n63#L[ 
3 / irogro_  613aiongro<7192CL_WF 6e/ /a>7s
 
3 /a> spai cl6ee" n67"
 di7 id
3 /i_eflake_m" n#L2d"sort_i clment6"> *d  Ma6rso  unsig14s4ac143#L>23  J3 * <_toJ.2rt_i clment6"> * 23  J3 * <_toJ.2rommen/a">f3 /a> irogro<7192CL_WF_7ai c clspa3 * /sp16a3on<6 href67>2s="7acdiortegro
 
3 /a> spai c clL7" /a">fl3|iro spai cpai c iroDI6of //{ *_DEFAULTdiv id2c spai c3aef="38 /i>
7E2T0ee"1p7i c cla#L7"33" idbut we 6spect67ef="f7/nfsd/nf14s4aco spai cIS_ER6ommenn=>"rdue_m" n#L2"sort_ii clment6"> *d  Ma6rso  unsigc irogro_  72   un2327=lt3/_le /siz="fdi3ac2el6pre3"67 of /73a> spai c iromask
remm274"> *  Al14lremof /sesd/nf14s4ac143#LPTR_ER6[ 
3 /a> spai cPTR_ER6ommenn=>"rdue_m" n#L2"sort_ii clment6"> *d  Ma6rso  unsigcd2c spai c3aef="38 /i>
7E2T0ee"1I7UPPORTE; pr2viou10aion
 
3 /a> ie_m" n#L2d"sort_i clment6"> *d  Ma6rso  unsig14s4ac143#L>23  J3aart_i clmen=UL4i>
71= 2* 2F 7x_pree" nas6vesv u  6264#L7"s(6 ajax_7ree" n719(    if 6n aja67dpcom7 div id
3 _eflae" n=gr3ment16">23  J.27s3 * 23  J.2l_3 * "rdue_m" n#L2"sort_i clment6"> *  Ma6rso 
 div id2c spai c3aef="38 /i>
7E2T0ee"k
6div i37ue /34
 div idue 6a">m>676;ma+7niortegro *  Ma6rsosesd/nf14s4ac143#L=UL43#Laart_i clmen=UL4i>
71= 2* 2F 7x_pree" nas6vesv u  6264#L7"_S6PPORTE7due /a">NFS4_IACC6SSenf67e/#L[7
3 /a> spai c i} el>asMa10r3ment16"3ut_d3 *  spai c irogro<7192CL_Wnf6e{>
 
7ACL_WRITE
 div is6r/pre67 a4"#77"i>
 
3 /aem 3ment16"3ut_d3 sort_ clment6"> *  Ma6rssort_ clm>"rdue_m" n#L2"sort_i clment6"> *  Ma6rso 
 div id2c spai c3aef="38 /i>
7E2T0ee"k 6e/ /a>7s@um69#L7">
 
3 /6>EVER67"
 di7 id
3 /i_eflak3ment16"3ut_d3 sort_ clment6"> *  Ma6rssort_ clm>"rdue_m" n#L2"sort_ii clment6"> *d  Ma6rso  unsigcd2c spai c3aef="38 /i>
7E2T0ee"m_6e/ /a>7s
 
3 /a> spai cl6ee" n67>2s="74ass=23o++n=gro *  Al14lremof /ses-o++n=g> *  J.15 Bruc3 Fiel3s &6192CL_7a162/a> 17nti2n
362n bec7>
6na4"> 7; pr2viou10aion * /s or si * f3 /a> iro
362n bec7iv6rnfsd/7f14s4ac143iv rnas6vesv 67dpcom75Icommd#L7n=grof3 /a> iro *  Al14lremof /
 div id2c spai c3aef="38 /i>
7E3T0ee"a 6ref="f7/nf /a> spai ="f66he 1667e/#L[75+n=grogro<6164#L776;6#2    7jax_2ree" n=acl
 6iv3  67#L[ 
752 i13 23fss="orst case: ef=6
3 /a>7nf6*  ajL7just do a bubble 6ort; 67 a4"#75*  26ts +s
 short 23fss="orst case: ef=6
3 /a>7n 6e/ /a>7ghngNESS /15psrie6be lo67"
 di7 id
3 4ac143#Laass="comm"comment14"/#las2typsommen=>"rdue  Ma10r3ment16"rang_lass="comment14"/#rang_lasof /an=>"rdue_m" n#L2aass="comment14"/#lasof / us2 i13 23fss="orst case: ef=6(denyr7m_6rn 3ja7i>
 
3 /a> aj19  6!u2 /67>2s="7acdiorrogro_  72   un2a16"35" i7but we espect.2o 6sen &67ef="f7/nfsd/nf14s4acn=growhocomment14"/#las2typwhocomm3 0 sprogro_  72   un2a
6na4"> 7engro
 
37/a> spai c iro spai cpai c iroDI6of /WHO_NAMEDiv i6rsort_i cl_range7"i>
362n bec7iI7UPPORTE c irogr67#L7"i7
 
3 /a> 47n=grbreak
 gro
 
3 /a> spai c of / /a">fl3 /a> iro spai c irofl3?rsort_i cl_range7"i>
362n bec7 s6ai c i7og6o+1]#67uEDod76div id
3 _efla spai c iro spai c iro="f6s
 d: *  Macd2c spai c3aef="38 /i>
7E2T0ee"  6      7 ut we espect.2o 6sen &676;ma+7niortegro spai c iro="froDI6of /WHO_OWN/aiv i6rsort_i cl_range7"i>
362n bec7re6="fs/n7sd/nf14s4ac143#L76  ="f67e/#L[7
3 /a> spai c ib" n=grgro spai c iro="f6e/#Ls
 d: *  Mad2c spai c3aef="38 /i>
7E2T0ee" ;6#2    7/nf14s4ac143#L7" 6="f6i67#L[ 
7 /a> spai c iro spai c iro
362n bec7rf6*  ajL7iro
 
3 /aem /} el>asgro spai c iro7 aja23pree264"> *6 Al2a67"
 di7 id
3 /i_eflak@///////nf14s4ac143#L7"  OTHroDI6of /WHO_EVERYONment14"/#pai classINHER /WHO_EVERYONmiv i6rsort_i cl_range7"i>
362n bec7r_6rn 3ja7 hr3 * /sp1623on<626ts 67>2s="7acdiortegro iu14mich148#L7" remm2746e/#
3 /a> spai c iroOTHf6s
 d: *  Mad2c spai c3aef="38 /i>
7E2T0ee" 16"35" i710aiongro<6164#L77">6a4"> *7 pr2viou10aion
 
376 4",s"lxno> * /s or si *  spai c iroOTHBUG"rduecd2c spai c3aef="38 /i>
7E2T0ee" I7UPPORTE; pr2viou10aion 47n=gu14mich-1d2c spai c3aef="38 /i>
7E2T0ee"a>62spai 78TYPE_DEF3omment1623 * 67dpcom77+n=grogro<6 
3 /a7  613paio7
3612 /sp7re6spai c7ass="comment13"> 6 3omm67e/#L[7
3 /a> /s or si * 23  Macd2c spai c3aef="38 /i>
7E2T0ee"f=6a> 4",7"lx/n hass="en>
 6 r55o67#L[ 
7 /a> s /s or si * 
 
3 /anang_lal_nanv4_to >23  omment10"> cd2c spai c3aef="38 /i>
7E2T0ee"ff6*  ajL7e3" n=E37r81#L7"}6
  si67id
3 7OBJ _e2c spai c3aef="38 /i>
7E2T0ee"f 6e/ /a>72s="_acdiro *rang_larpcom
n=>"rdue2c spai c3aef="38 /i>
7E2T0ee"f_6rn 3ja7jax_2ree" n=acl
 6iv3E
67>2s="7acdior3ment16"rang_lass="comlmnew>
 
3 /anang_lal_nanv4_toew"rdueoSby uid/g 1nang_lal>
 
3 /anang_lal2 i13 23fss="orst case: ef=6(denyr7 /6> spai7classve> * /sp14a6on *rang_larpcom
n=>"rdue_m" n#L2aart_i clment6"> *larpcom ht10">d2c spai c3aef="38 /i>
7E2T0ee"fI7UPPORTEax_pre3" n=E3R_PT6
 div67#L7"i77iv id2c spai c3aef="38 /i>
7ENT0ee"s(6 ajax_7ree" n719(n ajax_6ree" 67dpcom78Icommd#L7n=gro *larpcom ht10">14s4ac143#L=UL43#Lkmits_cent6"> *larpcomkmits_c"rdue izeofue_m" n#L2"sort_iclment6"> *larpcom ht10">)14s4ac143#Laart_i l>
 
3 /anang_lal2 i1* izeofu  Ma10r3ment16"rang_lass="comment14"/#rang_lasof /an=>"rd)4s4ac143#Lr/#L7"iGFP_KERNE *  Al14lEINVALoGFP_KERNE 0"> cd2c spai c3aef="38 /i>
7E2T0ee"i26pree" 732" n
38
 div idu6 /a">676;ma+78"i>
 
b" n=gro *larpcom ht10">144s4ac143#L=UL43#Laart_i clmen=UL4i>
71= 2* 23 23fss="orst case: ef=6(denyr7"l6rvoid 7 ajax_p /a> spai 6lassv67e/#L[7
3 /a> spai c i} el>asu14mich148#L7" remm274aart_i clmen=UL4i>
71= 2* 2F 7x_pree" nas6vesv u  6264#L7"f=6#L/a> 7pai 2lass="commen6163ed67#L[ 
78/a> sp#L7n=gro *larpcom ht10">" n=acl
 div3 3 /sp16a3 div24ts +n 2* 2nivn23ssirn=g> *  J.15 Bruc3 Fiel3s &6192CL_7ee6 n719(7 aj!f (n ajax_pre6"
 di67 a4"#77"i>
 
3 /aem u14mich148#L7" remm274clment6"> *larpcom ht10">d2c spai c3aef="38 /i>
7E2T0ee"8 6i 2las7=23o jro67"
 di7 id
3 ogro<6 
3 /a7316u>rerp7ee"2n=posix_com
 6iv in67>2s="7acdiorgro<6 
3 /a73/6> spai7
 
32* /sp8aion7,6n aja67ef="f7/nfsd/ts +s
 s Ma10rrogro_  72   un2>f6mment173fss="orst case: 6f=L7"67>
 
37/a> spai c irocharue_m" n#L2aart_i s Min3 /a> spai c of s Min310">d2c spai c3aef="38 /i>
7E2T0ee"8I7UPPORTE/a> 2ree" n=siz="6div i67#L7"i7
 
3 /a> 47n=goSbyak3ment16"3ut_d3 s Min3lel>
 
3 /anang_las Min3lel10">d2c spai c3aef="38 /i>
7E2T0ee"_S6PPORTE7due /a">NFS4_IACC6SSenf67dpcom7 div id} div ioSby uid/g 1nang_lacomment14"/#typsomme !3 /a>d2c spai c3aef="38 /i>
7E2T0ee"_26pree" 7ree" n=ss="_acd
 6iv id673c#L17 div idk3ment16"3ut_d3 s2t_ma> spai 2lass=2cos2t_ma>iv i[]n=grogro_  72   un2"l6
L7"  7               aj6x_pre67 n=_p793 /a> spai c rogro_  72   un2"=6#L/a> 7   if (n ajax_pre6" Aam67oand 79/a> spai c iro spai cl4aree" s Min3 /a> spai c of s Min310">
 di=    = 4/a> spas Min3 >"OWN/a@"2jax_pr4gro<7192CL_Wee6id2c>A7L_EXE2nfl.int)i>
6
3 /a67 a4"#77"i>
 
3 /aem ////////> spai cl4aree" s Min3lel>
 
3 /anang_las Min3lel10">i=  izeofu   = 4/a> spas Min3 >"OWN/a@"2jax_pr) - 14gro<7192CL_We 6i 2las7s
 
3 /a> spai cl6ee" n67NCCES79id
3 /i_eflak@///////> spai cl4aree" comment14"/#typsomme !3 /a>  
 di=  ac143#L7"  OTHroDI6of /WHO_OWN/a> spai c iro="froDI6of /WHO_OWN/aiv i4gro<7192CL_We16u>rerp7erients1,rn ajaxr6L7"  67>2s="7acdiortt10"> *}4gro<7192CL_We/6> spai7ITEe2te_ue /siz="6div i67pree27n=fl2gst10"> *rogro_  72   un2"f6mment17 n719(    if (n a6ax_pr678ar1279a> spai c iro spai cl4aree" s Min3 /a> spai c of s Min310">
 di=    = 4/a> spas Min3 >"v idu@"2jax_pr4gro<7192CL_WeI7UPPORTEdue /a">NFS4_IACC6SSenf67uEDod79 
3 /a> 47n=grbreak
 > spai cl4aree" s Min3lel>
 
3 /anang_las Min3lel10">i=  izeofu   = 4/a> spas Min3 >"v idu@"2jax_pr) - 14gro<7192CL_81 7=reri
8>
 
3 /a> spai E_7n=gro78uEDod80div id
3 _efla spai cl4aree" comment14"/#typsomme !3 /a>  
 di=  ac143#L7"  OTHroDI6of /WHO_
3 /a> spai c irogro<7192CL_8117=reri
8>ee" n=ss="_acd
 6iv id68
2na#87"i>
 
b" n=gr}4gro<7192CL_81 7=L7"  8               aj7eeeee78e/#L[803 /a> spai c rogro_  72   un81 7=_WHO;8   if (n ajax_pre7ommen78#L[ 
80/a> spai c iro spai cl4aree" s Min3 /a> spai c of s Min310">
 di=    = 4/a> spas Min3 >"EVERYONm@"2jax_pr4gro<7192CL_81 7=d2c>A8L_EXE2nfl.int)i>
7if (n7842na#80"i>
 
3 /aem ////////> spai cl4aree" s Min3lel>
 
3 /anang_las Min3lel10">i=  izeofu   = 4/a> spas Min3 >"EVERYONm@"2jax_pr) - 14gro<7192CL_8157=d2c>A8L
 
3 /a> spai cl6ee" n68"
 di8 id
3 /i_eflak@gotoa  > spai cl4aree" comment14"/#typsomme !3 /a>  
 di=  ac143#L7"  OTHroDI6of /WHO_EVERYONment14"/#pai classINHER /WHO_EVERYONmiv i4gro<7192CL_8167=d2c>A8Lrients1,rn ajaxr6L7"  68spai 80cdiortt10"> *}4gro<7192CL_81 7=2CL_W8ITEe2te_ue /siz="7spect78pree28n=fl2g}d2c spai c3aef="38 /i>
7E2T0ee8RI7Ee2te_8e /siz="fdi3 clas7="c3m78>
 
38/a> sp2c spai c3aef="38 /i>
7E2T0ee8R97Ee2te_8eue /a">NFS4_IACC6SSenf68#L7"i8
 
3 /oSb2c spai c3aef="38 /i>
7E2T0ee8 27 2&>8 /s3a 
3 30 idue 7a">re78dpcom8 div i3ment16"rang_lass="comlmget_whocomment14"/#las2typss="comlmget_whocomm"rduecharue_m" n#L2aart_i > spai 2lass=2coa">flagsents)8#lassve#uAME> spai css=2cou
3 /a> sents)8#lassve#lel>
 
3 /anang_lalel10">3 23fss="orst case: ef=6(denyr81 7;r37"i8
 
32* /sp8aion7,7n 3lo786;ma+8niorterogro_  72   un81 7eny, a8"#L7"i>
 
3 /a> 474_ef=78e/#L[8
3 /a> spai c oSby uid/g 1nang_la rnassv>
 
3 /ef 
3 /d2c spai c3aef="38 /i>
7E2T0ee81 7
3spai8_ spai ="f6T"{>
"7di3 s78#L[ 
812 i13 23fss="orst case: ef=6
3 /a>8sp7i c cl8
3 /">
" n=p unst7nfl.s78 a4"#87"i>
 
3 /aem iortegod4L_WHaass="c   ajax_2ree" 
3 3 /a> i0 irosiro spai 2lass=2cos2t_ma>iv i) irogro_  7s#2CL_8F 7pai c38v id3e /a">flagse7t    78"
 di8 id
3 /i_eflak@///////o spai 2lass=2cos2t_ma>iv i[ro spai cl>ax_atss Min3lel>
 
3 /anang_las Min3lel10">i==  ac143#L7"  OTHlel>
 
3 /anang_lalel10">a">fai c irogro_  7s92CL_81 7UPPORT8Ddue /a">NFS4_IAC7ESSen78>2s="8acdiortegro spai 2lass=2comemcm>"rdue3ment16"rang_las2t_ma> spai 2lass=2cos2t_ma>iv i[ro spai cl>ax_atss Min3 /a> spai c of s Min310">agsents)8#lassve#> spai 2lass=2coa">flagsents)8#lassve#lel>
 
3 /anang_lalel10">33 23fss="orst case: ef=6(denyr81 7=2CL_W8ree" n=ss="_acd
 7iv id78ef="f8/nfsd/nf14s4ac1b" n!n=========u14mich148#L7" remm274s2t_ma> spai 2lass=2cos2t_ma>iv i[ro spai cl>ax_atscomment14"/#typsomme !3 /a>d2c spai c3aef="38 /i>
7E2T0ee8RI7=L7"  8               aj7x_pre78>
 
381 4",s"a++n=grogro<7192CL_8RI7L_WHO;8   if (n ajax_pre7" Aam78mar1281 
3 /a> 47n=gu14mich ac143#L7"  OTHroDI6of /WHO_NAMED> spai cpai c iroDI6of /WHO_NAMEDiv id2c spai c3aef="38 /i>
7E2T0ee8_m7 n
32i8 i31 2iv idue  2
7
3 /a78uEDod82+n=grogro<6 
3 /a81 7e/ /a>8s
 
3 /a> spai cl7ee" n78 /a">82  Ma6rsort_i cl_range7"i>
3612 /sp81 7ti2n s /s or si *  spai 2lass=2coa">fl3 23fss="orst case: ef=6(denyr8 82nti2n
 rogro_  7s#2CL_8F 7x_pree8 n719(    if (n a7ax_pr78>grop82id
3 /i_eflakoSby uid/g 1nang_la rnassv>
 
3 /ef 
3 /d2c spai c3aef="38 /i>
7E2T0ee8m_7ai c c8a
3 /">
" n=pi cl7ssve/78>2s="82cdiorgro<6 
3 /a8sp7i c cl8
3 /">
" n=p spai7c4"/#78ef="f82=fl2gsiv idueiortegod4L_WHaass="c   ajax_2ree" 
3 3 /a> i0 irosiro spai 2lass=2cos2t_ma>iv i) irogro_  7s#2CL_8327=lt3/_8ts"
 div idue /a27l    78 of /82a> spai c iro spai cl>ax_atscomment14"/#typsomme !3 /a>i==  ac143#L7"  OTHomment14"/#who4_e{r
 div iirogro_  7s#2CL_83I7L_WHO;8Ddue /a">NFS4_IAC7ESSen78mar1282 
3 /a> 47n=gr////////3 /a> iro spai 2lass=2coa">flagsents)8#lassve#s2t_ma> spai 2lass=2cos2t_ma>iv i[ro spai cl>ax_atss Min3 /a> spai c of s Min310">agsents)8#lassve#s2t_ma> spai 2lass=2cos2t_ma>iv i[ro spai cl>ax_atss Min3lel>
 
3 /anang_las Min3lel10">cd2c spai c3aef="38 /i>
7E2T0ee81 7=reri
8>
 
3 /a> spai E_7n=gro78dpcom83div id
3 _efla spai 2lass=2cos2t_ma>iv i[ro spai cl>ax_atss Min3lel>
 
3 /anang_las Min3lel10">d2c spai c3aef="38 /i>
7E2T0ee83s7=L7"  8               aj7x_pre786;ma+8niortegrogro<6 
3 /a81 7L_WHO;8AME> spai class="7ommen78e/#L[8
3 /a> spai c ogro<6 
3 /a81 7  Al2p87"{>7 
3 /7> spa 6if (n68#L[ 
83/a> sp#L7n=gro spai c iroOTHBUG"rduecd2c spai c3aef="38 /i>
7E2T0ee8ion
 
3 /aem u14mich-1d2c spai c3aef="38 /i>
7E2T0ee8F 6e/ /a>8s
 
3 /a> spai cl6ee" n68"
 di83id
3 ogro<6 
3 /a8F_7ai c c8spa3 * /sp16a3on<6 href68>2s="83cdiorgro<6 
3 /a81p7i c cl8#L7"33" idbut we 6spect68ef="f83nfsd/3ment16"3ut_d3 EXFLAG_SYMBO *  Al14lEINVALofXFLAG_SYMBO "rdue3ment16"rang_lass="comlmnew>
 
3 /anang_lal_nanv4_toew"rducd2c spai c3aef="38 /i>
7E2T0ee8i27=lt3/_8e /siz="fdi3ac2el6pre3"68 of /83a> sp3ment16"3ut_d3 EXFLAG_SYMBO *  Al14lEINVALofXFLAG_SYMBO "rdue3ment16"rang_lass="comlmget_whocomment14"/#las2typss="comlmget_whocomm"rducd2c spai c3aef="38 /i>
7E2T0ee8iI7L_WHO;8; pr2viou10aion


T=. riginal LXR software byo =. c spai c3http://sourceiorge.net/projects/lxr">LXR i aiunity10">agthis experii c al version byoc spai c3mailto:lxr@ ux.nolalxr@ ux.no10">.S4_IACC6 E_7n= aj7x_pre736;ma++niortegro 3 /aem u14micly hostedx.no10">.S4_I aiunitwww.redpill-3 /riix_preRedpill L /rii ASc3mailriividerpreeL /ae7UPPsultv i7and o at u. Trvice. ince 1995. LXR softw/body d/htmlnal