aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ntfs/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ntfs/ChangeLog')
-rw-r--r--fs/ntfs/ChangeLog120
1 files changed, 104 insertions, 16 deletions
diff --git a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog
index 1d2ad15f1533..cb86140aa2a3 100644
--- a/fs/ntfs/ChangeLog
+++ b/fs/ntfs/ChangeLog
@@ -2,20 +2,18 @@ ToDo/Notes:
2 - Find and fix bugs. 2 - Find and fix bugs.
3 - Checkpoint or disable the user space journal ($UsnJrnl). 3 - Checkpoint or disable the user space journal ($UsnJrnl).
4 - In between ntfs_prepare/commit_write, need exclusion between 4 - In between ntfs_prepare/commit_write, need exclusion between
5 simultaneous file extensions. Need perhaps an NInoResizeUnderway() 5 simultaneous file extensions. This is given to us by holding i_sem
6 flag which we can set in ntfs_prepare_write() and clear again in 6 on the inode. The only places in the kernel when a file is resized
7 ntfs_commit_write(). Just have to be careful in readpage/writepage, 7 are prepare/commit write and truncate for both of which i_sem is
8 as well as in truncate, that we play nice... We might need to have 8 held. Just have to be careful in readpage/writepage and all other
9 a data_size field in the ntfs_inode to store the real attribute 9 helpers not running under i_sem that we play nice...
10 length. Also need to be careful with initialized_size extention in 10 Also need to be careful with initialized_size extention in
11 ntfs_prepare_write. Basically, just be _very_ careful in this code... 11 ntfs_prepare_write. Basically, just be _very_ careful in this code...
12 OTOH, perhaps i_sem, which is held accross generic_file_write is 12 UPDATE: The only things that need to be checked are read/writepage
13 sufficient for synchronisation here. We then just need to make sure 13 which do not hold i_sem. Note writepage cannot change i_size but it
14 ntfs_readpage/writepage/truncate interoperate properly with us. 14 needs to cope with a concurrent i_size change, just like readpage.
15 UPDATE: The above is all ok as it is due to i_sem held. The only 15 Also both need to cope with concurrent changes to the other sizes,
16 thing that needs to be checked is ntfs_writepage() which does not 16 i.e. initialized/allocated/compressed size, as well.
17 hold i_sem. It cannot change i_size but it needs to cope with a
18 concurrent i_size change.
19 - Implement mft.c::sync_mft_mirror_umount(). We currently will just 17 - Implement mft.c::sync_mft_mirror_umount(). We currently will just
20 leave the volume dirty on umount if the final iput(vol->mft_ino) 18 leave the volume dirty on umount if the final iput(vol->mft_ino)
21 causes a write of any mirrored mft records due to the mft mirror 19 causes a write of any mirrored mft records due to the mft mirror
@@ -31,6 +29,96 @@ ToDo/Notes:
31 compiled without debug. This avoids a possible denial of service 29 compiled without debug. This avoids a possible denial of service
32 attack. Thanks to Carl-Daniel Hailfinger from SuSE for pointing this 30 attack. Thanks to Carl-Daniel Hailfinger from SuSE for pointing this
33 out. 31 out.
32 - Fix compilation warnings on ia64. (Randy Dunlap)
33 - Use i_size_read() in fs/ntfs/attrib.c::ntfs_attr_set().
34 - Use i_size_read() in fs/ntfs/logfile.c::ntfs_{check,empty}_logfile().
35 - Use i_size_read() once and then use the cached value in
36 fs/ntfs/lcnalloc.c::ntfs_cluster_alloc().
37 - Use i_size_read() in fs/ntfs/file.c::ntfs_file_open().
38 - Add size_lock to the ntfs_inode structure. This is an rw spinlock
39 and it locks against access to the inode sizes. Note, ->size_lock
40 is also accessed from irq context so you must use the _irqsave and
41 _irqrestore lock and unlock functions, respectively.
42 - Use i_size_read() in fs/ntfs/compress.c at the start of the read and
43 use the cached value afterwards. Cache the initialized_size in the
44 same way and protect access to the two sizes using the size_lock.
45 - Use i_size_read() in fs/ntfs/dir.c once and then use the cached
46 value afterwards.
47 - Use i_size_read() in fs/ntfs/super.c once and then use the cached
48 value afterwards. Cache the initialized_size in the same way and
49 protect access to the two sizes using the size_lock.
50 - Minor optimization to fs/ntfs/super.c::ntfs_statfs() and its helpers.
51 - Use i_size_read() in fs/ntfs/inode.c once and then use the cached
52 value afterwards when reading the size of the bitmap inode.
53 - Use i_size_{read,write}() in fs/ntfs/{aops.c,mft.c} and protect
54 access to the i_size and other size fields using the size_lock.
55 - Implement extension of resident files in the regular file write code
56 paths (fs/ntfs/aops.c::ntfs_{prepare,commit}_write()). At present
57 this only works until the data attribute becomes too big for the mft
58 record after which we abort the write returning -EOPNOTSUPP from
59 ntfs_prepare_write().
60 - Add disable_sparse mount option together with a per volume sparse
61 enable bit which is set appropriately and a per inode sparse disable
62 bit which is preset on some system file inodes as appropriate.
63 - Enforce that sparse support is disabled on NTFS volumes pre 3.0.
64 - Fix a bug in fs/ntfs/runlist.c::ntfs_mapping_pairs_decompress() in
65 the creation of the unmapped runlist element for the base attribute
66 extent.
67 - Split ntfs_map_runlist() into ntfs_map_runlist() and a non-locking
68 helper ntfs_map_runlist_nolock() which is used by ntfs_map_runlist().
69 This allows us to map runlist fragments with the runlist lock already
70 held without having to drop and reacquire it around the call. Adapt
71 all callers.
72 - Change ntfs_find_vcn() to ntfs_find_vcn_nolock() which takes a locked
73 runlist. This allows us to find runlist elements with the runlist
74 lock already held without having to drop and reacquire it around the
75 call. Adapt all callers.
76 - Change time to u64 in time.h::ntfs2utc() as it otherwise generates a
77 warning in the do_div() call on sparc32. Thanks to Meelis Roos for
78 the report and analysis of the warning.
79 - Fix a nasty runlist merge bug when merging two holes.
80 - Set the ntfs_inode->allocated_size to the real allocated size in the
81 mft record for resident attributes (fs/ntfs/inode.c).
82 - Small readability cleanup to use "a" instead of "ctx->attr"
83 everywhere (fs/ntfs/inode.c).
84 - Make fs/ntfs/namei.c::ntfs_get_{parent,dentry} static and move the
85 definition of ntfs_export_ops from fs/ntfs/super.c to namei.c. Also,
86 declare ntfs_export_ops in fs/ntfs/ntfs.h.
87 - Correct sparse file handling. The compressed values need to be
88 checked and set in the ntfs inode as done for compressed files and
89 the compressed size needs to be used for vfs inode->i_blocks instead
90 of the allocated size, again, as done for compressed files.
91 - Add AT_EA in addition to AT_DATA to whitelist for being allowed to be
92 non-resident in fs/ntfs/attrib.c::ntfs_attr_can_be_non_resident().
93 - Add fs/ntfs/attrib.c::ntfs_attr_vcn_to_lcn_nolock() used by the new
94 write code.
95 - Fix bug in fs/ntfs/attrib.c::ntfs_find_vcn_nolock() where after
96 dropping the read lock and taking the write lock we were not checking
97 whether someone else did not already do the work we wanted to do.
98 - Rename fs/ntfs/attrib.c::ntfs_find_vcn_nolock() to
99 ntfs_attr_find_vcn_nolock() and update all callers.
100 - Add fs/ntfs/attrib.[hc]::ntfs_attr_make_non_resident().
101 - Fix sign of various error return values to be negative in
102 fs/ntfs/lcnalloc.c.
103 - Modify ->readpage and ->writepage (fs/ntfs/aops.c) so they detect and
104 handle the case where an attribute is converted from resident to
105 non-resident by a concurrent file write.
106 - Remove checks for NULL before calling kfree() since kfree() does the
107 checking itself. (Jesper Juhl)
108 - Some utilities modify the boot sector but do not update the checksum.
109 Thus, relax the checking in fs/ntfs/super.c::is_boot_sector_ntfs() to
110 only emit a warning when the checksum is incorrect rather than
111 refusing the mount. Thanks to Bernd Casimir for pointing this
112 problem out.
113 - Update attribute definition handling.
114 - Add NTFS_MAX_CLUSTER_SIZE and NTFS_MAX_PAGES_PER_CLUSTER constants.
115 - Use NTFS_MAX_CLUSTER_SIZE in super.c instead of hard coding 0x10000.
116 - Use MAX_BUF_PER_PAGE instead of variable sized array allocation for
117 better code generation and one less sparse warning in fs/ntfs/aops.c.
118 - Remove spurious void pointer casts from fs/ntfs/. (Pekka Enberg)
119 - Use C99 style structure initialization after memory allocation where
120 possible (fs/ntfs/{attrib.c,index.c,super.c}). Thanks to Al Viro and
121 Pekka Enberg.
34 122
352.1.22 - Many bug and race fixes and error handling improvements. 1232.1.22 - Many bug and race fixes and error handling improvements.
36 124
@@ -1037,7 +1125,7 @@ tng-0.0.8 - 08/03/2002 - Now using BitKeeper, http://linux-ntfs.bkbits.net/
1037 - Further runlist merging work. (Richard Russon) 1125 - Further runlist merging work. (Richard Russon)
1038 - Backwards compatibility for gcc-2.95. (Richard Russon) 1126 - Backwards compatibility for gcc-2.95. (Richard Russon)
1039 - Update to kernel 2.5.5-pre1 and rediff the now tiny patch. 1127 - Update to kernel 2.5.5-pre1 and rediff the now tiny patch.
1040 - Convert to new file system declaration using ->ntfs_get_sb() and 1128 - Convert to new filesystem declaration using ->ntfs_get_sb() and
1041 replacing ntfs_read_super() with ntfs_fill_super(). 1129 replacing ntfs_read_super() with ntfs_fill_super().
1042 - Set s_maxbytes to MAX_LFS_FILESIZE to avoid page cache page index 1130 - Set s_maxbytes to MAX_LFS_FILESIZE to avoid page cache page index
1043 overflow on 32-bit architectures. 1131 overflow on 32-bit architectures.
@@ -1333,7 +1421,7 @@ tng-0.0.1 - The first useful version.
1333 The driver is now actually useful! Yey. (-: It undoubtedly has got bugs 1421 The driver is now actually useful! Yey. (-: It undoubtedly has got bugs
1334 though and it doesn't implement accesssing compressed files yet. Also, 1422 though and it doesn't implement accesssing compressed files yet. Also,
1335 accessing files with attribute list attributes is not implemented yet 1423 accessing files with attribute list attributes is not implemented yet
1336 either. But for small or simple file systems it should work and allow 1424 either. But for small or simple filesystems it should work and allow
1337 you to list directories, use stat on directory entries and the file 1425 you to list directories, use stat on directory entries and the file
1338 system, open, read, mmap and llseek around in files. A big mile stone 1426 system, open, read, mmap and llseek around in files. A big mile stone
1339 has been reached! 1427 has been reached!
@@ -1341,7 +1429,7 @@ tng-0.0.1 - The first useful version.
1341tng-0.0.0 - Initial version tag. 1429tng-0.0.0 - Initial version tag.
1342 1430
1343 Initial driver implementation. The driver can mount and umount simple 1431 Initial driver implementation. The driver can mount and umount simple
1344 NTFS file systems (i.e. ones without attribute lists in the system 1432 NTFS filesystems (i.e. ones without attribute lists in the system
1345 files). If the mount fails there might be problems in the error handling 1433 files). If the mount fails there might be problems in the error handling
1346 code paths, so be warned. Otherwise it seems to be loading the system 1434 code paths, so be warned. Otherwise it seems to be loading the system
1347 files nicely and the mft record read mapping/unmapping seems to be 1435 files nicely and the mft record read mapping/unmapping seems to be