11 Jan, 2012

6 commits

  • Since the nlink count will be 0, we need to use set_nlink rather
    than inc_nlink in order to avoid triggering the inc_nlink warning
    which was added recently.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • If the first mounter fails to recover one of the journals
    during mount, the mount should fail.

    Signed-off-by: David Teigland
    Signed-off-by: Steven Whitehouse

    David Teigland
     
  • Previously, a spectator mount would not even attempt to do
    journal recovery for a failed node. This meant that if all
    mounted nodes were spectators, everyone would be stuck after
    a node failed, all waiting for recovery to be performed.
    This is unnecessary since the failed node had a clean journal.

    Instead, allow a spectator mount to do a partial "read only"
    recovery, which means it will check if the failed journal is
    clean, and if so, report a successful recovery. If the failed
    journal is not clean, it reports that journal recovery failed.
    This makes it work the same as a read only mount on a read only
    block device.

    Signed-off-by: David Teigland
    Signed-off-by: Steven Whitehouse

    David Teigland
     
  • In function gfs2_inplace_release it was trying to unlock a gfs2_holder
    structure associated with a reservation, after said reservation was
    freed. The problem is that the statements have the wrong order.
    This patch corrects the order so that the reservation is freed after
    the gfs2_holder is unlocked.

    Signed-off-by: Bob Peterson
    Signed-off-by: Steven Whitehouse

    Bob Peterson
     
  • This new method of managing recovery is an alternative to
    the previous approach of using the userland gfs_controld.

    - use dlm slot numbers to assign journal id's
    - use dlm recovery callbacks to initiate journal recovery
    - use a dlm lock to determine the first node to mount fs
    - use a dlm lock to track journals that need recovery

    Signed-off-by: David Teigland
    Signed-off-by: Steven Whitehouse

    David Teigland
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm:
    dlm: add recovery callbacks
    dlm: add node slots and generation
    dlm: move recovery barrier calls
    dlm: convert rsb list to rb_tree

    Linus Torvalds
     

09 Jan, 2012

2 commits

  • * 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (76 commits)
    PM / Hibernate: Implement compat_ioctl for /dev/snapshot
    PM / Freezer: fix return value of freezable_schedule_timeout_killable()
    PM / shmobile: Allow the A4R domain to be turned off at run time
    PM / input / touchscreen: Make st1232 use device PM QoS constraints
    PM / QoS: Introduce dev_pm_qos_add_ancestor_request()
    PM / shmobile: Remove the stay_on flag from SH7372's PM domains
    PM / shmobile: Don't include SH7372's INTCS in syscore suspend/resume
    PM / shmobile: Add support for the sh7372 A4S power domain / sleep mode
    PM: Drop generic_subsys_pm_ops
    PM / Sleep: Remove forward-only callbacks from AMBA bus type
    PM / Sleep: Remove forward-only callbacks from platform bus type
    PM: Run the driver callback directly if the subsystem one is not there
    PM / Sleep: Make pm_op() and pm_noirq_op() return callback pointers
    PM/Devfreq: Add Exynos4-bus device DVFS driver for Exynos4210/4212/4412.
    PM / Sleep: Merge internal functions in generic_ops.c
    PM / Sleep: Simplify generic system suspend callbacks
    PM / Hibernate: Remove deprecated hibernation snapshot ioctls
    PM / Sleep: Fix freezer failures due to racy usermodehelper_is_disabled()
    ARM: S3C64XX: Implement basic power domain support
    PM / shmobile: Use common always on power domain governor
    ...

    Fix up trivial conflict in fs/xfs/xfs_buf.c due to removal of unused
    XBT_FORCE_SLEEP bit

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw:
    GFS2: local functions should be static
    GFS2: We only need one ACL getting function
    GFS2: Fix multi-block allocation
    GFS2: decouple quota allocations from block allocations
    GFS2: split function rgblk_search
    GFS2: Fix up "off by one" in the previous patch
    GFS2: move toward a generic multi-block allocator
    GFS2: O_(D)SYNC support for fallocate
    GFS2: remove vestigial al_alloced
    GFS2: combine gfs2_alloc_block and gfs2_alloc_di
    GFS2: Add non-try locks back to get_local_rgrp
    GFS2: f_ra is always valid in dir readahead function
    GFS2: Fix very unlikley memory leak in ACL xattr code
    GFS2: More automated code analysis fixes
    GFS2: Add readahead to sequential directory traversal
    GFS2: Fix up REQ flags

    Linus Torvalds
     

07 Jan, 2012

1 commit


04 Jan, 2012

8 commits


06 Dec, 2011

1 commit


23 Nov, 2011

1 commit


22 Nov, 2011

4 commits

  • Clean up gfs2_alloc_blocks so that it takes the full extent length
    rather than just the number of non-inode blocks as an argument. That
    will only make a difference in the inode allocation case for now.

    Also, this fixes the extent length handling around gfs2_alloc_extent() so
    that multi block allocations will work again.

    The rd_last_alloc block is set to the final block in the allocated
    extent (as per the update to i_goal, but referenced to a different
    start point).

    This also removes the dinode argument to rgblk_search() which is no
    longer used.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • This patch separates the code pertaining to allocations into two
    parts: quota-related information and block reservations.
    This patch also moves all the block reservation structure allocations to
    function gfs2_inplace_reserve to simplify the code, and moves
    the frees to function gfs2_inplace_release.

    Signed-off-by: Bob Peterson
    Signed-off-by: Steven Whitehouse

    Bob Peterson
     
  • There is no reason to export two functions for entering the
    refrigerator. Calling refrigerator() instead of try_to_freeze()
    doesn't save anything noticeable or removes any race condition.

    * Rename refrigerator() to __refrigerator() and make it return bool
    indicating whether it scheduled out for freezing.

    * Update try_to_freeze() to return bool and relay the return value of
    __refrigerator() if freezing().

    * Convert all refrigerator() users to try_to_freeze().

    * Update documentation accordingly.

    * While at it, add might_sleep() to try_to_freeze().

    Signed-off-by: Tejun Heo
    Cc: Samuel Ortiz
    Cc: Chris Mason
    Cc: "Theodore Ts'o"
    Cc: Steven Whitehouse
    Cc: Andrew Morton
    Cc: Jan Kara
    Cc: KONISHI Ryusuke
    Cc: Christoph Hellwig

    Tejun Heo
     
  • This patch splits function rgblk_search into a function that finds
    blocks to allocate (rgblk_search) and a function that assigns those
    blocks (gfs2_alloc_extent).

    Signed-off-by: Bob Peterson
    Signed-off-by: Steven Whitehouse

    Bob Peterson
     

21 Nov, 2011

3 commits

  • The trace point should take extlen and not *ndata as the
    extent length.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • This patch is a revision of the one I previously posted.
    I tried to integrate all the suggestions Steve gave.
    The purpose of the patch is to change function gfs2_alloc_block
    (allocate either a dinode block or an extent of data blocks)
    to a more generic gfs2_alloc_blocks function that can
    allocate both a dinode _and_ an extent of data blocks in the
    same call. This will ultimately help us create a multi-block
    reservation scheme to reduce file fragmentation.

    This patch moves more toward a generic multi-block allocator that
    takes a pointer to the number of data blocks to allocate, plus whether
    or not to allocate a dinode. In theory, it could be called to allocate
    (1) a single dinode block, (2) a group of one or more data blocks, or
    (3) a dinode plus several data blocks.

    Signed-off-by: Bob Peterson
    Signed-off-by: Steven Whitehouse

    Bob Peterson
     
  • Add sync of metadata after fallocate for O_SYNC files to ensure that we
    meet expectations for everything being on disk in this case.
    Unfortunately, the offset and len parameters are modified during the
    course of the fallocate function, so I've had to add a couple of new
    variables to call generic_write_sync() at the end.

    I know that potentially this will sync data as well within the range,
    but I think that is a fairly harmless side-effect overall, since we
    would not normally expect there to be any dirty data within the range in
    question.

    Signed-off-by: Steven Whitehouse
    Cc: Christoph Hellwig
    Cc: Benjamin Marzinski

    Steven Whitehouse
     

18 Nov, 2011

1 commit

  • This patch removes the vestigial variable al_alloced from
    the gfs2_alloc structure. This is another baby step toward
    multi-block reservations.

    My next planned step is to decouple the quota variables
    from the gfs2_alloc structure so we can use a different
    method for allocations.

    Signed-off-by: Bob Peterson
    Signed-off-by: Steven Whitehouse

    Bob Peterson
     

15 Nov, 2011

2 commits

  • GFS2 functions gfs2_alloc_block and gfs2_alloc_di do basically
    the same things, with a few exceptions. This patch combines
    the two functions into a slightly more generic gfs2_alloc_block.
    Having one centralized block allocation function will reduce
    code redundancy and make it easier to implement multi-block
    reservations to reduce file fragmentation in the future.

    Signed-off-by: Bob Peterson
    Signed-off-by: Steven Whitehouse

    Bob Peterson
     
  • This upstream patch had what I believe is an unintended consequence:

    http://git.kernel.org/?p=linux/kernel/git/steve/gfs2-3.0-nmw.git;a=commitdiff;h=beca42486749c1538a5ed58fe9dcc9f26d428c93

    The patch changed function get_local_rgrp such that it ONLY
    used TRY locks for RGRP searches. Prior to that patch, the code
    used TRY locks during the first loop, and if that was unsuccessful,
    it used normal blocking locks on subsequent searches. This patch
    changes it back to the old way.

    Signed-off-by: Bob Peterson
    Signed-off-by: Steven Whitehouse

    Bob Peterson
     

09 Nov, 2011

2 commits


08 Nov, 2011

3 commits

  • A potentially uninitialised variable, some unreachable code,
    and the main part of this, fixing the error path in the
    unlink function.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • This patch adds read-ahead capability to GFS2's
    directory hash table management. It greatly improves
    performance for some directory operations. For example:
    In one of my file systems that has 1000 directories, each
    of which has 1000 files, time to execute a recursive
    ls (time ls -fR /mnt/gfs2 > /dev/null) was reduced
    from 2m2.814s on a stock kernel to 0m45.938s.

    Signed-off-by: Bob Peterson
    Signed-off-by: Steven Whitehouse

    Bob Peterson
     
  • Christoph has split up REQ_PRIO from REQ_META. That means that
    we can drop REQ_PRIO from places where is it not needed. I'm
    not at all sure that the combination WRITE_FLUSH_FUA | REQ_PRIO
    makes any kind of sense, anyway.

    In addition, I've added REQ_META to one place in the code where
    it was missing. REQ_PRIO has been left for read/writes triggered
    by glock acquisition and writeback only. We can adjust it again
    if required, but these are the most important points from a
    performance perspective.

    Signed-off-by: Steven Whitehouse
    Cc: Christoph Hellwig

    Steven Whitehouse
     

07 Nov, 2011

1 commit

  • * 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)
    Revert "tracing: Include module.h in define_trace.h"
    irq: don't put module.h into irq.h for tracking irqgen modules.
    bluetooth: macroize two small inlines to avoid module.h
    ip_vs.h: fix implicit use of module_get/module_put from module.h
    nf_conntrack.h: fix up fallout from implicit moduleparam.h presence
    include: replace linux/module.h with "struct module" wherever possible
    include: convert various register fcns to macros to avoid include chaining
    crypto.h: remove unused crypto_tfm_alg_modname() inline
    uwb.h: fix implicit use of asm/page.h for PAGE_SIZE
    pm_runtime.h: explicitly requires notifier.h
    linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h
    miscdevice.h: fix up implicit use of lists and types
    stop_machine.h: fix implicit use of smp.h for smp_processor_id
    of: fix implicit use of errno.h in include/linux/of.h
    of_platform.h: delete needless include
    acpi: remove module.h include from platform/aclinux.h
    miscdevice.h: delete unnecessary inclusion of module.h
    device_cgroup.h: delete needless include
    net: sch_generic remove redundant use of
    net: inet_timewait_sock doesnt need
    ...

    Fix up trivial conflicts (other header files, and removal of the ab3550 mfd driver) in
    - drivers/media/dvb/frontends/dibx000_common.c
    - drivers/media/video/{mt9m111.c,ov6650.c}
    - drivers/mfd/ab3550-core.c
    - include/linux/dmaengine.h

    Linus Torvalds
     

02 Nov, 2011

1 commit


01 Nov, 2011

2 commits

  • Standardize the style for compiler based printf format verification.
    Standardized the location of __printf too.

    Done via script and a little typing.

    $ grep -rPl --include=*.[ch] -w "__attribute__" * | \
    grep -vP "^(tools|scripts|include/linux/compiler-gcc.h)" | \
    xargs perl -n -i -e 'local $/; while (<>) { s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.+)\s*,\s*(.+)\s*\)\s*\)\s*\)/__printf($1, $2)/g ; print; }'

    [akpm@linux-foundation.org: revert arch bits]
    Signed-off-by: Joe Perches
    Cc: "Kirill A. Shutemov"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • These files were getting via an implicit include
    path, but we want to crush those out of existence since they cost
    time during compiles of processing thousands of lines of headers
    for no reason. Give them the lightweight header that just contains
    the EXPORT_SYMBOL infrastructure.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

29 Oct, 2011

2 commits

  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue: (21 commits)
    leases: fix write-open/read-lease race
    nfs: drop unnecessary locking in llseek
    ext4: replace cut'n'pasted llseek code with generic_file_llseek_size
    vfs: add generic_file_llseek_size
    vfs: do (nearly) lockless generic_file_llseek
    direct-io: merge direct_io_walker into __blockdev_direct_IO
    direct-io: inline the complete submission path
    direct-io: separate map_bh from dio
    direct-io: use a slab cache for struct dio
    direct-io: rearrange fields in dio/dio_submit to avoid holes
    direct-io: fix a wrong comment
    direct-io: separate fields only used in the submission path from struct dio
    vfs: fix spinning prevention in prune_icache_sb
    vfs: add a comment to inode_permission()
    vfs: pass all mask flags check_acl and posix_acl_permission
    vfs: add hex format for MAY_* flag values
    vfs: indicate that the permission functions take all the MAY_* flags
    compat: sync compat_stats with statfs.
    vfs: add "device" tag to /proc/self/mountstats
    cleanup: vfs: small comment fix for block_invalidatepage
    ...

    Fix up trivial conflict in fs/gfs2/file.c (llseek changes)

    Linus Torvalds
     
  • * http://sucs.org/~rohan/git/gfs2-3.0-nmw: (24 commits)
    GFS2: Move readahead of metadata during deallocation into its own function
    GFS2: Remove two unused variables
    GFS2: Misc fixes
    GFS2: rewrite fallocate code to write blocks directly
    GFS2: speed up delete/unlink performance for large files
    GFS2: Fix off-by-one in gfs2_blk2rgrpd
    GFS2: Clean up ->page_mkwrite
    GFS2: Correctly set goal block after allocation
    GFS2: Fix AIL flush issue during fsync
    GFS2: Use cached rgrp in gfs2_rlist_add()
    GFS2: Call do_strip() directly from recursive_scan()
    GFS2: Remove obsolete assert
    GFS2: Cache the most recently used resource group in the inode
    GFS2: Make resource groups "append only" during life of fs
    GFS2: Use rbtree for resource groups and clean up bitmap buffer ref count scheme
    GFS2: Fix lseek after SEEK_DATA, SEEK_HOLE have been added
    GFS2: Clean up gfs2_create
    GFS2: Use ->dirty_inode()
    GFS2: Fix bug trap and journaled data fsync
    GFS2: Fix inode allocation error path
    ...

    Linus Torvalds