1. 02 4月, 2010 1 次提交
    • S
      ceph: fix leaked inode ref due to snap metadata writeback race · 819ccbfa
      Sage Weil 提交于
      We create a ceph_cap_snap if there is dirty cap metadata (for writeback to
      mds) OR dirty pages (for writeback to osd).  It is thus possible that the
      metadata has been written back to the MDS but the OSD data has not when
      the cap_snap is created.  This results in a cap_snap with dirty(caps) == 0.
      The problem is that cap writeback to the MDS isn't necessary, and a
      FLUSHSNAP cap op gets no ack from the MDS.  This leaves the cap_snap
      attached to the inode along with its inode reference.
      
      Fix the problem by dropping the cap_snap if it becomes 'complete' (all
      pages written out) and dirty(caps) == 0 in ceph_put_wrbuffer_cap_refs().
      
      Also, BUG() in __ceph_flush_snaps() if we encounter a cap_snap with
      dirty(caps) == 0.
      Signed-off-by: NSage Weil <sage@newdream.net>
      819ccbfa
  2. 23 3月, 2010 1 次提交
    • S
      ceph: fix snap rebuild condition · ec4318bc
      Sage Weil 提交于
      We were rebuilding the snap context when it was not necessary
      (i.e. when the realm seq hadn't changed _and_ the parent seq
      was still older), which caused page snapc pointers to not match
      the realm's snapc pointer (even though the snap context itself
      was identical).  This confused begin_write and put it into an
      endless loop.
      
      The correct logic is: rebuild snapc if _my_ realm seq changed, or
      if my parent realm's seq is newer than mine (and thus mine needs
      to be rebuilt too).
      Signed-off-by: NSage Weil <sage@newdream.net>
      ec4318bc
  3. 21 3月, 2010 1 次提交
  4. 24 2月, 2010 1 次提交
  5. 17 2月, 2010 1 次提交
  6. 22 12月, 2009 1 次提交
  7. 22 11月, 2009 1 次提交
  8. 07 10月, 2009 1 次提交
    • S
      ceph: snapshot management · 963b61eb
      Sage Weil 提交于
      Ceph snapshots rely on client cooperation in determining which
      operations apply to which snapshots, and appropriately flushing
      snapshotted data and metadata back to the OSD and MDS clusters.
      Because snapshots apply to subtrees of the file hierarchy and can be
      created at any time, there is a fair bit of bookkeeping required to
      make this work.
      
      Portions of the hierarchy that belong to the same set of snapshots
      are described by a single 'snap realm.'  A 'snap context' describes
      the set of snapshots that exist for a given file or directory.
      Signed-off-by: NSage Weil <sage@newdream.net>
      963b61eb