13 Oct, 2006

2 commits


10 Oct, 2006

1 commit


28 Sep, 2006

1 commit

  • The following patches reduce the size of the VFS inode structure by 28 bytes
    on a UP x86. (It would be more on an x86_64 system). This is a 10% reduction
    in the inode size on a UP kernel that is configured in a production mode
    (i.e., with no spinlock or other debugging functions enabled; if you want to
    save memory taken up by in-core inodes, the first thing you should do is
    disable the debugging options; they are responsible for a huge amount of bloat
    in the VFS inode structure).

    This patch:

    The filesystem or device-specific pointer in the inode is inside a union,
    which is pretty pointless given that all 30+ users of this field have been
    using the void pointer. Get rid of the union and rename it to i_private, with
    a comment to explain who is allowed to use the void pointer. This is just a
    cleanup, but it allows us to reuse the union 'u' for something something where
    the union will actually be used.

    Signed-off-by: "Theodore Ts'o"
    Cc: Steven Whitehouse
    Signed-off-by: Andrew Morton

    Theodore Ts'o
     

25 Sep, 2006

1 commit


09 Sep, 2006

1 commit

  • Fixing the following scenario:
    - A request is on the waiters list waiting for a reply from a remote node.
    - The request is the first one on the resource, so first_lkid is set.
    - The remote node fails causing recovery.
    - During recovery the requesting node becomes master.
    - The request is now processed locally instead of being a remote operation.
    - At this point we need to call confirm_master() on the resource since
    we're certain we're now the master node. This will clear first_lkid.
    - We weren't calling confirm_master(), so first_lkid was not being cleared
    causing subsequent requests on that resource to get stuck.

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

    David Teigland
     

07 Sep, 2006

1 commit


01 Sep, 2006

1 commit


25 Aug, 2006

1 commit

  • When a new lockspace was being created, the recoverd thread was being
    started for it before the lockspace was added to the global list of
    lockspaces. The new thread was looking up the lockspace in the global
    list and sometimes not finding it due to the race with the original thread
    adding it to the list. We need to add the lockspace to the global list
    before starting the thread instead of after, and if the new thread can't
    find the lockspace for some reason, it should return an error.

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

    David Teigland
     

24 Aug, 2006

3 commits

  • When there are no locks on a resource, the recover_locks() function fails
    to clear the NEW_MASTER flag by going directly to out, missing the line
    that clears the flag.

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

    David Teigland
     
  • When a status reply is sent for a lockspace that doesn't yet exist, the
    message sequence number from the sender was not being copied into the
    reply causing the sender to ignore the reply.

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

    David Teigland
     
  • The down-conversion optimization was resulting in the lkb flags being
    cleared because the stub message reply had no flags value set. Copy the
    current flags into the stub message so they'll be copied back into the lkb
    as part of processing the fake reply. Also add an assertion to catch this
    error more directly if it exists elsewhere.

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

    David Teigland
     

23 Aug, 2006

2 commits


21 Aug, 2006

1 commit

  • Introduce new function dlm_dump_rsb() to call within assertions instead of
    dlm_print_rsb(). The new function dumps info about all locks on the rsb
    in addition to rsb details.

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

    David Teigland
     

11 Aug, 2006

1 commit

  • Doing the kmap() while holding the spinlock was causing recursive spinlock
    problems. It seems the kmap was scheduling, although there was no warning
    as I'd expect. Patrick, do we need locking around the kmap?

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

    David Teigland
     

10 Aug, 2006

1 commit

  • When recoveries are aborted by other recoveries we can get replies to
    status or names requests that we've given up on. This can cause problems
    if we're making another request and receive an old reply. Add a sequence
    number to status/names requests and reject replies that don't match. A
    field already exists for the seq number that's used in other message
    types.

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

    David Teigland
     

09 Aug, 2006

4 commits


08 Aug, 2006

1 commit

  • This patch fixes the userland DLM unlock code so that it correctly returns the
    address of the userland lock status block in its completion AST.

    It fixes bug #201348

    Patrick

    Signed-Off-By: Patrick Caulfield
    Signed-off-by: Steven Whitehouse

    Patrick Caulfield
     

27 Jul, 2006

2 commits

  • > I think you must have an old version of the base kernel as well?
    > i_private no longer exists in struct inode, so you'll have to use
    > something else,

    I have that patch in my stack but didn't send it; for some reason I
    thought it was already changed in your git tree.

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

    David Teigland
     
  • On Wed, Jul 26, 2006 at 10:47:14AM +0100, Steven Whitehouse wrote:
    > Hi,
    >
    > I've applied all the patches you sent, but they don't build:

    Argh, sorry about that... when I fixed these a long time ago they somehow
    never got included in the quilt patches. I mistakenly assumed the quilt
    patches matched the source I had in front of me.

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

    David Teigland
     

26 Jul, 2006

4 commits


21 Jul, 2006

1 commit


20 Jul, 2006

2 commits


13 Jul, 2006

1 commit

  • This changes the way the dlm handles user locks. The core dlm is now
    aware of user locks so they can be dealt with more efficiently. There is
    no more dlm_device module which previously managed its own duplicate copy
    of every user lock.

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

    David Teigland
     

20 Jun, 2006

1 commit

  • Just spotted this one. The lockinfo structs are hashed by lockid but into a
    global structure. So that if there are two lockspaces with the same lockid all
    hell breaks loose. I'm not exactly sure what will happen but it can't be good!

    The attached patch moves the lockinfo_idr into the user_ls structure so that
    lockids are localised.

    patrick

    Signed-Off-By: Patrick Caulfield
    Signed-off-by: Steven Whitehouse

    Patrick Caulfield
     

19 Jun, 2006

1 commit


10 Jun, 2006

1 commit

  • Here's a patch which add 32/64 bit compat to the DLM IOs and tidies the
    structures for alignment.

    As it causes an ABI change I had few qualms about adding the extra flag for
    "is64bit" as it simply uses a byte that would have been padding.

    Cc: David Woodhouse
    Signed-off-by: Patrick Caulfield
    Signed-off-by: Steven Whitehouse

    Patrick Caulfield
     

26 May, 2006

1 commit


24 May, 2006

1 commit


03 May, 2006

1 commit

  • In dlm_grant_after_purge() we were holding a hash table read_lock while
    calling put_rsb() which potentially removes the rsb from the hash table,
    taking the same lock in write. Fix this by flagging rsb's ahead of time
    that have been purged. Then iteratively read_lock the hash table, find a
    flagged rsb, unlock, process rsb.

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

    David Teigland
     

28 Apr, 2006

2 commits