vserver 1.9.3
[linux-2.6.git] / fs / ntfs / ChangeLog
index fa1442d..0302c35 100644 (file)
@@ -1,11 +1,6 @@
 ToDo/Notes:
        - Find and fix bugs.
        - Checkpoint or disable the user space journal ($UsnJrnl).
 ToDo/Notes:
        - Find and fix bugs.
        - Checkpoint or disable the user space journal ($UsnJrnl).
-       - Implement sops->dirty_inode() to implement {a,m,c}time updates and
-         such things.  This should probably just flag the ntfs inode such that
-         sops->write_inode(), i.e. ntfs_write_inode(), will copy the times
-         when it is invoked rather than having to update the mft record
-         every time.
        - In between ntfs_prepare/commit_write, need exclusion between
          simultaneous file extensions. Need perhaps an NInoResizeUnderway()
          flag which we can set in ntfs_prepare_write() and clear again in
        - In between ntfs_prepare/commit_write, need exclusion between
          simultaneous file extensions. Need perhaps an NInoResizeUnderway()
          flag which we can set in ntfs_prepare_write() and clear again in
@@ -26,6 +21,114 @@ ToDo/Notes:
        - Enable the code for setting the NT4 compatibility flag when we start
          making NTFS 1.2 specific modifications.
 
        - Enable the code for setting the NT4 compatibility flag when we start
          making NTFS 1.2 specific modifications.
 
+2.1.20 - Fix a stupid bug in ntfs_attr_reinit_search_ctx().
+
+       - Fix stupid bug in fs/ntfs/attrib.c::ntfs_attr_reinit_search_ctx()
+         where we did not clear ctx->al_entry but it was still set due to
+         changes in ntfs_attr_lookup() and ntfs_external_attr_find() in
+         particular.
+       - Fix another stupid bug in fs/ntfs/attrib.c::ntfs_external_attr_find()
+         where we forgot to unmap the extent mft record when we had finished
+         enumerating an attribute which caused a bug check to trigger when the
+         VFS calls ->clear_inode.
+
+2.1.19 - Many cleanups, improvements, and a minor bug fix.
+
+       - Update ->setattr (fs/ntfs/inode.c::ntfs_setattr()) to refuse to
+         change the uid, gid, and mode of an inode as we do not support NTFS
+         ACLs yet.
+       - Remove BKL use from ntfs_setattr() syncing up with the rest of the
+         kernel.
+       - Get rid of the ugly transparent union in fs/ntfs/dir.c::ntfs_readdir()
+         and ntfs_filldir() as per suggestion from Al Viro.
+       - Change '\0' and L'\0' to simply 0 as per advice from Linus Torvalds.
+       - Update ->truncate (fs/ntfs/inode.c::ntfs_truncate()) to check if the
+         inode size has changed and to only output an error if so.
+       - Rename fs/ntfs/attrib.h::attribute_value_length() to ntfs_attr_size().
+       - Add le{16,32,64} as well as sle{16,32,64} data types to
+         fs/ntfs/types.h.
+       - Change ntfschar to be le16 instead of u16 in fs/ntfs/types.h.
+       - Add le versions of VCN, LCN, and LSN called leVCN, leLCN, and leLSN,
+         respectively, to fs/ntfs/types.h.
+       - Update endianness conversion macros in fs/ntfs/endian.h to use the
+         new types as appropriate.
+       - Do proper type casting when using sle64_to_cpup() in fs/ntfs/dir.c
+         and index.c.
+       - Add leMFT_REF data type to fs/ntfs/layout.h.
+       - Update all NTFS header files with the new little endian data types.
+         Affected files are fs/ntfs/layout.h, logfile.h, and time.h.
+       - Do proper type casting when using ntfs_is_*_recordp() in
+         fs/ntfs/logfile.c, mft.c, and super.c. 
+       - Fix all the sparse bitwise warnings.  Had to change all the typedef
+         enums storing little endian values to simple enums plus a typedef for
+         the datatype to make sparse happy.
+       - Fix a bug found by the new sparse bitwise warnings where the default
+         upcase table was defined as a pointer to wchar_t rather than ntfschar
+         in fs/ntfs/ntfs.h and super.c.
+       - Change {const_,}cpu_to_le{16,32}(0) to just 0 as suggested by Al Viro.
+
+2.1.18 - Fix scheduling latencies at mount time as well as an endianness bug.
+
+       - Remove vol->nr_mft_records as it was pretty meaningless and optimize
+         the calculation of total/free inodes as used by statfs().
+       - Fix scheduling latencies in ntfs_fill_super() by dropping the BKL
+         because the code itself is using the ntfs_lock semaphore which
+         provides safe locking.  (Ingo Molnar)
+       - Fix a potential bug in fs/ntfs/mft.c::map_extent_mft_record() that
+         could occur in the future for when we start closing/freeing extent
+         inodes if we don't set base_ni->ext.extent_ntfs_inos to NULL after
+         we free it.
+       - Rename {find,lookup}_attr() to ntfs_attr_{find,lookup}() as well as
+         find_external_attr() to ntfs_external_attr_find() to cleanup the
+         namespace a bit and to be more consistent with libntfs.
+       - Rename {{re,}init,get,put}_attr_search_ctx() to
+         ntfs_attr_{{re,}init,get,put}_search_ctx() as well as the type
+         attr_search_context to ntfs_attr_search_ctx.
+       - Force use of ntfs_attr_find() in ntfs_attr_lookup() when searching
+         for the attribute list attribute itself.
+       - Fix endianness bug in ntfs_external_attr_find().
+       - Change ntfs_{external_,}attr_find() to return 0 on success, -ENOENT
+         if the attribute is not found, and -EIO on real error.  In the case
+         of -ENOENT, the search context is updated to describe the attribute
+         before which the attribute being searched for would need to be
+         inserted if such an action were to be desired and in the case of
+         ntfs_external_attr_find() the search context is also updated to
+         indicate the attribute list entry before which the attribute list
+         entry of the attribute being searched for would need to be inserted
+         if such an action were to be desired.  Also make ntfs_find_attr()
+         static and remove its prototype from attrib.h as it is not used
+         anywhere other than attrib.c.  Update ntfs_attr_lookup() and all
+         callers of ntfs_{external,}attr_{find,lookup}() for the new return
+         values.
+       - Minor cleanup of fs/ntfs/inode.c::ntfs_init_locked_inode().
+
+2.1.17 - Fix bugs in mount time error code paths and other updates.
+
+       - Implement bitmap modification code (fs/ntfs/bitmap.[hc]).  This
+         includes functions to set/clear a single bit or a run of bits.
+       - Add fs/ntfs/attrib.[hc]::ntfs_find_vcn() which returns the locked
+         runlist element containing a particular vcn.  It also takes care of
+         mapping any needed runlist fragments.
+       - Implement cluster (de-)allocation code (fs/ntfs/lcnalloc.[hc]).
+       - Load attribute definition table from $AttrDef at mount time.
+       - Fix bugs in mount time error code paths involving (de)allocation of
+         the default and volume upcase tables.
+       - Remove ntfs_nr_mounts as it is no longer used.
+
+2.1.16 - Implement access time updates, file sync, async io, and read/writev.
+
+       - Add support for readv/writev and aio_read/aio_write (fs/ntfs/file.c).
+         This is done by setting the appropriate file operations pointers to
+         the generic helper functions provided by mm/filemap.c.
+       - Implement fsync, fdatasync, and msync both for files (fs/ntfs/file.c)
+         and directories (fs/ntfs/dir.c).
+       - Add support for {a,m,c}time updates to inode.c::ntfs_write_inode().
+         Note, except for the root directory and any other system files opened
+         by the user, the system files will not have their access times
+         updated as they are only accessed at the inode level an hence the
+         file level functions which cause the times to be updated are never
+         invoked.
+
 2.1.15 - Invalidate quotas when (re)mounting read-write.
 
        - Add new element itype.index.collation_rule to the ntfs inode
 2.1.15 - Invalidate quotas when (re)mounting read-write.
 
        - Add new element itype.index.collation_rule to the ntfs inode
@@ -434,7 +537,7 @@ ToDo/Notes:
          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
          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
+         cache the current runlist element. This should improve performance
          when reading very large and/or very fragmented data.
 
 2.0.16 - Convert access to $MFT/$BITMAP to attribute inode API.
          when reading very large and/or very fragmented data.
 
 2.0.16 - Convert access to $MFT/$BITMAP to attribute inode API.
@@ -482,9 +585,9 @@ ToDo/Notes:
        - 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.
        - 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
+       - Bring attribute runlist merging code (fs/ntfs/attrib.c) in sync with
          current userspace ntfs library code. This means that if a merge
          current userspace ntfs library code. This means that if a merge
-         fails the original run lists are always left unmodified instead of
+         fails the original runlists are always left unmodified instead of
          being silently corrupted.
        - Misc typo fixes.
 
          being silently corrupted.
        - Misc typo fixes.
 
@@ -676,7 +779,7 @@ ToDo/Notes:
          appropriately.
        - Update to 2.5.9 kernel (preserving backwards compatibility) by
          replacing all occurences of page->buffers with page_buffers(page).
          appropriately.
        - Update to 2.5.9 kernel (preserving backwards compatibility) by
          replacing all occurences of page->buffers with page_buffers(page).
-       - Fix minor bugs in run list merging, also minor cleanup.
+       - Fix minor bugs in runlist merging, also minor cleanup.
        - Updates to bootsector layout and mft mirror contents descriptions.
        - Small bug fix in error detection in unistr.c and some cleanups.
        - Grow name buffer allocations in unistr.c in aligned mutlipled of 64
        - Updates to bootsector layout and mft mirror contents descriptions.
        - Small bug fix in error detection in unistr.c and some cleanups.
        - Grow name buffer allocations in unistr.c in aligned mutlipled of 64
@@ -699,12 +802,12 @@ ToDo/Notes:
          initialized_size vs data_size (i.e. i_size). Done are
          mft.c::ntfs_mft_readpage(), aops.c::end_buffer_read_index_async(),
          and attrib.c::load_attribute_list().
          initialized_size vs data_size (i.e. i_size). Done are
          mft.c::ntfs_mft_readpage(), aops.c::end_buffer_read_index_async(),
          and attrib.c::load_attribute_list().
-       - Lock the run list in attrib.c::load_attribute_list() while using it.
+       - Lock the runlist in attrib.c::load_attribute_list() while using it.
        - Fix memory leak in ntfs_file_read_compressed_block() and generally
          clean up compress.c a little, removing some uncommented/unused debug
          code.
        - Tidy up dir.c a little bit.
        - Fix memory leak in ntfs_file_read_compressed_block() and generally
          clean up compress.c a little, removing some uncommented/unused debug
          code.
        - Tidy up dir.c a little bit.
-       - Don't bother getting the run list in inode.c::ntfs_read_inode().
+       - Don't bother getting the runlist in inode.c::ntfs_read_inode().
        - Merge mft.c::ntfs_mft_readpage() and aops.c::ntfs_index_readpage()
          creating aops.c::ntfs_mst_readpage(), improving the handling of
          holes and overflow in the process and implementing the correct
        - Merge mft.c::ntfs_mft_readpage() and aops.c::ntfs_index_readpage()
          creating aops.c::ntfs_mst_readpage(), improving the handling of
          holes and overflow in the process and implementing the correct
@@ -734,7 +837,7 @@ tng-0.0.8 - 08/03/2002 - Now using BitKeeper, http://linux-ntfs.bkbits.net/
        - Apply kludge in ntfs_read_inode(), setting i_nlink to 1 for
          directories. Without this the "find" utility gets very upset which is
          fair enough as Linux/Unix do not support directory hard links.
        - Apply kludge in ntfs_read_inode(), setting i_nlink to 1 for
          directories. Without this the "find" utility gets very upset which is
          fair enough as Linux/Unix do not support directory hard links.
-       - Further run list merging work. (Richard Russon)
+       - Further runlist merging work. (Richard Russon)
        - Backwards compatibility for gcc-2.95. (Richard Russon)
        - Update to kernel 2.5.5-pre1 and rediff the now tiny patch.
        - Convert to new file system declaration using ->ntfs_get_sb() and
        - Backwards compatibility for gcc-2.95. (Richard Russon)
        - Update to kernel 2.5.5-pre1 and rediff the now tiny patch.
        - Convert to new file system declaration using ->ntfs_get_sb() and
@@ -789,7 +892,7 @@ tng-0.0.8 - 08/03/2002 - Now using BitKeeper, http://linux-ntfs.bkbits.net/
          which is then referenced but not copied.
        - Rename run_list structure to run_list_element and create a new
          run_list structure containing a pointer to a run_list_element
          which is then referenced but not copied.
        - Rename run_list structure to run_list_element and create a new
          run_list structure containing a pointer to a run_list_element
-         structure and a read/write semaphore. Adapt all users of run lists
+         structure and a read/write semaphore. Adapt all users of runlists
          to new scheme and take and release the lock as needed. This fixes a
          nasty race as the run_list changes even when inodes are locked for
          reading and even when the inode isn't locked at all, so we really
          to new scheme and take and release the lock as needed. This fixes a
          nasty race as the run_list changes even when inodes are locked for
          reading and even when the inode isn't locked at all, so we really
@@ -820,7 +923,7 @@ tng-0.0.7 - 13/02/2002 - The driver is now feature complete for read-only!
        - Cleanup mft.c and it's debug/error output in particular. Fix a minor
          bug in mapping of extent inodes. Update all the comments to fit all
          the recent code changes.
        - Cleanup mft.c and it's debug/error output in particular. Fix a minor
          bug in mapping of extent inodes. Update all the comments to fit all
          the recent code changes.
-       - Modify vcn_to_lcn() to cope with entirely unmapped run lists.
+       - Modify vcn_to_lcn() to cope with entirely unmapped runlists.
        - Cleanups in compress.c, mostly comments and folding help.
        - Implement attrib.c::map_run_list() as a generic helper.
        - Make compress.c::ntfs_file_read_compressed_block() use map_run_list()
        - Cleanups in compress.c, mostly comments and folding help.
        - Implement attrib.c::map_run_list() as a generic helper.
        - Make compress.c::ntfs_file_read_compressed_block() use map_run_list()
@@ -846,11 +949,11 @@ tng-0.0.7 - 13/02/2002 - The driver is now feature complete for read-only!
          pass in the upcase table and its length. These can be gotten from
          ctx->ntfs_ino->vol->upcase{_len}. Update all callers.
        - Cleanups in attrib.c.
          pass in the upcase table and its length. These can be gotten from
          ctx->ntfs_ino->vol->upcase{_len}. Update all callers.
        - Cleanups in attrib.c.
-       - Implement merging of run lists, attrib.c::merge_run_lists() and its
+       - Implement merging of runlists, attrib.c::merge_run_lists() and its
          helpers. (Richard Russon)
          helpers. (Richard Russon)
-       - Attribute lists part 2, attribute extents and multi part run lists:
+       - Attribute lists part 2, attribute extents and multi part runlists:
          enable proper support for LCN_RL_NOT_MAPPED and automatic mapping of
          enable proper support for LCN_RL_NOT_MAPPED and automatic mapping of
-         further run list parts via attrib.c::map_run_list().
+         further runlist parts via attrib.c::map_run_list().
        - Tiny endianness bug fix in decompress_mapping_pairs().
 
 tng-0.0.6 - Encrypted directories, bug fixes, cleanups, debugging enhancements.
        - Tiny endianness bug fix in decompress_mapping_pairs().
 
 tng-0.0.6 - Encrypted directories, bug fixes, cleanups, debugging enhancements.
@@ -882,7 +985,7 @@ tng-0.0.6 - Encrypted directories, bug fixes, cleanups, debugging enhancements.
          support dollar signs in the names of variables/constants. Attribute
          types now start with AT_ instead of $ and $I30 is now just I30.
        - Cleanup ntfs_lookup() and add consistency check of sequence numbers.
          support dollar signs in the names of variables/constants. Attribute
          types now start with AT_ instead of $ and $I30 is now just I30.
        - Cleanup ntfs_lookup() and add consistency check of sequence numbers.
-       - Load complete run list for $MFT/$BITMAP during mount and cleanup
+       - Load complete runlist for $MFT/$BITMAP during mount and cleanup
          access functions. This means we now cope with $MFT/$BITMAP being
          spread accross several mft records.
        - Disable modification of mft_zone_multiplier on remount. We can always
          access functions. This means we now cope with $MFT/$BITMAP being
          spread accross several mft records.
        - Disable modification of mft_zone_multiplier on remount. We can always
@@ -915,11 +1018,11 @@ tng-0.0.4 - Big changes, getting in line with Al Viro's comments.
          parameter list. Pass either READ or WRITE to this, each has the
          obvious meaning.
        - General cleanups to allow for easier folding in vi.
          parameter list. Pass either READ or WRITE to this, each has the
          obvious meaning.
        - General cleanups to allow for easier folding in vi.
-       - attrib.c::decompress_mapping_pairs() now accepts the old run list
+       - attrib.c::decompress_mapping_pairs() now accepts the old runlist
          argument, and invokes attrib.c::merge_run_lists() to merge the old
          argument, and invokes attrib.c::merge_run_lists() to merge the old
-         and the new run lists.
+         and the new runlists.
        - Removed attrib.c::find_first_attr().
        - Removed attrib.c::find_first_attr().
-       - Implemented loading of attribute list and complete run list for $MFT.
+       - Implemented loading of attribute list and complete runlist for $MFT.
          This means we now cope with $MFT being spread across several mft
          records.
        - Adapt to 2.5.2-pre9 and the changed create_empty_buffers() syntax.
          This means we now cope with $MFT being spread across several mft
          records.
        - Adapt to 2.5.2-pre9 and the changed create_empty_buffers() syntax.
@@ -957,7 +1060,7 @@ tng-0.0.4 - Big changes, getting in line with Al Viro's comments.
 tng-0.0.3 - Cleanups, enhancements, bug fixes.
 
        - Work on attrib.c::decompress_mapping_pairs() to detect base extents
 tng-0.0.3 - Cleanups, enhancements, bug fixes.
 
        - Work on attrib.c::decompress_mapping_pairs() to detect base extents
-         and setup the run list appropriately using knowledge provided by the
+         and setup the runlist appropriately using knowledge provided by the
          sizes in the base attribute record.
        - Balance the get_/put_attr_search_ctx() calls so we don't leak memory
          any more.
          sizes in the base attribute record.
        - Balance the get_/put_attr_search_ctx() calls so we don't leak memory
          any more.