19 Oct, 2007

16 commits

  • Rename 'struct hibernation_ops' to 'struct platform_hibernation_ops' in
    analogy with 'struct platform_suspend_ops'.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Len Brown
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • During hibernation we also need to tell the ACPI core that we're going to put
    the system into the S4 sleep state. For this reason, an additional method in
    'struct hibernation_ops' is needed, playing the role of set_target() in
    'struct platform_suspend_operations'. Moreover, the role of the .prepare()
    method is now different, so it's better to introduce another method, that in
    general may be different from .prepare(), that will be used to prepare the
    platform for creating the hibernation image (.prepare() is used anyway to
    notify the platform that we're going to enter the low power state after the
    image has been saved).

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • The variable suspend_ops representing the set of global platform-specific
    suspend-related operations, used by the PM core, need not be exported outside
    of kernel/power/main.c .  Make it static.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • There is no reason why the .prepare() and .finish() methods in 'struct
    platform_suspend_ops' should take any arguments, since architectures don't use
    these methods' argument in any practically meaningful way (ie. either the
    target system sleep state is conveyed to the platform by .set_target(), or
    there is only one suspend state supported and it is indicated to the PM core
    by .valid(), or .prepare() and .finish() aren't defined at all).  There also
    is no reason why .finish() should return any result.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Len Brown
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • The name of 'struct pm_ops' suggests that it is related to the power
    management in general, but in fact it is only related to suspend.  Moreover,
    its name should indicate what this structure is used for, so it seems
    reasonable to change it to 'struct platform_suspend_ops'.  In that case, the
    name of the global variable of this type used by the PM core and the names of
    related functions should be changed accordingly.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Len Brown
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • Move the definition of 'struct pm_ops' and related functions from
    to .

    There are, at least, the following reasons to do that:
    * 'struct pm_ops' is specifically related to suspend and not to the power
    management in general.
    * As long as 'struct pm_ops' is defined in , any modification of it
    causes the entire kernel to be recompiled, which is unnecessary and annoying.
    * Some suspend-related features are already defined in , so it
    is logical to move the definition of 'struct pm_ops' into there.
    * 'struct hibernation_ops', being the hibernation-related counterpart of
    'struct pm_ops', is defined in .

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Len Brown
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • suspend_enter() can now become static.

    Signed-off-by: Adrian Bunk
    Cc: "Rafael J. Wysocki"
    Cc: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This has not been any serious user of this ill conceived thing since the
    original invention in like '95 so I recently deleted this from everywhere
    except the last instance in logo.c. This patch removes the last two
    instances in logo.c. They conditions were not useful anyway as when
    compiled in they would always evaluate as true.

    Last not least this is necessary to get the SGI IP22 and DECstation kernels
    to compile again.

    Signed-off-by: Ralf Baechle
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     
  • Signed-off-by: Geert Uytterhoeven
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • The tty_termios_encode_baud_rate() function as defined by tty_ioctl.c has a
    problem with the baud_table within. The comparison operators are reversed
    and as a result this table's entries never match and BOTHER is always used.

    Signed-off-by: Maciej W. Rozycki
    Acked-by: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Maciej W. Rozycki
     
  • Since default_utf8 is already a sysfs attribute, having an extra
    CONFIG_VT_UNICODE compile-time option is redundant, since sysfs attributes can
    be set at boot and run time.

    Also let Linux VCs default to UTF-8 (as per the discussion at
    http://lkml.org/lkml/2007/9/6/99).

    Signed-off-by: Jan Engelhardt
    Cc: Bill Nottingham
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Engelhardt
     
  • I'm not sure that the new URL satifies the requirement of status/info, but
    it does at least as good a job as the old URL, and contains current
    releases of kexec-tools, rather than somewhat ancient versions.

    Signed-off-by: Simon Horman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Signed-off-by@vergenet.net":Simon
     
  • The patch
    - Includes the call to capilib_data_b3_req in the spinlock. This routine
    in turn calls the offending mq_enqueue routine that triggered the
    freeze if not locked. This should also fix other indicators of
    incosistent capilib_msgidqueue list, that trigger messages like:
    Oct 5 03:05:57 BERL0 kernel: kcapi: msgid 3019 ncci 0x30301 not on queue
    that we saw several times a day (usually several in a row).
    - Fixes all occurrences of c4_dispatch_tx to be called with active
    spinlock, there were some instances where no lock was active. Mostly
    these are in very infrequently called routines, so the additional
    performance penalty is minimal.

    Signed-off-by: Karsten Keil
    Signed-off-by: Rainer Brestan
    Signed-off-by: Ralf Schlatterbeck
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Karsten Keil
     
  • This fix the same issue which was debbuged for the C4 controller for the B1
    versions.

    The capilib_ function modify or traverse a linked list without locking.

    This patch extends the existing locking to the calls of these function to
    prevent access to a list which is in the middle of a modification.

    Signed-off-by: Karsten Keil
    C:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Karsten Keil
     
  • MODPOST vmlinux.o
    WARNING: vmlinux.o(.text+0x170be8): Section mismatch: reference to .init.data:au1100fb_fix (between 'au1100fb_drv_probe' and 'read_null')
    WARNING: vmlinux.o(.text+0x170dc4): Section mismatch: reference to .init.data:au1100fb_var (between 'au1100fb_drv_probe' and 'read_null')
    WARNING: vmlinux.o(.text+0x170dd0): Section mismatch: reference to .init.data:au1100fb_fix (between 'au1100fb_drv_probe' and 'read_null')
    WARNING: vmlinux.o(.text+0x170de0): Section mismatch: reference to .init.data:au1100fb_var (between 'au1100fb_drv_probe' and 'read_null')
    WARNING: vmlinux.o(.text+0x170e70): Section mismatch: reference to .init.data:au1100fb_var (between 'au1100fb_drv_probe' and 'read_null')

    Signed-off-by: Ralf Baechle
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     
  • Fix build broken by accaa24c492f1aa3b9c37226d868dc59c3007531:

    CC drivers/video/console/newport_con.o
    drivers/video/console/newport_con.c: In function 'newport_show_logo':
    drivers/video/console/newport_con.c:111: error: assignment of read-only location
    drivers/video/console/newport_con.c:111: warning: assignment makes integer from pointer without a cast
    drivers/video/console/newport_con.c:112: error: assignment of read-only location
    drivers/video/console/newport_con.c:112: warning: assignment makes integer from pointer without a cast

    Signed-off-by: Ralf Baechle
    Cc: "Randy.Dunlap"
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     

18 Oct, 2007

24 commits

  • When resizing online, setup_new_group_blocks attempts to reserve a
    potentially very large transaction, depending on the current filesystem
    geometry. For some journal sizes, there may not be enough room for this
    transaction, and the online resize will fail.

    The patch below resizes & restarts the transaction as necessary while
    setting up the new group, and should work with even the smallest journal.

    Tested with something like:

    [root@newbox ~]# dd if=/dev/zero of=fsfile bs=1024 count=32768
    [root@newbox ~]# mkfs.ext3 -b 1024 fsfile 16384
    [root@newbox ~]# mount -o loop fsfile mnt/
    [root@newbox ~]# resize2fs /dev/loop0
    resize2fs 1.40.2 (12-Jul-2007)
    Filesystem at /dev/loop0 is mounted on /root/mnt; on-line resizing required
    old desc_blocks = 1, new_desc_blocks = 1
    Performing an on-line resize of /dev/loop0 to 32768 (1k) blocks.
    resize2fs: No space left on device While trying to add group #2
    [root@newbox ~]# dmesg | tail -n 1
    JBD: resize2fs wants too many credits (258 > 256)
    [root@newbox ~]#

    With the below change, it works.

    Signed-off-by: Eric Sandeen
    Signed-off-by: Mingming Cao
    Acked-by: Andreas Dilger

    Eric Sandeen
     
  • setup_new_group_blocks() manipulates the group descriptor block bh
    under the block_bitmap bh's lock. It shouldn't matter since nobody
    but resize should be touching these blocks, but it's worth fixing up.

    Signed-off-by: Eric Sandeen
    Signed-off-by: Mingming Cao

    Eric Sandeen
     
  • Signed-off-by: Aneesh Kumar K.V

    Aneesh Kumar K.V
     
  • Convert ext4_extent_idx.ei_leaf ext4_extent_idx.ei_leaf_lo
    This helps in finding BUGs due to direct partial access of
    these split 48 bit values.

    Signed-off-by: Aneesh Kumar K.V

    Aneesh Kumar K.V
     
  • Convert ext4_extent.ee_start to ext4_extent.ee_start_lo
    This helps in finding BUGs due to direct partial access of
    these split 48 bit values

    Also fix direct partial access in ext4 code

    Signed-off-by: Aneesh Kumar K.V

    Aneesh Kumar K.V
     
  • Convert s_r_blocks_count and s_free_blocks_count to
    s_r_blocks_count_lo and s_free_blocks_count_lo

    This helps in finding BUGs due to direct partial access of
    these split 64 bit values

    Also fix direct partial access in ext4 code

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: "Theodore Ts'o"

    Aneesh Kumar K.V
     
  • Convert s_blocks_count to s_blocks_count_lo
    This helps in finding BUGs due to direct partial access of
    these split 64 bit values

    Also fix direct partial access in ext4 code

    Signed-off-by: Aneesh Kumar K.V

    Aneesh Kumar K.V
     
  • Convert bg_inode_bitmap and bg_inode_table to bg_inode_bitmap_lo
    and bg_inode_table_lo. This helps in finding BUGs due to
    direct partial access of these split 64 bit values

    Also fix one direct partial access

    Signed-off-by: Aneesh Kumar K.V

    Aneesh Kumar K.V
     
  • Convert bg_block_bitmap to bg_block_bitmap_lo
    This helps in catching some BUGS due to direct
    partial access of these split fields.

    Signed-off-by: Aneesh Kumar K.V

    Aneesh Kumar K.V
     
  • This feature relaxes check restrictions on where each block groups meta
    data is located within the storage media. This allows for the allocation
    of bitmaps or inode tables outside the block group boundaries in cases
    where bad blocks forces us to look for new blocks which the owning block
    group can not satisfy. This will also allow for new meta-data allocation
    schemes to improve performance and scalability.

    Signed-off-by: Jose R. Santos
    Cc:
    Signed-off-by: Andrew Morton

    Jose R. Santos
     
  • Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Andrew Morton

    Aneesh Kumar K.V
     
  • In pass1 of e2fsck, every inode table in the fileystem is scanned and checked,
    regardless of whether it is in use. This is this the most time consuming part
    of the filesystem check. The unintialized block group feature can greatly
    reduce e2fsck time by eliminating checking of uninitialized inodes.

    With this feature, there is a a high water mark of used inodes for each block
    group. Block and inode bitmaps can be uninitialized on disk via a flag in the
    group descriptor to avoid reading or scanning them at e2fsck time. A checksum
    of each group descriptor is used to ensure that corruption in the group
    descriptor's bit flags does not cause incorrect operation.

    The feature is enabled through a mkfs option

    mke2fs /dev/ -O uninit_groups

    A patch adding support for uninitialized block groups to e2fsprogs tools has
    been posted to the linux-ext4 mailing list.

    The patches have been stress tested with fsstress and fsx. In performance
    tests testing e2fsck time, we have seen that e2fsck time on ext3 grows
    linearly with the total number of inodes in the filesytem. In ext4 with the
    uninitialized block groups feature, the e2fsck time is constant, based
    solely on the number of used inodes rather than the total inode count.
    Since typical ext4 filesystems only use 1-10% of their inodes, this feature can
    greatly reduce e2fsck time for users. With performance improvement of 2-20
    times, depending on how full the filesystem is.

    The attached graph shows the major improvements in e2fsck times in filesystems
    with a large total inode count, but few inodes in use.

    In each group descriptor if we have

    EXT4_BG_INODE_UNINIT set in bg_flags:
    Inode table is not initialized/used in this group. So we can skip
    the consistency check during fsck.
    EXT4_BG_BLOCK_UNINIT set in bg_flags:
    No block in the group is used. So we can skip the block bitmap
    verification for this group.

    We also add two new fields to group descriptor as a part of
    uninitialized group patch.

    __le16 bg_itable_unused; /* Unused inodes count */
    __le16 bg_checksum; /* crc16(sb_uuid+group+desc) */

    bg_itable_unused:

    If we have EXT4_BG_INODE_UNINIT not set in bg_flags
    then bg_itable_unused will give the offset within
    the inode table till the inodes are used. This can be
    used by fsck to skip list of inodes that are marked unused.

    bg_checksum:
    Now that we depend on bg_flags and bg_itable_unused to determine
    the block and inode usage, we need to make sure group descriptor
    is not corrupt. We add checksum to group descriptor to
    detect corruption. If the descriptor is found to be corrupt, we
    mark all the blocks and inodes in the group used.

    Signed-off-by: Avantika Mathur
    Signed-off-by: Andreas Dilger
    Signed-off-by: Mingming Cao
    Signed-off-by: Aneesh Kumar K.V

    Andreas Dilger
     
  • CONFIG_EXT4_INDEX is not an exposed config option in the kernel, and it is
    unconditionally defined in ext4_fs.h. tune2fs is already able to turn off
    dir indexing, so at this point it's just cluttering up the code. Remove
    it.

    Signed-off-by: Eric Sandeen
    Signed-off-by: Mingming Cao
    Signed-off-by: "Theodore Ts'o"
    Signed-off-by: Andrew Morton

    Eric Sandeen
     
  • Fragment support in ext2/3/4 was never implemented, and it probably will
    never be implemented. So remove it from ext4.

    Signed-off-by: Coly Li
    Acked-by: Andreas Dilger
    Signed-off-by: Andrew Morton
    Signed-off-by: "Theodore Ts'o"

    Coly Li
     
  • Mostly stolen from akpm's JBD cleanup patch.

    - use `#ifdef foo' instead of `#if defined(foo)'

    - Make journal_enable_debug __read_mostly just for the heck of it

    - Make jbd_debugfs_dir and jbd_debug static

    - debugfs_remove(NULL) is legal: remove unneeded tests

    - remove unnecessary empty loops

    Signed-off-by: Jose R. Santos
    Cc:
    Signed-off-by: Andrew Morton

    Jose R. Santos
     
  • We should really call journal_abort() and not __journal_abort_hard() in
    case of errors. The latter call does not record the error in the journal
    superblock and thus filesystem won't be marked as with errors later (and
    user could happily mount it without any warning).

    Signed-off-by: Jan Kara
    Cc:
    Signed-off-by: Andrew Morton

    Jan Kara
     
  • change JBD_XXX macros to JBD2_XXX in JBD2/Ext4

    Signed-off-by: Mingming Cao
    Signed-off-by: "Theodore Ts'o"

    Mingming Cao
     
  • Convert kmalloc to kzalloc() and get rid of the memset().

    Signed-off-by: Mingming Cao

    Mingming Cao
     
  • This patch cleans up jbd_kmalloc and replace it with kmalloc directly

    Signed-off-by: Mingming Cao

    Mingming Cao
     
  • This patch cleans up jbd_kmalloc and replace it with kmalloc directly

    Signed-off-by: Mingming Cao

    Mingming Cao
     
  • JBD2: Replace slab allocations with page allocations

    JBD2 allocate memory for committed_data and frozen_data from slab. However
    JBD2 should not pass slab pages down to the block layer. Use page allocator
    pages instead. This will also prepare JBD for the large blocksize patchset.

    Signed-off-by: Christoph Lameter
    Signed-off-by: Mingming Cao

    Mingming Cao
     
  • JBD: Replace slab allocations with page allocations

    JBD allocate memory for committed_data and frozen_data from slab. However
    JBD should not pass slab pages down to the block layer. Use page allocator pages instead. This will also prepare JBD for the large blocksize patchset.

    Signed-off-by: Christoph Lameter
    Signed-off-by: Mingming Cao

    Mingming Cao
     
  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
    [IA64] fix non-numa build

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
    9p: remove sysctl
    9p: fix bad kconfig cross-dependency
    9p: soften invalidation in loose_mode
    9p: attach-per-user
    9p: rename uid and gid parameters
    9p: define session flags
    9p: Make transports dynamic

    Linus Torvalds