Add macro make_build in spec file
[platform/upstream/dosfstools.git] / NEWS
1 dosfstools 4.2 - released 2021-01-31
2 ====================================
3
4 fatlabel now accepts two new options. When given the -i or --volume-id option,
5 fatlabel changes to an alternate mode where it displays or changes the volume
6 serial number instead of the volume label. With the -r or --reset option, it
7 will remove the label or (in the alternate mode) generate a new volume serial
8 number.
9
10 The user prompting for interactive fsck has been overhauled. Now it will
11 directly react to a pressed key without the user having to additionally press
12 enter. The changed prompting is also consistently repeating the prompt when
13 invalid input is given.
14
15 The legacy check whether it is running on Atari hardware when compiled for 68k
16 in order to automatically switch to Atari mode is now disabled by default. It
17 can be compiled in with the new configure switch --enable-atari-check.
18
19 Both mkfs and fsck now have a new option --variant=TYPE where TYPE can be
20 'standard' or 'atari' to explicitly select one of those variants rather than
21 having to toggle between them with -A.
22
23 fsck, mkfs and fatlabel were fixed to process volume label correctly. Previously
24 there were many issues during processing labels. Fixes issues are: leading byte
25 0xE5 of root label needs to be handled in special way, label cannot contain some
26 special characters, label itself is stored according to the current DOS codepage
27 which may be specified by a new --codepage option. fatlabel now reads volume
28 label only from the root directory to be compatible with existing systems like
29 MS-DOS 5.00, MS-DOS 6.22, MS-DOS 7.10, Windows 98, Windows XP, Windows 7, 8, 10
30 and also with the Linux mlabel from mtools project. fsck was extended to fix
31 incorrect volume labels and ensure that volume label from the root directory is
32 same as the volume label stored in boot sector. Old versions of dosfslabel read
33 label only from the boot sector. So with all these changes fsck now ensures
34 compatibility with both MS-DOS/Windows and old Linux/dosfslabel world.
35
36 fsck now allows spaces in the middle of SFNs. Previous behavior (when spaces
37 are disallowed) can be achieved by a new option -S.
38
39 Both mkfs and fsck now have fixed Year 2038 Bug. mkfs may still set filesystem
40 timestamp to 1980-01-01 00:00:00 (beginning of the FAT era) in case operating
41 system has Year 2038 Bug and cannot provide current time in time_t variable.
42
43 Some memory leaks were fixed in fatlabel and fsck to make valgrind happy.
44
45 Processing of command line arguments in all tools were fixed to ensure that
46 invalid options are not accepted anymore and proper error message is thrown
47 instead of trying to continue with uninitialized or undefined value.
48
49 In fsck and fatlabel were fixed issues that faulty filesystems were able to
50 trigger integer overflows during reading them.
51
52 mkfs now has a new option --offset for specifying offset at which filesystem
53 would start. This is useful when formatting FAT filesystem on disk image with
54 MBR table without need to use loopback kernel driver with partx to access only
55 specific partition.
56
57 All tools now can be compiled without iconv library and in this case they
58 support only CP850 codepage which is integrated into tools. This internal
59 CP850 codepage can be used also when tools were compiled with iconv library
60 which do not support CP850 (e.g. iconv from GNU libc without installed gconv
61 shared libraries).
62
63 Manual pages were updated to clarify some ambiguous options and descriptions.
64 fatlabel has a new section with details about volume label and codepage issues.
65
66 mkfs now has a new option --mbr which fills (fake) MBR table with one partition
67 which spans whole disk device. This (fake) MBR table is needed only for
68 non-removable disks used on Microsoft Windows systems and only when formatting
69 whole unpartitioned disk.
70
71 mkfs now calculates CHS geometry according to the SD Card Part 2 File System
72 Specification. For SD cards with more than 256MB capacity is this new CHS
73 calculation same as CHS calculation defined for hard disks via LBA-Assist
74 Translation. So CHS geometry calculation in mkfs is now compatible with both
75 SD Card specification and also LBA-Assist Translation. Moreover mkfs now has
76 also a new option -g for specifying CHS geometry manually if it is needed for
77 compatibility with some SD card readers. CHS geometry is part of FAT boot
78 sector which mkfs.fat must fill.
79
80 fsck now checks for DOS Clean Shutdown bit and marks filesystem as clean after
81 successful run. This is for compatibility with Microsft Windows 98 and also with
82 Windows NT-based variants.
83
84 Dependency on systemd/udev was completely removed from mkfs tool. But there is
85 no lost or removed functionality. Existing systemd/udev code was rewritten to
86 directly access sysfs and new implementation has less lines of code as previous
87 implementation which used systemd/udev libraries.
88
89 mkfs was fixed to setup FAT32 backup boot sector correctly.
90
91 mkfs's -D option (BIOS drive number) was relaxed to support also higher level
92 hard disk and floppy devices (second, third, ...).
93
94 fsck now preserve reserved fields in info sector. They are used by other systems
95 (e.g. FSIBOOT stage of lDOS boot32.asm), hence why are reserved.
96
97 fsck was extended to check and fix that first two entires in directory
98 structures are . and ..
99
100 mkfs now aligns total number of sectors to be multiple of the value of sectors
101 per track which is stored in FAT boot sector. This requirement is needed by DOS
102 systems and also by Linux FAT tools from mtools project. Alignment can be turned
103 off by -a option.
104
105 mkfs is now able to calculate FAT32 cluster size also for disks which have
106 sector size different than 512 bytes. Note that this calculation is not optimal.
107 It is just first step which ensures that mkfs does not fail during formatting
108 Native 4K disks.
109
110 mkfs cluster calculation was fixed to correctly handle differences between
111 FAT12 and FAT16 variants. mkfs now explicitly disallow to create FAT filesystem
112 with 4085 or 4086 clusters because Windows fastfat.sys detects such filesystem
113 as FAT12 but Linux msdos.ko/vfat.ko detects it as FAT16. mkfs now avoids this
114 situation to happen by fully automatic increasing or decreasing cluster size.
115
116 fsck now has a new option -F which can be used to specify FAT table used for
117 reading whole FAT filesystem. It can be useful in situation when user wants
118 to do recovery and filesystem repairing from second FAT table independently
119 of what fsck thinks that is the best.
120
121 fsck was extended to try fixing first FAT cluster but only when -F option is
122 specified. Previously when first FAT cluster was broken, fsck just printed
123 error: "Both FATs appear to be corrupt. Giving up." and failed.
124
125 fatlabel was fixed to not call parts of fsck procedure and to not print
126 warning or log messages on stdout as it conflicts with expected label
127 output on stdout.
128
129 A test suite was heavily extended and now it also checks that fsck repairs
130 broken filesystem into the expected state.
131
132 List of fixed issues:
133 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=803391
134 https://github.com/dosfstools/dosfstools/issues/13
135 https://github.com/dosfstools/dosfstools/issues/18
136 https://github.com/dosfstools/dosfstools/issues/22
137 https://github.com/dosfstools/dosfstools/issues/29
138 https://github.com/dosfstools/dosfstools/issues/32
139 https://github.com/dosfstools/dosfstools/issues/38
140 https://github.com/dosfstools/dosfstools/issues/39
141 https://github.com/dosfstools/dosfstools/issues/43
142 https://github.com/dosfstools/dosfstools/issues/45
143 https://github.com/dosfstools/dosfstools/issues/52
144 https://github.com/dosfstools/dosfstools/issues/53
145 https://github.com/dosfstools/dosfstools/issues/54
146 https://github.com/dosfstools/dosfstools/issues/64
147 https://github.com/dosfstools/dosfstools/issues/66
148 https://github.com/dosfstools/dosfstools/issues/69
149 https://github.com/dosfstools/dosfstools/issues/70
150 https://github.com/dosfstools/dosfstools/issues/74
151 https://github.com/dosfstools/dosfstools/issues/88
152 https://github.com/dosfstools/dosfstools/issues/99
153 https://github.com/dosfstools/dosfstools/issues/111
154 https://github.com/dosfstools/dosfstools/issues/139
155 https://github.com/dosfstools/dosfstools/issues/151
156
157
158 dosfstools 4.1 - released 2017-01-24
159 ====================================
160
161 A test suite is now included and can be run with "make check". The test suite
162 requires xxd from the vim distribution to recreate image files from hexdumps and
163 also adds a dependency on automake 1.11 or later for building from sources other
164 than the release tarball.
165
166 Now the default for mkfs for filesystems smaller than 512 MB is 64 heads / 32
167 sectors to make the defaults a bit more in line with the old defaults used up to
168 3.0.28.
169
170 Other changes are fixes, some of them user visible, such as setting the sector
171 size by command line option for mkfs working again after being broken in 4.0.
172
173 Fixed a possible fatlabel crash when writing a label to an unlabelled filesystem
174 and the given label contains printf style format specifiers.
175
176 When circular cluster chains were detected and the -t option was not given, fsck
177 used to truncate the file to zero length while not updating the free cluster
178 count. This required a second fsck run to clear. Now it always truncates to the
179 last cluster that begins the loop, as it is supposed to.
180
181 The parsing of octal character specifications for filenames in the -u and -d
182 options of fsck now works. It was broken in some ancient version and would
183 always fail.
184
185
186 dosfstools 4.0 - released 2016-05-06
187 ====================================
188
189 The programs are now portable to non-Linux operating systems. To that end, the
190 build system has been converted to use autotools. There have been Linux
191 specifics in a lot of places which have been either eliminated or should have
192 equivalents so that it should now work in other Unix-like environments. It has
193 been tested on FreeBSD and OS X.
194
195 As part of making it portable all the code that assumed 8 bit major/minor
196 numbers - and in fact masked out all other bits - has been cleaned up. Now
197 mkfs.vfat should not misidentify devices anymore and require the -I option to
198 override. The new device probing uses libudev (if available) to collect more
199 information.
200
201 Fixed data corruption errors in fsck.fat: Writing to the third to last cluster
202 on FAT12 with an odd number of clusters would corrupt the following cluster. In
203 mkfs.fat, long existing bugs in bad cluster marking (from scanning or user
204 supplied bad blocks list) were fixed so that it actually marks the correct
205 clusters.
206
207 The automatic alignment of data clusters that was added in 3.0.8 and broken for
208 FAT32 starting with 3.0.20 has been reinstated. If you need to create file
209 systems for finicky devices that have broken FAT implementations use the option
210 -a to disable alignment.
211
212
213 dosfstools 3.0.28 - released 2015-05-16
214 =======================================
215
216 The major user visible change in this release is that fsck.fat now defaults to
217 interactive repair mode which previously had to be selected with -r. The
218 previous default of a read only check mode was confusing to users who had to
219 repeat a potentially lengthy fsck.fat run with the right option in order to
220 actually fix their file system. It was also pointless – the interactive repair
221 mode already won't write anything without asking for confirmation.
222
223 mkfs.fat now allows choosing 0xF0 as the media byte which was previously
224 rejected.
225
226 mkfs.fat now supports the --invariant option to facilitate testing mkfs.fat
227 itself. It will reproducibly generate filesystems without random or time based
228 differences between them when all else is identical.
229
230 Bugs fixed in fsck.fat are a read one byte beyond the end of an allocated array
231 when checking some FAT12 filesystems, and checking that the first cluster of a
232 file as specified in the directory entry is not 1. Previously it could attempt
233 to follow a block chain starting on cluster 1 and segfault when the conditions
234 are right.
235
236
237 dosfstools 3.0.27 - released 2014-11-12
238 =======================================
239
240 This is a pure bug fix release. The major bugs fixed:
241
242 * fatlabel did not recognize long file names and mistook long file name
243   segments in the root directory for labels. This caused output of garbage when
244   asked to print the label and damage to the root directory (loss of long file
245   name after fsck) when used to set the label.
246
247 * A fsck.fat check introduced in 3.0.26 triggered use of uninitialized fields
248   in the constructed root directory entry, which randomly caused the code
249   checking file names to consider the empty "file name" of the root directory
250   to be bad:
251
252     $ /sbin/fsck.fat -y bad.img
253     fsck.fat 3.0.26 (2014-03-07)
254     /
255     Bad short file name ().
256     Auto-renaming it.
257     Renamed to
258     bad.img: 14 files, 19388/403266 clusters
259
260 * And finally fsck.fat will not print the version string anymore every time the
261   -v option is encountered.