Procházet zdrojové kódy

NTFS: 2.1.24 release and some minor final fixes.

Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
Anton Altaparmakov před 20 roky
rodič
revize
7d333d6c73
5 změnil soubory, kde provedl 21 přidání a 9 odebrání
  1. 12 0
      Documentation/filesystems/ntfs.txt
  2. 3 1
      fs/ntfs/ChangeLog
  3. 1 1
      fs/ntfs/Makefile
  4. 4 6
      fs/ntfs/aops.c
  5. 1 1
      fs/ntfs/super.c

+ 12 - 0
Documentation/filesystems/ntfs.txt

@@ -439,6 +439,18 @@ ChangeLog
 
 
 Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
 Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
 
 
+2.1.24:
+	- Support journals ($LogFile) which have been modified by chkdsk.  This
+	  means users can boot into Windows after we marked the volume dirty.
+	  The Windows boot will run chkdsk and then reboot.  The user can then
+	  immediately boot into Linux rather than having to do a full Windows
+	  boot first before rebooting into Linux and we will recognize such a
+	  journal and empty it as it is clean by definition.
+	- Support journals ($LogFile) with only one restart page as well as
+	  journals with two different restart pages.  We sanity check both and
+	  either use the only sane one or the more recent one of the two in the
+	  case that both are valid.
+	- Lots of bug fixes and enhancements across the board.
 2.1.23:
 2.1.23:
 	- Stamp the user space journal, aka transaction log, aka $UsnJrnl, if
 	- Stamp the user space journal, aka transaction log, aka $UsnJrnl, if
 	  it is present and active thus telling Windows and applications using
 	  it is present and active thus telling Windows and applications using

+ 3 - 1
fs/ntfs/ChangeLog

@@ -22,7 +22,7 @@ ToDo/Notes:
 	- Enable the code for setting the NT4 compatibility flag when we start
 	- Enable the code for setting the NT4 compatibility flag when we start
 	  making NTFS 1.2 specific modifications.
 	  making NTFS 1.2 specific modifications.
 
 
-2.1.24-WIP
+2.1.24 - Lots of bug fixes and support more clean journal states.
 
 
 	- Support journals ($LogFile) which have been modified by chkdsk.  This
 	- Support journals ($LogFile) which have been modified by chkdsk.  This
 	  means users can boot into Windows after we marked the volume dirty.
 	  means users can boot into Windows after we marked the volume dirty.
@@ -89,6 +89,8 @@ ToDo/Notes:
 	- In fs/ntfs/aops.c::ntfs_end_buffer_async_read(), use a bit spin lock
 	- In fs/ntfs/aops.c::ntfs_end_buffer_async_read(), use a bit spin lock
 	  in the first buffer head instead of a driver global spin lock to
 	  in the first buffer head instead of a driver global spin lock to
 	  improve scalability.
 	  improve scalability.
+	- Minor fix to error handling and error message display in
+	  fs/ntfs/aops.c::ntfs_prepare_nonresident_write(). 
 
 
 2.1.23 - Implement extension of resident files and make writing safe as well as
 2.1.23 - Implement extension of resident files and make writing safe as well as
 	 many bug fixes, cleanups, and enhancements...
 	 many bug fixes, cleanups, and enhancements...

+ 1 - 1
fs/ntfs/Makefile

@@ -6,7 +6,7 @@ ntfs-objs := aops.o attrib.o collate.o compress.o debug.o dir.o file.o \
 	     index.o inode.o mft.o mst.o namei.o runlist.o super.o sysctl.o \
 	     index.o inode.o mft.o mst.o namei.o runlist.o super.o sysctl.o \
 	     unistr.o upcase.o
 	     unistr.o upcase.o
 
 
-EXTRA_CFLAGS = -DNTFS_VERSION=\"2.1.24-WIP\"
+EXTRA_CFLAGS = -DNTFS_VERSION=\"2.1.24\"
 
 
 ifeq ($(CONFIG_NTFS_DEBUG),y)
 ifeq ($(CONFIG_NTFS_DEBUG),y)
 EXTRA_CFLAGS += -DDEBUG
 EXTRA_CFLAGS += -DDEBUG

+ 4 - 6
fs/ntfs/aops.c

@@ -1727,27 +1727,25 @@ lock_retry_remap:
 					if (likely(!err))
 					if (likely(!err))
 						goto lock_retry_remap;
 						goto lock_retry_remap;
 					rl = NULL;
 					rl = NULL;
-					lcn = err;
 				} else if (!rl)
 				} else if (!rl)
 					up_read(&ni->runlist.lock);
 					up_read(&ni->runlist.lock);
 				/*
 				/*
 				 * Failed to map the buffer, even after
 				 * Failed to map the buffer, even after
 				 * retrying.
 				 * retrying.
 				 */
 				 */
+				if (!err)
+					err = -EIO;
 				bh->b_blocknr = -1;
 				bh->b_blocknr = -1;
 				ntfs_error(vol->sb, "Failed to write to inode "
 				ntfs_error(vol->sb, "Failed to write to inode "
 						"0x%lx, attribute type 0x%x, "
 						"0x%lx, attribute type 0x%x, "
 						"vcn 0x%llx, offset 0x%x "
 						"vcn 0x%llx, offset 0x%x "
 						"because its location on disk "
 						"because its location on disk "
 						"could not be determined%s "
 						"could not be determined%s "
-						"(error code %lli).",
+						"(error code %i).",
 						ni->mft_no, ni->type,
 						ni->mft_no, ni->type,
 						(unsigned long long)vcn,
 						(unsigned long long)vcn,
 						vcn_ofs, is_retry ? " even "
 						vcn_ofs, is_retry ? " even "
-						"after retrying" : "",
-						(long long)lcn);
-				if (!err)
-					err = -EIO;
+						"after retrying" : "", err);
 				goto err_out;
 				goto err_out;
 			}
 			}
 			/* We now have a successful remap, i.e. lcn >= 0. */
 			/* We now have a successful remap, i.e. lcn >= 0. */

+ 1 - 1
fs/ntfs/super.c

@@ -1688,9 +1688,9 @@ static BOOL load_system_files(ntfs_volume *vol)
 	struct super_block *sb = vol->sb;
 	struct super_block *sb = vol->sb;
 	MFT_RECORD *m;
 	MFT_RECORD *m;
 	VOLUME_INFORMATION *vi;
 	VOLUME_INFORMATION *vi;
-	RESTART_PAGE_HEADER *rp;
 	ntfs_attr_search_ctx *ctx;
 	ntfs_attr_search_ctx *ctx;
 #ifdef NTFS_RW
 #ifdef NTFS_RW
+	RESTART_PAGE_HEADER *rp;
 	int err;
 	int err;
 #endif /* NTFS_RW */
 #endif /* NTFS_RW */