Changes by: antona
Update of /cvsroot/linux-ntfs/ntfs-driver-tng
In directory usw-pr-cvs1:/tmp/cvs-serv11103
Modified Files:
ChangeLog
Log Message:
Merge ChangeLog from my holiday work.
Index: ChangeLog
===================================================================
RCS file: /cvsroot/linux-ntfs/ntfs-driver-tng/ChangeLog,v
retrieving revision 1.69
retrieving revision 1.70
diff -U2 -r1.69 -r1.70
--- ChangeLog 4 Mar 2002 14:32:42 -0000 1.69
+++ ChangeLog 4 Mar 2002 19:29:19 -0000 1.70
@@ -1,48 +1,43 @@
ToDo:
- - Audit for initialized_size vs data_size (i.e. i_size) in whole driver.
+ - Audit for allocated_size vs initialized_size vs data_size (i.e.
+ i_size) in whole driver.
Need to enforce limits and zeroes need to be written when overflow is
- detected.
- - Cleanup read_inode in that it can never see non-lowest_vcn 0 extents
- due to the nature of lookup_attr() and how we support attribute lists.
+ detected. We CANNOT use block_read_full_page() at all anywhere! This
+ is because initialized_size can lie within a block and ntfs_get_block
+ has no way to tell block_read_full_page about it. So our readpage
+ functions need to clone block_read_full_page and modify it to cope
+ with the significance of the different attribute sizes.
+ Still need to go through:
+ aops.c, attrib.c, compress.c, dir.c, mft.c
- Find and fix bugs.
+ - W.r.t. s_maxbytes still need to be careful on reading/truncating as
+ there are dragons lurking in the details, e.g. read_inode() currently
+ does no checks for file size wrt s_maxbytes. So what happens when a
+ user open()s a file with i_size > s_maxbytes? Should read_inode()
+ truncate the visible i_size? Will the user just get -E2BIG (or
+ whatever) on open()? Or will (s)he be able to open() but lseek() and
+ read() will fail when s_maxbytes is reached? -> Investigate this!
- Perhaps don't bother getting the run list in ntfs_read_inode() at
all. But we do have to find the data/index root attribute to get the
inode size so we might want to decompress the mapping pairs of the
- first extent in there anyway.
- - Implement a mount time switch allowing choice between different
- directory entry namespaces and modify readdir() accordingly. We want
- to have three options: a) short file names only, b) long file names
- only [DEFAULT], and c) all file names [this one with a fat mount
- time warning that it will confuse Linux!].
+ first extent in there anyway. -> Ponder this. Directory listings
+ would have significant speedups but the first access to each file/dir
+ would have a small speed penalty.
- Implement/allow non-resident index bitmaps in ntfs_readdir().
- - Add preemt_{enable,disable,enable_no_resched} in compession engine
- for 2.5.4-pre6.
- - Replace size determination in read_super() with
- sb->s_bdev->bd_inode->i_size (in bytes).
- - When upgrading to 2.5.4-pre2, set s_maxbytes to MAX_LFS_FILESIZE, but
- still need to be careful on reading/truncating as there are still
- dragons.
- - Also again for 2.5.4-pre2, move to using ->get_sb() and replace
- read_super() with fill super. fill_super should return 0 on success
- and -errno on error (usually -EINVAL). The code for get_sb and new
- fs type declaration stuff is:
-
-static struct super_block *ntfs_get_sb(struct file_system_type *fs_type,
- int flags, char *dev_name, void *data)
-{
- return get_sb_bdev(fs_type, flags, dev_name, data, ntfs_fill_super);
-}
-
-static struct file_system_type ntfs_fs_type = {
- owner: THIS_MODULE,
- name: "ntfs",
- get_sb: ntfs_get_sb,
- fs_flags: FS_REQUIRES_DEV,
-};
+ - vcn_to_lcn() should somehow return the correct pointer within the
+ ->run_list so we can get at the lcns for the following vcns, this is
+ strictly a speed optimization. Obviously need to keep the ->run_list
+ locked or RACE. load_attribute_list() which we call without any locks
+ held already performs such an optimization but that is no longer
+ possible when using the spinlock on the run lists as this would sleep
+ in between. Either need different type of optimization as above or
+ need to change the read/write spinlock to a read/write semaphore.
+ - Check for lowest_vcn != 0 in ntfs_read_inode() and mark the inode as
+ bad if found.
tng-0.0.8 - Work in progress.
- Replace bdevname(sb->s_dev) with sb->s_id.
- - Remove now superfluous new line characters in all callers of
+ - Remove now superfluous new-line characters in all callers of
ntfs_debug().
- Apply kludge in ntfs_read_inode(), setting i_nlink to 1 for
@@ -51,4 +46,66 @@
- Further run list 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
+ replacing ntfs_read_super() with ntfs_fill_super().
+ - Set s_maxbytes to MAX_LFS_FILESIZE to avoid page cache page index
+ overflow on 32-bit architectures.
+ - Cleanup upcase loading code to use ntfs_(un)map_page().
+ - Disable/reenable preemtion in critical sections of compession engine.
+ - Replace device size determination in ntfs_fill_super() with
+ sb->s_bdev->bd_inode->i_size (in bytes) and remove now superfluous
+ function super.c::get_nr_blocks().
+ - Implement a mount time option (show_inodes) allowing choice of which
+ types of inode names readdir() returns and modify ntfs_filldir()
+ accordingly. There are several parameters to show_inodes:
+ system: system files
+ win32: long file names (including POSIX file names) [DEFAULT]
+ long: same as win32
+ dos: short file names only (excluding POSIX file names)
+ short: same as dos
+ posix: same as both win32 and dos
+ all: all file names
+ Note that the options are additive, i.e. specifying:
+ -o show_inodes=system,show_inodes=win32,show_inodes=dos
+ is the same as specifying:
+ -o show_inodes=all
+ Note that the "posix" and "all" options will show all directory
+ names, BUT the link count on each directory inode entry is set to 1,
+ due to Linux not supporting directory hard links. This may well
+ confuse some userspace applications, since the directory names will
+ have the same inode numbers. Thus it is NOT advisable to use the
+ "posix" or "all" options. We provide them only for completeness sake.
+ - Add copies of allocated_size, initialized_size, and compressed_size to
+ the ntfs inode structure and set them up in
+ inode.c::ntfs_read_inode(). These reflect the unnamed data attribute
+ for files and the index allocation attribute for directories.
+ - Add copies of allocated_size and initialized_size to ntfs inode for
+ $BITMAP attribute of large directories and set them up in
+ inode.c::ntfs_read_inode().
+ - Add copies of allocated_size and initialized_size to ntfs volume for
+ $BITMAP attribute of $MFT and set them up in
+ super.c::load_system_files().
+ - Parse deprecated ntfs driver options (iocharset, show_sys_files,
+ posix, and utf8) and tell user what the new options to use are. Note
+ we still do support them but they will be removed with kernel 2.7.x.
+ - Change all occurences of integer long long printf formatting to hex
+ as printk() will not support long long integer format if/when the
+ div64 patch goes into the kernel.
+ - Make slab caches have stable names and change the names to what they
+ were intended to be. These changes are required/made possible by the
+ new slab cache name handling which removes the length limitation by
+ requiring the caller of kmem_cache_create() to supply a stable name
+ 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 spinlock. Adapt all usesrs of run lists
+ 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
+ needed the serialization.
+ - Cleanup read_inode() removing all code checking for lowest_vcn != 0.
+ This can never happen due to the nature of lookup_attr() and how we
+ support attribute lists. If it did happen it would imply the inode
+ being corrupt.
tng-0.0.7 - 13/02/2002 - The driver is now feature complete for read-only!
|