1. 27 4月, 2007 11 次提交
    • M
      ocfs2: Remember rw lock level during direct io · 7cdfc3a1
      Mark Fasheh 提交于
      Cluster locking might have been redone because a direct write won't
      complete, so this needs to be reflected in the iocb.
      Signed-off-by: NMark Fasheh <mark.fasheh@oracle.com>
      7cdfc3a1
    • M
      ocfs2: Fix up i_blocks calculation to know about holes · 8110b073
      Mark Fasheh 提交于
      Older file systems which didn't support holes did a dumb calculation of
      i_blocks based on i_size. This is no longer accurate, so fix things up to
      take actual allocation into account.
      Signed-off-by: NMark Fasheh <mark.fasheh@oracle.com>
      8110b073
    • M
      ocfs2: Read from an unwritten extent returns zeros · 49cb8d2d
      Mark Fasheh 提交于
      Return an optional extent flags field from our lookup functions and wire up
      callers to treat unwritten regions as holes for the purpose of returning
      zeros to the user.
      Signed-off-by: NMark Fasheh <mark.fasheh@oracle.com>
      49cb8d2d
    • M
      ocfs2: make room for unwritten extents flag · e48edee2
      Mark Fasheh 提交于
      Due to the size of our group bitmaps, we'll never have a leaf node extent
      record with more than 16 bits worth of clusters. Split e_clusters up so that
      leaf nodes can get a flags field where we can mark unwritten extents.
      Interior nodes whose length references all the child nodes beneath it can't
      split their e_clusters field, so we use a union to preserve sizing there.
      Signed-off-by: NMark Fasheh <mark.fasheh@oracle.com>
      e48edee2
    • M
      ocfs2: Use own splice write actor · 6af67d82
      Mark Fasheh 提交于
      We need to fill holes during a splice write. Provide our own splice write
      actor which can call ocfs2_file_buffered_write() with a splice-specific
      callback.
      Signed-off-by: NMark Fasheh <mark.fasheh@oracle.com>
      6af67d82
    • M
      ocfs2: zero tail of sparse files on truncate · 60b11392
      Mark Fasheh 提交于
      Since we don't zero on extend anymore, truncate needs to be fixed up to zero
      the part of a file between i_size and and end of it's cluster. Otherwise a
      subsequent extend could expose bad data.
      
      This introduced a new helper, which can be used in ocfs2_write().
      Signed-off-by: NMark Fasheh <mark.fasheh@oracle.com>
      60b11392
    • M
      ocfs2: teach ocfs2_file_aio_write() about sparse files · 9517bac6
      Mark Fasheh 提交于
      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: NMark Fasheh <mark.fasheh@oracle.com>
      9517bac6
    • M
      ocfs2: abstract out allocation locking · abf8b156
      Mark Fasheh 提交于
      Right now, file allocation for ocfs2 is done within ocfs2_extend_file(),
      which is either called from ->setattr() (for an i_size change), or at the
      top of ocfs2_file_aio_write().
      
      Inodes on file systems with sparse file support will want to do their
      allocation during the actual write call.
      
      In either case the cluster locking decisions are the same. We abstract out
      that code into a new function, ocfs2_lock_allocators() which will be used by
      a later patch to enable writing to sparse files.
      
      This also provides a nice cleanup of ocfs2_extend_allocation().
      Signed-off-by: NMark Fasheh <mark.fasheh@oracle.com>
      abf8b156
    • M
      ocfs2: teach extend/truncate about sparse files · 3a0782d0
      Mark Fasheh 提交于
      For ocfs2_truncate_file(), we eliminate the "simple" truncate case which no
      longer exists since i_size is not tied to i_clusters. In
      ocfs2_extend_file(), we skip the allocation / page zeroing code for file
      systems which understand sparse files.
      
      The core truncate code is changed to do a bottom up tree traversal. This
      gets abstracted out into it's own function. To make things more readable,
      most of the special case handling for in-inode extents from
      ocfs2_do_truncate() is also removed.
      
      Though write support for sparse files comes in a later patch, we at least
      update ocfs2_prepare_inode_for_write() to skip allocation for sparse files.
      Signed-off-by: NMark Fasheh <mark.fasheh@oracle.com>
      3a0782d0
    • M
      ocfs2: sparse b-tree support · dcd0538f
      Mark Fasheh 提交于
      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: NMark Fasheh <mark.fasheh@oracle.com>
      dcd0538f
    • M
      ocfs2: filter more error prints · a9f5f707
      Mark Fasheh 提交于
      We don't want to print anything at all in ocfs2_lookup() when getting an
      error from ocfs2_iget() - it could be something as innocuous as a signal
      being detected in the dlm.
      
      ocfs2_permission() should filter on -ENOENT which ocfs2_meta_lock() can
      return if the inode was deleted on another node.
      Signed-off-by: NMark Fasheh <mark.fasheh@oracle.com>
      a9f5f707
  2. 13 2月, 2007 1 次提交
  3. 29 12月, 2006 2 次提交
  4. 14 12月, 2006 1 次提交
  5. 09 12月, 2006 1 次提交
  6. 02 12月, 2006 11 次提交
  7. 21 10月, 2006 2 次提交
  8. 01 10月, 2006 1 次提交
  9. 21 9月, 2006 1 次提交
  10. 18 5月, 2006 2 次提交
  11. 08 4月, 2006 1 次提交
  12. 29 3月, 2006 1 次提交
  13. 25 3月, 2006 1 次提交
  14. 02 3月, 2006 1 次提交
  15. 04 2月, 2006 1 次提交
  16. 12 1月, 2006 1 次提交
  17. 10 1月, 2006 1 次提交