25 Oct, 2019

1 commit


27 Jul, 2019

2 commits


25 Jul, 2019

1 commit

  • * new helper: positive_after(parent, child); parent->d_lock is
    held by caller, grabs and returns the first thing after child
    in the list of children that has simple_positive() true. NULL
    if nothing's found; NULL child == search the entire list.

    * get_next_positive_subdir() loses the redundant check for
    d_count and switches to use of that helper. BTW, dput(NULL) is
    a no-op for a good reason...

    * get_next_positive_dentry() switched to the same helper. Logics:
    look for positive child in prev; if not found, look for the
    positive child of prev's parent following prev, etc. That way
    we are guaranteed that we are only moving rootwards through the
    ancestors of prev, which is pinned and thus not going anywhere.
    Since ->d_parent on autofs never changes, the same goes for
    the entire chain of ancestors and we don't need overlapping
    ->d_lock on them. Which avoids the trylock loops, in addition
    to simplifying the logics in there...

    Signed-off-by: Al Viro

    Al Viro
     

24 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this file is part of the linux kernel and is made available under
    the terms of the gnu general public license version 2 or at your
    option any later version incorporated herein by reference

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 18 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Richard Fontana
    Reviewed-by: Allison Randal
    Reviewed-by: Armijn Hemel
    Reviewed-by: Kate Stewart
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190520075211.321157221@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

21 May, 2019

1 commit


10 Apr, 2019

1 commit


08 Mar, 2019

3 commits

  • autofs does not expect the pipe it is given to have O_NONBLOCK set -
    specifically if __kernel_write() in autofs_write() returns -EAGAIN, this
    is treated as a fatal error and the pipe is closed.

    For safety autofs should, therefore, clear the O_NONBLOCK flag.

    Releases of systemd prior to 8th February 2019 used
    pipe2(p, O_NONBLOCK|O_CLOEXEC)
    and thus (inadvertently) set this flag.

    Link: http://lkml.kernel.org/r/154993550902.3321.1183632970046073478.stgit@pluto-themaw-net
    Signed-off-by: NeilBrown
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Fix checkpatch.sh WARNING about the use of seq_printf() to print simple
    strings in autofs_show_options(), use seq_puts() in this case.

    Link: http://lkml.kernel.org/r/154889012613.4863.12231175554744203482.stgit@pluto-themaw-net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Add an autofs file system mount option that can be used to provide a
    generic indicator to applications that the mount entry should be ignored
    when displaying mount information.

    In other OSes that provide autofs and that provide a mount list to user
    space based on the kernel mount list a no-op mount option ("ignore" is
    the one use on the most common OS) is allowed so that autofs file system
    users can optionally use it.

    The idea is that it be used by user space programs to exclude autofs
    mounts from consideration when reading the mounts list.

    Prior to the change to link /etc/mtab to /proc/self/mounts all I needed
    to do to achieve this was to use mount(2) and not update the mtab but
    now that no longer works.

    I know the symlinking happened a long time ago and I considered doing
    this then but, at the time I couldn't remember the commonly used option
    name and thought persuading the various utility maintainers would be too
    hard.

    But now I have a RHEL request to do this for compatibility for a widely
    used product so I want to go ahead with it and try and enlist the help
    of some utility package maintainers.

    Clearly, without the option nothing can be done so it's at least a
    start.

    Link: http://lkml.kernel.org/r/154725123970.11260.6113771566924907275.stgit@pluto-themaw-net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     

02 Feb, 2019

2 commits

  • In autofs_fill_super() on error of get inode/make root dentry the return
    should be ENOMEM as this is the only failure case of the called
    functions.

    Link: http://lkml.kernel.org/r/154725123240.11260.796773942606871359.stgit@pluto-themaw-net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • autofs_expire_run() calls dput(dentry) to drop the reference count of
    dentry. However, dentry is read via autofs_dentry_ino(dentry) after
    that. This may result in a use-free-bug. The patch drops the reference
    count of dentry only when it is never used.

    Link: http://lkml.kernel.org/r/154725122396.11260.16053424107144453867.stgit@pluto-themaw-net
    Signed-off-by: Pan Bian
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pan Bian
     

05 Jan, 2019

4 commits

  • Commit 092a53452bb7 ("autofs: take more care to not update last_used on
    path walk") helped to (partially) resolve a problem where automounts
    were not expiring due to aggressive accesses from user space.

    This patch was later reverted because, for very large environments, it
    meant more mount requests from clients and when there are a lot of
    clients this caused a fairly significant increase in server load.

    But there is a need for both types of expire check, depending on use
    case, so add a mount option to allow for strict update of last use of
    autofs dentrys (which just means not updating the last use on path walk
    access).

    Link: http://lkml.kernel.org/r/154296973880.9889.14085372741514507967.stgit@pluto-themaw-net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Change the superblock info. catatonic setting to be part of a flags bit
    field.

    Link: http://lkml.kernel.org/r/154296973142.9889.17275721668508589639.stgit@pluto-themaw-net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • The parse_options() function uses a long list of parameters, most of
    which are present in the super block info structure already.

    The mount parameters set in parse_options() options don't require
    cleanup so using the super block info struct directly is simpler.

    Link: http://lkml.kernel.org/r/154296972423.9889.9368859245676473329.stgit@pluto-themaw-net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Al Viro made some suggestions to improve the implementation of commit
    0633da48f0 ("fix autofs_sbi() does not check super block type").

    The check is unnecessary in all cases except for ioctl usage so placing
    the check in the super block accessor function adds a small overhead to
    the common case where it isn't needed.

    So it's sufficient to do this in the ioctl code only.

    Also the check in the ioctl code is needlessly complex.

    [akpm@linux-foundation.org: declare autofs_fs_type in .h, not .c]
    Link: http://lkml.kernel.org/r/154296970987.9889.1597442413573683096.stgit@pluto-themaw-net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     

23 Aug, 2018

9 commits

  • Merge more updates from Andrew Morton:

    - the rest of MM

    - procfs updates

    - various misc things

    - more y2038 fixes

    - get_maintainer updates

    - lib/ updates

    - checkpatch updates

    - various epoll updates

    - autofs updates

    - hfsplus

    - some reiserfs work

    - fatfs updates

    - signal.c cleanups

    - ipc/ updates

    * emailed patches from Andrew Morton : (166 commits)
    ipc/util.c: update return value of ipc_getref from int to bool
    ipc/util.c: further variable name cleanups
    ipc: simplify ipc initialization
    ipc: get rid of ids->tables_initialized hack
    lib/rhashtable: guarantee initial hashtable allocation
    lib/rhashtable: simplify bucket_table_alloc()
    ipc: drop ipc_lock()
    ipc/util.c: correct comment in ipc_obtain_object_check
    ipc: rename ipcctl_pre_down_nolock()
    ipc/util.c: use ipc_rcu_putref() for failues in ipc_addid()
    ipc: reorganize initialization of kern_ipc_perm.seq
    ipc: compute kern_ipc_perm.id under the ipc lock
    init/Kconfig: remove EXPERT from CHECKPOINT_RESTORE
    fs/sysv/inode.c: use ktime_get_real_seconds() for superblock stamp
    adfs: use timespec64 for time conversion
    kernel/sysctl.c: fix typos in comments
    drivers/rapidio/devices/rio_mport_cdev.c: remove redundant pointer md
    fork: don't copy inconsistent signal handler state to child
    signal: make get_signal() return bool
    signal: make sigkill_pending() return bool
    ...

    Linus Torvalds
     
  • The userspace automount(8) daemon is meant to perform a forced expire when
    sent a SIGUSR2.

    But since the expiration is routed through the kernel and the kernel
    doesn't send an expire request if the mount is busy this hasn't worked at
    least since autofs version 5.

    Add an AUTOFS_EXP_FORCED flag to allow implemention of the feature and
    bump the protocol version so user space can check if it's implemented if
    needed.

    Link: http://lkml.kernel.org/r/152937734715.21213.6594007182776598970.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Make the usage of the expire flags consistent by naming the expire flags
    the same as it is named in the version 5 miscelaneous ioctl parameters and
    only check the bit flags when needed.

    Link: http://lkml.kernel.org/r/152937734046.21213.9454131988766280028.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • autofs_expire_indirect() isn't used outside of fs/autofs/expire.c so make
    it static.

    Link: http://lkml.kernel.org/r/152937733512.21213.10509996499623738446.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • autofs_expire_direct() isn't used outside of fs/autofs/expire.c so make it
    static.

    Link: http://lkml.kernel.org/r/152937732944.21213.11821977712410930973.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • The expire flag AUTOFS_EXP_LEAVES is cleared before the second call to
    should_expire() in autofs_expire_indirect() but the parameter passed in
    the second call is incorrect.

    Fortunately AUTOFS_EXP_LEAVES expire flag has not been used for a long
    time but might be needed in the future so fix it rather than remove the
    expire leaves functionality.

    Link: http://lkml.kernel.org/r/152937732410.21213.7447294898147765076.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • The global variable "now" in fs/autofs/expire.c is used in an inconsistent
    way, sometimes using jiffies directly, and sometimes using the "now"
    variable, and setting it isn't done consistently either.

    But the autofs dentry info last_used field is only updated during path
    walks or during expire so jiffies can be used directly and the global
    variable "now" removed.

    Link: http://lkml.kernel.org/r/152937731702.21213.7371321165189170865.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Depending on how it is configured the autofs user space daemon can leave
    in use mounts mounted at exit and re-connect to them at start up. But for
    this to work best the state of the autofs file system needs to be left
    intact over the restart.

    Also, at system shutdown, mounts in an autofs file system might be
    umounted exposing a mount point trigger for which subsequent access can
    lead to a hang. So recent versions of automount(8) now does its best to
    set autofs file system mounts catatonic at shutdown.

    When autofs file system mounts are catatonic it's currently possible to
    create and remove directories and symlinks which can be a problem at
    restart, as described above.

    So return EACCES in the directory, symlink and unlink methods if the
    autofs file system is catatonic.

    Link: http://lkml.kernel.org/r/152902119090.4144.9561910674530214291.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • autofs_sbi() does not check the superblock magic number to verify it has
    been given an autofs super block.

    Link: http://lkml.kernel.org/r/153475422934.17131.7563724552005298277.stgit@pluto.themaw.net
    Reported-by:
    Signed-off-by: Ian Kent
    Reviewed-by: Andrew Morton
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     

22 Aug, 2018

1 commit

  • …iederm/user-namespace

    Pull core signal handling updates from Eric Biederman:
    "It was observed that a periodic timer in combination with a
    sufficiently expensive fork could prevent fork from every completing.
    This contains the changes to remove the need for that restart.

    This set of changes is split into several parts:

    - The first part makes PIDTYPE_TGID a proper pid type instead
    something only for very special cases. The part starts using
    PIDTYPE_TGID enough so that in __send_signal where signals are
    actually delivered we know if the signal is being sent to a a group
    of processes or just a single process.

    - With that prep work out of the way the logic in fork is modified so
    that fork logically makes signals received while it is running
    appear to be received after the fork completes"

    * 'siginfo-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (22 commits)
    signal: Don't send signals to tasks that don't exist
    signal: Don't restart fork when signals come in.
    fork: Have new threads join on-going signal group stops
    fork: Skip setting TIF_SIGPENDING in ptrace_init_task
    signal: Add calculate_sigpending()
    fork: Unconditionally exit if a fatal signal is pending
    fork: Move and describe why the code examines PIDNS_ADDING
    signal: Push pid type down into complete_signal.
    signal: Push pid type down into __send_signal
    signal: Push pid type down into send_signal
    signal: Pass pid type into do_send_sig_info
    signal: Pass pid type into send_sigio_to_task & send_sigurg_to_task
    signal: Pass pid type into group_send_sig_info
    signal: Pass pid and pid type into send_sigqueue
    posix-timers: Noralize good_sigevent
    signal: Use PIDTYPE_TGID to clearly store where file signals will be sent
    pid: Implement PIDTYPE_TGID
    pids: Move the pgrp and session pid pointers from task_struct to signal_struct
    kvm: Don't open code task_pid in kvm_vcpu_ioctl
    pids: Compute task_tgid using signal->leader_pid
    ...

    Linus Torvalds
     

21 Jul, 2018

1 commit

  • To access these fields the code always has to go to group leader so
    going to signal struct is no loss and is actually a fundamental simplification.

    This saves a little bit of memory by only allocating the pid pointer array
    once instead of once for every thread, and even better this removes a
    few potential races caused by the fact that group_leader can be changed
    by de_thread, while signal_struct can not.

    Signed-off-by: "Eric W. Biederman"

    Eric W. Biederman
     

15 Jul, 2018

1 commit

  • The autofs subsystem does not check that the "path" parameter is present
    for all cases where it is required when it is passed in via the "param"
    struct.

    In particular it isn't checked for the AUTOFS_DEV_IOCTL_OPENMOUNT_CMD
    ioctl command.

    To solve it, modify validate_dev_ioctl(function to check that a path has
    been provided for ioctl commands that require it.

    Link: http://lkml.kernel.org/r/153060031527.26631.18306637892746301555.stgit@pluto.themaw.net
    Signed-off-by: Tomas Bortoli
    Signed-off-by: Ian Kent
    Reported-by: syzbot+60c837b428dc84e83a93@syzkaller.appspotmail.com
    Cc: Dmitry Vyukov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tomas Bortoli
     

06 Jul, 2018

1 commit

  • It turns out that systemd has a bug: it wants to load the autofs module
    early because of some initialization ordering with udev, and it doesn't
    do that correctly. Everywhere else it does the proper "look up module
    name" that does the proper alias resolution, but in that early code, it
    just uses a hardcoded "autofs4" for the module name.

    The result of that is that as of commit a2225d931f75 ("autofs: remove
    left-over autofs4 stubs"), you get

    systemd[1]: Failed to insert module 'autofs4': No such file or directory

    in the system logs, and a lack of module loading. All this despite the
    fact that we had very clearly marked 'autofs4' as an alias for this
    module.

    What's so ridiculous about this is that literally everything else does
    the module alias handling correctly, including really old versions of
    systemd (that just used 'modprobe' to do this), and even all the other
    systemd module loading code.

    Only that special systemd early module load code is broken, hardcoding
    the module names for not just 'autofs4', but also "ipv6", "unix",
    "ip_tables" and "virtio_rng". Very annoying.

    Instead of creating an _additional_ separate compatibility 'autofs4'
    module, just rely on the fact that everybody else gets this right, and
    just call the module 'autofs4' for compatibility reasons, with 'autofs'
    as the alias name.

    That will allow the systemd people to fix their bugs, adding the proper
    alias handling, and maybe even fix the name of the module to be just
    "autofs" (so that they can _test_ the alias handling). And eventually,
    we can revert this silly compatibility hack.

    See also

    https://github.com/systemd/systemd/issues/9501
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=902946

    for the systemd bug reports upstream and in the Debian bug tracker
    respectively.

    Fixes: a2225d931f75 ("autofs: remove left-over autofs4 stubs")
    Reported-by: Ben Hutchings
    Reported-by: Michael Biebl
    Cc: Ian Kent
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

13 Jun, 2018

1 commit


11 Jun, 2018

1 commit

  • There's no need to retain the fs/autofs4 directory for backward
    compatibility.

    Adding an AUTOFS4_FS fragment to the autofs Kconfig and a module alias
    for autofs4 is sufficient for almost all cases. Not keeping fs/autofs4
    remnants will prevent "insmod /autofs4/autofs4.ko" from working
    but this shouldn't be used in automation scripts rather than
    modprobe(8).

    There were some comments about things to look out for with the module
    rename in the fs/autofs4/Kconfig that is removed by this patch, see the
    commit patch if you are interested.

    One potential problem with this change is that when the
    fs/autofs/Kconfig fragment for AUTOFS4_FS is removed any AUTOFS4_FS
    entries will be removed from the kernel config, resulting in no autofs
    file system being built if there is no AUTOFS_FS entry also.

    This would have also happened if the fs/autofs4 remnants had remained
    and is most likely to be a problem with automated builds.

    Please check your build configurations before the removal which will
    occur after the next couple of kernel releases.

    Acked-by: Ian Kent
    [ With edits and commit message from Ian Kent ]
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

08 Jun, 2018

4 commits

  • We don't set "*name" so it's slightly nicer to just pass "name" instead
    of "&name".

    Link: http://lkml.kernel.org/r/20180531064736.lnisb55eajwjynvk@kili.mountain
    Signed-off-by: Dan Carpenter
    Acked-by: "Eric W. Biederman"
    Acked-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Carpenter
     
  • Remove includes that aren't needed from autofs (and fs/compat_ioctl.c).

    Link: http://lkml.kernel.org/r/152635085258.5968.9743527195522188148.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Create Makefile and Kconfig for autofs module.

    [raven@themaw.net: make autofs4 Kconfig depend on AUTOFS_FS]
    Link: http://lkml.kernel.org/r/152687649097.8263.7046086367407522029.stgit@pluto.themaw.net
    Link: http://lkml.kernel.org/r/152626705591.28589.356365986974038383.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Tested-by: Randy Dunlap
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Copy source files from the autofs4 directory to the autofs directory.

    Link: http://lkml.kernel.org/r/152626705013.28589.931913083997578251.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     

06 Oct, 2010

1 commit

  • Nobody appears to be interested in fixing autofs3 bugs
    any more and it uses the BKL, which is going away.

    Move this to staging for retirement. Unless someone
    complains until 2.6.38, we can remove it for good.

    The include/linux/auto_fs.h header file is still used
    by autofs4, so it remains in place.

    Signed-off-by: Arnd Bergmann
    Cc: Ian Kent
    Cc: autofs@linux.kernel.org
    Cc: "H. Peter Anvin"
    Acked-by: H. Peter Anvin
    Signed-off-by: Greg Kroah-Hartman

    Arnd Bergmann
     

09 Aug, 2010

1 commit

  • Handling of autofs ioctl numbers does not need to be generic
    and can easily be done directly in autofs itself.

    This also pushes the BKL into autofs and autofs4 ioctl
    methods.

    Signed-off-by: Arnd Bergmann
    Acked-by: H. Peter Anvin
    Cc: Al Viro
    Cc: Ian Kent
    Cc: Autofs
    Cc: John Kacur
    Signed-off-by: Frederic Weisbecker

    Arnd Bergmann
     

28 May, 2010

1 commit

  • Do not use the fallback default_llseek() if the readdir operation of the
    filesystem still uses the big kernel lock.

    Since llseek() modifies
    file->f_pos of the directory directly it may need locking to not confuse
    readdir which usually uses file->f_pos directly as well

    Since the special characteristics of the BKL (unlocked on schedule) are
    not necessary in this case, the inode mutex can be used for locking as
    provided by generic_file_llseek(). This is only possible since all
    filesystems, except reiserfs, either use a directory as a flat file or
    with disk address offsets. Reiserfs on the other hand uses a 32bit hash
    off the filename as the offset so generic_file_llseek() can get used as
    well since the hash is always smaller than sb->s_maxbytes (= (512 << 32) -
    blocksize).

    Signed-off-by: Jan Blunck
    Acked-by: Jan Kara
    Acked-by: Anders Larsen
    Cc: Frederic Weisbecker
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    jan Blunck
     

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
     

21 Sep, 2009

1 commit