From edb4fccf8405831a7b6648b16c0d512a203ceba516c267ffb84fe566a895096e Mon Sep 17 00:00:00 2001 From: Larry Finger Date: Wed, 24 Apr 2024 16:27:50 +0000 Subject: [PATCH] Accepting request 1170064 from home:lwfinger:branches:Virtualization - Provide a temporary fix to the problem of wrong timestamp for files in a shared folder since kernel 6.6. File "fix_shared_folder_time.patch" is added. This change fixes boo#1220524. OBS-URL: https://build.opensuse.org/request/show/1170064 OBS-URL: https://build.opensuse.org/package/show/Virtualization/virtualbox?expand=0&rev=736 --- fix_shared_folder_time.patch | 22 ++++++++++++++++++++++ virtualbox-kmp-files | 1 + virtualbox.changes | 7 +++++++ virtualbox.spec | 14 +++++++++----- 4 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 fix_shared_folder_time.patch diff --git a/fix_shared_folder_time.patch b/fix_shared_folder_time.patch new file mode 100644 index 0000000..21e22b2 --- /dev/null +++ b/fix_shared_folder_time.patch @@ -0,0 +1,22 @@ +Index: VirtualBox-7.0.14/src/VBox/Additions/linux/sharedfolders/utils.c +=================================================================== +--- VirtualBox-7.0.14.orig/src/VBox/Additions/linux/sharedfolders/utils.c ++++ VirtualBox-7.0.14/src/VBox/Additions/linux/sharedfolders/utils.c +@@ -297,10 +297,14 @@ DECLINLINE(int) sf_file_mode_to_linux(ui + */ + static void vbsf_update_inode_timestamps(struct inode *pInode, PSHFLFSOBJINFO pObjInfo) + { ++/* Oracle has a bad fix for i_atime, etc missing from struct inode. The fix ++ * below produces the correct results, but is not correct either as it references ++ * variables such as __i_atime that are supposed to be hidden. Larry Finger ++ */ + #if RTLNX_VER_MIN(6,6,0) +- struct timespec64 ts; +- vbsf_time_to_linux(&ts, &pObjInfo->ChangeTime); +- inode_set_ctime_to_ts(pInode, ts); ++ vbsf_time_to_linux(&pInode->__i_atime, &pObjInfo->AccessTime); ++ vbsf_time_to_linux(&pInode->__i_ctime, &pObjInfo->ChangeTime); ++ vbsf_time_to_linux(&pInode->__i_mtime, &pObjInfo->ModificationTime); + #else + vbsf_time_to_linux(&pInode->i_atime, &pObjInfo->AccessTime); + vbsf_time_to_linux(&pInode->i_ctime, &pObjInfo->ChangeTime); diff --git a/virtualbox-kmp-files b/virtualbox-kmp-files index 6f97489..576852d 100644 --- a/virtualbox-kmp-files +++ b/virtualbox-kmp-files @@ -5,4 +5,5 @@ %{kernel_module_directory}/%2-%1/extra/vboxnetadp.ko %{kernel_module_directory}/%2-%1/extra/vboxnetflt.ko %{kernel_module_directory}/%2-%1/extra/vboxguest.ko +%{kernel_module_directory}/%2-%1/extra/vboxsf.ko %{kernel_module_directory}/%2-%1/extra/vboxvideo.ko diff --git a/virtualbox.changes b/virtualbox.changes index 778889e..c920e05 100644 --- a/virtualbox.changes +++ b/virtualbox.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Apr 24 14:53:24 UTC 2024 - Larry Finger + +- Provide a temporary fix to the problem of wrong timestamp for files + in a shared folder since kernel 6.6. File "fix_shared_folder_time.patch" + is added. This change fixes boo#1220524. + ------------------------------------------------------------------- Fri Apr 19 04:36:59 UTC 2024 - Larry Finger diff --git a/virtualbox.spec b/virtualbox.spec index 4fcdd46..b34c70c 100644 --- a/virtualbox.spec +++ b/virtualbox.spec @@ -165,6 +165,7 @@ Patch42: kernel-6.8.patch Patch43: fixes_for_vboxconfig.patch Patch44: kernel-6.9.patch Patch45: libxml21206.patch +Patch46: fix_shared_folder_time.patch # # Common BuildRequires for both virtualbox and virtualbox-kmp BuildRequires: %{kernel_module_package_buildreqs} @@ -485,6 +486,7 @@ This package contains the kernel-modules that VirtualBox uses to create or run v %patch -P 43 -p1 %patch -P 44 -p1 %patch -P 45 -p1 +%patch -P 46 -p1 ### Documents for virtualbox main package ### %if %{main_package} @@ -551,6 +553,7 @@ EOF cat >> vbox-guest-tools.conf << EOF g vboxguest - - - - +g vboxsf - - - - %if 0%{?suse_version} <= 1500 g vboxvideo - - - - %endif @@ -1104,10 +1107,10 @@ rm -rf src/libs/{libpng-*,libxml2-*,libxslt-*,zlib-*,boost-*} # build kernel modules for guest and host (check novel-kmp package as example) # host modules : vboxdrv,vboxnetflt,vboxnetadp -# guest modules : vboxguest,vboxvideo +# guest modules : vboxguest,vboxsf,vboxvideo echo "build kernel modules" for vbox_module in kmp_host/vbox{drv,netflt,netadp} \ - kmp_additions/vbox{guest,video}; do + kmp_additions/vbox{guest,sf,video}; do #get the module name from path module_name=$(basename "$vbox_module") @@ -1133,8 +1136,9 @@ for vbox_module in kmp_host/vbox{drv,netflt,netadp} \ $PWD/modules_build_dir/$flavor/$module_name SYMBOLS="$PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers" fi - # copy vboxguest (for guest) module symbols which are used by vboxvideo km's: - if [ "$module_name" = "vboxvideo" ] ; then + # copy vboxguest (for guest) module symbols which are used by vboxsf and vboxvideo km's: + if [ "$module_name" = "vboxsf" -o \ + "$module_name" = "vboxvideo" ] ; then cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \ $PWD/modules_build_dir/$flavor/$module_name SYMBOLS="$PWD/modules_build_dir/$flavor/vboxguest/Module.symvers" @@ -1149,7 +1153,7 @@ done export INSTALL_MOD_PATH=%{buildroot} export INSTALL_MOD_DIR=extra #to install modules we use here similar steps like in build phase, go through all the modules : -for module_name in vbox{drv,netflt,netadp,guest,video} +for module_name in vbox{drv,netflt,netadp,guest,sf,video} do #and through all flavors for flavor in %{flavors_to_build}; do