1. 04 3月, 2010 1 次提交
  2. 15 12月, 2009 3 次提交
    • J
      udf: Avoid IO in udf_clear_inode · 2c948b3f
      Jan Kara 提交于
      It is not very good to do IO in udf_clear_inode. First, VFS does not really
      expect inode to become dirty there and thus we have to write it ourselves,
      second, memory reclaim gets blocked waiting for IO when it does not really
      expect it, third, the IO pattern (e.g. on umount) resulting from writes in
      udf_clear_inode is bad and it slows down writing a lot.
      
      The reason why UDF needed to do IO in udf_clear_inode is that UDF standard
      mandates extent length to exactly match inode size. But when we allocate
      extents to a file or directory, we don't really know what exactly the final
      file size will be and thus temporarily set it to block boundary and later
      truncate it to exact length in udf_clear_inode. Now, this is changed to
      truncate to final file size in udf_release_file for regular files. For
      directories and symlinks, we do the truncation at the moment when learn
      what the final file size will be.
      Signed-off-by: NJan Kara <jack@suse.cz>
      2c948b3f
    • J
      udf: Try harder when looking for VAT inode · e971b0b9
      Jan Kara 提交于
      Some disks do not contain VAT inode in the last recorded block as required
      by the standard but a few blocks earlier (or the number of recorded blocks
      is wrong). So look for the VAT inode a bit before the end of the media.
      Signed-off-by: NJan Kara <jack@suse.cz>
      e971b0b9
    • J
      udf: Fix compilation with UDFFS_DEBUG enabled · 1fefd086
      Jan Kara 提交于
      Signed-off-by: NJan Kara <jack@suse.cz>
      1fefd086
  3. 15 9月, 2009 4 次提交
    • J
      udf: Fix possible corruption when close races with write · cbc8cc33
      Jan Kara 提交于
      When we close a file, we remove preallocated blocks from it. But this
      truncation was not protected by i_mutex and thus it could have raced with a
      write through a different fd and cause crashes or even filesystem corruption.
      Signed-off-by: NJan Kara <jack@suse.cz>
      cbc8cc33
    • J
      udf: Perform preallocation only for regular files · 81056dd0
      Jan Kara 提交于
      So far we preallocated blocks also for directories but that brings a
      problem, when to get rid of preallocated blocks we don't need. So far
      we removed them in udf_clear_inode() which has a disadvantage that
      1) blocks are unavailable long after writing to a directory finished
         and thus one can get out of space unnecessarily early
      2) releasing blocks from udf_clear_inode is problematic because VFS
         does not expect us to redirty inode there and it also slows down
         memory reclaim.
      
      So preallocate blocks only for regular files where we can drop preallocation
      in udf_release_file.
      Signed-off-by: NJan Kara <jack@suse.cz>
      81056dd0
    • J
      udf: Remove wrong assignment in udf_symlink · 7c6e3d1a
      Jan Kara 提交于
      Recomputation of the pointer was wrong (it should have been just increment).
      Luckily, we never use the computed value. Remove it.
      Signed-off-by: NJan Kara <jack@suse.cz>
      7c6e3d1a
    • J
      udf: Remove dead code · 5891d9dd
      Jan Kara 提交于
      Remove code that gets never used.
      Signed-off-by: NJan Kara <jack@suse.cz>
      5891d9dd
  4. 30 7月, 2009 1 次提交
  5. 24 6月, 2009 1 次提交
  6. 18 6月, 2009 1 次提交
  7. 12 6月, 2009 3 次提交
  8. 23 5月, 2009 1 次提交
  9. 02 4月, 2009 16 次提交
  10. 26 3月, 2009 1 次提交
  11. 22 1月, 2009 1 次提交
  12. 28 11月, 2008 1 次提交
    • J
      udf: Fix BUG_ON() in destroy_inode() · 52b19ac9
      Jan Kara 提交于
      udf_clear_inode() can leave behind buffers on mapping's i_private list (when
      we truncated preallocation). Call invalidate_inode_buffers() so that the list
      is properly cleaned-up before we return from udf_clear_inode(). This is ugly
      and suggest that we should cleanup preallocation earlier than in clear_inode()
      but currently there's no such call available since drop_inode() is called under
      inode lock and thus is unusable for disk operations.
      Signed-off-by: NJan Kara <jack@suse.cz>
      52b19ac9
  13. 14 11月, 2008 1 次提交
  14. 23 10月, 2008 2 次提交
  15. 14 10月, 2008 1 次提交
  16. 09 9月, 2008 1 次提交
  17. 19 8月, 2008 1 次提交
    • J
      udf: Fix error paths in udf_new_inode() · 97e1cfb0
      Jan Kara 提交于
      I case we failed to allocate memory for inode when creating it, we did not
      properly free block already allocated for this inode. Move memory allocation
      before the block allocation which fixes this issue (thanks for the idea go to
      Ingo Oeser <ioe-lkml@rameria.de>). Also remove a few superfluous
      initializations already done in udf_alloc_inode().
      Reviewed-by: NIngo Oeser <ioe-lkml@rameria.de>
      Signed-off-by: NJan Kara <jack@suse.cz>
      97e1cfb0