An error occurred fetching the project authors.
  1. 09 Nov, 2004 2 commits
  2. 05 Nov, 2004 1 commit
    • Anton Altaparmakov's avatar
      NTFS: Rewrite handling of multi sector transfer errors. We now do not set · baf615a2
      Anton Altaparmakov authored
            PageError() when such errors are detected in the async i/o handler           fs/ntfs/aops.c::ntfs_end_buffer_async_read().  All users of mst           protected attributes now check the magic of each ntfs record as they           use it and act appropriately.  This has the effect of making errors
            granular per ntfs record rather than per page which solves the case
            where we cannot access any of the ntfs records in a page when a
            single one of them had an mst error.  (Thanks to Ken MacFerrin for
            the bug report.)
      Signed-off-by: default avatarAnton Altaparmakov <aia21@cantab.net>
      baf615a2
  3. 16 Oct, 2004 3 commits
  4. 15 Oct, 2004 2 commits
  5. 14 Oct, 2004 1 commit
    • Anton Altaparmakov's avatar
      NTFS: Big cleanup of mft record writing code. · d7ca9266
      Anton Altaparmakov authored
      - Clear the page uptodate flag in fs/ntfs/aops.c::ntfs_write_mst_block()
        to ensure noone can see the page whilst the mst fixups are applied.
      - Add the helper fs/ntfs/mft.c::ntfs_may_write_mft_record() which
        checks if an mft record may be written out safely obtaining any
        necessary locks in the process.  This is used by
        fs/ntfs/aops.c::ntfs_write_mst_block().
      - Modify fs/ntfs/aops.c::ntfs_write_mst_block() to also work for
        writing mft records and improve its error handling in the process.
        Now if any of the records in the page fail to be written out, all
        other records will be written out instead of aborting completely.
      - Remove ntfs_mft_aops and update all users to use ntfs_mst_aops.
      - Modify fs/ntfs/inode.c::ntfs_read_locked_inode() to set the
        ntfs_mst_aops for all inodes which are NInoMstProtected() and
        ntfs_aops for all other inodes.
      - Rename fs/ntfs/mft.c::sync_mft_mirror{,_umount}() to
        ntfs_sync_mft_mirror{,_umount}() and change their parameters so they
        no longer require an ntfs inode to be present.  Update all callers.
      - Cleanup the error handling in fs/ntfs/mft.c::ntfs_sync_mft_mirror().
      - Clear the page uptodate flag in fs/ntfs/mft.c::ntfs_sync_mft_mirror()
        to ensure noone can see the page whilst the mst fixups are applied.
      - Remove the no longer needed fs/ntfs/mft.c::ntfs_mft_writepage() and
        fs/ntfs/mft.c::try_map_mft_record().
      - Fix callers of fs/ntfs/aops.c::mark_ntfs_record_dirty() to call it
        with the ntfs inode which contains the page rather than the ntfs
        inode the mft record of which is in the page.
      
      Ooops.  Yes, I know, I should have split this up into smaller changes...
      Signed-off-by: default avatarAnton Altaparmakov <aia21@cantab.net>
      d7ca9266
  6. 12 Oct, 2004 1 commit
  7. 11 Oct, 2004 2 commits
  8. 07 Oct, 2004 3 commits
  9. 30 Sep, 2004 1 commit
  10. 29 Sep, 2004 1 commit
  11. 26 Sep, 2004 1 commit
  12. 24 Sep, 2004 2 commits
  13. 16 Sep, 2004 1 commit
  14. 23 Aug, 2004 1 commit
  15. 02 Jul, 2004 1 commit
  16. 21 Jun, 2004 1 commit
  17. 08 Jun, 2004 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.1.13 - Enable overwriting of resident files and housekeeping of system files. · 32e5fcaa
      Anton Altaparmakov authored
      - Mark the volume dirty when (re)mounting read-write and mark it clean
        when unmounting or remounting read-only.  If any volume errors are
        found, the volume is left marked dirty to force chkdsk to run.
      - Add code to set the NT4 compatibility flag when (re)mounting
        read-write for newer NTFS versions but leave it commented out for now
        since we do not make any modifications that are NTFS 1.2 specific yet
        and since setting this flag breaks Captive-NTFS which is not nice.
        This code must be enabled once we start writing NTFS 1.2 specific
        changes otherwise Windows NTFS driver might crash / cause corruption.
      - Fix a silly bug that caused a deadlock in ntfs_mft_writepage().
        For inode 0, i.e. $MFT itself, we cannot use ilookup5() from
        there because the inode is already locked by the kernel
        (fs/fs-writeback.c::__sync_single_inode()) and ilookup5() waits
        until the inode is unlocked before returning it and it never gets
        unlocked because ntfs_mft_writepage() never returns.  )-:
        Fortunately, we have inode 0 pinned in icache for the duration
        of the mount so we can access it directly.
      Signed-off-by: default avatarAnton Altaparmakov <aia21@cantab.net>
      32e5fcaa
  18. 04 Jun, 2004 1 commit
    • Anton Altaparmakov's avatar
      NTFS: Implement ntfs_mft_writepage() so it now checks if any of the mft · e3353c06
      Anton Altaparmakov authored
            records in the page are dirty and if so redirties the page and
            returns.  Otherwise it just returns (after doing set_page_writeback(),
            unlock_page(), end_page_writeback() or the radix-tree tag
            PAGECACHE_TAG_DIRTY  remains set even though the page is clean), thus
            alowing the VM to do with the page as it pleases.  Also, at umount
            time, now only throw away dirty mft (meta)data pages if dirty inodes
            are present and ask the user to email us if they see this happening.
      Signed-off-by: default avatarAnton Altaparmakov <aia21@cantab.net>
      e3353c06
  19. 01 Jun, 2004 1 commit
    • Anton Altaparmakov's avatar
      NTFS: - Implement fs/ntfs/mft.[hc]::{,__}mark_mft_record_dirty() and make · a486aa55
      Anton Altaparmakov authored
              fs/ntfs/aops.c::ntfs_writepage() and ntfs_commit_write() use it, thus
              finally enabling resident file overwrite!  (-8  This also includes a
              placeholder for ->writepage (ntfs_mft_writepage()), which for now
              just redirties the page and returns.  Also, at umount time, we for
              now throw away all mft data page cache pages after the last call to
              ntfs_commit_inode() in the hope that all inodes will have been
              written out by then and hence no dirty (meta)data will be lost.  We
              also check for this case and emit an error message telling the user
              to run chkdsk.
            - If the user is trying to enable (dir)atime updates, warn about the
              fact that we are disabling them.
      Signed-off-by: default avatarAnton Altaparmakov <aia21@cantab.net>
      a486aa55
  20. 28 May, 2004 1 commit
  21. 11 May, 2004 1 commit
  22. 30 Apr, 2003 1 commit
  23. 25 Feb, 2003 1 commit
  24. 20 Aug, 2002 1 commit
  25. 14 Aug, 2002 1 commit
  26. 05 Aug, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.23 - Major bug fixes (races, deadlocks, non-i386 architectures). · 8e27b910
      Anton Altaparmakov authored
      - Massive internal locking changes to mft record locking. Fixes lock
        recursion and replaces the mrec_lock read/write semaphore with a
        mutex. Also removes the now superfluous mft_count. This fixes several
        race conditions and deadlocks, especially in the future write code.
      - Fix ntfs over loopback for compressed files by adding an
        optimization barrier. (gcc was screwing up otherwise ?)
      - Miscellaneous cleanups all over the code and a fix or two in error
        handling code paths.
      Thanks go to Christoph Hellwig for pointing out the following two:
      - Remove now unused function fs/ntfs/malloc.h::vmalloc_nofs().
      - Fix ntfs_free() for ia64 and parisc by checking for VMALLOC_END, too.
      8e27b910
  27. 24 Jul, 2002 1 commit
  28. 08 Jul, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.15 - Fake inodes based attribute i/o via the pagecache, fixes, cleanups. · db05cffc
      Anton Altaparmakov authored
      - Fix silly bug in fs/ntfs/super.c::parse_options() which was causing
        remounts to fail when the partition had an entry in /etc/fstab and
        the entry specified the nls= option.
      - Apply same macro magic used in fs/ntfs/inode.h to fs/ntfs/volume.h to
        expand all the helper functions NVolFoo(), NVolSetFoo(), and
        NVolClearFoo().
      - Move copyright statement from driver initialisation message to
        module description (fs/super.c). This makes the initialisation
        message fit on one line and fits in better with rest of kernel.
      - Update fs/ntfs/attrib.c::map_run_list() to work on both real and
        attribute inodes, and both for files and directories.
      - Implement fake attribute inodes allowing all attribute i/o to go via
        the page cache and to use all the normal vfs/mm functionality:
        - Add ntfs_attr_iget() and its helper ntfs_read_locked_attr_inode()
          to fs/ntfs/inode.c.
        - Add needed cleanup code to ntfs_clear_big_inode().
      - Merge address space operations for files and directories (aops.c),
        now just have ntfs_aops:
        - Rename:
              end_buffer_read_attr_async() -> ntfs_end_buffer_read_async(),
              ntfs_attr_read_block()       -> ntfs_read_block(),
              ntfs_file_read_page()        -> ntfs_readpage().
        - Rewrite fs/ntfs/aops.c::ntfs_readpage() to work on both real and
          attribute inodes, and both for files and directories.
        - Remove obsolete fs/ntfs/aops.c::ntfs_mst_readpage().
      db05cffc
  29. 27 Jun, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.13 - Use iget5_locked() in preparation for fake inodes and small cleanups. · b9e6be22
      Anton Altaparmakov authored
      - Remove nr_mft_bits and the now superfluous union with nr_mft_records
        from ntfs_volume structure.
      - Remove nr_lcn_bits and the now superfluous union with nr_clusters
        from ntfs_volume structure.
      - Use iget5_locked() and friends instead of conventional iget(). Wrap
        the call in fs/ntfs/inode.c::ntfs_iget() and update callers of iget()
        to use ntfs_iget(). Leave only one iget() call at mount time so we
        don't need an ntfs_iget_mount().
      - Change fs/ntfs/inode.c::ntfs_new_extent_inode() to take mft_no as an
        additional argument.
      b9e6be22
  30. 26 Jun, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.12 - Initial cleanup of address space operations following 2.0.11 changes. · b30de928
      Anton Altaparmakov authored
      - Merge fs/ntfs/aops.c::end_buffer_read_mst_async() and
        fs/ntfs/aops.c::end_buffer_read_file_async() into one function
        fs/ntfs/aops.c::end_buffer_read_attr_async() using NInoMstProtected()
        to determine whether to apply mst fixups or not.
      - Above change allows merging fs/ntfs/aops.c::ntfs_file_read_block()
        and fs/ntfs/aops.c::ntfs_mst_readpage() into one function
        fs/ntfs/aops.c::ntfs_attr_read_block(). Also, create a tiny wrapper
        fs/ntfs/aops.c::ntfs_mst_readpage() to transform the parameters from
        the VFS readpage function prototype to the ntfs_attr_read_block()
        function prototype.
      b30de928
  31. 25 Jun, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.11 - Initial preparations for fake inode based attribute i/o. · 6bb39cd9
      Anton Altaparmakov authored
      - Move definition of ntfs_inode_state_bits to fs/ntfs/inode.h and
        do some macro magic (adapted from include/linux/buffer_head.h) to
        expand all the helper functions NInoFoo(), NInoSetFoo(), and
        NInoClearFoo().
      - Add new flag to ntfs_inode_state_bits: NI_Sparse.
      - Add new fields to ntfs_inode structure to allow use of fake inodes
        for attribute i/o: type, name, name_len. Also add new state bits:
        NI_Attr, which, if set, indicates the inode is a fake inode, and
        NI_MstProtected, which, if set, indicates the attribute uses multi
        sector transfer protection, i.e. fixups need to be applied after
        reads and before/after writes.
      - Rename fs/ntfs/inode.c::ntfs_{new,clear,destroy}_inode() to
        ntfs_{new,clear,destroy}_extent_inode() and update callers.
      - Use ntfs_clear_extent_inode() in fs/ntfs/inode.c::__ntfs_clear_inode()
        instead of ntfs_destroy_extent_inode().
      - Cleanup memory deallocations in {__,}ntfs_clear_{,big_}inode().
      - Make all operations on ntfs inode state bits use the NIno* functions.
      - Set up the new ntfs inode fields and state bits in
        fs/ntfs/inode.c::ntfs_read_inode() and add appropriate cleanup of
        allocated memory to __ntfs_clear_inode().
      - Cleanup ntfs_inode structure a bit for better ordering of elements
        w.r.t. their size to allow better packing of the structure in memory.
      6bb39cd9
  32. 19 Jun, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.10 - There can only be 2^32 - 1 inodes on an NTFS volume. · eab71b80
      Anton Altaparmakov authored
      - Add check at mount time to verify that the number of inodes on the
        volume does not exceed 2^32 - 1, which is the maximum allowed for
        NTFS according to Microsoft.
      - Change mft_no member of ntfs_inode structure to be unsigned long.
        Update all users. This makes ntfs_inode->mft_no just a copy of struct
        inode->i_ino. But we can't just always use struct inode->i_ino and
        remove mft_no because extent inodes do not have an attached struct
        inode.
      eab71b80