Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
parallels-iso: Provisioning with shell script: ~/Documents/Code/bento/packer_templates/almalinux/../_common/parallels.sh
==> parallels-iso: + HOME_DIR=/home/vagrant
==> parallels-iso: + case "$PACKER_BUILDER_TYPE" in
==> parallels-iso: ++ awk -F. '{print $1}'
==> parallels-iso: ++ sed 's/^.\+ release \([.0-9]\+\).*/\1/' /etc/redhat-release
==> parallels-iso: + major_version=9
==> parallels-iso: + '[' 9 -ge 10 ']'
==> parallels-iso: + mkdir -p /tmp/parallels
==> parallels-iso: ++ uname -m
==> parallels-iso: + '[' aarch64 = aarch64 ']'
==> parallels-iso: + mount -o loop /home/vagrant/prl-tools-lin-arm.iso /tmp/parallels
==> parallels-iso: mount: /tmp/parallels: WARNING: source write-protected, mounted read-only.
==> parallels-iso: ++ cat /tmp/parallels/version
==> parallels-iso: + VER=18.1.0.53311
parallels-iso: Parallels Tools Version: 18.1.0.53311
==> parallels-iso: + echo 'Parallels Tools Version: 18.1.0.53311'
==> parallels-iso: + /tmp/parallels/install --install-unattended-with-deps
parallels-iso: Started installation of Parallels Guest Tools version '18.1.0.53311'
parallels-iso: modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-70.30.1.el9_0.aarch64
parallels-iso:
parallels-iso: Tue Nov 15 22:16:39 UTC 2022
parallels-iso: Start installation or upgrade of Guest Tools
parallels-iso: Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.ko due to unavailability of vmlinux
parallels-iso: Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/prl_fs.ko due to unavailability of vmlinux
parallels-iso: Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_notifier/Installation/lnx/prl_notifier/prl_notifier.ko due to unavailability of vmlinux
parallels-iso: Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.ko due to unavailability of vmlinux
parallels-iso: Start installation of prl_tg kernel module
parallels-iso: Start installation of prl_fs kernel module
parallels-iso: Start installation of prl_fs_freeze kernel module
parallels-iso: Start installation of prl_notifier kernel module
parallels-iso: Failed to resolve typeattributeset statement at /var/lib/selinux/targeted/tmp/modules/400/prltimesync/cil:35
parallels-iso: Failed to resolve AST
parallels-iso: semodule: Failed!
parallels-iso: Failed to resolve typeattributeset statement at /var/lib/selinux/targeted/tmp/modules/400/prltoolsd/cil:51
parallels-iso: Failed to resolve AST
parallels-iso: semodule: Failed!
parallels-iso: cp: cannot create regular file '/usr/share/icons/hicolor/48x48/apps/parallels-tools.png': No such file or directory
parallels-iso: Parallels Guest Tools were installed successfully!
2022-12-28T20:49:35+0000:
Parallels Tools 17.1.6-51584 Installer started.
2022-12-28T20:49:35+0000: Failed to setup console printk level.
2022-12-28T20:49:37+0000: execCmd: ./install --check [0]
2022-12-28T20:49:37+0000: execCmd: ./installer/detect-xserver.sh -v >/dev/null 2>&1 [163]
2022-12-28T20:49:37+0000: execCmd: ./installer/pm.sh --check gtools [0]
Started installation of Parallels Guest Tools version '17.1.6.51584'
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
Wed Dec 28 20:49:37 GMT 2022
Start installation or upgrade of Guest Tools
Installed Guest Tools were not found
Register service to install new Guest Tools
Perform installation into the /usr/lib/parallels-tools directory
make: Entering directory '/usr/lib/parallels-tools/kmods'
awk: cmd. line:1: warning: regexp escape sequence `\#' is not a known regexp operator
Will use compiler CC="cc".
Compiler version "cc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2)"
cd prl_tg/Toolgate/Guest/Linux/prl_tg && make CC=cc
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg'
1: /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64/build
2: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg
3: 20221228
4: 1.10.0
Start compile prl_tg...
make -C /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64/build M=/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg SRCROOT=/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg CC=cc modules
make[2]: Entering directory '/usr/src/kernels/5.14.0-162.6.1.el9_1.0.1.x86_64'
1: /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64/build
2: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg
3: 20221228
4: 1.10.0
CC [M] /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_in32':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:154:32: warning: passing argument 1 of 'inl' makes integer from pointer without a cast [-Wint-conversion]
154 | x = inl(dev->base_addr + port);
| ~~~~~~~~~~~~~~~^~~~~~
| |
| void *
In file included from ./include/linux/io.h:13,
from ./include/linux/pci.h:39,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:7:
./arch/x86/include/asm/io.h:267:41: note: expected 'int' but argument is of type 'void *'
267 | static inline unsigned type in##bwl(int port) \
| ~~~~^~~~
./arch/x86/include/asm/io.h:322:1: note: in expansion of macro 'BUILDIO'
322 | BUILDIO(l, , int)
| ^~~~~~~
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out32':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:169:34: warning: passing argument 2 of 'outl' makes integer from pointer without a cast [-Wint-conversion]
169 | outl(val, dev->base_addr + port);
| ~~~~~~~~~~~~~~~^~~~~~
| |
| void *
In file included from ./include/linux/io.h:13,
from ./include/linux/pci.h:39,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:7:
./arch/x86/include/asm/io.h:261:54: note: expected 'int' but argument is of type 'void *'
261 | static inline void out##bwl(unsigned type value, int port) \
| ~~~~^~~~
./arch/x86/include/asm/io.h:322:1: note: in expansion of macro 'BUILDIO'
322 | BUILDIO(l, , int)
| ^~~~~~~
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:179:14: warning: assignment to 'long unsigned int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]
179 | port += dev->base_addr;
| ^~
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_write':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:255:30: error: implicit declaration of function 'PDE_DATA'; did you mean 'NODE_DATA'? [-Werror=implicit-function-declaration]
255 | struct tg_dev *dev = PDE_DATA(FILE_DENTRY(filp)->d_inode);
| ^~~~~~~~
| NODE_DATA
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:255:30: warning: initialization of 'struct tg_dev *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
In file included from ./include/linux/printk.h:7,
from ./include/linux/kernel.h:20,
from ./include/linux/list.h:9,
from ./include/linux/module.h:12,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:5:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_probe_common':
2022-12-28T20:49:38+0000: Started installation of Parallels Guest Tools version '17.1.6.51584'
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
Wed Dec 28 20:49:37 GMT 2022
Start installation or upgrade of Guest Tools
awk: cmd. line:1: warning: regexp escape sequence `\#' is not a known regexp operator
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_in32':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:154:32: warning: passing argument 1 of 'inl' makes integer from pointer without a cast [-Wint-conversion]
154 | x = inl(dev->base_addr + port);
| ~~~~~~~~~~~~~~~^~~~~~
| |
| void *
In file included from ./include/linux/io.h:13,
from ./include/linux/pci.h:39,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:7:
./arch/x86/include/asm/io.h:267:41: note: expected 'int' but argument is of type 'void *'
267 | static inline unsigned type in##bwl(int port) \
| ~~~~^~~~
./arch/x86/include/asm/io.h:322:1: note: in expansion of macro 'BUILDIO'
322 | BUILDIO(l, , int)
| ^~~~~~~
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out32':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:169:34: warning: passing argument 2 of 'outl' makes integer from pointer without a cast [-Wint-conversion]
169 | outl(val, dev->base_addr + port);
| ~~~~~~~~~~~~~~~^~~~~~
| |
| void *
In file included from ./include/linux/io.h:13,
from ./include/linux/pci.h:39,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:7:
./arch/x86/include/asm/io.h:261:54: note: expected 'int' but argument is of type 'void *'
261 | static inline void out##bwl(unsigned type value, int port) \
| ~~~~^~~~
./arch/x86/include/asm/io.h:322:1: note: in expansion of macro 'BUILDIO'
322 | BUILDIO(l, , int)
| ^~~~~~~
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:179:14: warning: assignment to 'long unsigned int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]
179 | port += dev->base_addr;
| ^~
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_write':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:255:30: error: implicit declaration of function 'PDE_DATA'; did you mean 'NODE_DATA'? [-Werror=implicit-function-declaration]
255 | struct tg_dev *dev = PDE_DATA(FILE_DENTRY(filp)->d_inode);
| ^~~~~~~~
| NODE_DATA
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:255:30: warning: initialization of 'struct tg_dev *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
In file included from ./include/linux/printk.h:7,
from ./include/linux/kernel.h:20,
from ./include/linux/list.h:9,
from ./include/linux/module.h:12,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:5:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In functio./include/linux/kern_levels.h:5:25: warning: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'void *' [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
./include/linux/kern_levels.h:14:25: note: in expansion of macro 'KERN_SOH'
14 | #define KERN_INFO KERN_SOH "6" /* informational */
| ^~~~~~~~
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:520:16: note: in expansion of macro 'KERN_INFO'
520 | printk(KERN_INFO "detected %s, base addr %08lx, IRQ %d\n",
| ^~~~~~~~~
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:520:54: note: format string is defined here
520 | printk(KERN_INFO "detected %s, base addr %08lx, IRQ %d\n",
| ~~~~^
| |
| long unsigned int
| %08p
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_init_module':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:646:13: warning: unused variable 'rc' [-Wunused-variable]
646 | int rc;
| ^~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:295: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o] Error 1
make[2]: Leaving directory '/usr/src/kernels/5.14.0-162.6.1.el9_1.0.1.x86_64'
make[2]: *** [Makefile:1915: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg] Error 2
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg'
make[1]: *** [Makefile:43: prl_tg] Error 2
make: Leaving directory '/usr/lib/parallels-tools/kmods'
make: *** [Makefile.kmods:47: compile] Error 2
Error: could not build kernel modules
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
Error: failed to install Parallels Guest Tools!
2022-12-28T20:49:38+0000: n 'prl_tg_probe_common':
./include/linux/kern_levels.h:5:25: warning: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'void *' [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
./include/linux/kern_levels.h:14:25: note: in expansion of macro 'KERN_SOH'
14 | #define KERN_INFO KERN_SOH "6" /* informational */
| ^~~~~~~~
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:520:16: note: in expansion of macro 'KERN_INFO'
520 | printk(KERN_INFO "detected %s, base addr %08lx, IRQ %d\n",
| ^~~~~~~~~
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:520:54: note: format string is defined here
520 | printk(KERN_INFO "detected %s, base addr %08lx, IRQ %d\n",
| ~~~~^
| |
| long unsigned int
| %08p
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_init_module':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:646:13: warning: unused variable 'rc' [-Wunused-variable]
646 | int rc;
| ^~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:295: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o] Error 1
make[2]: *** [Makefile:1915: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg] Error 2
make[1]: *** [Makefile:43: prl_tg] Error 2
make: *** [Makefile.kmods:47: compile] Error 2
Error: could not build kernel modules
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
Error: failed to install Parallels Guest Tools!
2022-12-28T20:49:38+0000: execCmd: ./install --install [167]
2022-12-28T20:49:39+0000: Exiting with code 1
diff -u -r parallels-tools-17.1.6.51584.orig/kmods/prl_eth/pvmnet/pvmnet.c parallels-tools-17.1.6.51584/kmods/prl_eth/pvmnet/pvmnet.c
--- parallels-tools-17.1.6.51584.orig/kmods/prl_eth/pvmnet/pvmnet.c 2022-12-01 09:23:05.000000000 +0000
+++ parallels-tools-17.1.6.51584/kmods/prl_eth/pvmnet/pvmnet.c 2022-12-28 22:03:33.620305885 +0000
@@ -418,6 +418,8 @@
#if RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5) && \
RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(8, 0)
.extended.ndo_change_mtu = eth_change_mtu,
+#elif RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(9, 0)
+ .ndo_change_mtu = dev_set_mtu,
#else
.ndo_change_mtu = eth_change_mtu,
#endif
diff -u -r parallels-tools-17.1.6.51584.orig/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c parallels-tools-17.1.6.51584/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c
--- parallels-tools-17.1.6.51584.orig/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c 2022-12-01 09:23:09.000000000 +0000
+++ parallels-tools-17.1.6.51584/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c 2022-12-28 21:51:27.640987278 +0000
@@ -249,7 +249,7 @@
size_t nbytes, loff_t *ppos)
{
int ret = 0;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
struct tg_dev *dev = pde_data(FILE_DENTRY(filp)->d_inode);
#else
struct tg_dev *dev = PDE_DATA(FILE_DENTRY(filp)->d_inode);
diff -u -r parallels-tools-17.1.7.51588.orig/kmods/prl_eth/pvmnet/pvmnet.c parallels-tools-17.1.7.51588/kmods/prl_eth/pvmnet/pvmnet.c
--- parallels-tools-17.1.7.51588.orig/kmods/prl_eth/pvmnet/pvmnet.c 2023-08-27 16:09:33.534056800 +0100
+++ parallels-tools-17.1.7.51588/kmods/prl_eth/pvmnet/pvmnet.c 2023-08-27 16:07:29.120106527 +0100
@@ -419,9 +419,11 @@
RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(8, 0)
.extended.ndo_change_mtu = eth_change_mtu,
#else
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,14,0)
.ndo_change_mtu = eth_change_mtu,
#endif
#endif
+#endif
};
#endif
diff -u -r parallels-tools-17.1.7.51588.orig/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c parallels-tools-17.1.7.51588/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c
--- parallels-tools-17.1.7.51588.orig/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c 2023-08-27 16:09:33.539056597 +0100
+++ parallels-tools-17.1.7.51588/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c 2023-08-27 16:07:29.118106608 +0100
@@ -16,6 +16,9 @@
#include <linux/pagemap.h>
#include <linux/namei.h>
#include <linux/cred.h>
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0))
+#include <linux/writeback.h>
+#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 40)) && \
(LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0))
@@ -56,7 +59,9 @@
return (unsigned long *)&(de->d_fsdata);
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0)
+#define prl_uaccess_kernel() (false)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
#define prl_uaccess_kernel() uaccess_kernel()
#else
#define prl_uaccess_kernel() segment_eq(get_fs(), KERNEL_DS)
@@ -954,7 +959,11 @@
.writepage = prlfs_writepage,
.write_begin = simple_write_begin,
.write_end = prlfs_write_end,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
+ .dirty_folio = filemap_dirty_folio,
+#else
.set_page_dirty = __set_page_dirty_nobuffers,
+#endif
};
diff -u -r parallels-tools-17.1.7.51588.orig/kmods/prl_fs/Toolgate/Guest/Linux/prl_tg/prltg.c parallels-tools-17.1.7.51588/kmods/prl_fs/Toolgate/Guest/Linux/prl_tg/prltg.c
--- parallels-tools-17.1.7.51588.orig/kmods/prl_fs/Toolgate/Guest/Linux/prl_tg/prltg.c 2023-08-27 16:09:33.536056719 +0100
+++ parallels-tools-17.1.7.51588/kmods/prl_fs/Toolgate/Guest/Linux/prl_tg/prltg.c 2023-08-27 16:07:29.124106365 +0100
@@ -249,7 +249,7 @@
size_t nbytes, loff_t *ppos)
{
int ret = 0;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
struct tg_dev *dev = pde_data(FILE_DENTRY(filp)->d_inode);
#else
struct tg_dev *dev = PDE_DATA(FILE_DENTRY(filp)->d_inode);
diff -u -r parallels-tools-17.1.7.51588.orig/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c parallels-tools-17.1.7.51588/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c
--- parallels-tools-17.1.7.51588.orig/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c 2023-08-27 16:09:33.535056760 +0100
+++ parallels-tools-17.1.7.51588/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c 2023-08-27 16:07:29.122106446 +0100
@@ -328,7 +328,11 @@
char buf[BDEVNAME_SIZE];
fsb = list_entry((struct list_head*)data, struct frozen_sb, list);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
+ snprintf(buf, sizeof(buf), "%pg", fsb->sb->s_bdev);
+#else
bdevname(fsb->sb->s_bdev, buf);
+#endif
seq_printf(file, "%s\n", buf);
return 0;
}