Permalink
Switch branches/tags
Commits on Nov 25, 2010
  1. simplify direct I/O move-on-write hook

    amir73il committed Nov 25, 2010
    all the complexity in next3_get_block() just for direct I/O write.
    seperate it to a special function next3_get_block_dio().
  2. fix move-on-write path from direct_IO/mmap/quota_write

    amir73il committed Nov 25, 2010
    The problems with the old data hooks are:
    1. second write to mmaped page did not call get_block() to trigger
       move-on-write.
    2. quota_write() called next3_bread(create=1) without notifying this
       is a partial write and move-on-write has corrupted it's data,
       resulting in broken quota file.
    3. direct I/O was not supported.
    
    The new design uses 3 buffer head flags to signal get_block() about
    move-on-write:
    1. buffer_move_data() is an explicit request to trigger move-on-write.
       users which do not declare move_data (like quota_write) will not
       trigger move-on-write. previous hooks would do move-on-write on
       all regular files data without an explicit request.
       new design suggests that we rather corrupt snapshot data
       (missed move-on-write) then corrupt the file system live data
       (false positive move-on-write).
    2. buffer_partial_write() signals that in case of move-on-write, the
       old block data
       needs to be read, before mapping the buffer to a new block.
    3. buffer_direct_io() signals that in case of move-on-write or hole filling,
       the buffer should not be mapped on return.
    
    There are 4 places I found that map data blocks and should trigger
    move-on-write:
    1. write_begin() sets move_data and optionally partial_write flags and unmaps
       buffers
    2. ordered_writepage() sets move_data flag and unmaps buffers
       (snapshots only work with data=ordered)
    3. truncate_page() sets move_data flag (and calls next3_get_block() itself)
    4. next3_get_block() sets direct_io and move_data flags when (create && !handle)
    
    Know issue:
    snapshot copy of quota files is not consistent with snapshot'ed
    file system (can be fixed, but is it relevant for read-only mount?)
Commits on Nov 15, 2010
  1. fix hang after large snapshot delete

    amir73il committed Nov 15, 2010
    when large snapshot shrink transaction was restarted, truncate_mutex
    was released, although it wasn't taken in snapshot_shrink() and later
    it was aquired and never freed.
    
    check if truncate_mutex is locked before releasing and re-aquiring it.
Commits on Nov 1, 2010
  1. avoid unmapping of buffers on journal dirty data list

    amir73il committed Nov 1, 2010
    it is unnecessary and very risky to unmap a buffer on the journal
    dirty data list, becasue kjournald may be trying to flush it.
    check the buffer_jbd() flag to see if the buffer is journaled.
    data buffers can only be journaled as dirty data when working in
    data=ordered mode, which is the only mode supported by next3.
Commits on Oct 28, 2010
Commits on Oct 26, 2010
  1. fix i_size of snapshot file

    amir73il committed Oct 26, 2010
Commits on Sep 28, 2010
Commits on Sep 7, 2010
  1. patch big_endian_bugfix.patch

    amir73il committed Sep 7, 2010
Commits on Jul 25, 2010
  1. patch move_snapfile_flags.patch

    amir73il committed Jul 25, 2010
  2. patch find_cow_tid_offset.patch

    amir73il committed Jul 25, 2010
Commits on Jul 20, 2010
  1. patch ext3_snapshot_image.patch

    amir73il committed Jul 20, 2010
  2. patch fix_nested_ifdef.patch

    amir73il committed Jul 20, 2010
Commits on Jul 13, 2010
Commits on Jul 12, 2010
  1. patch strip_snapshot_main.patch

    amir73il committed Jul 12, 2010
Commits on Jul 4, 2010
Commits on Jun 29, 2010
  1. patch huge_file_iblocks.patch

    amir73il committed Jun 29, 2010
Commits on Jun 28, 2010
  1. patch next3_forget_bugfix.patch

    amir73il committed Jun 28, 2010
Commits on Jun 14, 2010
Commits on Jun 9, 2010
  1. patch migrate_on_disk_format.patch

    Amir Goldstein committed Jun 9, 2010
Commits on May 30, 2010
  1. patch in_mem_bg_exclude_cow_bitmap.patch

    Amir Goldstein committed May 30, 2010
Commits on May 27, 2010
  1. patch rm_i_snapshot_blocks_count.patch

    Amir Goldstein committed May 27, 2010
  2. patch non_persistent_enabled.patch

    Amir Goldstein committed May 27, 2010
Commits on May 24, 2010
  1. patch release_1.0.10.patch

    Amir Goldstein committed May 24, 2010
  2. patch shrink_bug_fix.patch

    Amir Goldstein committed May 24, 2010
Commits on May 13, 2010
  1. patch big_journal_flag.patch

    Amir Goldstein committed May 13, 2010
Commits on May 3, 2010
  1. patch support_quota_options.patch

    Amir Goldstein committed May 3, 2010
  2. patch strip_main_snapshot_ifdef.patch

    Amir Goldstein committed May 3, 2010
Commits on Apr 26, 2010
  1. patch snapshot_shrink_fixes.patch

    Amir Goldstein committed Apr 26, 2010
  2. snapshot_load_failure.patch

    Amir Goldstein committed Apr 26, 2010
    there is no fsck to fix snapshot list.
    snapshot_load tries to fix a few simple cases:
    1. non-snapshot or invalid inum on list - terminate list (*i_next = 0)
    2. missing snapshot list head - set snapshot list head to active snapshot
    3. missing has_snapshot flag - set flag or reset snapshot list head and active snapshot
  3. patch snapshot_ctl_fixes.patch

    Amir Goldstein committed Apr 26, 2010
Commits on Apr 25, 2010
  1. patch clear_cow_bitmap.patch

    Amir Goldstein committed Apr 25, 2010