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).
-       - 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
@@ -26,6 +21,114 @@ ToDo/Notes:
        - 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
@@ -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
-         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.
@@ -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.
-       - 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
-         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.
 
@@ -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).
-       - 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
@@ -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().
-       - 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.
-       - 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
@@ -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.
-       - 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
@@ -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
-         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
@@ -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.
-       - 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()
@@ -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.
-       - 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)
-       - 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
-         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.
@@ -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.
-       - 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
@@ -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.
-       - 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
-         and the new run lists.
+         and the new runlists.
        - 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.
@@ -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
-         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.