diff options
Diffstat (limited to 'fs/ntfs/ChangeLog')
-rw-r--r-- | fs/ntfs/ChangeLog | 120 |
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 | ||
35 | 2.1.22 - Many bug and race fixes and error handling improvements. | 123 | 2.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. | |||
1341 | tng-0.0.0 - Initial version tag. | 1429 | tng-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 |