01 Nov, 2011

1 commit


05 Jan, 2011

1 commit


30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

16 Dec, 2009

1 commit


15 Dec, 2009

1 commit

  • Now that the headers are fixed and carry their own wait, all fs/nfsd/
    source files can include a minimal set of headers. and still compile just
    fine.

    This patch should improve the compilation speed of the nfsd module.

    Signed-off-by: Boaz Harrosh
    Signed-off-by: J. Bruce Fields

    Boaz Harrosh
     

28 Oct, 2009

1 commit

  • We have been doing some extensive testing of Linux support for ACLs on
    NFDS v4. We have noticed that the server rejects ACLs where the groups
    are out of order, for example, the following ACL is rejected:

    A::OWNER@:rwaxtTcCy
    A::user101@domain:rwaxtcy
    A::GROUP@:rwaxtcy
    A:g:group102@domain:rwaxtcy
    A:g:group101@domain:rwaxtcy
    A::EVERYONE@:rwaxtcy

    Examining the server code, I found that after converting an NFS v4 ACL
    to POSIX, sort_pacl is called to sort the user ACEs and group ACEs.
    Unfortunately, a minor bug causes the group sort to be skipped.

    Signed-off-by: Frank Filz
    Signed-off-by: J. Bruce Fields

    Frank Filz
     

28 Aug, 2009

1 commit

  • RFC 3530 says "ACE4_IDENTIFIER_GROUP flag MUST be ignored on entries
    with these special identifiers. When encoding entries with these
    special identifiers, the ACE4_IDENTIFIER_GROUP flag SHOULD be set to
    zero." It really shouldn't matter either way, but the point is that
    this flag is used to distinguish named users from named groups (since
    unix allows a group to have the same name as a user), so it doesn't
    really make sense to use it on a special identifier such as this.)

    Signed-off-by: J. Bruce Fields

    Frank Filz
     

25 Aug, 2009

1 commit

  • The group deny entries end up denying tcy even though tcy was just
    allowed by the allow entry. This appears to be due to:
    ace->access_mask = mask_from_posix(deny, flags);
    instead of:
    ace->access_mask = deny_mask_from_posix(deny, flags);

    Denying a previously allowed bit has no effect, so this shouldn't affect
    behavior, but it's ugly.

    Signed-off-by: Frank Filz
    Signed-off-by: J. Bruce Fields

    Frank Filz
     

02 Sep, 2008

1 commit


18 Jul, 2007

2 commits

  • nfs4_acl_nfsv4_to_posix() returns an error and returns any posix acls
    calculated in two caller-provided pointers. It was setting these pointers to
    -errno in some error cases, resulting in nfsd4_set_nfs4_acl() calling
    posix_acl_release() with a -errno as an argument.

    Fix both the caller and the callee, by modifying nfsd4_set_nfs4_acl() to
    stop relying on the passed-in-pointers being left as NULL in the error
    case, and by modifying nfs4_acl_nfsv4_to_posix() to stop returning
    garbage in those pointers.

    Thanks to Alex Soule for reporting the bug.

    Signed-off-by: "J. Bruce Fields"
    Cc: Alexander Soule
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J. Bruce Fields
     
  • Silence a compiler warning in the ACL code, and add a comment making clear the
    initialization serves no other purpose.

    Signed-off-by: "J. Bruce Fields"
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J. Bruce Fields
     

10 May, 2007

1 commit


28 Mar, 2007

1 commit


17 Feb, 2007

6 commits

  • When setting an ACL that lacks inheritable ACEs on a directory, we should set
    a default ACL of zero length, not a default ACL with all bits denied.

    Signed-off-by: "J. Bruce Fields"
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J. Bruce Fields
     
  • We're inserting deny's between some ACEs in order to enforce posix draft acl
    semantics which prevent permissions from accumulating across entries in an
    acl.

    That's fine, but we're doing that by inserting a deny after *every* allow,
    which is overkill. We shouldn't be adding them in places where they actually
    make no difference.

    Also replaced some helper functions for creating acl entries; I prefer just
    assigning directly to the struct fields--it takes a few more lines, but the
    field names provide some documentation that I think makes the result easier
    understand.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J. Bruce Fields
     
  • Return just the effective permissions, and forget about the mask. It isn't
    worth the complexity.

    WARNING: This breaks backwards compatibility with overly-picky nfsv4->posix
    acl translation, as may has been included in some patched versions of libacl.
    To our knowledge no such version was every distributed by anyone outside citi.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J. Bruce Fields
     
  • Simplify the memory management and code a bit by representing acls with an
    array instead of a linked list.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J. Bruce Fields
     
  • The code that splits an incoming nfsv4 ACL into inheritable and effective
    parts can be combined with the the code that translates each to a posix acl,
    resulting in simpler code that requires one less pass through the ACL.

    Signed-off-by: "J. Bruce Fields"
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J. Bruce Fields
     
  • The rfc allows us to be more permissive about the ACL inheritance bits we
    accept:

    "If the server supports a single "inherit ACE" flag that applies to
    both files and directories, the server may reject the request
    (i.e., requiring the client to set both the file and directory
    inheritance flags). The server may also accept the request and
    silently turn on the ACE4_DIRECTORY_INHERIT_ACE flag."

    Let's take the latter option--the ACL is a complex attribute that could be
    rejected for a wide variety of reasons, and the protocol gives us little
    ability to explain the reason for the rejection, so erroring out is a
    user-unfriendly last resort.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J. Bruce Fields
     

04 Oct, 2006

4 commits

  • It is legal to have zero-length NFSv4 acls; they just deny everything.

    Also, nfs4_acl_nfsv4_to_posix will always return with pacl and dpacl set on
    success, so the caller doesn't need to check this.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J.Bruce Fields
     
  • There's no need to handle the case where the caller passes in null for pacl or
    dpacl; no caller does that, because it would be a dumb thing to do.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J.Bruce Fields
     
  • We can be a little more flexible about the flags allowed for inheritance (in
    particular, we can deal with either the presence or the absence of
    INHERIT_ONLY), but we should probably reject other combinations that we don't
    understand.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J.Bruce Fields
     
  • Use a different nfsv4->(draft posix) acl mapping which is
    1. completely backwards compatible,
    2. accepts any nfsv4 acl, and
    3. errs on the side of restricting permissions.

    In detail:

    1. completely backwards compatible: The new mapping produces the
    same result on any acl produced by the existing (draft
    posix)->nfsv4 mapping; the one exception is that we no longer
    attempt to guess the value of the mask by assuming certain denies
    represent the mask. Since the server still keeps track of the mask
    locally, sequences of chmod's will still be handled fine; the only
    thing this will change is sequences of chmod's with intervening
    read-modify-writes of the acl. That last case just isn't worth the
    trouble and the possible misrepresentations of the user's intent
    (if we guess that a certain deny indicates masking is in effect
    when it really isn't).

    2. accepts any nfsv4 acl: That's not quite true: we still reject
    acls that use combinations of inheritance flags that we don't
    support. We also reject acls that attempt to explicitly deny
    read_acl or read_attributes permissions, or that attempt to deny
    write_acl or write_attributes permissions to the owner of the file.

    3. errs on the side of restricting permissions: one exception to
    this last rule: we totally ignore some bits (write_owner,
    synchronize, read_named_attributes, etc.) that are completely alien
    to our filesystem semantics, in some cases even if that would mean
    ignoring an explicit deny that we have no intention of enforcing.
    Excepting that, the posix acl produced should be the most
    permissive acl that is not more permissive than the given nfsv4
    acl.

    And the new code's shorter, too. Neato.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    J.Bruce Fields
     

11 Apr, 2006

2 commits

  • We're returning -1 in a few places in the NFSv4POSIX acl translation code
    where we could return a reasonable error.

    Also allows some minor simplification elsewhere.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • this fixes coverity id #3. Coverity detected dead code, since the == -1
    comparison only returns 0 or 1 to error. Therefore the if ( error < 0 )
    statement was always false. Seems that this was an if( error = nfs4... )
    statement some time ago, which got broken during cleanup.

    Signed-off-by: Eric Sesterhenn
    Signed-off-by: J. Bruce Fields
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     

24 Mar, 2006

1 commit

  • Use ARRAY_SIZE macro instead of sizeof(x)/sizeof(x[0]) and remove a
    duplicate of ARRAY_SIZE. Some trailing whitespaces are also deleted.

    Signed-off-by: Tobias Klauser
    Cc: David Howells
    Cc: Dave Kleikamp
    Acked-by: Trond Myklebust
    Cc: Neil Brown
    Cc: Chris Mason
    Cc: Jeff Mahoney
    Cc: Christoph Hellwig
    Cc: Nathan Scott
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tobias Klauser
     

24 Jun, 2005

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds