07 Oct, 2010

6 commits


18 Sep, 2010

2 commits


17 Sep, 2010

2 commits

  • Sending multiple flushsnap messages is problematic because we ignore
    the response if the tid doesn't match, and the server may only respond to
    each one once. It's also a waste.

    So, skip cap_snaps that are already on the flushing list, unless the caller
    tells us to resend (because we are reconnecting).

    Signed-off-by: Sage Weil

    Sage Weil
     
  • The cap_snap creation/queueing relies on both the current i_head_snapc
    _and_ the i_snap_realm pointers being correct, so that the new cap_snap
    can properly reference the old context and the new i_head_snapc can be
    updated to reference the new snaprealm's context. To fix this, we:

    - move inodes completely to the new (split) realm so that i_snap_realm
    is correct, and
    - generate the new snapc's _before_ queueing the cap_snaps in
    ceph_update_snap_trace().

    Signed-off-by: Sage Weil

    Sage Weil
     

15 Sep, 2010

2 commits


14 Sep, 2010

1 commit

  • When adding the readdir results to the cache, ceph_set_dentry_offset was
    clobbered our just-set offset. This can cause the readdir result offsets
    to get out of sync with the server. Add an argument to the helper so
    that it does not.

    This bug was introduced by 1cd3935bedccf592d44343890251452a6dd74fc4.

    Signed-off-by: Sage Weil

    Sage Weil
     

12 Sep, 2010

4 commits


27 Aug, 2010

3 commits


26 Aug, 2010

2 commits

  • Just scrubbing some warnings so I can see real problem ones in the build
    noise. For 32bit we need to coax gcc politely into believing we really
    honestly intend to the casts. Using (u64)(unsigned long) means we cast from
    a pointer to a type of the right size and then extend it. This stops the
    warning spew.

    Signed-off-by: Alan Cox
    Signed-off-by: Sage Weil

    Alan Cox
     
  • ceph_get_inode() returns an ERR_PTR and it doesn't return a NULL.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Sage Weil

    Dan Carpenter
     

25 Aug, 2010

2 commits


23 Aug, 2010

8 commits

  • Fix argument order. We want to move the item to the end of the list, not
    change the position of the head.

    Signed-off-by: Henry C Chang
    Signed-off-by: Sage Weil

    Henry C Chang
     
  • If we hold the EXCL cap, we cannot trust the dir stats from the MDS (num
    files, subdirs) and must not incorrectly conclude that the directory is
    empty. If we do, we get can bad results from lookup (bad ENOENT) and
    bad readdir results.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • This allows code outside of the mm core to safely manipulate page state
    and not worry about the other accounting. Not using these routines means
    that some code will lose track of the accounting and we get bugs. This
    has happened once already.

    Signed-off-by: Michael Rubin
    Signed-off-by: Sage Weil

    Michael Rubin
     
  • When making a request in the virtual snapdir or a snapped portion of the
    namespace, we should choose the MDS based on the first nonsnap parent (and
    its caps). If that is not the best place, we will get forward hints to
    find the right MDS in the cluster. This fixes ESTALE errors when using
    the .snap directory and namespace with multiple MDSs.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • When a realm is updated, we need to queue writeback on inodes in that
    realm _and_ its children. Otherwise, if the inode gets cowed on the
    server, we can get a hang later due to out-of-sync cap/snap state.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • When we snapshot dirty metadata that needs to be written back to the MDS,
    include dirty xattr metadata. Make the capsnap reference the encoded
    xattr blob so that it will be written back in the FLUSHSNAP op.

    Also fix the capsnap creation guard to include dirty auth or file bits,
    not just tests specific to dirty file data or file writes in progress
    (this fixes auth metadata writeback).

    Signed-off-by: Sage Weil

    Sage Weil
     
  • We should include the xattr metadata blob in the cap update message any
    time we are flushing dirty state, NOT just when we are also dropping the
    cap. This fixes async xattr writeback.

    Also, clean up the code slightly to avoid duplicating the bit test.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • The use of a completion when waiting for session shutdown during umount is
    inappropriate, given the complexity of the condition. For multiple MDS's,
    this resulted in the umount thread spinning, often preventing the session
    close message from being processed in some cases.

    Switch to a waitqueue and defined a condition helper. This cleans things
    up nicely.

    Signed-off-by: Sage Weil

    Sage Weil
     

11 Aug, 2010

1 commit


06 Aug, 2010

1 commit

  • Normally, if the Fb cap bit is being revoked, we queue an async writeback.
    If there is no dirty data but we still hold the cap, this leaves the
    client sitting around doing nothing until the cap timeouts expire and the
    cap is released on its own (as it would have been without the revocation).

    Instead, only queue writeback if the bit is actually used (i.e., we have
    dirty data). If not, we can reply to the revocation immediately.

    Signed-off-by: Sage Weil

    Sage Weil
     

04 Aug, 2010

3 commits


03 Aug, 2010

3 commits