nilfs-2.0.23 Sun Apr 1, 2012 JST * fix kernel oops at nilfs_page_debug() * fix potential integer overflow in nilfs_ioctl_clean_segments() * fix NULL pointer dereference in nilfs_load_super_block() * clamp ns_r_segments_percentage to [1, 99] * use page_has_buffers instead of PagePrivate() * avoid overflowing segment numbers in nilfs_ioctl_clean_segments() nilfs-2.0.22 Sun Jun 19, 2011 JST * fix problem in setting checkpoint interval * fix missing block address termination in btree node shrinking * fix incorrect block address termination in node concatenation * avoid rec_len overflow with 64KB block size * insert checkpoint number in segment summary header to ensure offline rollback operation. * use checkpoint number instead of timestamp to select super block * sync super blocks in turns instead of updating both super blocks at a time. * do not update mount time on rw->ro remount * support automatic rollback from the previous checkpoint. * do not update log cursor for small change so that super blocks are not excessively written to disk. * clarify byte offset in super block format * add feature set fields to super block and reject incompatible filesystem * append blocksize info to warnings during loading super blocks * zero fill unused portion of super root block * correct super root size calculation * move out mark_inode_dirty calls from bmap routines to mitigate overhead for truncate and delete operations. * add free entries count only if clear bit operation succeeded * decrement inodes count only if raw inode was successfully deleted * coding style fixes and cleanups nilfs-2.0.21 Mon Jan 10, 2011 JST * fix compilation error on centos 5 * change default of 'errors' mount option to 'remount-ro' mode * add sanity check in nilfs_btree_add_dirty_buffer * fix list corruption after ifile creation failure * fix buffer head leak in nilfs_btnode_submit_block * fix leak of shadow dat inode in error path of load_nilfs nilfs-2.0.20 Sun Jun 27, 2010 JST * avoid readahead on metadata file for create mode * do not return io error for bio allocation failure * always lookup disk block address before reading metadata block * return EINVAL when finding bad btree node * add missing initialization of s_mode * fix open_bdev_exclusive stab code * enlarge s_volume_name member in nilfs_super_block * fix typos, update comments, coding style fixes, and trivial fixes nilfs-2.0.19 Sat Mar 13, 2010 JST * update mailing list address * fix potential hang in nilfs_error on errors=remount-ro * add missing reader's lock in nilfs_ioctl_sync * fix potential leak of dirty data on umount * show missing mount options in /proc/mounts. * change mount option to disable write barriers; "nobarrier" is used instead of "barrier=off". * add "norecovery" mount option * use mnt_want_write in ioctls where write access is needed * apply readahead for recovery on mount * sync superblock by nilfs thread instead of periodic write_super callback * fix C99 violation about storage-class specifier * trivial coding style fix nilfs-2.0.18 Sun Nov 22, 2009 JST * fix kernel oops in error case of nilfs_ioctl_move_blocks * fix lock order reversal in chcp operation * fix dirty page accounting leak causing hang at write * add zero-fill for new btree node buffers * fix irregular checkpoint creation due to data flush * Cleanups; remove unused functions and inconsistent comment nilfs-2.0.17 Sun Oct 04, 2009 JST * fix missing zero-fill initialization of btree node cache * fix missing initialization of i_dir_start_lookup member * An unassigned variable is assigned to a never used structure member. * add more check routines in mount process * use semaphore to protect pointer to a writable FS-instance * fix format string compile warning (ino_t) * fix ignored error code in __nilfs_read_inode() nilfs-2.0.16 Sat Sep 12, 2009 JST * fix preempt count underflow in nilfs_btnode_prepare_change_key * fix oops due to inconsistent state in page with discreate b-tree nodes * fix missing a read lock for segment writer in nilfs_attach_checkpoint() * fix missing unlock in error path of nilfs_mdt_write_page * support is_partially_uptodate aops * support contiguous lookup of blocks * include RHEL/CentOS configuration in kern feature * add sync_page method to page caches of meta data * use device's backing_dev_info for btree node caches * return EBUSY against delete request on snapshot * allow future expansion of metadata read out via get info ioctl * cleanup bmap/btree code * eliminate removal list of segments and header file for segment list operations * correct exclusion control in nilfs_remount() function * correct misuse of sget() function * get rid of bd_mount_sem use from nilfs nilfs-2.0.15 Sat Jul 11, 2009 JST * enable sync_page method; this adds a missing sync_page method which unplugs bio requests during lock retries on pages. This will improve read performance of nilfs. * fix bh leak in nilfs_cpfile_delete_checkpoints function * fix disorder in checkpoint count on error during deleting checkpoints * fix hang problem of log writer which occurs after write failures * remove unlikely directive causing mis-conversion of error code * fix lockdep warning between regular file and inode file * fix incorrect KERN_CRIT messages in case of write failures * correct display of sequence counter printed when request has completed * separate debug message related to transaction from ones for segment nilfs-2.0.14 Sat May 23, 2009 JST * fix memory leak in nilfs_ioctl_clean_segments; this will fix the memory leak problem slipped into nilfs-2.0.13. The memory leak arises every time the garbage collection of nilfs runs. Thanks to Kentaro Suzuki for finding this problem. * set bio unplug flag for the last bio in segment nilfs-2.0.13 Sun May 17, 2009 JST * check size of array structured data exchanged via ioctls; this adds missing sanity checks to ioctls and prevents memory access overrun in kernel code due to incorrect argument data of the ioctls. * ensure to clear dirty state when deleting metadata file block; this will fix the following failure during GC: nilfs_cpfile_delete_checkpoints: cannot delete block NILFS: GC failed during preparation: cannot delete checkpoints: err=-2 * fix lock order reversal in nilfs_clean_segments ioctl * fix possible circular locking for get information ioctls * fix circular locking dependency of writer mutex * fix possible recovery failure due to block creation without writer; this will fix a boundary condition bug on mount time recovery. * replace BUG call in nilfs_dat_translate with WARN_ON * fix possible mismatch of sufile counters on recovery * fix wrong accounting in nilfs_sufile_set_error * fix improper return values of nilfs_get_cpinfo ioctl * rename nilfs_fs.h to nilfs2_fs.h to catch up in-tree code. nilfs-2.0.12 Mon Mar 30, 2009 JST * support kernel 2.6.29 for the record. * fix malfunction of nilfs_get_suinfo ioctl in which active flags were marked on wrong segments. This will fix the recent GC problem causing filesystem corruption which was reported by David Arendt and Andreas Hartmetz. Thanks for feedback! * fix duplicate brelse calls in nilfs_sufile_set_error(). * fix false detection of lockdep checks for recursive locking around meta data files and bmap semaphores. nilfs-2.0.11 Fri Mar 13, 2009 JST * fix a compilation error on kernel 2.6.29-rc7. * introduce nanosecond timestamp; this resolves the problem around the tar program that it sometimes fails to expand symlinks. nilfs-2.0.10 Sat Mar 7, 2009 JST * introduce secondary super block for improving reliability * mark minor flag for checkpoints created by internal operation. This allows userland application to identify whether each checkpoint is created by file system change or internal operations such as garbage collection or checkpoint mode change. * simplify handling of active state of segments; this reduces loc of segment constructor. * clean up sketch file. Now .sketch is treated as a regular file. nilfs-2.0.9 Wed Mar 4, 2009 JST * fix endian issue in checksumming on super block. Big endian machines are affected by this change. For big endian machines, you can keep compatibility against future releases of existing partitions by once mounting them with this version. nilfs-2.0.8 Thu Feb 19, 2009 JST * change ioctl API to fix architecture dependent problems. In the prior versions, for example, 32bit nilfs-utils malfunctioned on the x64-64 kernels. This change requires new utilities, i.e. nilfs-utils-2.0.8, and the prior utilities don't operate on this. The disk format has not changed. The detail changes are as follows: - use fixed sized types for ioctl structures - remove timedwait ioctl command - remove compat ioctl code - extend nilfs_sustat ioctl structure to eliminate volatile_active flag; this allows to simplify segment writer implementation. * use unlocked_ioctl instead of old ioctl to avoid using big kernel lock. * convert BUG_ON and BUG calls triggerable from ioctl into innocuous error handlings or WARN_ON calls. nilfs-2.0.7 Wed Feb 11, 2009 JST * fix comilation errors on kernel 2.6.29-rc1. * fix buggy behavior seen in enumerating checkpoints. * fix wrong counting of checkpoints and dirty segments reported by Reinoud Zandijk. * fix miss sync issue for do_sync_mapping_range which can be called from the sync_file_range() system call. * remove several bmap wrapper macros. * clean up indirect function calling convention used in bmap/btree/direct to follow the normal kernel coding style. nilfs-2.0.6 Mon Jan 12, 2009 JST * fix compilation errors on kernel 2.6.28. * fix gc failure on volumes keeping numerous snapshots. * remove compat code to support old kernels prior to 2.6.18. * fix problem of memory allocation in ioctl (revised patch to use order 0 allocation). * return error instead of causing a BUG_ON() failure when btree runs into an invalid node block. * add tag files of gtags to .gitignore. * avoid double error handlings of nilfs_transaction_end() by dividing it to nilfs_transaction_commit() and nilfs_transaction_abort(). * do cleanups, add some comments and debug code. nilfs-2.0.5 Thu Oct 23, 2008 JST * support kernel 2.6.27. * fix problems of memory allocation in ioctl. * fix reset problem of DAT block count. * fix possible infinite loop in nilfs_dispose_gcinode_list. * ensure writeback of super block; sync_dirty_buffers() clears the dirty flag of specified buffer even if it returns -EOPNOTSUPP (failed barrier request) or -EIO (I/O error). The previous implementation takes this wrong, and causes a possibility to miss writeback failure of the super block. This version corrects the issue. * make buffer read concurrent for gc cache. The previous gc cache code waits for buffers for each data or node block while reading blocks to be moved. This makes it in parallel by separating their submissions and waitings, and this would mitigate I/O overhead during GC. * enhance disk format compatibility of the cpfile, sufile, and dat file. Althouth entry sizes of these meta data files are given in the super block, these values were not used in the meta data files. * use standard page cache for btree node caches. Former versions used a peculiar page cache for btree nodes. This finally removed it, and greatly simplified the entire source code. * unify dat allocator and inode allocator. Finally these two similar allocators are integrated into one persistent object allocator. * add nilfs2.txt, which is a document supplied with the nilfs2 kernel patch set. * Cleanups; remove unused functions and macros. remove unnecessary gc inode spinlocks, redundant code. apply kernel common functions. remove new checkpatch warnings. nilfs-2.0.4 Wed Aug 6, 2008 JST * fix hangup problem while deleteing huge files: Alexander Schier had reported that OOM killer was invoked while deleting very large files. This turned out to be the problem of a btree truncate routine, which creates a number of dirty blocks for huge files without permitting to write them out. A similar problem was also found in file truncation. This fixes these problems by allowing NILFS2 to write out dirty blocks during terminating or truncating bmap of huge files. Thank you Alex for reporting this issue. * supported kernel 2.6.27-rc1 experimentally. * remove redundant code and resolve new checkpatch warnings. nilfs-2.0.3 Mon Jul 14, 2008 JST * add 2.6.25 and 2.6.26 to the supported kernel versions. * fix a compile-time error for the kernel 2.6.26 in case of CONFIG_NILFS_DEBUG=y. * fix build errors on ia64 machines. * fix hang problem after read/write remount. * improve writeback implementation to avoid page locks and allow read accesses against page cache during writebacks. * eliminate the prepare dirty flag on B-tree node pages to reform readability of the B-tree cache code. * revise README. * Cleanups; remove unused code or redundancy in the code, resolve several type of checkpatch warnings, and so forth. nilfs-2.0.2 Wed Mar 26, 2008 JST * fix mount failure of nilfs-2.0.1 for 2.0.0 filesystem. Thanks to Adrian Ulrich for his quick report. * fix another mis conversion of sector_div() in alloc.[ch]. * replace PAGE_DEBUG() + BUG() pairs with PAGE_BUG() that prints some more information on the specified page also for no debug version. nilfs-2.0.1 Mon Mar 24, 2008 JST * add nfs support. * fix arithmetic range overflow of alloc.h. * fix gcc-4.2 warnings on 64-bit machines. * make many changes to avoid scripts/checkpatch.pl errors and warnings due to violations of the Linux kernel coding style. Most of them are lexical adjustments, but include some influential changes such as removal of typedefs. * prevent premature writeback of super block. * incorporate changes on nilfs_fs.h to prepare for future extensions. * adjust mount-time revision check of disk format not to break forward compatibility among NILFS versions with a same major revision. * extend the period of copyright notice to include 2008. * use kthread_run() instead of kernel_thread(). * remove unused declarations and needless functions. * integrate symlink.c into namei.c. * remove expanded rcs keywords. * remove comments to overwrite emacs mode. * remove C99 style comments. * add .gitignore. nilfs-2.0.0 Mon Feb 18, 2008 JST * Removed fastcall specifiers to fix a compile-time error on kernel 2.6.25-rc2. * Reflected the changes of ioctl() interface on the previous release to ioctl32(). This fixes errors of nilfs-utils arising on 32-bit Linux environments with a 64-bit kernel. nilfs-2.0.0-testing-9 Wed Feb 13, 2008 JST * Supported kernel 2.6.25-rc1 experimentally. * Fixed compiler errors that occur where CONFIG_LBD is not defined. * Fixed an elementary bug that causes a NULL-pointer dereference exception when a snapshot mount was tried with an invalid option. * Fixed a hang problem arising under a near disk full condition. This change simplifies error handlings of such condition and the sematics of reserved disk space; now it works as a margin just for the cleaner. Additionally, a lower limit was adopted for the number of reserved segments to improve the stability on small partitions. * Fixed a few bugs of write routines that cause hang problems. Thanks to Gergely Gábor for his helpful reports and cooperation. nilfs-2.0.0-testing-8 Thu Dec 27, 2007 JST * Fixed a timing problem of a shrinker that causes a critical list corrption of B-tree node pages. * Fixed a dead lock problem of the segment constructor that may occur when issuing direct I/O reads. * Fixed memory allocation failures on ioctl.c due to fragmentation. * Fixed a few minor bugs around the B-tree node buffers. * Revised the segment buffer for simplicity and for maintainability. * Separated some declarations for the list of full segments from the segment constructor (seglist.h). This nasty file would be removed in a future release. nilfs-2.0.0-testing-7 Thu Nov 29, 2007 JST * Supported kernel 2.6.24-rc3 experimentally. * Fixed failures in case where the block size is smaller than the page size. * Fixed a compatiblity issue that causes ioctl errors where the kernel and userland programs have different integer length. * Fixed a leak bug of btree node buffers at nilfs_btree_mark(). * Fixed possible failures due to missing exclusion controls of nilfs_bmap_propagate() and nilfs_bmap_assign(). * Fixed a possible race problem in nilfs_prepare_write(). * Revised source code around btree node buffers, pages, and shadow DAT in order to get rid of timing bugs and leak bugs. nilfs-2.0.0-testing-6 Mon Oct 22, 2007 JST * Fixed a bug that may cause corruption of meta data files or regular files. This fix would resolve serveral serious problems and improves the stability especially for small memory machines. * Fixed a minor bug that led to a failure when deleting checkpoint directly through ioctl. nilfs-2.0.0-testing-5 Mon Oct 15, 2007 JST * Fixed a deadlock problem and block address translation errors caused by a missing initialization of the btree node cache on shadow DAT. nilfs-2.0.0-testing-4 Thu Oct 11, 2007 JST * Supported kernel 2.6.23 * Fixed a security hole arround nilfs_find_entry() * Inserted some printks to analyze problems arround shadow dat pages for garbage collection. nilfs-2.0.0-testing-3 Tue Jul 24, 2007 JST * Supported kernel 2.6.22 * New ioctl ``nilfs_sync()'' is introduced * Fix BUGON issue at nilfs_btnode_prepare_change_key() * Fix BUGON issue at __nilfs_btnode_get_page() * Fix bug around nilfs_delete_inode() * Fix deadlock under memory shortage condition * Supported kernel 2.6.23-rc1 experimentally nilfs-2.0.0-testing-2 Tue Jun 20, 2007 JST * Applied readahead to meta-data files to improve performance. nilfs-2.0.0-testing Wed Jun 13, 2007 JST * The first release. * Implemented the Garbage Collector. * Rewrote almost all of the source code.