changelog
来自「Linux Kernel 2.6.9 for OMAP1710」· 代码 · 共 1,154 行 · 第 1/5 页
TXT
1,154 行
returns. Otherwise it just returns (after doing set_page_writeback(), unlock_page(), end_page_writeback() or the radix-tree tag PAGECACHE_TAG_DIRTY remains set even though the page is clean), thus alowing the VM to do with the page as it pleases. Also, at umount time, now only throw away dirty mft (meta)data pages if dirty inodes are present and ask the user to email us if they see this happening. - Add functions ntfs_{clear,set}_volume_flags(), to modify the volume information flags (fs/ntfs/super.c). - Mark the volume dirty when (re)mounting read-write and mark it clean when unmounting or remounting read-only. If any volume errors are found, the volume is left marked dirty to force chkdsk to run. - Add code to set the NT4 compatibility flag when (re)mounting read-write for newer NTFS versions but leave it commented out for now since we do not make any modifications that are NTFS 1.2 specific yet and since setting this flag breaks Captive-NTFS which is not nice. This code must be enabled once we start writing NTFS 1.2 specific changes otherwise Windows NTFS driver might crash / cause corruption.2.1.12 - Fix the second fix to the decompression engine and some cleanups. - Add a new address space operations struct, ntfs_mst_aops, for mst protected attributes. This is because the default ntfs_aops do not make sense with mst protected data and were they to write anything to such an attribute they would cause data corruption so we provide ntfs_mst_aops which does not have any write related operations set. - Cleanup dirty ntfs inode handling (fs/ntfs/inode.[hc]) which also includes an adapted ntfs_commit_inode() and an implementation of ntfs_write_inode() which for now just cleans dirty inodes without writing them (it does emit a warning that this is happening). - Undo the second decompression engine fix (see 2.1.9 release ChangeLog entry) as it was only fixing a theoretical bug but at the same time it badly broke the handling of sparse and uncompressed compression blocks.2.1.11 - Driver internal cleanups. - Only build logfile.o if building the driver with read-write support. - Really final white space cleanups. - Use generic_ffs() instead of ffs() in logfile.c which allows the log_page_size variable to be optimized by gcc into a constant. - Rename uchar_t to ntfschar everywhere as uchar_t is unsigned 1-byte char as defined by POSIX and as found on some systems.2.1.10 - Force read-only (re)mounting of volumes with unsupported volume flags. - Finish off the white space cleanups (remove trailing spaces, etc). - Clean up ntfs_fill_super() and ntfs_read_inode_mount() by removing the kludges around the first iget(). Instead of (re)setting ->s_op we have the $MFT inode set up by explicit new_inode() / set ->i_ino / insert_inode_hash() / call ntfs_read_inode_mount() directly. This kills the need for second super_operations and allows to return error from ntfs_read_inode_mount() without resorting to ugly "poisoning" tricks. (Al Viro) - Force read-only (re)mounting if any of the following bits are set in the volume information flags: VOLUME_IS_DIRTY, VOLUME_RESIZE_LOG_FILE, VOLUME_UPGRADE_ON_MOUNT, VOLUME_DELETE_USN_UNDERWAY, VOLUME_REPAIR_OBJECT_ID, VOLUME_MODIFIED_BY_CHKDSK To make this easier we define VOLUME_MUST_MOUNT_RO_MASK with all the above bits set so the test is made easy.2.1.9 - Fix two bugs in decompression engine. - Fix a bug where we would not always detect that we have reached the end of a compression block because we were ending at minus one byte which is effectively the same as being at the end. The fix is to check whether the uncompressed buffer has been fully filled and if so we assume we have reached the end of the compression block. A big thank you to Marcin Gibuła for the bug report, the assistance in tracking down the bug and testing the fix. - Fix a possible bug where when a compressed read is truncated to the end of the file, the offset inside the last page was not truncated.2.1.8 - Handle $MFT mirror and $LogFile, improve time handling, and cleanups. - Use get_bh() instead of manual atomic_inc() in fs/ntfs/compress.c. - Modify fs/ntfs/time.c::ntfs2utc(), get_current_ntfs_time(), and utc2ntfs() to work with struct timespec instead of time_t on the Linux UTC time side thus preserving the full precision of the NTFS time and only loosing up to 99 nano-seconds in the Linux UTC time. - Move fs/ntfs/time.c to fs/ntfs/time.h and make the time functions static inline. - Remove unused ntfs_dirty_inode(). - Cleanup super operations declaration in fs/ntfs/super.c. - Wrap flush_dcache_mft_record_page() in #ifdef NTFS_RW. - Add NInoTestSetFoo() and NInoTestClearFoo() macro magic to fs/ntfs/inode.h and use it to declare NInoTest{Set,Clear}Dirty. - Move typedefs for ntfs_attr and test_t from fs/ntfs/inode.c to fs/ntfs/inode.h so they can be used elsewhere. - Determine the mft mirror size as the number of mirrored mft records and store it in ntfs_volume->mftmirr_size (fs/ntfs/super.c). - Load the mft mirror at mount time and compare the mft records stored in it to the ones in the mft. Force a read-only mount if the two do not match (fs/ntfs/super.c). - Fix type casting related warnings on 64-bit architectures. Thanks to Meelis Roos for reporting them. - Move %L to %ll as %L is floating point and %ll is integer which is what we want. - Read the journal ($LogFile) and determine if the volume has been shutdown cleanly and force a read-only mount if not (fs/ntfs/super.c and fs/ntfs/logfile.c). This is a little bit of a crude check in that we only look at the restart areas and not at the actual log records so that there will be a very small number of cases where we think that a volume is dirty when in fact it is clean. This should only affect volumes that have not been shutdown cleanly and did not have any pending, non-check-pointed i/o. - If the $LogFile indicates a clean shutdown and a read-write (re)mount is requested, empty $LogFile by overwriting it with 0xff bytes to ensure that Windows cannot cause data corruption by replaying a stale journal after Linux has written to the volume.2.1.7 - Enable NFS exporting of mounted NTFS volumes. - Set i_generation in the VFS inode from the seq_no of the NTFS inode. - Make ntfs_lookup() NFS export safe, i.e. use d_splice_alias(), etc. - Implement ->get_dentry() in fs/ntfs/namei.c::ntfs_get_dentry() as the default doesn't allow inode number 0 which is a valid inode on NTFS and even if it did allow that it uses iget() instead of ntfs_iget() which makes it useless for us. - Implement ->get_parent() in fs/ntfs/namei.c::ntfs_get_parent() as the default just returns -EACCES which is not very useful. - Define export operations (->s_export_op) for NTFS (ntfs_export_ops) and set them up in the super block at mount time (super.c) this allows mounted NTFS volumes to be exported via NFS. - Add missing return -EOPNOTSUPP; in fs/ntfs/aops.c::ntfs_commit_nonresident_write(). - Enforce no atime and no dir atime updates at mount/remount time as they are not implemented yet anyway. - Move a few assignments in fs/ntfs/attrib.c::load_attribute_list() to after a NULL check. Thanks to Dave Jones for pointing this out.2.1.6 - Fix minor bug in handling of compressed directories. - Fix bug in handling of compressed directories. A compressed directory is not really compressed so when we set the ->i_blocks field of a compressed directory inode we were setting it from the non-existing field ni->itype.compressed.size which gave random results... For directories we now always use ni->allocated_size.2.1.5 - Fix minor bug in attribute list attribute handling. - Fix bug in attribute list handling. Actually it is not as much a bug as too much protection in that we were not allowing attribute lists which waste space on disk while Windows XP clearly allows it and in fact creates such attribute lists so our driver was failing. - Update NTFS documentation ready for 2.6 kernel release.2.1.4 - Reduce compiler requirements. - Remove all uses of unnamed structs and unions in the driver to make old and newer gcc versions happy. Makes it a bit uglier IMO but at least people will stop hassling me about it.2.1.3 - Important bug fixes in corner cases. - super.c::parse_ntfs_boot_sector(): Correct the check for 64-bit clusters. (Philipp Thomas) - attrib.c::load_attribute_list(): Fix bug when initialized_size is a multiple of the block_size but not the cluster size. (Szabolcs Szakacsits <szaka@sienet.hu>)2.1.2 - Important bug fixes aleviating the hangs in statfs. - Fix buggy free cluster and free inode determination logic.2.1.1 - Minor updates. - Add handling for initialized_size != data_size in compressed files. - Reduce function local stack usage from 0x3d4 bytes to just noise in fs/ntfs/upcase.c. (Randy Dunlap <rddunlap@osdl.ord>) - Remove compiler warnings for newer gcc. - Pages are no longer kmapped by mm/filemap.c::generic_file_write() around calls to ->{prepare,commit}_write. Adapt NTFS appropriately in fs/ntfs/aops.c::ntfs_prepare_nonresident_write() by using kmap_atomic(KM_USER0).2.1.0 - First steps towards write support: implement file overwrite. - Add configuration option for developmental write support with an appropriately scary configuration help text. - Initial implementation of fs/ntfs/aops.c::ntfs_writepage() and its helper fs/ntfs/aops.c::ntfs_write_block(). This enables mmap(2) based overwriting of existing files on ntfs. Note: Resident files are only written into memory, and not written out to disk at present, so avoid writing to files smaller than about 1kiB. - Initial implementation of fs/ntfs/aops.c::ntfs_prepare_write(), its helper fs/ntfs/aops.c::ntfs_prepare_nonresident_write() and their counterparts, fs/ntfs/aops.c::ntfs_commit_write(), and fs/ntfs/aops.c::ntfs_commit_nonresident_write(), respectively. Also, add generic_file_write() to the ntfs file operations (fs/ntfs/file.c). This enables write(2) based overwriting of existing files on ntfs. Note: As with mmap(2) based overwriting, resident files are only written into memory, and not written out to disk at present, so avoid writing to files smaller than about 1kiB. - Implement ->truncate (fs/ntfs/inode.c::ntfs_truncate()) and ->setattr() (fs/ntfs/inode.c::ntfs_setattr()) inode operations for files with the purpose of intercepting and aborting all i_size changes which we do not support yet. ntfs_truncate() actually only emits a warning message but AFAICS our interception of i_size changes elsewhere means ntfs_truncate() never gets called for i_size changes. It is only called from generic_file_write() when we fail in ntfs_prepare_{,nonresident_}write() in order to discard any instantiated buffers beyond i_size. Thus i_size is not actually changed so our warning message is enough. Unfortunately it is not possible to easily determine if i_size is being changed or not hence we just emit an appropriately worded error message.2.0.25 - Small bug fixes and cleanups. - Unlock the page in an out of memory error code path in fs/ntfs/aops.c::ntfs_read_block(). - If fs/ntfs/aops.c::ntfs_read_page() is called on an uptodate page, just unlock the page and return. (This can happen due to ->writepage clearing PageUptodate() during write out of MstProtected() attributes. - Remove leaked write code again.2.0.24 - Cleanups. - Treat BUG_ON() as ASSERT() not VERIFY(), i.e. do not use side effects inside BUG_ON(). (Adam J. Richter) - Split logical OR expressions inside BUG_ON() into individual BUG_ON() calls for improved debugging. (Adam J. Richter) - Add errors flag to the ntfs volume state, accessed via NVol{,Set,Clear}Errors(vol). - Do not allow read-write remounts of read-only volumes with errors. - Clarify comment for ntfs file operation sendfile which was added by Christoph Hellwig a while ago (just using generic_file_sendfile()) to say that ntfs ->sendfile is only used for the case where the source data is on the ntfs partition and the destination is somewhere else, i.e. nothing we need to concern ourselves with.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?