del
OBS-URL: https://build.opensuse.org/package/show/Base:System/rpm?expand=0&rev=368
This commit is contained in:
parent
3a3fbf43f6
commit
1d092a7246
@ -1,54 +0,0 @@
|
||||
From 07f6674286467f82adf0d370b8d12d72aee6817c Mon Sep 17 00:00:00 2001
|
||||
From: Fabian Vogt <fvogt@suse.com>
|
||||
Date: Mon, 28 Sep 2015 18:21:19 +0200
|
||||
Subject: [PATCH] Blocksize of NFS shouldn't be used directly
|
||||
|
||||
RPM uses the blocksize to calculate whether an RPM
|
||||
can be installed on the system. For NFS this fails
|
||||
for e.g. glibc-locale as it has many small files,
|
||||
which rpm counts as one block. As huge NFS block
|
||||
sizes (>= 1MiB) are common, this makes glibc-locale
|
||||
roughly 7 GiB in installed size.
|
||||
|
||||
As a workaround, if the NFS block size is > 4096,
|
||||
assume 4096 and scale the count of free blocks
|
||||
accordingly.
|
||||
|
||||
See also RH bug 847960
|
||||
|
||||
Signed-off-by: Fabian Vogt <fvogt@suse.com>
|
||||
---
|
||||
lib/transaction.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/lib/transaction.c b/lib/transaction.c
|
||||
index 8167640..d8d8820 100644
|
||||
--- a/lib/transaction.c
|
||||
+++ b/lib/transaction.c
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
+#include <linux/magic.h> /* NFS_SUPER_MAGIC */
|
||||
+
|
||||
#include <rpm/rpmlib.h> /* rpmMachineScore, rpmReadPackageFile */
|
||||
#include <rpm/rpmmacro.h> /* XXX for rpmExpand */
|
||||
#include <rpm/rpmlog.h>
|
||||
@@ -137,6 +139,14 @@ static rpmDiskSpaceInfo rpmtsCreateDSI(const rpmts ts, dev_t dev,
|
||||
/* XXX assigning negative value to unsigned type */
|
||||
dsi->iavail = !(sfb.f_ffree == 0 && sfb.f_files == 0)
|
||||
? sfb.f_ffree : -1;
|
||||
+
|
||||
+ /* We can't tell the block size of a network file system.
|
||||
+ * sfb.f_bsize would be the network layer's block size. */
|
||||
+ if(sfb.f_type == NFS_SUPER_MAGIC && dsi->bsize > 4096) {
|
||||
+ int64_t old_bsize = dsi->bsize;
|
||||
+ dsi->bsize = 4096; /* Assume 4k block size */
|
||||
+ dsi->bavail *= old_bsize / dsi->bsize;
|
||||
+ }
|
||||
|
||||
/* Find mount point belonging to this device number */
|
||||
resolved_path = realpath(dirName, mntPoint);
|
||||
--
|
||||
2.5.2
|
||||
|
Loading…
Reference in New Issue
Block a user