11 Jul, 2007

40 commits

  • Writes to a region marked as unwritten might result in a record split or
    merge. We can support splits by making minor changes to the existing insert
    code. Merges require left rotations which mostly re-use right rotation
    support functions.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • The top level calls and logic for growing a tree can easily be abstracted
    out of ocfs2_insert_extent() into a seperate function - ocfs2_grow_tree().

    This allows future code to easily grow btrees when needed.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • Now that we have a method to deallocate blocks from them, each node should
    allocate extent blocks from their local suballocator file.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • Deallocation of suballocator blocks, most notably extent blocks, might
    involve multiple suballocator inodes.

    The locking for this can get extremely complicated, especially when the
    suballocator inodes to delete from aren't known until deep within an
    unrelated codepath.

    Implement a simple scheme for recording the blocks to be unlinked so that
    the actual deallocation can be done in a context which won't deadlock.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • We don't want to submit buffer_new blocks for read i/o. This actually won't
    happen right now because those requests during an allocating write are all nicely
    aligned. It's probably a good idea to provide an explicit check though.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • Implement cluster consistent shared writeable mappings using the
    ->page_mkwrite() callback.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • ocfs2_mkwrite() will want this so that it can add some mmap specific checks
    before asking for a write.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • Use some ideas from the new-aops patch series and turn
    ocfs2_buffered_write_cluster() into a 2 stage operation with the caller
    copying data in between. The code now understands multiple cluster writes as
    a result of having to deal with a full page write for greater than 4k pages.

    This sets us up to easily call into the write path during ->page_mkwrite().

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • Use of the alloc sem during truncate was too narrow - we want to protect
    the i_size change and page truncation against mmap now.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • ocfs2 will attempt to assign the node the slot# provided in the mount
    option. Failure to assign the preferred slot is not an error. This small
    feature can be useful for automated testing.

    Signed-off-by: Sunil Mushran
    Signed-off-by: Mark Fasheh

    Sunil Mushran
     
  • Replacing memset(,0,PAGE_SIZE) with clear_page() in
    fs/ocfs2/dlm/dlmrecovery.c

    Signed-off-by: Shani Moideen
    Signed-off-by: Mark Fasheh

    Shani Moideen
     
  • Signed-off-by: Christoph Hellwig
    Signed-off-by: Mark Fasheh

    Christoph Hellwig
     
  • Tell o2cb_region_dev_write() to wake up if rmdir(2) happens on the
    heartbeat region while it is starting up. Then o2hb_region_dev_write()
    can check to see if it is alive and act accordingly. This prevents a hang
    (not being woken) and a crash (if it's woken by a signal).

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • Removing the local node configuration out from underneath a running
    heartbeat is "bad". Provide an API in the ocfs2 nodemanager to request
    a configfs dependancy on the local node, then use it in heartbeat.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • ocfs2 mounts require a heartbeat region. Use the new configfs_depend_item()
    facility to actually depend on them so they can't go away from under us.

    First, teach cluster/nodemanager.c to depend an item on the o2cb subsystem.
    Then teach o2hb_register_callbacks to take a UUID and depend on the
    appropriate region. Finally, teach all users of o2hb to pass a UUID or
    NULL if they don't require a pin.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • Sometimes other drivers depend on particular configfs items. For
    example, ocfs2 mounts depend on a heartbeat region item. If that
    region item is removed with rmdir(2), the ocfs2 mount must BUG or go
    readonly. Not happy.

    This provides two additional API calls: configfs_depend_item() and
    configfs_undepend_item(). A client driver can call
    configfs_depend_item() on an existing item to tell configfs that it is
    depended on. configfs will then return -EBUSY from rmdir(2) for that
    item. When the item is no longer depended on, the client driver calls
    configfs_undepend_item() on it.

    These API cannot be called underneath any configfs callbacks, as
    they will conflict. They can block and allocate. A client driver
    probably shouldn't calling them of its own gumption. Rather it should
    be providing an API that external subsystems call.

    How does this work? Imagine the ocfs2 mount process. When it mounts,
    it asks for a heart region item. This is done via a call into the
    heartbeat code. Inside the heartbeat code, the region item is looked
    up. Here, the heartbeat code calls configfs_depend_item(). If it
    succeeds, then heartbeat knows the region is safe to give to ocfs2.
    If it fails, it was being torn down anyway, and heartbeat can gracefully
    pass up an error.

    [ Fixed some bad whitespace in configfs.txt. --Mark ]

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • Add a notification callback, ops->disconnect_notify(). It has the same
    prototype as ->drop_item(), but it will be called just before the item
    linkage is broken. This way, configfs users who want to do work while
    the object is still in the heirarchy have a chance.

    Client drivers will still need to config_item_put() in their
    ->drop_item(), if they implement it. They need do nothing in
    ->disconnect_notify(). They don't have to provide it if they don't
    care. But someone who wants to be notified before ci_parent is set to
    NULL can now be notified.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • Seems copied from sysfs, but I don't see a reason here nor there to use
    a semaphore instead of a mutex. Convert.

    Signed-off-by: Johannes Berg
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Johannes Berg
     
  • Convert the su_sem member of struct configfs_subsystem to a struct
    mutex, as that's what it is. Also convert all the users and update
    Documentation/configfs.txt and Documentation/configfs_example.c
    accordingly.

    [ Conflict in fs/dlm/config.c with commit
    3168b0780d06ace875696f8a648d04d6089654e5 manually resolved. --Mark ]

    Inspired-by: Satyam Sharma
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • Configfs being based upon sysfs code, config_group_find_obj() is probably
    so named because of the similar kset_find_obj() in sysfs. However,
    "kobject"s in sysfs become "config_item"s in configfs, so let's call it
    config_group_find_item() instead, for sake of uniformity, and make
    corresponding change in the users of this function.

    BTW a crucial difference between kset_find_obj and config_group_find_item
    is in locking expectations. kset_find_obj does its locking by itself, but
    config_group_find_item expects the *caller* to do the locking. The reason
    for this: kset's have their own locks, config_group's don't but instead
    rely on the subsystem mutex. And, subsystem needn't necessarily be around
    when config_group_find_item() is called.

    So let's state these locking semantics explicitly, and rectify the comment,
    otherwise bugs could continue to occur in future, as they did in the past
    (refer commit d82b8191e238 in gfs2-2.6-fixes.git).

    [ I also took the opportunity to fix some bad whitespace and
    double-empty lines. --Joel ]

    [ Conflict in fs/dlm/config.c with commit
    3168b0780d06ace875696f8a648d04d6089654e5 manually resolved. --Mark ]

    Signed-off-by: Satyam Sharma
    Cc: David Teigland
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Satyam Sharma
     
  • fs/dlm/config.c contains a useful generic macro called __CONFIGFS_ATTR
    that is similar to sysfs' __ATTR macro that makes defining attributes
    easy for any user of configfs. Separate it out into configfs.h so that
    other users (forthcoming in dynamic netconsole patchset) can use it too.

    Signed-off-by: Satyam Sharma
    Cc: David Teigland
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Satyam Sharma
     
  • 1. item.c:config_item_cleanup() is a private function (only called by
    config_item_release() in same file). However, it is spuriously
    exported in include/linux/configfs.h, so remove that export and make
    it static in item.c. Also, it is no longer exported / interface
    function, so no need to give comment for this function (the comment
    was stating obvious thing, anyway).

    2. Kernel-doc comment format does not allow empty line between end of
    comment and start of function (declaration line). There were several
    such spurious empty lines in item.c, so fix them.

    fs/configfs/item.c | 15 +++------------
    include/linux/configfs.h | 1 -
    2 files changed, 3 insertions(+), 13 deletions(-)

    Signed-off-by: Satyam Sharma
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Satyam Sharma
     
  • The attribute store/show code currently limits attributes at PAGE_SIZE.
    This code comes from sysfs, where it still works that way.

    However, PAGE_SIZE is not constant. A 16k attribute string works on
    ia64 but not on x86. Really a subsystem shouldn't allow different
    attribute sizes based on platform.

    As such, limit all simple attributes to 4k. This works on all
    platforms, and is consistent with all current code.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc:
    mmc: at91_mci: fix hanging and rework to match flowcharts
    mmc: at91_mci typo
    sdhci: Fix "Unexpected interrupt" handling
    mmc: fix silly copy-and-paste error
    mmc: move layer init and workqueue to core file
    mmc: refactor host class handling
    mmc: refactor bus operations
    sdhci: add ene controller id
    mmc: bounce requests for simple hosts

    Linus Torvalds
     
  • * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (40 commits)
    bonding/bond_main.c: make 2 functions static
    ps3: gigabit ethernet driver for PS3, take3
    [netdrvr] Fix dependencies for ax88796 ne2k clone driver
    eHEA: Capability flag for DLPAR support
    Remove sk98lin ethernet driver.
    sunhme.c:quattro_pci_find() must be __devinit
    bonding / ipv6: no addrconf for slaves separately from master
    atl1: remove write-only var in tx handler
    macmace: use "unsigned long flags;"
    Cleanup usbnet_probe() return value handling
    netxen: deinline and sparse fix
    eeprom_93cx6: shorten pulse timing to match spec (bis)
    phylib: Add Marvell 88E1112 phy id
    phylib: cleanup marvell.c a bit
    AX88796 network driver
    IOC3: Switch to pci refcounting safe APIs
    e100: Fix Tyan motherboard e100 not receiving IPMI commands
    QE Ethernet driver writes to wrong register to mask interrupts
    rrunner.c:rr_init() must be __devinit
    tokenring/3c359.c:xl_init() must be __devinit
    ...

    Linus Torvalds
     
  • * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev: (32 commits)
    [libata] sata_mv: print out additional chip info during probe
    [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info
    [libata] AHCI: Add support for Marvell AHCI-like chips (initially 6145)
    [libata] Clean up driver udma_mask initializers
    libata: Support chips with 64K PRD quirk
    Add a PCI ID for santa rosa's PATA controller.
    sata_sil24: sil24_interrupt() micro-optimisation
    Add irq_flags to struct pata_platform_info
    sata_promise: cleanups
    [libata] pata_ixp4xx: kill unused var
    ata_piix: fix pio/mwdma programming
    [libata] ahci: minor internal cleanups
    [ATA] Add named constant for ATAPI command DEVICE RESET
    [libata] sata_sx4, sata_via: minor documentation updates
    [libata] ahci: minor internal cleanups
    [libata] ahci: Factor out SATA port init into a separate function
    [libata] pata_sil680: minor cleanups from benh
    [libata] sata_sx4: named constant cleanup
    [libata] pata_ixp4xx: convert to new EH
    [libata] pdc_adma: Reorder initializers with a couple structs
    ...

    Linus Torvalds
     
  • * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (62 commits)
    [MIPS] PNX8550: Cleanup proc code.
    [MIPS] WRPPMC: Fix build.
    [MIPS] Yosemite: Fix modpost warnings.
    [MIPS] Change names of local variables to silence sparse
    [MIPS] SB1: Fix modpost warning.
    [MIPS] PNX: Fix modpost warnings.
    [MIPS] Alchemy: Fix modpost warnings.
    [MIPS] Non-FPAFF: Fix warning.
    [MIPS] DEC: Fix modpost warning.
    [MIPS] MIPSsim: Enable MIPSsim virtual network driver.
    [MIPS] Delete Ocelot 3 support.
    [MIPS] remove LASAT Networks platforms support
    [MIPS] Early check for SMTC kernel on non-MT processor
    [MIPS] Add debugfs files to show fpuemu statistics
    [MIPS] Add some debugfs files to debug unaligned accesses
    [MIPS] rbtx4938: Fix secondary PCIC and glue internal NICs
    [MIPS] tc35815: Load MAC address via platform_device
    [MIPS] Move FPU affinity code into separate file.
    [MIPS] Make ioremap() work on TX39/49 special unmapped segment
    [MIPS] rbtx4938: Update and minimize defconfig
    ...

    Linus Torvalds
     
  • * git://git.infradead.org/~dwmw2/battery-2.6:
    [BATTERY] ds2760 W1 slave
    [BATTERY] One Laptop Per Child power/battery driver
    [BATTERY] Apple PMU driver
    [BATTERY] 1-Wire ds2760 chip battery driver
    [BATTERY] APM emulation driver for class batteries
    [BATTERY] pda_power platform driver
    [BATTERY] Universal power supply class (was: battery class)

    Linus Torvalds
     
  • * 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
    [S390] vmlogrdr function annotation.
    [S390] s390: rename CPU_IDLE to S390_CPU_IDLE
    [S390] cio: Remove prototype for non-existing function cmf_reset().
    [S390] zcrypt: fix request timeout handling
    [S390] system call optimization.
    [S390] dasd: Avoid compile warnings on !CONFIG_DASD_PROFILE
    [S390] Remove volatile from atomic_t
    [S390] Program check in diag 210 under 31 bit
    [S390] Bogomips calculation for 64 bit.
    [S390] smp: Merge smp_count_cpus() and smp_get_save_areas().
    [S390] zcore: Fix __user annotation.
    [S390] fixed cdl-format detection.
    [S390] sclp: Test facility list before executing a service call.
    [S390] sclp: introduce some new interfaces.
    [S390] Fixed comment typo.
    [S390] vmcp cleanup

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (57 commits)
    [GFS2] Accept old format NFS filehandles
    [GFS2] Small fixes to logging code
    [DLM] dump more lock values
    [GFS2] Remove i_mode passing from NFS File Handle
    [GFS2] Obtaining no_formal_ino from directory entry
    [GFS2] git-gfs2-nmw-build-fix
    [GFS2] System won't suspend with GFS2 file system mounted
    [GFS2] remounting w/o acl option leaves acls enabled
    [GFS2] inode size inconsistency
    [DLM] Telnet to port 21064 can stop all lockspaces
    [GFS2] Fix gfs2_block_truncate_page err return
    [GFS2] Addendum to the journaled file/unmount patch
    [GFS2] Simplify multiple glock aquisition
    [GFS2] assertion failure after writing to journaled file, umount
    [GFS2] Use zero_user_page() in stuffed_readpage()
    [GFS2] Remove bogus '\0' in rgrp.c
    [GFS2] Journaled file write/unstuff bug
    [DLM] don't require FS flag on all nodes
    [GFS2] Fix deallocation issues
    [GFS2] return conflicts for GETLK
    ...

    Linus Torvalds
     
  • * 'splice-2.6.23' of git://git.kernel.dk/data/git/linux-2.6-block:
    pipe: add documentation and comments
    pipe: change the ->pin() operation to ->confirm()
    Remove remnants of sendfile()
    xip sendfile removal
    splice: completely document external interface with kerneldoc
    sendfile: remove bad_sendfile() from bad_file_ops
    shmem: convert to using splice instead of sendfile()
    relay: use splice_to_pipe() instead of open-coding the pipe loop
    pipe: allow passing around of ops private pointer
    splice: divorce the splice structure/function definitions from the pipe header
    splice: relay support
    sendfile: convert nfsd to splice_direct_to_actor()
    sendfile: convert nfs to using splice_read()
    loop: convert to using splice_direct_to_actor() instead of sendfile()
    splice: add void cookie to the actor data
    sendfile: kill generic_file_sendfile()
    sendfile: remove .sendfile from filesystems that use generic_file_sendfile()
    sys_sendfile: switch to using ->splice_read, if available
    vmsplice: add vmsplice-to-user support
    splice: abstract out actor data

    Linus Torvalds
     
  • * 'trivial-2.6.23' of git://git.kernel.dk/data/git/linux-2.6-block:
    Documentation/block/barrier.txt is not in sync with the actual code: - blk_queue_ordered() no longer has a gfp_mask parameter - blk_queue_ordered_locked() no longer exists - sd_prepare_flush() looks slightly different
    Use list_for_each_entry() instead of list_for_each() in the block device
    Make a "menuconfig" out of the Kconfig objects "menu, ..., endmenu",
    block/Kconfig already has its own "menuconfig" so remove these
    Use menuconfigs instead of menus, so the whole menu can be disabled at once
    cfq-iosched: fix async queue behaviour
    unexport bio_{,un}map_user
    Remove legacy CDROM drivers
    [PATCH] fix request->cmd == INT cases
    cciss: add new controller support for P700m
    [PATCH] Remove acsi.c
    [BLOCK] drop unnecessary bvec rewinding from flush_dry_bio_endio
    [PATCH] cdrom_sysctl_info fix
    blk_hw_contig_segment(): bad segment size checks
    [TRIVIAL PATCH] Kill blk_congestion_wait() stub for !CONFIG_BLOCK

    Linus Torvalds
     
  • Signed-off-by: Adrian Bunk
    Cc: Chad Tindel
    Cc: Jay Vosburgh
    Signed-off-by: Andrew Morton
    Signed-off-by: Jeff Garzik

    Adrian Bunk
     
  • Hi,

    This is the third submission of the network driver for PS3.
    The differences from the previous one are:

    - renamed source file names so that their prefix can match
    with the module name
    - added cbe-oss-dev@ozlabs.org line for MAINTAINER file
    - changed some in copyright comments

    If there are no more comments, please apply for 2.6.23.

    Thank you

    --
    Subject: PS3: Ethernet driver

    From: Masakazu Mokuno

    Add Gigabit Ethernet support for the PS3 game console. The module will
    be called ps3_gelic.

    CC: Geoff Levand
    Signed-off-by: Masakazu Mokuno
    Signed-off-by: Jeff Garzik

    Masakazu Mokuno
     
  • It needs writesb(), not available on all platforms.

    Signed-off-by: Jeff Garzik

    Jeff Garzik
     
  • This patch introduces a capability flag that is used by the DLPAR userspace
    tool to check which DLPAR features are supported by the eHEA driver.

    Missing goto has been included.

    Signed-off-by: Jan-Bernd Themann
    Signed-off-by: Jeff Garzik

    Jan-Bernd Themann
     
  • Unmaintained, superceded by skge.

    Prodded to deletion by Adrian Bunk. Acked by Stephen Hemminger.

    Signed-off-by: Jeff Garzik

    Jeff Garzik
     
  • This patch fixes the following section mismatch:

    ...
    MODPOST vmlinux
    WARNING: drivers/built-in.o(.text+0x272f8b): Section mismatch: reference to .init.text:quattro_pci_find (between 'happy_meal_pci_probe' and 'happy_meal_pci_remove')
    ...

    Signed-off-by: Adrian Bunk
    Signed-off-by: Jeff Garzik

    Adrian Bunk
     
  • At present, when a device is enslaved to bonding, if ipv6 is
    active then addrconf will be initated on the slave (because it is closed
    then opened during the enslavement processing). This causes DAD and RS
    packets to be sent from the slave. These packets in turn can confuse
    switches that perform ipv6 snooping, causing them to incorrectly update
    their forwarding tables (if, e.g., the slave being added is an inactve
    backup that won't be used right away) and direct traffic away from the
    active slave to a backup slave (where the incoming packets will be
    dropped).

    This patch alters the behavior so that addrconf will only run on
    the master device itself. I believe this is logically correct, as it
    prevents slaves from having an IPv6 identity independent from the
    master. This is consistent with the IPv4 behavior for bonding.

    This is accomplished by (a) having bonding set IFF_SLAVE sooner
    in the enslavement processing than currently occurs (before open, not
    after), and (b) having ipv6 addrconf ignore UP and CHANGE events on
    slave devices.

    The eql driver also uses the IFF_SLAVE flag. I inspected eql,
    and I believe this change is reasonable for its usage of IFF_SLAVE, but
    I did not test it.

    Signed-off-by: Jay Vosburgh
    Signed-off-by: Jeff Garzik

    Jay Vosburgh