[partition] Set bigtime on XFS filesystems

FIXES #1874
This commit is contained in:
Adriaan de Groot 2022-01-17 14:50:37 +01:00
parent a93126a6d0
commit 2aaaabe152
2 changed files with 17 additions and 3 deletions

View File

@ -31,6 +31,8 @@ will be removed in that release. Use the *preservefiles* module instead.
if the SSID or username contained non-ASCII characters **and** the if the SSID or username contained non-ASCII characters **and** the
default Python text-file encoding was set to ASCII. The files are default Python text-file encoding was set to ASCII. The files are
now read and written in UTF-8, explicitly. #1848 now read and written in UTF-8, explicitly. #1848
- *partition* always sets *bigtime* option on XFS filesystems, if possible.
Requires sufficiently-recent xfsprogs. #1874
- *preservefiles* was missing some necessary features, needed for it - *preservefiles* was missing some necessary features, needed for it
to replace the deprecated log-file-saving functionality in the *umount* to replace the deprecated log-file-saving functionality in the *umount*
module. (Thanks Erik and Joe for testing) #1851 module. (Thanks Erik and Joe for testing) #1851

View File

@ -14,6 +14,7 @@
#include "core/KPMHelpers.h" #include "core/KPMHelpers.h"
#include "partition/FileSystem.h" #include "partition/FileSystem.h"
#include "utils/CalamaresUtilsSystem.h"
#include "utils/Logger.h" #include "utils/Logger.h"
#include <kpmcore/core/device.h> #include <kpmcore/core/device.h>
@ -67,7 +68,18 @@ FormatPartitionJob::prettyStatusMessage() const
Calamares::JobResult Calamares::JobResult
FormatPartitionJob::exec() FormatPartitionJob::exec()
{ {
return KPMHelpers::execute( CreateFileSystemOperation( *m_device, *m_partition, m_partition->fileSystem().type() ), const auto fsType = m_partition->fileSystem().type();
tr( "The installer failed to format partition %1 on disk '%2'." ) auto r = KPMHelpers::execute( CreateFileSystemOperation( *m_device, *m_partition, fsType ),
.arg( m_partition->partitionPath(), m_device->name() ) ); tr( "The installer failed to format partition %1 on disk '%2'." )
.arg( m_partition->partitionPath(), m_device->name() ) );
if ( fsType == FileSystem::Xfs && r.succeeded() )
{
// We are going to try to set modern timestamps for the filesystem,
// (ignoring whether this succeeds). Requires a sufficiently-new
// xfs_admin and xfs_repair and might be made obsolete by newer
// kpmcore releases.
CalamaresUtils::System::runCommand( { "xfs_admin", "-O", "bigtime=1", m_partition->partitionPath() },
std::chrono::seconds( 60 ) );
}
return r;
} }