[lkml]   [2011]   [Mar]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subject[PATCHv2 00/24] Refactor sys_swapon
    [Resending with a Cc: list generated by as suggested
    by Eric B Munson, and with his Tested-by and Acked-by added to each

    This patch series refactors the sys_swapon function.

    sys_swapon is currently a very large function, with 313 lines (more than
    12 25-line screens), which can make it a bit hard to read. This patch
    series reduces this size by half, by extracting large chunks of related
    code to new helper functions.

    One of these chunks of code was nearly identical to the part of
    sys_swapoff which is used in case of a failure return from
    try_to_unuse(), so this patch series also makes both share the same

    As a side effect of all this refactoring, the compiled code gets a bit
    smaller (from v1 of this patch series):

    text data bss dec hex filename
    14012 944 276 15232 3b80 mm/swapfile.o.before
    13941 944 276 15161 3b39 mm/swapfile.o.after

    The v1 of this patch series was lightly tested on a x86_64 VM.

    [Eric B Munson <> adds for the v2 of this patch series:
    > I have tested this set on x86_64 by manually adding/removing swap
    > files and partitions. Also I used the hugeadm program (fomr
    > libhugetlbfs) to add temporary swap files on disk and using ram disks.
    > All of this worked well.

    Changes from v1:
    Rebased from v2.6.38-rc4 to v2.6.38-rc7.

    Cesar Eduardo Barros (24):
    sys_swapon: use vzalloc instead of vmalloc/memset
    sys_swapon: remove changelog from function comment
    sys_swapon: do not depend on "type" after allocation
    sys_swapon: separate swap_info allocation
    sys_swapon: simplify error return from swap_info allocation
    sys_swapon: simplify error flow in alloc_swap_info
    sys_swapon: remove initial value of name variable
    sys_swapon: move setting of error nearer use
    sys_swapon: remove did_down variable
    sys_swapon: remove bdev variable
    sys_swapon: do only cleanup in the cleanup blocks
    sys_swapon: use a single error label
    sys_swapon: separate bdev claim and inode lock
    sys_swapon: simplify error flow in claim_swapfile
    sys_swapon: move setting of swapfilepages near use
    sys_swapon: separate parsing of swapfile header
    sys_swapon: simplify error flow in read_swap_header
    sys_swapon: call swap_cgroup_swapon earlier
    sys_swapon: separate parsing of bad blocks and extents
    sys_swapon: simplify error flow in setup_swap_map_and_extents
    sys_swapon: remove nr_good_pages variable
    sys_swapon: move printk outside lock
    sys_swapoff: change order to match sys_swapon
    sys_swapon: separate final enabling of the swapfile

    mm/swapfile.c | 360 +++++++++++++++++++++++++++++++--------------------------
    1 files changed, 197 insertions(+), 163 deletions(-)


     \ /
      Last update: 2011-03-06 12:19    [W:0.021 / U:22.368 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site