forked from pool/ntfs-3g_ntfsprogs
Accepting request 150648 from home:badshah400:branches:filesystems
Add patch to mount ntfs partitions with Windows metadata cache in read-only mode. This makes dual booting with Windows 8 while Fastboot is enabled secure (needed for openSUSE 12.3). OBS-URL: https://build.opensuse.org/request/show/150648 OBS-URL: https://build.opensuse.org/package/show/filesystems/ntfs-3g_ntfsprogs?expand=0&rev=12
This commit is contained in:
parent
5538256412
commit
d7a1292516
138
ntfs-3g_ntfsprogs-use-caution-with-fastboot.patch
Normal file
138
ntfs-3g_ntfsprogs-use-caution-with-fastboot.patch
Normal file
@ -0,0 +1,138 @@
|
||||
From 4d0b9163c9ef1f0cdbbf533317b291220c7fd1c7 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf8?q?Jean-Pierre=20Andr=C3=A9?= <jpandre@users.sourceforge.net>
|
||||
Date: Wed, 12 Sep 2012 09:42:24 +0200
|
||||
Subject: [PATCH] Accepted processing restart pages v 2.0 with no warning (used by Windows 8)
|
||||
|
||||
In the $LogFile, Windows 8 defines restart pages with version 2.0.
|
||||
The checks designed for version 1.1 appear to apply, so accept v 2.0
|
||||
and apply the usual checks.
|
||||
---
|
||||
libntfs-3g/logfile.c | 15 +++++++++------
|
||||
1 files changed, 9 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: ntfs-3g_ntfsprogs-2012.1.15/libntfs-3g/logfile.c
|
||||
===================================================================
|
||||
--- ntfs-3g_ntfsprogs-2012.1.15.orig/libntfs-3g/logfile.c
|
||||
+++ ntfs-3g_ntfsprogs-2012.1.15/libntfs-3g/logfile.c
|
||||
@@ -84,13 +84,21 @@ static BOOL ntfs_check_restart_page_head
|
||||
"position in $LogFile.\n");
|
||||
return FALSE;
|
||||
}
|
||||
- /* We only know how to handle version 1.1. */
|
||||
- if (sle16_to_cpu(rp->major_ver) != 1 ||
|
||||
- sle16_to_cpu(rp->minor_ver) != 1) {
|
||||
+ /*
|
||||
+ * We only know how to handle version 1.1 and 2.0, though
|
||||
+ * version 2.0 is probably related to cached metadata in
|
||||
+ * Windows 8, and we will refuse to mount.
|
||||
+ * Nevertheless, do all the relevant checks before rejecting.
|
||||
+ */
|
||||
+ if (((rp->major_ver != const_cpu_to_le16(1))
|
||||
+ || (rp->minor_ver != const_cpu_to_le16(1)))
|
||||
+ && ((rp->major_ver != const_cpu_to_le16(2))
|
||||
+ || (rp->minor_ver != const_cpu_to_le16(0)))) {
|
||||
ntfs_log_error("$LogFile version %i.%i is not "
|
||||
- "supported. (This driver supports version "
|
||||
- "1.1 only.)\n", (int)sle16_to_cpu(rp->major_ver),
|
||||
- (int)sle16_to_cpu(rp->minor_ver));
|
||||
+ "supported.\n (This driver supports version "
|
||||
+ "1.1 and 2.0 only.)\n",
|
||||
+ (int)sle16_to_cpu(rp->major_ver),
|
||||
+ (int)sle16_to_cpu(rp->minor_ver));
|
||||
return FALSE;
|
||||
}
|
||||
/*
|
||||
Index: ntfs-3g_ntfsprogs-2012.1.15/libntfs-3g/volume.c
|
||||
===================================================================
|
||||
--- ntfs-3g_ntfsprogs-2012.1.15.orig/libntfs-3g/volume.c
|
||||
+++ ntfs-3g_ntfsprogs-2012.1.15/libntfs-3g/volume.c
|
||||
@@ -89,13 +89,9 @@ static const char *corrupt_volume_msg =
|
||||
"for more details.\n";
|
||||
|
||||
static const char *hibernated_volume_msg =
|
||||
-"The NTFS partition is hibernated. Please resume and shutdown Windows\n"
|
||||
-"properly, or mount the volume read-only with the 'ro' mount option, or\n"
|
||||
-"mount the volume read-write with the 'remove_hiberfile' mount option.\n"
|
||||
-"For example type on the command line:\n"
|
||||
-"\n"
|
||||
-" mount -t ntfs-3g -o remove_hiberfile %s %s\n"
|
||||
-"\n";
|
||||
+"The NTFS partition is in an unsafe state. Please resume and shutdown\n"
|
||||
+"Windows fully (no hibernation or fast restarting), or mount the volume\n"
|
||||
+"read-only with the 'ro' mount option.\n";
|
||||
|
||||
static const char *unclean_journal_msg =
|
||||
"Write access is denied because the disk wasn't safely powered\n"
|
||||
@@ -649,6 +645,24 @@ static int ntfs_volume_check_logfile(ntf
|
||||
|
||||
if (!ntfs_check_logfile(na, &rp) || !ntfs_is_logfile_clean(na, rp))
|
||||
err = EOPNOTSUPP;
|
||||
+ /*
|
||||
+ * If the latest restart page was identified as version
|
||||
+ * 2.0, then Windows may have kept a cached copy of
|
||||
+ * metadata for fast restarting, and we should not mount.
|
||||
+ * Hibernation will be seen the same way on a non
|
||||
+ * Windows-system partition, so we have to use the same
|
||||
+ * error code (EPERM).
|
||||
+ * The restart page may also be identified as version 2.0
|
||||
+ * when access to the file system is terminated abruptly
|
||||
+ * by unplugging or power cut, so mounting is also rejected
|
||||
+ * after such an event.
|
||||
+ */
|
||||
+ if (rp
|
||||
+ && (rp->major_ver == const_cpu_to_le16(2))
|
||||
+ && (rp->minor_ver == const_cpu_to_le16(0))) {
|
||||
+ ntfs_log_error("Metadata kept in Windows cache, refused to mount.\n");
|
||||
+ err = EPERM;
|
||||
+ }
|
||||
free(rp);
|
||||
ntfs_attr_close(na);
|
||||
out:
|
||||
@@ -1200,7 +1214,8 @@ ntfs_volume *ntfs_device_mount(struct nt
|
||||
ntfs_volume_check_hiberfile(vol, 1) < 0)
|
||||
goto error_exit;
|
||||
if (ntfs_volume_check_logfile(vol) < 0) {
|
||||
- if (!(flags & MS_RECOVER))
|
||||
+ /* Always reject cached metadata for now */
|
||||
+ if (!(flags & MS_RECOVER) || (errno == EPERM))
|
||||
goto error_exit;
|
||||
ntfs_log_info("The file system wasn't safely "
|
||||
"closed on Windows. Fixing.\n");
|
||||
@@ -1642,6 +1657,10 @@ int ntfs_volume_error(int err)
|
||||
ret = NTFS_VOLUME_CORRUPT;
|
||||
break;
|
||||
case EPERM:
|
||||
+ /*
|
||||
+ * Hibernation and fast restarting are seen the
|
||||
+ * same way on a non Windows-system partition.
|
||||
+ */
|
||||
ret = NTFS_VOLUME_HIBERNATED;
|
||||
break;
|
||||
case EOPNOTSUPP:
|
||||
Index: ntfs-3g_ntfsprogs-2012.1.15/src/ntfs-3g.8.in
|
||||
===================================================================
|
||||
--- ntfs-3g_ntfsprogs-2012.1.15.orig/src/ntfs-3g.8.in
|
||||
+++ ntfs-3g_ntfsprogs-2012.1.15/src/ntfs-3g.8.in
|
||||
@@ -36,6 +36,22 @@ a few differences mentioned below in rel
|
||||
.PP
|
||||
The \fIvolume\fR to be mounted can be either a block device or
|
||||
an image file.
|
||||
+.SS Windows hibernation and fast restarting
|
||||
+On computers which can be dual-booted into Windows or Linux, Windows has
|
||||
+to be fully shut down before booting into Linux, otherwise the NTFS file
|
||||
+systems on internal disks may be left in an inconsistent state and changes
|
||||
+made by Linux may be ignored by Windows.
|
||||
+.P
|
||||
+So, Windows may not be left in hibernation when starting Linux, in order
|
||||
+to avoid inconsistencies. Moreover, the fast restart feature available on
|
||||
+recent Windows systems has to be disabled. This can be achieved by issuing
|
||||
+as an Administrator the Windows command which disables both
|
||||
+hibernation and fast restarting :
|
||||
+.RS
|
||||
+.sp
|
||||
+powercfg /h off
|
||||
+.sp
|
||||
+.RE
|
||||
.SS Access Handling and Security
|
||||
By default, files and directories are owned by the effective
|
||||
user and group of the mounting process, and everybody has
|
@ -1,3 +1,11 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 31 21:04:14 UTC 2013 - badshah400@gmail.com
|
||||
|
||||
- Add ntfs-3g_ntfsprogs-use-caution-with-fastboot.patch to
|
||||
prevent partitions with metadata cached in Windows (when
|
||||
FastBoot is enabled) from being mounted; patch taken from
|
||||
upstream git and rebased (rh#859373).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Sep 23 04:44:46 UTC 2012 - jengelh@inai.de
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package ntfs-3g_ntfsprogs
|
||||
#
|
||||
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -25,6 +25,8 @@ Release: 0
|
||||
Source: %{name}-%{version}.tar.bz2
|
||||
Source1: buildall.sh
|
||||
Source2: 21-storage-ntfs-3g.fdi
|
||||
# PATCH-FIX-UPSTREAM ntfs-3g_ntfsprogs-use-caution-with-fastboot.patch rh#859373 badshah400@gmail.com -- Prevent partitions with metadata cached in Windows from being mounted; patch taken from upstream git
|
||||
Patch0: ntfs-3g_ntfsprogs-use-caution-with-fastboot.patch
|
||||
Url: http://ntfs-3g.org/
|
||||
%if 0%{?sles_version}
|
||||
BuildRequires: fuse-devel >= 2.6.0
|
||||
@ -97,6 +99,7 @@ options to display the version number and usage syntax.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
|
||||
%build
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user