diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/filesystems/ntfs.txt |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/filesystems/ntfs.txt')
-rw-r--r-- | Documentation/filesystems/ntfs.txt | 630 |
1 files changed, 630 insertions, 0 deletions
diff --git a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt new file mode 100644 index 000000000000..f89b440fad1d --- /dev/null +++ b/Documentation/filesystems/ntfs.txt | |||
@@ -0,0 +1,630 @@ | |||
1 | The Linux NTFS filesystem driver | ||
2 | ================================ | ||
3 | |||
4 | |||
5 | Table of contents | ||
6 | ================= | ||
7 | |||
8 | - Overview | ||
9 | - Web site | ||
10 | - Features | ||
11 | - Supported mount options | ||
12 | - Known bugs and (mis-)features | ||
13 | - Using NTFS volume and stripe sets | ||
14 | - The Device-Mapper driver | ||
15 | - The Software RAID / MD driver | ||
16 | - Limitiations when using the MD driver | ||
17 | - ChangeLog | ||
18 | |||
19 | |||
20 | Overview | ||
21 | ======== | ||
22 | |||
23 | Linux-NTFS comes with a number of user-space programs known as ntfsprogs. | ||
24 | These include mkntfs, a full-featured ntfs file system format utility, | ||
25 | ntfsundelete used for recovering files that were unintentionally deleted | ||
26 | from an NTFS volume and ntfsresize which is used to resize an NTFS partition. | ||
27 | See the web site for more information. | ||
28 | |||
29 | To mount an NTFS 1.2/3.x (Windows NT4/2000/XP/2003) volume, use the file | ||
30 | system type 'ntfs'. The driver currently supports read-only mode (with no | ||
31 | fault-tolerance, encryption or journalling) and very limited, but safe, write | ||
32 | support. | ||
33 | |||
34 | For fault tolerance and raid support (i.e. volume and stripe sets), you can | ||
35 | use the kernel's Software RAID / MD driver. See section "Using Software RAID | ||
36 | with NTFS" for details. | ||
37 | |||
38 | |||
39 | Web site | ||
40 | ======== | ||
41 | |||
42 | There is plenty of additional information on the linux-ntfs web site | ||
43 | at http://linux-ntfs.sourceforge.net/ | ||
44 | |||
45 | The web site has a lot of additional information, such as a comprehensive | ||
46 | FAQ, documentation on the NTFS on-disk format, informaiton on the Linux-NTFS | ||
47 | userspace utilities, etc. | ||
48 | |||
49 | |||
50 | Features | ||
51 | ======== | ||
52 | |||
53 | - This is a complete rewrite of the NTFS driver that used to be in the kernel. | ||
54 | This new driver implements NTFS read support and is functionally equivalent | ||
55 | to the old ntfs driver. | ||
56 | - The new driver has full support for sparse files on NTFS 3.x volumes which | ||
57 | the old driver isn't happy with. | ||
58 | - The new driver supports execution of binaries due to mmap() now being | ||
59 | supported. | ||
60 | - The new driver supports loopback mounting of files on NTFS which is used by | ||
61 | some Linux distributions to enable the user to run Linux from an NTFS | ||
62 | partition by creating a large file while in Windows and then loopback | ||
63 | mounting the file while in Linux and creating a Linux filesystem on it that | ||
64 | is used to install Linux on it. | ||
65 | - A comparison of the two drivers using: | ||
66 | time find . -type f -exec md5sum "{}" \; | ||
67 | run three times in sequence with each driver (after a reboot) on a 1.4GiB | ||
68 | NTFS partition, showed the new driver to be 20% faster in total time elapsed | ||
69 | (from 9:43 minutes on average down to 7:53). The time spent in user space | ||
70 | was unchanged but the time spent in the kernel was decreased by a factor of | ||
71 | 2.5 (from 85 CPU seconds down to 33). | ||
72 | - The driver does not support short file names in general. For backwards | ||
73 | compatibility, we implement access to files using their short file names if | ||
74 | they exist. The driver will not create short file names however, and a | ||
75 | rename will discard any existing short file name. | ||
76 | - The new driver supports exporting of mounted NTFS volumes via NFS. | ||
77 | - The new driver supports async io (aio). | ||
78 | - The new driver supports fsync(2), fdatasync(2), and msync(2). | ||
79 | - The new driver supports readv(2) and writev(2). | ||
80 | - The new driver supports access time updates (including mtime and ctime). | ||
81 | |||
82 | |||
83 | Supported mount options | ||
84 | ======================= | ||
85 | |||
86 | In addition to the generic mount options described by the manual page for the | ||
87 | mount command (man 8 mount, also see man 5 fstab), the NTFS driver supports the | ||
88 | following mount options: | ||
89 | |||
90 | iocharset=name Deprecated option. Still supported but please use | ||
91 | nls=name in the future. See description for nls=name. | ||
92 | |||
93 | nls=name Character set to use when returning file names. | ||
94 | Unlike VFAT, NTFS suppresses names that contain | ||
95 | unconvertible characters. Note that most character | ||
96 | sets contain insufficient characters to represent all | ||
97 | possible Unicode characters that can exist on NTFS. | ||
98 | To be sure you are not missing any files, you are | ||
99 | advised to use nls=utf8 which is capable of | ||
100 | representing all Unicode characters. | ||
101 | |||
102 | utf8=<bool> Option no longer supported. Currently mapped to | ||
103 | nls=utf8 but please use nls=utf8 in the future and | ||
104 | make sure utf8 is compiled either as module or into | ||
105 | the kernel. See description for nls=name. | ||
106 | |||
107 | uid= | ||
108 | gid= | ||
109 | umask= Provide default owner, group, and access mode mask. | ||
110 | These options work as documented in mount(8). By | ||
111 | default, the files/directories are owned by root and | ||
112 | he/she has read and write permissions, as well as | ||
113 | browse permission for directories. No one else has any | ||
114 | access permissions. I.e. the mode on all files is by | ||
115 | default rw------- and for directories rwx------, a | ||
116 | consequence of the default fmask=0177 and dmask=0077. | ||
117 | Using a umask of zero will grant all permissions to | ||
118 | everyone, i.e. all files and directories will have mode | ||
119 | rwxrwxrwx. | ||
120 | |||
121 | fmask= | ||
122 | dmask= Instead of specifying umask which applies both to | ||
123 | files and directories, fmask applies only to files and | ||
124 | dmask only to directories. | ||
125 | |||
126 | sloppy=<BOOL> If sloppy is specified, ignore unknown mount options. | ||
127 | Otherwise the default behaviour is to abort mount if | ||
128 | any unknown options are found. | ||
129 | |||
130 | show_sys_files=<BOOL> If show_sys_files is specified, show the system files | ||
131 | in directory listings. Otherwise the default behaviour | ||
132 | is to hide the system files. | ||
133 | Note that even when show_sys_files is specified, "$MFT" | ||
134 | will not be visible due to bugs/mis-features in glibc. | ||
135 | Further, note that irrespective of show_sys_files, all | ||
136 | files are accessible by name, i.e. you can always do | ||
137 | "ls -l \$UpCase" for example to specifically show the | ||
138 | system file containing the Unicode upcase table. | ||
139 | |||
140 | case_sensitive=<BOOL> If case_sensitive is specified, treat all file names as | ||
141 | case sensitive and create file names in the POSIX | ||
142 | namespace. Otherwise the default behaviour is to treat | ||
143 | file names as case insensitive and to create file names | ||
144 | in the WIN32/LONG name space. Note, the Linux NTFS | ||
145 | driver will never create short file names and will | ||
146 | remove them on rename/delete of the corresponding long | ||
147 | file name. | ||
148 | Note that files remain accessible via their short file | ||
149 | name, if it exists. If case_sensitive, you will need | ||
150 | to provide the correct case of the short file name. | ||
151 | |||
152 | errors=opt What to do when critical file system errors are found. | ||
153 | Following values can be used for "opt": | ||
154 | continue: DEFAULT, try to clean-up as much as | ||
155 | possible, e.g. marking a corrupt inode as | ||
156 | bad so it is no longer accessed, and then | ||
157 | continue. | ||
158 | recover: At present only supported is recovery of | ||
159 | the boot sector from the backup copy. | ||
160 | If read-only mount, the recovery is done | ||
161 | in memory only and not written to disk. | ||
162 | Note that the options are additive, i.e. specifying: | ||
163 | errors=continue,errors=recover | ||
164 | means the driver will attempt to recover and if that | ||
165 | fails it will clean-up as much as possible and | ||
166 | continue. | ||
167 | |||
168 | mft_zone_multiplier= Set the MFT zone multiplier for the volume (this | ||
169 | setting is not persistent across mounts and can be | ||
170 | changed from mount to mount but cannot be changed on | ||
171 | remount). Values of 1 to 4 are allowed, 1 being the | ||
172 | default. The MFT zone multiplier determines how much | ||
173 | space is reserved for the MFT on the volume. If all | ||
174 | other space is used up, then the MFT zone will be | ||
175 | shrunk dynamically, so this has no impact on the | ||
176 | amount of free space. However, it can have an impact | ||
177 | on performance by affecting fragmentation of the MFT. | ||
178 | In general use the default. If you have a lot of small | ||
179 | files then use a higher value. The values have the | ||
180 | following meaning: | ||
181 | Value MFT zone size (% of volume size) | ||
182 | 1 12.5% | ||
183 | 2 25% | ||
184 | 3 37.5% | ||
185 | 4 50% | ||
186 | Note this option is irrelevant for read-only mounts. | ||
187 | |||
188 | |||
189 | Known bugs and (mis-)features | ||
190 | ============================= | ||
191 | |||
192 | - The link count on each directory inode entry is set to 1, due to Linux not | ||
193 | supporting directory hard links. This may well confuse some user space | ||
194 | applications, since the directory names will have the same inode numbers. | ||
195 | This also speeds up ntfs_read_inode() immensely. And we haven't found any | ||
196 | problems with this approach so far. If you find a problem with this, please | ||
197 | let us know. | ||
198 | |||
199 | |||
200 | Please send bug reports/comments/feedback/abuse to the Linux-NTFS development | ||
201 | list at sourceforge: linux-ntfs-dev@lists.sourceforge.net | ||
202 | |||
203 | |||
204 | Using NTFS volume and stripe sets | ||
205 | ================================= | ||
206 | |||
207 | For support of volume and stripe sets, you can either use the kernel's | ||
208 | Device-Mapper driver or the kernel's Software RAID / MD driver. The former is | ||
209 | the recommended one to use for linear raid. But the latter is required for | ||
210 | raid level 5. For striping and mirroring, either driver should work fine. | ||
211 | |||
212 | |||
213 | The Device-Mapper driver | ||
214 | ------------------------ | ||
215 | |||
216 | You will need to create a table of the components of the volume/stripe set and | ||
217 | how they fit together and load this into the kernel using the dmsetup utility | ||
218 | (see man 8 dmsetup). | ||
219 | |||
220 | Linear volume sets, i.e. linear raid, has been tested and works fine. Even | ||
221 | though untested, there is no reason why stripe sets, i.e. raid level 0, and | ||
222 | mirrors, i.e. raid level 1 should not work, too. Stripes with parity, i.e. | ||
223 | raid level 5, unfortunately cannot work yet because the current version of the | ||
224 | Device-Mapper driver does not support raid level 5. You may be able to use the | ||
225 | Software RAID / MD driver for raid level 5, see the next section for details. | ||
226 | |||
227 | To create the table describing your volume you will need to know each of its | ||
228 | components and their sizes in sectors, i.e. multiples of 512-byte blocks. | ||
229 | |||
230 | For NT4 fault tolerant volumes you can obtain the sizes using fdisk. So for | ||
231 | example if one of your partitions is /dev/hda2 you would do: | ||
232 | |||
233 | $ fdisk -ul /dev/hda | ||
234 | |||
235 | Disk /dev/hda: 81.9 GB, 81964302336 bytes | ||
236 | 255 heads, 63 sectors/track, 9964 cylinders, total 160086528 sectors | ||
237 | Units = sectors of 1 * 512 = 512 bytes | ||
238 | |||
239 | Device Boot Start End Blocks Id System | ||
240 | /dev/hda1 * 63 4209029 2104483+ 83 Linux | ||
241 | /dev/hda2 4209030 37768814 16779892+ 86 NTFS | ||
242 | /dev/hda3 37768815 46170809 4200997+ 83 Linux | ||
243 | |||
244 | And you would know that /dev/hda2 has a size of 37768814 - 4209030 + 1 = | ||
245 | 33559785 sectors. | ||
246 | |||
247 | For Win2k and later dynamic disks, you can for example use the ldminfo utility | ||
248 | which is part of the Linux LDM tools (the latest version at the time of | ||
249 | writing is linux-ldm-0.0.8.tar.bz2). You can download it from: | ||
250 | http://linux-ntfs.sourceforge.net/downloads.html | ||
251 | Simply extract the downloaded archive (tar xvjf linux-ldm-0.0.8.tar.bz2), go | ||
252 | into it (cd linux-ldm-0.0.8) and change to the test directory (cd test). You | ||
253 | will find the precompiled (i386) ldminfo utility there. NOTE: You will not be | ||
254 | able to compile this yourself easily so use the binary version! | ||
255 | |||
256 | Then you would use ldminfo in dump mode to obtain the necessary information: | ||
257 | |||
258 | $ ./ldminfo --dump /dev/hda | ||
259 | |||
260 | This would dump the LDM database found on /dev/hda which describes all of your | ||
261 | dynamic disks and all the volumes on them. At the bottom you will see the | ||
262 | VOLUME DEFINITIONS section which is all you really need. You may need to look | ||
263 | further above to determine which of the disks in the volume definitions is | ||
264 | which device in Linux. Hint: Run ldminfo on each of your dynamic disks and | ||
265 | look at the Disk Id close to the top of the output for each (the PRIVATE HEADER | ||
266 | section). You can then find these Disk Ids in the VBLK DATABASE section in the | ||
267 | <Disk> components where you will get the LDM Name for the disk that is found in | ||
268 | the VOLUME DEFINITIONS section. | ||
269 | |||
270 | Note you will also need to enable the LDM driver in the Linux kernel. If your | ||
271 | distribution did not enable it, you will need to recompile the kernel with it | ||
272 | enabled. This will create the LDM partitions on each device at boot time. You | ||
273 | would then use those devices (for /dev/hda they would be /dev/hda1, 2, 3, etc) | ||
274 | in the Device-Mapper table. | ||
275 | |||
276 | You can also bypass using the LDM driver by using the main device (e.g. | ||
277 | /dev/hda) and then using the offsets of the LDM partitions into this device as | ||
278 | the "Start sector of device" when creating the table. Once again ldminfo would | ||
279 | give you the correct information to do this. | ||
280 | |||
281 | Assuming you know all your devices and their sizes things are easy. | ||
282 | |||
283 | For a linear raid the table would look like this (note all values are in | ||
284 | 512-byte sectors): | ||
285 | |||
286 | --- cut here --- | ||
287 | # Offset into Size of this Raid type Device Start sector | ||
288 | # volume device of device | ||
289 | 0 1028161 linear /dev/hda1 0 | ||
290 | 1028161 3903762 linear /dev/hdb2 0 | ||
291 | 4931923 2103211 linear /dev/hdc1 0 | ||
292 | --- cut here --- | ||
293 | |||
294 | For a striped volume, i.e. raid level 0, you will need to know the chunk size | ||
295 | you used when creating the volume. Windows uses 64kiB as the default, so it | ||
296 | will probably be this unless you changes the defaults when creating the array. | ||
297 | |||
298 | For a raid level 0 the table would look like this (note all values are in | ||
299 | 512-byte sectors): | ||
300 | |||
301 | --- cut here --- | ||
302 | # Offset Size Raid Number Chunk 1st Start 2nd Start | ||
303 | # into of the type of size Device in Device in | ||
304 | # volume volume stripes device device | ||
305 | 0 2056320 striped 2 128 /dev/hda1 0 /dev/hdb1 0 | ||
306 | --- cut here --- | ||
307 | |||
308 | If there are more than two devices, just add each of them to the end of the | ||
309 | line. | ||
310 | |||
311 | Finally, for a mirrored volume, i.e. raid level 1, the table would look like | ||
312 | this (note all values are in 512-byte sectors): | ||
313 | |||
314 | --- cut here --- | ||
315 | # Ofs Size Raid Log Number Region Should Number Source Start Taget Start | ||
316 | # in of the type type of log size sync? of Device in Device in | ||
317 | # vol volume params mirrors Device Device | ||
318 | 0 2056320 mirror core 2 16 nosync 2 /dev/hda1 0 /dev/hdb1 0 | ||
319 | --- cut here --- | ||
320 | |||
321 | If you are mirroring to multiple devices you can specify further targets at the | ||
322 | end of the line. | ||
323 | |||
324 | Note the "Should sync?" parameter "nosync" means that the two mirrors are | ||
325 | already in sync which will be the case on a clean shutdown of Windows. If the | ||
326 | mirrors are not clean, you can specify the "sync" option instead of "nosync" | ||
327 | and the Device-Mapper driver will then copy the entirey of the "Source Device" | ||
328 | to the "Target Device" or if you specified multipled target devices to all of | ||
329 | them. | ||
330 | |||
331 | Once you have your table, save it in a file somewhere (e.g. /etc/ntfsvolume1), | ||
332 | and hand it over to dmsetup to work with, like so: | ||
333 | |||
334 | $ dmsetup create myvolume1 /etc/ntfsvolume1 | ||
335 | |||
336 | You can obviously replace "myvolume1" with whatever name you like. | ||
337 | |||
338 | If it all worked, you will now have the device /dev/device-mapper/myvolume1 | ||
339 | which you can then just use as an argument to the mount command as usual to | ||
340 | mount the ntfs volume. For example: | ||
341 | |||
342 | $ mount -t ntfs -o ro /dev/device-mapper/myvolume1 /mnt/myvol1 | ||
343 | |||
344 | (You need to create the directory /mnt/myvol1 first and of course you can use | ||
345 | anything you like instead of /mnt/myvol1 as long as it is an existing | ||
346 | directory.) | ||
347 | |||
348 | It is advisable to do the mount read-only to see if the volume has been setup | ||
349 | correctly to avoid the possibility of causing damage to the data on the ntfs | ||
350 | volume. | ||
351 | |||
352 | |||
353 | The Software RAID / MD driver | ||
354 | ----------------------------- | ||
355 | |||
356 | An alternative to using the Device-Mapper driver is to use the kernel's | ||
357 | Software RAID / MD driver. For which you need to set up your /etc/raidtab | ||
358 | appropriately (see man 5 raidtab). | ||
359 | |||
360 | Linear volume sets, i.e. linear raid, as well as stripe sets, i.e. raid level | ||
361 | 0, have been tested and work fine (though see section "Limitiations when using | ||
362 | the MD driver with NTFS volumes" especially if you want to use linear raid). | ||
363 | Even though untested, there is no reason why mirrors, i.e. raid level 1, and | ||
364 | stripes with parity, i.e. raid level 5, should not work, too. | ||
365 | |||
366 | You have to use the "persistent-superblock 0" option for each raid-disk in the | ||
367 | NTFS volume/stripe you are configuring in /etc/raidtab as the persistent | ||
368 | superblock used by the MD driver would damange the NTFS volume. | ||
369 | |||
370 | Windows by default uses a stripe chunk size of 64k, so you probably want the | ||
371 | "chunk-size 64k" option for each raid-disk, too. | ||
372 | |||
373 | For example, if you have a stripe set consisting of two partitions /dev/hda5 | ||
374 | and /dev/hdb1 your /etc/raidtab would look like this: | ||
375 | |||
376 | raiddev /dev/md0 | ||
377 | raid-level 0 | ||
378 | nr-raid-disks 2 | ||
379 | nr-spare-disks 0 | ||
380 | persistent-superblock 0 | ||
381 | chunk-size 64k | ||
382 | device /dev/hda5 | ||
383 | raid-disk 0 | ||
384 | device /dev/hdb1 | ||
385 | raid-disl 1 | ||
386 | |||
387 | For linear raid, just change the raid-level above to "raid-level linear", for | ||
388 | mirrors, change it to "raid-level 1", and for stripe sets with parity, change | ||
389 | it to "raid-level 5". | ||
390 | |||
391 | Note for stripe sets with parity you will also need to tell the MD driver | ||
392 | which parity algorithm to use by specifying the option "parity-algorithm | ||
393 | which", where you need to replace "which" with the name of the algorithm to | ||
394 | use (see man 5 raidtab for available algorithms) and you will have to try the | ||
395 | different available algorithms until you find one that works. Make sure you | ||
396 | are working read-only when playing with this as you may damage your data | ||
397 | otherwise. If you find which algorithm works please let us know (email the | ||
398 | linux-ntfs developers list linux-ntfs-dev@lists.sourceforge.net or drop in on | ||
399 | IRC in channel #ntfs on the irc.freenode.net network) so we can update this | ||
400 | documentation. | ||
401 | |||
402 | Once the raidtab is setup, run for example raid0run -a to start all devices or | ||
403 | raid0run /dev/md0 to start a particular md device, in this case /dev/md0. | ||
404 | |||
405 | Then just use the mount command as usual to mount the ntfs volume using for | ||
406 | example: mount -t ntfs -o ro /dev/md0 /mnt/myntfsvolume | ||
407 | |||
408 | It is advisable to do the mount read-only to see if the md volume has been | ||
409 | setup correctly to avoid the possibility of causing damage to the data on the | ||
410 | ntfs volume. | ||
411 | |||
412 | |||
413 | Limitiations when using the Software RAID / MD driver | ||
414 | ----------------------------------------------------- | ||
415 | |||
416 | Using the md driver will not work properly if any of your NTFS partitions have | ||
417 | an odd number of sectors. This is especially important for linear raid as all | ||
418 | data after the first partition with an odd number of sectors will be offset by | ||
419 | one or more sectors so if you mount such a partition with write support you | ||
420 | will cause massive damage to the data on the volume which will only become | ||
421 | apparent when you try to use the volume again under Windows. | ||
422 | |||
423 | So when using linear raid, make sure that all your partitions have an even | ||
424 | number of sectors BEFORE attempting to use it. You have been warned! | ||
425 | |||
426 | Even better is to simply use the Device-Mapper for linear raid and then you do | ||
427 | not have this problem with odd numbers of sectors. | ||
428 | |||
429 | |||
430 | ChangeLog | ||
431 | ========= | ||
432 | |||
433 | Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog. | ||
434 | |||
435 | 2.1.22: | ||
436 | - Improve handling of ntfs volumes with errors. | ||
437 | - Fix various bugs and race conditions. | ||
438 | 2.1.21: | ||
439 | - Fix several race conditions and various other bugs. | ||
440 | - Many internal cleanups, code reorganization, optimizations, and mft | ||
441 | and index record writing code rewritten to fit in with the changes. | ||
442 | - Update Documentation/filesystems/ntfs.txt with instructions on how to | ||
443 | use the Device-Mapper driver with NTFS ftdisk/LDM raid. | ||
444 | 2.1.20: | ||
445 | - Fix two stupid bugs introduced in 2.1.18 release. | ||
446 | 2.1.19: | ||
447 | - Minor bugfix in handling of the default upcase table. | ||
448 | - Many internal cleanups and improvements. Many thanks to Linus | ||
449 | Torvalds and Al Viro for the help and advice with the sparse | ||
450 | annotations and cleanups. | ||
451 | 2.1.18: | ||
452 | - Fix scheduling latencies at mount time. (Ingo Molnar) | ||
453 | - Fix endianness bug in a little traversed portion of the attribute | ||
454 | lookup code. | ||
455 | 2.1.17: | ||
456 | - Fix bugs in mount time error code paths. | ||
457 | 2.1.16: | ||
458 | - Implement access time updates (including mtime and ctime). | ||
459 | - Implement fsync(2), fdatasync(2), and msync(2) system calls. | ||
460 | - Enable the readv(2) and writev(2) system calls. | ||
461 | - Enable access via the asynchronous io (aio) API by adding support for | ||
462 | the aio_read(3) and aio_write(3) functions. | ||
463 | 2.1.15: | ||
464 | - Invalidate quotas when (re)mounting read-write. | ||
465 | NOTE: This now only leave user space journalling on the side. (See | ||
466 | note for version 2.1.13, below.) | ||
467 | 2.1.14: | ||
468 | - Fix an NFSd caused deadlock reported by several users. | ||
469 | 2.1.13: | ||
470 | - Implement writing of inodes (access time updates are not implemented | ||
471 | yet so mounting with -o noatime,nodiratime is enforced). | ||
472 | - Enable writing out of resident files so you can now overwrite any | ||
473 | uncompressed, unencrypted, nonsparse file as long as you do not | ||
474 | change the file size. | ||
475 | - Add housekeeping of ntfs system files so that ntfsfix no longer needs | ||
476 | to be run after writing to an NTFS volume. | ||
477 | NOTE: This still leaves quota tracking and user space journalling on | ||
478 | the side but they should not cause data corruption. In the worst | ||
479 | case the charged quotas will be out of date ($Quota) and some | ||
480 | userspace applications might get confused due to the out of date | ||
481 | userspace journal ($UsnJrnl). | ||
482 | 2.1.12: | ||
483 | - Fix the second fix to the decompression engine from the 2.1.9 release | ||
484 | and some further internals cleanups. | ||
485 | 2.1.11: | ||
486 | - Driver internal cleanups. | ||
487 | 2.1.10: | ||
488 | - Force read-only (re)mounting of volumes with unsupported volume | ||
489 | flags and various cleanups. | ||
490 | 2.1.9: | ||
491 | - Fix two bugs in handling of corner cases in the decompression engine. | ||
492 | 2.1.8: | ||
493 | - Read the $MFT mirror and compare it to the $MFT and if the two do not | ||
494 | match, force a read-only mount and do not allow read-write remounts. | ||
495 | - Read and parse the $LogFile journal and if it indicates that the | ||
496 | volume was not shutdown cleanly, force a read-only mount and do not | ||
497 | allow read-write remounts. If the $LogFile indicates a clean | ||
498 | shutdown and a read-write (re)mount is requested, empty $LogFile to | ||
499 | ensure that Windows cannot cause data corruption by replaying a stale | ||
500 | journal after Linux has written to the volume. | ||
501 | - Improve time handling so that the NTFS time is fully preserved when | ||
502 | converted to kernel time and only up to 99 nano-seconds are lost when | ||
503 | kernel time is converted to NTFS time. | ||
504 | 2.1.7: | ||
505 | - Enable NFS exporting of mounted NTFS volumes. | ||
506 | 2.1.6: | ||
507 | - Fix minor bug in handling of compressed directories that fixes the | ||
508 | erroneous "du" and "stat" output people reported. | ||
509 | 2.1.5: | ||
510 | - Minor bug fix in attribute list attribute handling that fixes the | ||
511 | I/O errors on "ls" of certain fragmented files found by at least two | ||
512 | people running Windows XP. | ||
513 | 2.1.4: | ||
514 | - Minor update allowing compilation with all gcc versions (well, the | ||
515 | ones the kernel can be compiled with anyway). | ||
516 | 2.1.3: | ||
517 | - Major bug fixes for reading files and volumes in corner cases which | ||
518 | were being hit by Windows 2k/XP users. | ||
519 | 2.1.2: | ||
520 | - Major bug fixes aleviating the hangs in statfs experienced by some | ||
521 | users. | ||
522 | 2.1.1: | ||
523 | - Update handling of compressed files so people no longer get the | ||
524 | frequently reported warning messages about initialized_size != | ||
525 | data_size. | ||
526 | 2.1.0: | ||
527 | - Add configuration option for developmental write support. | ||
528 | - Initial implementation of file overwriting. (Writes to resident files | ||
529 | are not written out to disk yet, so avoid writing to files smaller | ||
530 | than about 1kiB.) | ||
531 | - Intercept/abort changes in file size as they are not implemented yet. | ||
532 | 2.0.25: | ||
533 | - Minor bugfixes in error code paths and small cleanups. | ||
534 | 2.0.24: | ||
535 | - Small internal cleanups. | ||
536 | - Support for sendfile system call. (Christoph Hellwig) | ||
537 | 2.0.23: | ||
538 | - Massive internal locking changes to mft record locking. Fixes | ||
539 | various race conditions and deadlocks. | ||
540 | - Fix ntfs over loopback for compressed files by adding an | ||
541 | optimization barrier. (gcc was screwing up otherwise ?) | ||
542 | Thanks go to Christoph Hellwig for pointing these two out: | ||
543 | - Remove now unused function fs/ntfs/malloc.h::vmalloc_nofs(). | ||
544 | - Fix ntfs_free() for ia64 and parisc. | ||
545 | 2.0.22: | ||
546 | - Small internal cleanups. | ||
547 | 2.0.21: | ||
548 | These only affect 32-bit architectures: | ||
549 | - Check for, and refuse to mount too large volumes (maximum is 2TiB). | ||
550 | - Check for, and refuse to open too large files and directories | ||
551 | (maximum is 16TiB). | ||
552 | 2.0.20: | ||
553 | - Support non-resident directory index bitmaps. This means we now cope | ||
554 | with huge directories without problems. | ||
555 | - Fix a page leak that manifested itself in some cases when reading | ||
556 | directory contents. | ||
557 | - Internal cleanups. | ||
558 | 2.0.19: | ||
559 | - Fix race condition and improvements in block i/o interface. | ||
560 | - Optimization when reading compressed files. | ||
561 | 2.0.18: | ||
562 | - Fix race condition in reading of compressed files. | ||
563 | 2.0.17: | ||
564 | - Cleanups and optimizations. | ||
565 | 2.0.16: | ||
566 | - Fix stupid bug introduced in 2.0.15 in new attribute inode API. | ||
567 | - Big internal cleanup replacing the mftbmp access hacks by using the | ||
568 | new attribute inode API instead. | ||
569 | 2.0.15: | ||
570 | - Bug fix in parsing of remount options. | ||
571 | - Internal changes implementing attribute (fake) inodes allowing all | ||
572 | attribute i/o to go via the page cache and to use all the normal | ||
573 | vfs/mm functionality. | ||
574 | 2.0.14: | ||
575 | - Internal changes improving run list merging code and minor locking | ||
576 | change to not rely on BKL in ntfs_statfs(). | ||
577 | 2.0.13: | ||
578 | - Internal changes towards using iget5_locked() in preparation for | ||
579 | fake inodes and small cleanups to ntfs_volume structure. | ||
580 | 2.0.12: | ||
581 | - Internal cleanups in address space operations made possible by the | ||
582 | changes introduced in the previous release. | ||
583 | 2.0.11: | ||
584 | - Internal updates and cleanups introducing the first step towards | ||
585 | fake inode based attribute i/o. | ||
586 | 2.0.10: | ||
587 | - Microsoft says that the maximum number of inodes is 2^32 - 1. Update | ||
588 | the driver accordingly to only use 32-bits to store inode numbers on | ||
589 | 32-bit architectures. This improves the speed of the driver a little. | ||
590 | 2.0.9: | ||
591 | - Change decompression engine to use a single buffer. This should not | ||
592 | affect performance except perhaps on the most heavy i/o on SMP | ||
593 | systems when accessing multiple compressed files from multiple | ||
594 | devices simultaneously. | ||
595 | - Minor updates and cleanups. | ||
596 | 2.0.8: | ||
597 | - Remove now obsolete show_inodes and posix mount option(s). | ||
598 | - Restore show_sys_files mount option. | ||
599 | - Add new mount option case_sensitive, to determine if the driver | ||
600 | treats file names as case sensitive or not. | ||
601 | - Mostly drop support for short file names (for backwards compatibility | ||
602 | we only support accessing files via their short file name if one | ||
603 | exists). | ||
604 | - Fix dcache aliasing issues wrt short/long file names. | ||
605 | - Cleanups and minor fixes. | ||
606 | 2.0.7: | ||
607 | - Just cleanups. | ||
608 | 2.0.6: | ||
609 | - Major bugfix to make compatible with other kernel changes. This fixes | ||
610 | the hangs/oopses on umount. | ||
611 | - Locking cleanup in directory operations (remove BKL usage). | ||
612 | 2.0.5: | ||
613 | - Major buffer overflow bug fix. | ||
614 | - Minor cleanups and updates for kernel 2.5.12. | ||
615 | 2.0.4: | ||
616 | - Cleanups and updates for kernel 2.5.11. | ||
617 | 2.0.3: | ||
618 | - Small bug fixes, cleanups, and performance improvements. | ||
619 | 2.0.2: | ||
620 | - Use default fmask of 0177 so that files are no executable by default. | ||
621 | If you want owner executable files, just use fmask=0077. | ||
622 | - Update for kernel 2.5.9 but preserve backwards compatibility with | ||
623 | kernel 2.5.7. | ||
624 | - Minor bug fixes, cleanups, and updates. | ||
625 | 2.0.1: | ||
626 | - Minor updates, primarily set the executable bit by default on files | ||
627 | so they can be executed. | ||
628 | 2.0.0: | ||
629 | - Started ChangeLog. | ||
630 | |||