1. 25 Jan, 2008 1 commit
    • Mark Fasheh's avatar
      [PATCH 1/2] ocfs2: add flock lock type · cf8e06f1
      Mark Fasheh authored
      
      This adds a new dlmglue lock type which is intended to back flock()
      requests.
      
      Since these locks are driven from userspace, usage rules are much more
      liberal than the typical Ocfs2 internal cluster lock. As a result, we can't
      make use of most dlmglue features - lock caching and lock level
      optimizations in particular. Additionally, userspace is free to deadlock
      itself, so we have to deal with that in the same way as the rest of the
      kernel - by allowing a signal to abort a lock request.
      
      In order to keep ocfs2_cluster_lock() complexity down, ocfs2_file_lock()
      does it's own dlm coordination. We still use the same helper functions
      though, so duplicated code is kept to a minimum.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      cf8e06f1
  2. 12 Oct, 2007 1 commit
  3. 10 Jul, 2007 3 commits
    • Mark Fasheh's avatar
      ocfs2: Support xfs style space reservation ioctls · b2580103
      Mark Fasheh authored
      
      We re-use the RESVSP/UNRESVSP ioctls from xfs which allow the user to
      allocate and deallocate regions to a file without zeroing data or changing
      i_size.
      
      Though renamed, the structure passed in from user is identical to struct
      xfs_flock64. The three fields that are actually used right now are l_whence,
      l_start and l_len.
      
      This should get ocfs2 immediate compatibility with userspace software using
      the pre-existing xfs ioctls.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      b2580103
    • Mark Fasheh's avatar
      ocfs2: Support creation of unwritten extents · 2ae99a60
      Mark Fasheh authored
      
      This can now be trivially supported with re-use of our existing extend code.
      
      ocfs2_allocate_unwritten_extents() takes a start offset and a byte length
      and iterates over the inode, adding extents (marked as unwritten) until len
      is reached. Existing extents are skipped over.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      2ae99a60
    • Mark Fasheh's avatar
      ocfs2: support writing of unwritten extents · b27b7cbc
      Mark Fasheh authored
      
      Update the write code to detect when the user is asking to write to an
      unwritten extent. Like writing to a hole, we must zero the region between
      the write and the cluster boundaries. Most of the existing cluster zeroing
      logic can be re-used with some additional checks for the unwritten flag on
      extent records.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      b27b7cbc
  4. 02 May, 2007 1 commit
  5. 26 Apr, 2007 2 commits
    • Mark Fasheh's avatar
      ocfs2: teach ocfs2_file_aio_write() about sparse files · 9517bac6
      Mark Fasheh authored
      
      Unfortunately, ocfs2 can no longer make use of generic_file_aio_write_nlock()
      because allocating writes will require zeroing of pages adjacent to the I/O
      for cluster sizes greater than page size.
      
      Implement a custom file write here, which can order page locks for zeroing.
      This also has the advantage that cluster locks can easily be ordered outside
      of the page locks.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      9517bac6
    • Mark Fasheh's avatar
      ocfs2: sparse b-tree support · dcd0538f
      Mark Fasheh authored
      
      Introduce tree rotations into the b-tree code. This will allow ocfs2 to
      support sparse files. Much of the added code is designed to be generic (in
      the ocfs2 sense) so that it can later be re-used to implement large
      extended attributes.
      
      This patch only adds the rotation code and does minimal updates to callers
      of the extent api.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      dcd0538f
  6. 12 Feb, 2007 1 commit
  7. 01 Dec, 2006 3 commits
  8. 28 Mar, 2006 1 commit
  9. 03 Jan, 2006 1 commit