18 Apr, 2008

3 commits

  • The last bit of classic stack used directly in ocfs2 code is o2hb.
    Specifically, the check for heartbeat during mount and the call to
    ocfs2_hb_ctl during unmount.

    We create an extra API, ocfs2_cluster_hangup(), to encapsulate the call
    to ocfs2_hb_ctl. Other stacks will just leave hangup() empty.

    The check for heartbeat is moved into ocfs2_cluster_connect(). It will
    be matched by a similar check for other stacks.

    With this change, only stackglue.c includes cluster/ headers.

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

    Joel Becker
     
  • This step introduces a cluster stack agnostic API for initializing and
    exiting. fs/ocfs2/dlmglue.c no longer uses o2cb/o2dlm knowledge to
    connect to the stack. It is all handled in stackglue.c.

    heartbeat.c no longer needs to know how it gets called.
    ocfs2_do_node_down() is now a clean recovery trigger.

    The big gotcha is the ordering of initializations and de-initializations done
    underneath ocfs2_cluster_connect(). ocfs2_dlm_init() used to do all
    o2dlm initialization in one block. Thus, the o2dlm functionality of
    ocfs2_cluster_connect() is very straightforward. ocfs2_dlm_shutdown(),
    however, did a few things between de-registration of the eviction
    callback and actually shutting down the domain. Now de-registration and
    shutdown of the domain are wrapped within the single
    ocfs2_cluster_disconnect() call. I've checked the code paths to make
    sure we can safely tear down things in ocfs2_dlm_shutdown() before
    calling ocfs2_cluster_disconnect(). The filesystem has already set
    itself to ignore the callback.

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

    Joel Becker
     
  • The old recovery map was a bitmap of node numbers. This was sufficient
    for the maximum node number of 254. Going forward, we want node numbers
    to be UINT32. Thus, we need a new recovery map.

    Note that we can't keep track of slots here. We must write down the
    node number to recovery *before* we get the locks needed to convert a
    node number into a slot number.

    The recovery map is now an array of unsigned ints, max_slots in size.
    It moves to journal.c with the rest of recovery.

    Because it needs to be initialized, we move all of recovery initialization
    into a new function, ocfs2_recovery_init(). This actually cleans up
    ocfs2_initialize_super() a little as well. Following on, recovery cleaup
    becomes part of ocfs2_recovery_exit().

    A number of node map functions are rendered obsolete and are removed.

    Finally, waiting on recovery is wrapped in a function rather than naked
    checks on the recovery_event. This is a cleanup from Mark.

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

    Joel Becker
     

04 Mar, 2008

1 commit

  • This patch contains the following cleanups that are now possible:
    - make the following needlessly global functions static:
    - dlmglue.c:ocfs2_process_blocked_lock()
    - heartbeat.c:ocfs2_node_map_init()
    - #if 0 the following unused global function plus support functions:
    - heartbeat.c:ocfs2_node_map_is_only()

    Signed-off-by: Adrian Bunk
    Signed-off-by: Mark Fasheh

    Adrian Bunk
     

26 Jan, 2008

2 commits

  • The node maps that are set/unset by these votes are no longer relevant, thus
    we can remove the mount and umount votes. Since those are the last two
    remaining votes, we can also remove the entire vote infrastructure.

    The vote thread has been renamed to the downconvert thread, and the small
    amount of functionality related to managing it has been moved into
    fs/ocfs2/dlmglue.c. All references to votes have been removed or updated.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • Now that the dlm exposes domain information to us, we don't need generic
    node up / node down callbacks. And since the DLM is only telling us when a
    node goes down unexpectedly, we no longer need to optimize away node down
    callbacks via the umount map.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     

18 Jul, 2007

1 commit

  • Rather than using a tri-state integer for the wait flag in
    call_usermodehelper_exec, define a proper enum, and use that. I've
    preserved the integer values so that any callers I've missed should
    still work OK.

    Signed-off-by: Jeremy Fitzhardinge
    Cc: James Bottomley
    Cc: Randy Dunlap
    Cc: Christoph Hellwig
    Cc: Andi Kleen
    Cc: Paul Mackerras
    Cc: Johannes Berg
    Cc: Ralf Baechle
    Cc: Bjorn Helgaas
    Cc: Joel Becker
    Cc: Tony Luck
    Cc: Kay Sievers
    Cc: Srivatsa Vaddagiri
    Cc: Oleg Nesterov
    Cc: David Howells

    Jeremy Fitzhardinge
     

11 Jul, 2007

1 commit

  • 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
     

15 Mar, 2007

1 commit


08 Dec, 2006

1 commit

  • This allows users to format an ocfs2 file system with a special flag,
    OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT. When the file system sees this flag, it
    will not use any cluster services, nor will it require a cluster
    configuration, thus acting like a 'local' file system.

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

    Sunil Mushran
     

02 Mar, 2006

1 commit


04 Jan, 2006

1 commit