An error occurred fetching the project authors.
  1. 18 Feb, 2003 1 commit
  2. 21 Aug, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.1.0 - First steps towards write support: implement file overwrite. · c10104ad
      Anton Altaparmakov authored
      - Add configuration option for developmental write support with an
        appropriately scary configuration help text.
      - Initial implementation of fs/ntfs/aops.c::ntfs_writepage() and its
        helper fs/ntfs/aops.c::ntfs_write_block(). This enables mmap(2) based
        overwriting of existing files on ntfs. Note: Resident files are
        only written into memory, and not written out to disk at present, so
        avoid writing to files smaller than about 1kiB.
      - Initial implementation of fs/ntfs/aops.c::ntfs_prepare_write(), its
        helper fs/ntfs/aops.c::ntfs_prepare_nonresident_write() and their
        counterparts, fs/ntfs/aops.c::ntfs_commit_write(), and
        fs/ntfs/aops.c::ntfs_commit_nonresident_write(), respectively. Also,
        add generic_file_write() to the ntfs file operations (fs/ntfs/file.c).
        This enables write(2) based overwriting of existing files on ntfs.
        Note: As with mmap(2) based overwriting, resident files are only
        written into memory, and not written out to disk at present, so avoid
        writing to files smaller than about 1kiB.
      - Implement ->truncate (fs/ntfs/inode.c::ntfs_truncate()) and
        ->setattr() (fs/ntfs/inode.c::ntfs_setattr()) inode operations for
        files with the purpose of intercepting and aborting all i_size
        changes which we do not support yet. ntfs_truncate() actually only
        emits a warning message but AFAICS our interception of i_size changes
        elsewhere means ntfs_truncate() never gets called for i_size changes.
        It is only called from generic_file_write() when we fail in
        ntfs_prepare_{,nonresident_}write() in order to discard any
        instantiated buffers beyond i_size. Thus i_size is not actually
        changed so our warning message is enough. Unfortunately it is not
        possible to easily determine if i_size is being changed or not hence
        we just emit an appropriately worded error message.
      c10104ad
  3. 20 Aug, 2002 1 commit
  4. 13 Aug, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.25 - Small bug fixes and cleanups. · 52fdd781
      Anton Altaparmakov authored
      - Unlock the page in an out of memory error code path in
        fs/ntfs/aops.c::ntfs_read_block().
      - If fs/ntfs/aops.c::ntfs_read_page() is called on an uptodate page,
        just unlock the page and return. (This can happen due to ->writepage
        clearing PageUptodate() during write out of MstProtected()
        attributes.
      - Remove leaked write code again.
      52fdd781
  5. 07 Aug, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.24 - Cleanups. · 16b39f5f
      Anton Altaparmakov authored
      - Treat BUG_ON() as ASSERT() not VERIFY(), i.e. do not use side effects
        inside BUG_ON(). (Adam J. Richter)
      - Split logical OR expressions inside BUG_ON() into individual BUG_ON()
        calls for improved debugging. (Adam J. Richter)
      - Add errors flag to the ntfs volume state, accessed via
        NVol{,Set,Clear}Errors(vol).
      - Do not allow read-write remounts of read-only volumes with errors.
      - Clarify comment for ntfs file operation sendfile which was added by
        Christoph Hellwig a while ago (just using generic_file_sendfile())
        to say that ntfs ->sendfile is only used for the case where the
        source data is on the ntfs partition and the destination is
        somewhere else, i.e. nothing we need to concern ourselves with.
      16b39f5f
  6. 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
  7. 24 Jul, 2002 1 commit
  8. 15 Jul, 2002 2 commits
    • Anton Altaparmakov's avatar
      NTFS: 2.0.21 - Check for, and refuse to work with too large files/directories/volumes. · 38606c07
      Anton Altaparmakov authored
      - Limit volume size at mount time to 2TiB on architectures where
        unsigned long is 32-bits (fs/ntfs/super.c::parse_ntfs_boot_sector()).
        This is the most we can do without overflowing the 32-bit limit of
        the block device size imposed on us by sb_bread() and sb_getblk()
        for the time being.
      - Limit file/directory size at open() time to 16TiB on architectures
        where unsigned long is 32-bits (fs/ntfs/file.c::ntfs_file_open() and
        fs/ntfs/dir.c::ntfs_dir_open()). This is the most we can do without
        overflowing the page cache page index.
      38606c07
    • Anton Altaparmakov's avatar
      NTFS: 2.0.20 - Support non-resident directory index bitmaps, fix page leak in readdir. · a5ea1066
      Anton Altaparmakov authored
      - Move the directory index bitmap to use an attribute inode instead of
        having special fields for it inside the ntfs inode structure. This
        means that the index bitmaps now use the page cache for i/o, too,
        and also as a side effect we get support for non-resident index
        bitmaps for free.
      - Simplify/cleanup error handling in fs/ntfs/dir.c::ntfs_readdir() and
        fix a page leak that manifested itself in some cases.
      - Add fs/ntfs/inode.c::ntfs_put_inode(), which we need to release the
        index bitmap inode on the final iput().
      a5ea1066
  9. 13 Jul, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.19 - Fix race condition, improvements, and optimizations in i/o interface. · 1138bf4c
      Anton Altaparmakov authored
      - Apply block optimization added to fs/ntfs/aops.c::ntfs_read_block()
        to fs/ntfs/compress.c::ntfs_file_read_compressed_block() as well.
      - Drop the "file" from ntfs_file_read_compressed_block().
      - Rename fs/ntfs/aops.c::ntfs_enb_buffer_read_async() to
        ntfs_end_buffer_async_read() (more like the fs/buffer.c counterpart).
      - Update ntfs_end_buffer_async_read() with the improved logic from
        its updated counterpart fs/buffer.c::end_buffer_async_read(). Apply
        further logic improvements to better determine when we set PageError.
      - Update submission of buffers in fs/ntfs/aops.c::ntfs_read_block() to
        check for the buffers being uptodate first in line with the updated
        fs/buffer.c::block_read_full_page(). This plugs a small race
        condition.
      1138bf4c
  10. 11 Jul, 2002 2 commits
    • Anton Altaparmakov's avatar
      NTFS: 2.0.18 - Fix race condition in reading of compressed files. · 3968bf66
      Anton Altaparmakov authored
      - There was a narrow window between checking a buffer head for being
      uptodate and locking it in ntfs_file_read_compressed_block(). We now
      lock the buffer and then check whether it is uptodate or not.
      3968bf66
    • Anton Altaparmakov's avatar
      NTFS: 2.0.17 - Cleanups and optimizations - shrinking the ToDo list. · 759cec37
      Anton Altaparmakov authored
      - Modify fs/ntfs/inode.c::ntfs_read_locked_inode() to return an error
        code and update callers, i.e. ntfs_iget(), to pass that error code
        up instead of just using -EIO.
      - Modifications to super.c to ensure that both mount and remount
        cannot set any write related options when the driver is compiled
        read-only.
      - Optimize block resolution in fs/ntfs/aops.c::ntfs_read_block() to
        cache the current run list element. This should improve performance
        when reading very large and/or very fragmented data.
      759cec37
  11. 08 Jul, 2002 3 commits
    • Anton Altaparmakov's avatar
    • Anton Altaparmakov's avatar
      NTFS: 2.0.16 - Convert access to $MFT/$BITMAP to attribute inode API. · 600a1382
      Anton Altaparmakov authored
      - Fix a stupid bug introduced in 2.0.15 where we were unmapping the
        wrong inode in fs/ntfs/inode.c::ntfs_attr_iget().
      - Convert $MFT/$BITMAP access to attribute inode API and remove all
        remnants of the ugly mftbmp address space and operations hack. This
        means we finally have only one readpage function as well as only one
        async io completion handler. Yey! The mft bitmap is now just an
        attribute inode and is accessed from vol->mftbmp_ino just as if it
        were a normal file. Fake inodes rule. (-:
      600a1382
    • 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
  12. 03 Jul, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.14 - Run list merging code cleanup, minor locking changes, typo fixes. · 1d209b00
      Anton Altaparmakov authored
      - Change fs/ntfs/super.c::ntfs_statfs() to not rely on BKL by moving
        the locking out of super.c::get_nr_free_mft_records() and taking and
        dropping the mftbmp_lock rw_semaphore in ntfs_statfs() itself.
      - Bring attribute run list merging code (fs/ntfs/attrib.c) in sync with
        current userspace ntfs library code. This means that if a merge
        fails the original run lists are always left unmodified instead of
        being silently corrupted.
      - Misc typo fixes.
      1d209b00
  13. 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
  14. 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
  15. 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
  16. 19 Jun, 2002 3 commits
  17. 29 May, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.8 release. Major updates for dcache aliasing issues wrt short/long file names. · ccc55c48
      Anton Altaparmakov authored
      In order to handle the case insensitivity issues of NTFS with regards to the
      dcache and the dcache requiring only one dentry per directory, we deal with
      dentry aliases that only differ in case in ->ntfs_lookup() while maintining
      a case sensitive dcache. This means that we get the full benefit of dcache
      speed when the file/directory is looked up with the same case as returned by
      ->ntfs_readdir() but that a lookup for any other case (or for the short file
      name) will not find anything in dcache and will enter ->ntfs_lookup()
      instead, where we search the directory for a fully matching file name
      (including case) and if that is not found, we search for a file name that
      matches with different case and if that has non-POSIX semantics we return
      that. We actually do only one search (case sensitive) and keep tabs on
      whether we have found a case insensitive match in the process.
      
      To simplify matters for us, we do not treat the short vs long filenames as
      two hard links but instead if the lookup matches a short filename, we
      return the dentry for the corresponding long filename instead.
      
      In ->ntfs_lookup() we distinguish three cases:
      
      1) @dent perfectly matches (i.e. including case) a directory entry with a
         file name in the WIN32 or POSIX namespaces. In this case
         ntfs_lookup_inode_by_name() will return with name set to NULL and we
         just d_add() @dent.
      2) @dent matches (not including case) a directory entry with a file name in
         the WIN32 namespace. In this case ntfs_lookup_inode_by_name() will return
         with name set to point to a kmalloc()ed ntfs_name structure containing
         the properly cased little endian Unicode name. We convert the name to the
         current NLS code page, search if a dentry with this name already exists
         and if so return that instead of @dent. The VFS will then destroy the old
         @dent and use the one we returned. If a dentry is not found, we allocate
         a new one, d_add() it, and return it as above.
      3) @dent matches either perfectly or not (i.e. we don't care about case) a
         directory entry with a file name in the DOS namespace. In this case
         ntfs_lookup_inode_by_name() will return with name set to point to a
         kmalloc()ed ntfs_name structure containing the mft reference (cpu endian)
         of the inode. We use the mft reference to read the inode and to find the
         file name in the WIN32 namespace corresponding to the matched short file
         name. We then convert the name to the current NLS code page, and proceed
         searching for a dentry with this name, etc, as in case 2), above.
      ccc55c48
  18. 28 May, 2002 1 commit
  19. 27 May, 2002 1 commit
  20. 26 May, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: The beginning of 2.0.8. - Major updates for handling of case sensitivity. · 6f3894e9
      Anton Altaparmakov authored
      - Remove unused source file fs/ntfs/attraops.c.
      - Remove show_inodes mount option(s), thus dropping support for
        displaying of short file names.
      - Remove deprecated mount option posix.
      - Restore show_sys_files mount option.
      - Add new mount option case_sensitive, to determine if the driver treats
        file names as case sensitive or not. If case sensitive, create file names
        in the POSIX namespace. Otherwise create file names in the WIN32
        namespace. By default, or when case_sensitive is set to FALSE, files
        remain accessible via their short file name, if it exists.
      - Add additional argument to ntfs_lookup_inode_by_name() in which we
        return information about the matching file name if the case is not
        matching or the match is a short file name. See comments above the
        function definition for details.
      6f3894e9
  21. 11 May, 2002 2 commits
  22. 04 May, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: Release 2.0.6 - Major bugfix to make compatible with other kernel changes. · 70d3a085
      Anton Altaparmakov authored
      - Initialize the mftbmp address space properly now that there are more
      fields in the struct address_space. This was leading to hangs and
      oopses on umount since 2.5.12 because of changes to other parts of
      the kernel. We probably want a kernel generic init_address_space()
      function...
      - Drop BKL from ntfs_readdir() after consultation with Al Viro. The
      only caller of ->readdir() is vfs_readdir() which holds i_sem during
      the call, and i_sem is sufficient protection against changes in the
      directory inode (including ->i_size).
      - Use generic_file_llseek() for directories (as opposed to
      default_llseek()) as this downs i_sem instead of the BKL which is
      what we now need for exclusion against ->f_pos changes considering we
      no longer take the BKL in ntfs_readdir().
      70d3a085
  23. 02 May, 2002 1 commit
  24. 27 Apr, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: 2.0.4 - Cleanups and updates for kernel 2.5.11. · dfeb4845
      Anton Altaparmakov authored
      - Add documentation on how to use the MD driver to be able to use NTFS
      stripe and volume sets in Linux and generally cleanup documentation
      a bit.
      
      Remove all uses of kdev_t in favour of struct block_device *:
      - Change compress.c::ntfs_file_read_compressed_block() to use sb_getblk()
      instead of getblk().
      - Change super.c::ntfs_fill_suoer() to use bdev_hardsect_size() instead
      of get_hardsect_size().
      - No need to get old blocksize in super.c::ntfs_fill_super() as
      fs/super.c::get_sb_bdev() already does this.
      - Set bh->b_bdev instead of bh->b_dev throughout aops.c.
      dfeb4845
  25. 26 Apr, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS 2.0.3: Small bug fixes, cleanups, and performance improvements. · eeb382a1
      Anton Altaparmakov authored
      - Remove some dead code from mft.c.
      - Optimize readpage and read_block functions throughout aops.c so that
        only initialized blocks are read. Non-initialized ones have their
        buffer head mapped, zeroed, and set up to date, without scheduling
        any i/o. Thanks to Al Viro for advice on how to avoid the device i/o.
      Thanks go to Andrew Morton for spotting the below:
      - Fix buglet in allocate_compression_buffers() error code path.
      - Call flush_dcache_page() after modifying page cache page contents in
        ntfs_file_readpage().
      - Check for existence of page buffers throughout aops.c before calling
        create_empty_buffers(). This happens when an I/O error occurs and the
        read is retried. (It also happens once writing is implemented so that
        needed doing anyway but I had left it for later...)
      - Don't BUG_ON() uptodate and/or mapped buffers throughout aops.c in
        readpage and read_block functions. Reasoning same as above (i.e. I/O
        error retries and future write code paths.)
      eeb382a1
  26. 24 Apr, 2002 1 commit
  27. 13 Apr, 2002 1 commit
  28. 11 Apr, 2002 1 commit
  29. 25 Mar, 2002 2 commits
  30. 23 Mar, 2002 1 commit
  31. 22 Mar, 2002 1 commit
    • Anton Altaparmakov's avatar
      NTFS: · 4a0f5869
      Anton Altaparmakov authored
      - Rename, cleanup, and improve end_buffer_read_index_async, is now
      end_buffer_read_mst_async.
      
      - Replace ntfs_dir_readpage by ntfs_mst_readpage which is a fusion of
      ntfs_dir_readpage and mft.c::ntfs_mft_readpage with support for mapping
      unmapped run lists within instead of calling ntfs_file_get_block.
      
      - Throw away ntfs_mft_readpage. This now becomes aops.c::ntfs_mst_readpage
      merged together with aops.c::ntfs_dir_readpage.
      
      The effect of the above is that we have one readpage function less and that
      this copes properly with the intricacies of initialized_size vs data_size vs
      allocated size.
      
      - Various cleanups.
      4a0f5869
  32. 21 Mar, 2002 1 commit