From 1b1b663e18d4a88b5fb306b8775378c28d8e3646 Mon Sep 17 00:00:00 2001 From: yangsheng Date: Thu, 24 Jul 2008 14:50:52 +0000 Subject: [PATCH] Branch b1_6 b=15308 i=johann, shadow, zhenyu.xu, brian Update to SLES10 SP2 kernel-2.6.16.60-0.23 and update to OFED-1.3.1. --- lustre/ChangeLog | 6 ++- lustre/autoconf/lustre-core.m4 | 24 +++++++++ lustre/include/linux/lustre_compat25.h | 32 +++++++++++- lustre/include/linux/lvfs.h | 6 ++- .../kernel-2.6.16-2.6-sles10-i686-bigsmp.config | 61 ++++++++++++++++++---- .../kernel-2.6.16-2.6-sles10-i686.config | 61 ++++++++++++++++++---- .../kernel-2.6.16-2.6-sles10-x86_64-smp.config | 56 ++++++++++++++++---- .../kernel-2.6.16-2.6-sles10-x86_64.config | 56 ++++++++++++++++---- lustre/kernel_patches/targets/2.6-sles10.target.in | 4 +- lustre/kernel_patches/which_patch | 2 +- lustre/llite/file.c | 15 ------ lustre/llite/rw.c | 2 +- lustre/lvfs/lvfs_linux.c | 11 ++-- lustre/lvfs/quotafmt_test.c | 5 +- lustre/mds/mds_fs.c | 15 +++--- lustre/mds/mds_join.c | 2 +- lustre/mds/mds_open.c | 8 +-- lustre/mds/mds_reint.c | 27 ++++++---- lustre/mds/mds_unlink_open.c | 4 +- lustre/mgc/mgc_request.c | 3 +- lustre/mgs/mgs_fs.c | 2 +- lustre/obdclass/llog_lvfs.c | 4 +- lustre/obdfilter/filter.c | 17 +++--- 23 files changed, 323 insertions(+), 100 deletions(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 2c6e64d..24e129b 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -3,7 +3,7 @@ tbd Sun Microsystems, Inc. * Support for kernels: 2.6.5-7.311 (SLES 9), 2.6.9-67.0.20.EL (RHEL 4), - 2.6.16.54-0.2.5 (SLES 10), + 2.6.16.60-0.23 (SLES 10), 2.6.18-92.1.6.el5 (RHEL 5), 2.6.22.14 vanilla (kernel.org) * Client support for unpatched kernels: @@ -39,6 +39,10 @@ tbd Sun Microsystems, Inc. old (verbose) output can be obtained by using -v option. Severity : enhancement +Bugzilla : 15308 +Description: Update to SLES10 SP2 kernel-2.6.16.60-0.23. + +Severity : enhancement Bugzilla : 16190 Description: Update to RHEL5 kernel-2.6.18-92.1.6.el5. diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index dbca6b4..4af2934 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -1315,6 +1315,9 @@ AC_DEFUN([LC_PROG_LINUX], # 2.6.15 LC_INODE_I_MUTEX + # 2.6.16 + LC_SECURITY_PLUG # for SLES10 SP2 + # 2.6.17 LC_DQUOTOFF_MUTEX @@ -1557,6 +1560,27 @@ LB_LINUX_TRY_COMPILE([ ]) ]) +# LC_SECURITY_PLUG # for SLES10 SP2 +# check security plug in sles10 sp2 kernel +AC_DEFUN([LC_SECURITY_PLUG], +[AC_MSG_CHECKING([If kernel has security plug support]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct dentry *dentry; + struct vfsmount *mnt; + struct iattr *iattr; + + notify_change(dentry, mnt, iattr); +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SECURITY_PLUG, 1, + [SLES10 SP2 use extra parameter in vfs]) +],[ + AC_MSG_RESULT(NO) +]) +]) + # # LC_CONFIGURE # diff --git a/lustre/include/linux/lustre_compat25.h b/lustre/include/linux/lustre_compat25.h index 3d36f9f..b754ea6 100644 --- a/lustre/include/linux/lustre_compat25.h +++ b/lustre/include/linux/lustre_compat25.h @@ -473,7 +473,13 @@ static inline int mapping_has_pages(struct address_space *mapping) dentry->d_flags |= flags; \ spin_unlock(&dentry->d_lock); \ } while(0) -#define ll_vfs_symlink(dir, dentry, path, mode) vfs_symlink(dir, dentry, path, mode) +#ifdef HAVE_SECURITY_PLUG +#define ll_vfs_symlink(dir, dentry, mnt, path, mode) \ + vfs_symlink(dir, dentry, mnt, path, mode) +#else +#define ll_vfs_symlink(dir, dentry, mnt, path, mode) \ + vfs_symlink(dir, dentry, path, mode) +#endif #endif #ifndef container_of @@ -559,5 +565,29 @@ int ll_unregister_blkdev(unsigned int dev, const char *name) #define LL_RENAME_DOES_D_MOVE FS_ODD_RENAME #endif +#ifdef HAVE_SECURITY_PLUG +#define ll_remove_suid(inode,mnt) remove_suid(inode,mnt) +#define ll_vfs_rmdir(dir,entry,mnt) vfs_rmdir(dir,entry,mnt) +#define ll_vfs_mkdir(inode,dir,mnt,mode) vfs_mkdir(inode,dir,mnt,mode) +#define ll_vfs_link(old,mnt,dir,new,mnt1) vfs_link(old,mnt,dir,new,mnt1) +#define ll_vfs_unlink(inode,entry,mnt) vfs_unlink(inode,entry,mnt) +#define ll_vfs_mknod(dir,entry,mnt,mode,dev) \ + vfs_mknod(dir,entry,mnt,mode,dev) +#define ll_security_inode_unlink(dir,entry,mnt) \ + security_inode_unlink(dir,entry,mnt) +#define ll_vfs_rename(old,old_dir,mnt,new,new_dir,mnt1) \ + vfs_rename(old,old_dir,mnt,new,new_dir,mnt1) +#else +#define ll_remove_suid(inode,mnt) remove_suid(inode) +#define ll_vfs_rmdir(dir,entry,mnt) vfs_rmdir(dir,entry) +#define ll_vfs_mkdir(inode,dir,mnt,mode) vfs_mkdir(inode,dir,mode) +#define ll_vfs_link(old,mnt,dir,new,mnt1) vfs_link(old,dir,new) +#define ll_vfs_unlink(inode,entry,mnt) vfs_unlink(inode,entry) +#define ll_vfs_mknod(dir,entry,mnt,mode,dev) vfs_mknod(dir,entry,mode,dev) +#define ll_security_inode_unlink(dir,entry,mnt) security_inode_unlink(dir,entry) +#define ll_vfs_rename(old,old_dir,mnt,new,new_dir,mnt1) \ + vfs_rename(old,old_dir,new,new_dir) +#endif + #endif /* __KERNEL__ */ #endif /* _COMPAT25_H */ diff --git a/lustre/include/linux/lvfs.h b/lustre/include/linux/lvfs.h index 2eae365..0fa316a 100644 --- a/lustre/include/linux/lvfs.h +++ b/lustre/include/linux/lvfs.h @@ -101,9 +101,11 @@ struct lvfs_run_ctxt { #ifdef __KERNEL__ -struct dentry *simple_mkdir(struct dentry *dir, char *name, int mode, int fix); +struct dentry *simple_mkdir(struct dentry *dir, struct vfsmount *mnt, + char *name, int mode, int fix); struct dentry *simple_mknod(struct dentry *dir, char *name, int mode, int fix); -int lustre_rename(struct dentry *dir, char *oldname, char *newname); +int lustre_rename(struct dentry *dir, struct vfsmount *mnt, char *oldname, + char *newname); int lustre_fread(struct file *file, void *buf, int len, loff_t *off); int lustre_fwrite(struct file *file, const void *buf, int len, loff_t *off); int lustre_fsync(struct file *file); diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686-bigsmp.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686-bigsmp.config index 3ae4b96..97d697e 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686-bigsmp.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686-bigsmp.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.16.46 -# Tue Jul 3 17:56:03 2007 +# Linux kernel version: 2.6.16.60 +# Wed May 21 20:30:49 2008 # CONFIG_X86_32=y CONFIG_SEMAPHORE_SLEEPERS=y @@ -26,15 +26,15 @@ CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_SUSE_KERNEL=y CONFIG_SLE_VERSION=10 -CONFIG_SLE_SP=1 +CONFIG_SLE_SP=2 CONFIG_SLE_SP_SUBLEVEL=0 CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASK_DELAY_ACCT=y CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_SYSCTL=y CONFIG_AUDIT=y @@ -112,6 +112,7 @@ CONFIG_DEFAULT_IOSCHED="cfq" # CONFIG_X86_VISWS is not set CONFIG_X86_GENERICARCH=y # CONFIG_X86_ES7000 is not set +# CONFIG_X86_VMI is not set CONFIG_X86_CYCLONE_TIMER=y # CONFIG_M386 is not set # CONFIG_M486 is not set @@ -180,6 +181,7 @@ CONFIG_X86_CPUID=m CONFIG_EDD=m CONFIG_DELL_RBU=m CONFIG_DCDBAS=m +CONFIG_DMIID=y # CONFIG_NOHIGHMEM is not set # CONFIG_HIGHMEM4G is not set CONFIG_HIGHMEM64G=y @@ -236,6 +238,7 @@ CONFIG_ACPI_BUTTON=m CONFIG_ACPI_VIDEO=m # CONFIG_ACPI_HOTKEY is not set CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=m CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m @@ -323,6 +326,7 @@ CONFIG_PCI_MMCONFIG=y CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y CONFIG_PCI_MSI=y # CONFIG_PCI_LEGACY_PROC is not set # CONFIG_PCI_DEBUG is not set @@ -1201,6 +1205,7 @@ CONFIG_SCSI_FC_ATTRS=m # CONFIG_SCSI_ISCSI_ATTRS is not set CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m +# CONFIG_SCSI_SAS_ATA is not set # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_ISCSI_TARGET=m @@ -1397,11 +1402,8 @@ CONFIG_DM_MULTIPATH=m CONFIG_DM_MULTIPATH_EMC=m CONFIG_DM_MULTIPATH_HP_SW=m CONFIG_DM_MULTIPATH_RDAC=m +CONFIG_DM_MULTIPATH_ALUA=m CONFIG_DM_NL_EVT=y - -# -# Fusion MPT device support -# CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m @@ -1410,6 +1412,7 @@ CONFIG_FUSION_MAX_SGE=128 CONFIG_FUSION_MAX_FC_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set # # IEEE 1394 (FireWire) support @@ -1595,6 +1598,7 @@ CONFIG_DL2K=m CONFIG_E1000=m CONFIG_E1000_NAPI=y # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_IGB=m CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m @@ -1608,17 +1612,22 @@ CONFIG_SK98LIN=m CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m CONFIG_BNX2=m +CONFIG_BNX2X=m CONFIG_QLA3XXX=m # # Ethernet (10000 Mbit) # CONFIG_CHELSIO_T1=m +# CONFIG_CHELSIO_T3 is not set +CONFIG_IXGBE=m +# CONFIG_IXGBE_NAPI is not set CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y CONFIG_NETXEN_NIC=m +CONFIG_MYRI10GE=m # # Token Ring devices @@ -1801,7 +1810,6 @@ CONFIG_NET_FC=y CONFIG_SHAPER=m CONFIG_NETCONSOLE=m CONFIG_NETPOLL=y -CONFIG_NETPOLL_RX=y CONFIG_NETPOLL_TRAP=y CONFIG_NET_POLL_CONTROLLER=y @@ -2366,6 +2374,8 @@ CONFIG_SENSORS_HDAPS=m # Misc devices # CONFIG_IBM_ASM=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m # # Multimedia Capabilities Port drivers @@ -3113,8 +3123,22 @@ CONFIG_USB_XUSBATM=m # CONFIG_MMC=m # CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD Card Drivers +# CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=m + +# +# MMC/SD Host Controller Drivers +# +CONFIG_MMC_SDHCI=m +CONFIG_MMC_RICOH_MMC=m CONFIG_MMC_WBSD=m +CONFIG_MMC_TIFM_SD=m # # InfiniBand support @@ -3431,7 +3455,13 @@ CONFIG_SECURITY_APPARMOR=m # Cryptographic options # CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ABLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_MANAGER=m CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y @@ -3440,9 +3470,18 @@ CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_WP512=m CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_CRYPTD=m CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_586=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_AES_586=m @@ -3455,13 +3494,15 @@ CONFIG_CRYPTO_ANUBIS=m CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_TEST=m # # Hardware crypto devices # CONFIG_CRYPTO_DEV_PADLOCK=m -CONFIG_CRYPTO_DEV_PADLOCK_AES=y +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m # # Library routines diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686.config index ded8f04..ea7c80f 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.16.46 -# Tue Jul 3 17:46:57 2007 +# Linux kernel version: 2.6.16.60 +# Wed May 21 20:31:52 2008 # CONFIG_X86_32=y CONFIG_SEMAPHORE_SLEEPERS=y @@ -26,15 +26,15 @@ CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_SUSE_KERNEL=y CONFIG_SLE_VERSION=10 -CONFIG_SLE_SP=1 +CONFIG_SLE_SP=2 CONFIG_SLE_SP_SUBLEVEL=0 CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASK_DELAY_ACCT=y CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_SYSCTL=y CONFIG_AUDIT=y @@ -112,6 +112,7 @@ CONFIG_DEFAULT_IOSCHED="cfq" # CONFIG_X86_VISWS is not set CONFIG_X86_GENERICARCH=y # CONFIG_X86_ES7000 is not set +# CONFIG_X86_VMI is not set CONFIG_X86_CYCLONE_TIMER=y # CONFIG_M386 is not set # CONFIG_M486 is not set @@ -180,6 +181,7 @@ CONFIG_X86_CPUID=m CONFIG_EDD=m CONFIG_DELL_RBU=m CONFIG_DCDBAS=m +CONFIG_DMIID=y # CONFIG_NOHIGHMEM is not set # CONFIG_HIGHMEM4G is not set CONFIG_HIGHMEM64G=y @@ -236,6 +238,7 @@ CONFIG_ACPI_BUTTON=m CONFIG_ACPI_VIDEO=m # CONFIG_ACPI_HOTKEY is not set CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=m CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m @@ -323,6 +326,7 @@ CONFIG_PCI_MMCONFIG=y CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y CONFIG_PCI_MSI=y # CONFIG_PCI_LEGACY_PROC is not set # CONFIG_PCI_DEBUG is not set @@ -1201,6 +1205,7 @@ CONFIG_SCSI_FC_ATTRS=m # CONFIG_SCSI_ISCSI_ATTRS is not set CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m +# CONFIG_SCSI_SAS_ATA is not set # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_ISCSI_TARGET=m @@ -1397,11 +1402,8 @@ CONFIG_DM_MULTIPATH=m CONFIG_DM_MULTIPATH_EMC=m CONFIG_DM_MULTIPATH_HP_SW=m CONFIG_DM_MULTIPATH_RDAC=m +CONFIG_DM_MULTIPATH_ALUA=m CONFIG_DM_NL_EVT=y - -# -# Fusion MPT device support -# CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m @@ -1410,6 +1412,7 @@ CONFIG_FUSION_MAX_SGE=128 CONFIG_FUSION_MAX_FC_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set # # IEEE 1394 (FireWire) support @@ -1595,6 +1598,7 @@ CONFIG_DL2K=m CONFIG_E1000=m CONFIG_E1000_NAPI=y # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_IGB=m CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m @@ -1608,17 +1612,22 @@ CONFIG_SK98LIN=m CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m CONFIG_BNX2=m +CONFIG_BNX2X=m CONFIG_QLA3XXX=m # # Ethernet (10000 Mbit) # CONFIG_CHELSIO_T1=m +# CONFIG_CHELSIO_T3 is not set +CONFIG_IXGBE=m +# CONFIG_IXGBE_NAPI is not set CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y CONFIG_NETXEN_NIC=m +CONFIG_MYRI10GE=m # # Token Ring devices @@ -1801,7 +1810,6 @@ CONFIG_NET_FC=y CONFIG_SHAPER=m CONFIG_NETCONSOLE=m CONFIG_NETPOLL=y -CONFIG_NETPOLL_RX=y CONFIG_NETPOLL_TRAP=y CONFIG_NET_POLL_CONTROLLER=y @@ -2366,6 +2374,8 @@ CONFIG_SENSORS_HDAPS=m # Misc devices # CONFIG_IBM_ASM=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m # # Multimedia Capabilities Port drivers @@ -3113,8 +3123,22 @@ CONFIG_USB_XUSBATM=m # CONFIG_MMC=m # CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD Card Drivers +# CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=m + +# +# MMC/SD Host Controller Drivers +# +CONFIG_MMC_SDHCI=m +CONFIG_MMC_RICOH_MMC=m CONFIG_MMC_WBSD=m +CONFIG_MMC_TIFM_SD=m # # InfiniBand support @@ -3431,7 +3455,13 @@ CONFIG_SECURITY_APPARMOR=m # Cryptographic options # CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ABLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_MANAGER=m CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y @@ -3440,9 +3470,18 @@ CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_WP512=m CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_CRYPTD=m CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_586=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_AES_586=m @@ -3455,13 +3494,15 @@ CONFIG_CRYPTO_ANUBIS=m CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_TEST=m # # Hardware crypto devices # CONFIG_CRYPTO_DEV_PADLOCK=m -CONFIG_CRYPTO_DEV_PADLOCK_AES=y +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m # # Library routines diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64-smp.config index f2598ed..eb87a50 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64-smp.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64-smp.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.16.46 -# Tue Jul 3 18:35:09 2007 +# Linux kernel version: 2.6.16.60 +# Wed May 21 20:28:50 2008 # CONFIG_X86_64=y CONFIG_64BIT=y @@ -32,15 +32,15 @@ CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_SUSE_KERNEL=y CONFIG_SLE_VERSION=10 -CONFIG_SLE_SP=1 +CONFIG_SLE_SP=2 CONFIG_SLE_SP_SUBLEVEL=0 CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASK_DELAY_ACCT=y CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_SYSCTL=y CONFIG_AUDIT=y @@ -198,6 +198,7 @@ CONFIG_ACPI_BUTTON=m CONFIG_ACPI_VIDEO=m # CONFIG_ACPI_HOTKEY is not set CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=m CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m @@ -259,6 +260,7 @@ CONFIG_PCI_MMCONFIG=y CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y CONFIG_PCI_MSI=y # CONFIG_PCI_LEGACY_PROC is not set # CONFIG_PCI_DEBUG is not set @@ -1096,6 +1098,7 @@ CONFIG_SCSI_FC_ATTRS=m # CONFIG_SCSI_ISCSI_ATTRS is not set CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m +# CONFIG_SCSI_SAS_ATA is not set # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_ISCSI_TARGET=m @@ -1249,11 +1252,8 @@ CONFIG_DM_MULTIPATH=m CONFIG_DM_MULTIPATH_EMC=m CONFIG_DM_MULTIPATH_HP_SW=m CONFIG_DM_MULTIPATH_RDAC=m +CONFIG_DM_MULTIPATH_ALUA=m CONFIG_DM_NL_EVT=y - -# -# Fusion MPT device support -# CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m @@ -1262,6 +1262,7 @@ CONFIG_FUSION_MAX_SGE=128 CONFIG_FUSION_MAX_FC_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set # # IEEE 1394 (FireWire) support @@ -1409,6 +1410,7 @@ CONFIG_DL2K=m CONFIG_E1000=m CONFIG_E1000_NAPI=y # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_IGB=m CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m @@ -1422,17 +1424,22 @@ CONFIG_SK98LIN=m CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m CONFIG_BNX2=m +CONFIG_BNX2X=m CONFIG_QLA3XXX=m # # Ethernet (10000 Mbit) # CONFIG_CHELSIO_T1=m +# CONFIG_CHELSIO_T3 is not set +CONFIG_IXGBE=m +# CONFIG_IXGBE_NAPI is not set CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y CONFIG_NETXEN_NIC=m +CONFIG_MYRI10GE=m # # Token Ring devices @@ -1540,7 +1547,6 @@ CONFIG_NET_FC=y CONFIG_SHAPER=m CONFIG_NETCONSOLE=m CONFIG_NETPOLL=y -CONFIG_NETPOLL_RX=y CONFIG_NETPOLL_TRAP=y CONFIG_NET_POLL_CONTROLLER=y @@ -2044,6 +2050,8 @@ CONFIG_SENSORS_HDAPS=m # Misc devices # CONFIG_IBM_ASM=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m # # Multimedia Capabilities Port drivers @@ -2690,8 +2698,22 @@ CONFIG_USB_LD=m # CONFIG_MMC=m # CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD Card Drivers +# CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=m + +# +# MMC/SD Host Controller Drivers +# +CONFIG_MMC_SDHCI=m +CONFIG_MMC_RICOH_MMC=m CONFIG_MMC_WBSD=m +CONFIG_MMC_TIFM_SD=m # # InfiniBand support @@ -3004,7 +3026,13 @@ CONFIG_SECURITY_APPARMOR=m # Cryptographic options # CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ABLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_MANAGER=m CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y @@ -3013,9 +3041,18 @@ CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_WP512=m CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_CRYPTD=m CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_X86_64=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_AES_X86_64=m @@ -3028,6 +3065,7 @@ CONFIG_CRYPTO_ANUBIS=m CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_TEST=m # diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64.config index 51b18df..ec9a18c 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.16.46 -# Tue Jul 3 18:30:50 2007 +# Linux kernel version: 2.6.16.60 +# Wed May 21 20:29:32 2008 # CONFIG_X86_64=y CONFIG_64BIT=y @@ -32,15 +32,15 @@ CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_SUSE_KERNEL=y CONFIG_SLE_VERSION=10 -CONFIG_SLE_SP=1 +CONFIG_SLE_SP=2 CONFIG_SLE_SP_SUBLEVEL=0 CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASK_DELAY_ACCT=y CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_SYSCTL=y CONFIG_AUDIT=y @@ -180,6 +180,7 @@ CONFIG_ACPI_BUTTON=m CONFIG_ACPI_VIDEO=m # CONFIG_ACPI_HOTKEY is not set CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=m CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_THERMAL=m CONFIG_ACPI_ASUS=m @@ -239,6 +240,7 @@ CONFIG_PCI_MMCONFIG=y CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y CONFIG_PCI_MSI=y # CONFIG_PCI_LEGACY_PROC is not set # CONFIG_PCI_DEBUG is not set @@ -1077,6 +1079,7 @@ CONFIG_SCSI_FC_ATTRS=m # CONFIG_SCSI_ISCSI_ATTRS is not set CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m +# CONFIG_SCSI_SAS_ATA is not set # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_ISCSI_TARGET=m @@ -1230,11 +1233,8 @@ CONFIG_DM_MULTIPATH=m CONFIG_DM_MULTIPATH_EMC=m CONFIG_DM_MULTIPATH_HP_SW=m CONFIG_DM_MULTIPATH_RDAC=m +CONFIG_DM_MULTIPATH_ALUA=m CONFIG_DM_NL_EVT=y - -# -# Fusion MPT device support -# CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m @@ -1243,6 +1243,7 @@ CONFIG_FUSION_MAX_SGE=128 CONFIG_FUSION_MAX_FC_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set # # IEEE 1394 (FireWire) support @@ -1391,6 +1392,7 @@ CONFIG_DL2K=m CONFIG_E1000=m CONFIG_E1000_NAPI=y # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_IGB=m CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m @@ -1404,17 +1406,22 @@ CONFIG_SK98LIN=m CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m CONFIG_BNX2=m +CONFIG_BNX2X=m CONFIG_QLA3XXX=m # # Ethernet (10000 Mbit) # CONFIG_CHELSIO_T1=m +# CONFIG_CHELSIO_T3 is not set +CONFIG_IXGBE=m +# CONFIG_IXGBE_NAPI is not set CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y CONFIG_NETXEN_NIC=m +CONFIG_MYRI10GE=m # # Token Ring devices @@ -1522,7 +1529,6 @@ CONFIG_NET_FC=y CONFIG_SHAPER=m CONFIG_NETCONSOLE=m CONFIG_NETPOLL=y -CONFIG_NETPOLL_RX=y CONFIG_NETPOLL_TRAP=y CONFIG_NET_POLL_CONTROLLER=y @@ -2032,6 +2038,8 @@ CONFIG_SENSORS_HDAPS=m # Misc devices # CONFIG_IBM_ASM=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m # # Multimedia Capabilities Port drivers @@ -2678,8 +2686,22 @@ CONFIG_USB_LD=m # CONFIG_MMC=m # CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD Card Drivers +# CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=m + +# +# MMC/SD Host Controller Drivers +# +CONFIG_MMC_SDHCI=m +CONFIG_MMC_RICOH_MMC=m CONFIG_MMC_WBSD=m +CONFIG_MMC_TIFM_SD=m # # InfiniBand support @@ -2992,7 +3014,13 @@ CONFIG_SECURITY_APPARMOR=m # Cryptographic options # CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ABLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_MANAGER=m CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y @@ -3001,9 +3029,18 @@ CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_WP512=m CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_CRYPTD=m CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_X86_64=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_AES_X86_64=m @@ -3016,6 +3053,7 @@ CONFIG_CRYPTO_ANUBIS=m CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_TEST=m # diff --git a/lustre/kernel_patches/targets/2.6-sles10.target.in b/lustre/kernel_patches/targets/2.6-sles10.target.in index 3a71d94..cf68153 100644 --- a/lustre/kernel_patches/targets/2.6-sles10.target.in +++ b/lustre/kernel_patches/targets/2.6-sles10.target.in @@ -1,5 +1,5 @@ lnxmaj="2.6.16" -lnxrel="54-0.2.5" +lnxrel="60-0.23" # this is the delimeter that goes between $lnxmaj and $lnxrel # defaults to "-" @@ -19,7 +19,7 @@ LINUX26=1 # No /boot/Kerntypes* in SLES10 SUSEBUILD=0 -OFED_VERSION=1.3 +OFED_VERSION=1.3.1 BASE_ARCHS="i686 ppc x86_64 ia64 ppc64" BIGMEM_ARCHS="" diff --git a/lustre/kernel_patches/which_patch b/lustre/kernel_patches/which_patch index eb90349..ab7948c 100644 --- a/lustre/kernel_patches/which_patch +++ b/lustre/kernel_patches/which_patch @@ -4,7 +4,7 @@ SUPPORTED KERNELS: 2.6-suse SLES9 before SP1 already in SLES9 SP1 kernel 2.6-suse-newer SLES9: 2.6.5-7.311 extra patches for SLES9 after SP1 2.6-rhel4 RHEL4: 2.6.9-67.0.20.EL -2.6-sles10 SLES10: 2.6.16.54-0.2.5 +2.6-sles10 SLES10: 2.6.16.60-0.23 2.6-rhel5 RHEL5: 2.6.18-92.1.6.el5 2.6.18-vanilla kernel.org: 2.6.18.8 2.6.22-vanilla kernel.org: 2.6.22.14 diff --git a/lustre/llite/file.c b/lustre/llite/file.c index c65d942..8f90640 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -640,21 +640,6 @@ int ll_lsm_getattr(struct obd_export *exp, struct lov_stripe_md *lsm, RETURN(0); } -static inline void ll_remove_suid(struct inode *inode) -{ - unsigned int mode; - - /* set S_IGID if S_IXGRP is set, and always set S_ISUID */ - mode = (inode->i_mode & S_IXGRP)*(S_ISGID/S_IXGRP) | S_ISUID; - - /* was any of the uid bits set? */ - mode &= inode->i_mode; - if (mode && !capable(CAP_FSETID)) { - inode->i_mode &= ~mode; - // XXX careful here - we cannot change the size - } -} - static int ll_lock_to_stripe_offset(struct inode *inode, struct ldlm_lock *lock) { struct ll_inode_info *lli = ll_i2info(inode); diff --git a/lustre/llite/rw.c b/lustre/llite/rw.c index 9964894..2db576b 100644 --- a/lustre/llite/rw.c +++ b/lustre/llite/rw.c @@ -2131,7 +2131,7 @@ ssize_t ll_file_lockless_io(struct file *file, const struct iovec *iov, rc = generic_write_checks(file, ppos, &count, 0); if (rc) GOTO(out, rc); - rc = remove_suid(file->f_dentry); + rc = ll_remove_suid(file->f_dentry, file->f_vfsmnt); if (rc) GOTO(out, rc); } diff --git a/lustre/lvfs/lvfs_linux.c b/lustre/lvfs/lvfs_linux.c index e39b8a1..2b3de8f 100644 --- a/lustre/lvfs/lvfs_linux.c +++ b/lustre/lvfs/lvfs_linux.c @@ -282,7 +282,8 @@ out_up: EXPORT_SYMBOL(simple_mknod); /* utility to make a directory */ -struct dentry *simple_mkdir(struct dentry *dir, char *name, int mode, int fix) +struct dentry *simple_mkdir(struct dentry *dir, struct vfsmount *mnt, + char *name, int mode, int fix) { struct dentry *dchild; int err = 0; @@ -315,7 +316,7 @@ struct dentry *simple_mkdir(struct dentry *dir, char *name, int mode, int fix) GOTO(out_up, dchild); } - err = vfs_mkdir(dir->d_inode, dchild, mode); + err = ll_vfs_mkdir(dir->d_inode, dchild, mnt, mode); if (err) GOTO(out_err, err); @@ -330,7 +331,8 @@ out_up: EXPORT_SYMBOL(simple_mkdir); /* utility to rename a file */ -int lustre_rename(struct dentry *dir, char *oldname, char *newname) +int lustre_rename(struct dentry *dir, struct vfsmount *mnt, + char *oldname, char *newname) { struct dentry *dchild_old, *dchild_new; int err = 0; @@ -351,7 +353,8 @@ int lustre_rename(struct dentry *dir, char *oldname, char *newname) if (IS_ERR(dchild_new)) GOTO(put_old, err = PTR_ERR(dchild_new)); - err = vfs_rename(dir->d_inode, dchild_old, dir->d_inode, dchild_new); + err = ll_vfs_rename(dir->d_inode, dchild_old, mnt, + dir->d_inode, dchild_new, mnt); dput(dchild_new); put_old: diff --git a/lustre/lvfs/quotafmt_test.c b/lustre/lvfs/quotafmt_test.c index 6f31e04..438872e 100644 --- a/lustre/lvfs/quotafmt_test.c +++ b/lustre/lvfs/quotafmt_test.c @@ -84,7 +84,8 @@ static int quotfmt_initialize(struct lustre_quota_info *lqi, LOCK_INODE_MUTEX(parent_inode); de = lookup_one_len(name, tgt->obd_lvfs_ctxt.pwd, namelen); if (!IS_ERR(de) && de->d_inode) - vfs_unlink(parent_inode, de); + ll_vfs_unlink(parent_inode, de, + tgt->obd_lvfs_ctxt.pwdmnt); if (!IS_ERR(de)) dput(de); UNLOCK_INODE_MUTEX(parent_inode); @@ -145,7 +146,7 @@ static int quotfmt_finalize(struct lustre_quota_info *lqi, goto dput; } - rc = vfs_unlink(parent_inode, de); + rc = ll_vfs_unlink(parent_inode, de, tgt->obd_lvfs_ctxt.pwdmnt); if (rc) CERROR("error unlink quotafile %s (rc = %d)\n", name, rc); diff --git a/lustre/mds/mds_fs.c b/lustre/mds/mds_fs.c index 4b76093..d0689d6 100644 --- a/lustre/mds/mds_fs.c +++ b/lustre/mds/mds_fs.c @@ -532,7 +532,7 @@ int mds_fs_setup(struct obd_device *obd, struct vfsmount *mnt) /* setup the directory tree */ push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); - dentry = simple_mkdir(current->fs->pwd, "ROOT", 0755, 0); + dentry = simple_mkdir(current->fs->pwd, mnt, "ROOT", 0755, 0); if (IS_ERR(dentry)) { rc = PTR_ERR(dentry); CERROR("cannot create ROOT directory: rc = %d\n", rc); @@ -560,7 +560,7 @@ int mds_fs_setup(struct obd_device *obd, struct vfsmount *mnt) GOTO(err_fid, rc); } - dentry = simple_mkdir(current->fs->pwd, "PENDING", 0777, 1); + dentry = simple_mkdir(current->fs->pwd, mnt, "PENDING", 0777, 1); if (IS_ERR(dentry)) { rc = PTR_ERR(dentry); CERROR("cannot create PENDING directory: rc = %d\n", rc); @@ -569,7 +569,7 @@ int mds_fs_setup(struct obd_device *obd, struct vfsmount *mnt) mds->mds_pending_dir = dentry; /* COMPAT_146 */ - dentry = simple_mkdir(current->fs->pwd, MDT_LOGS_DIR, 0777, 1); + dentry = simple_mkdir(current->fs->pwd, mnt, MDT_LOGS_DIR, 0777, 1); if (IS_ERR(dentry)) { rc = PTR_ERR(dentry); CERROR("cannot create %s directory: rc = %d\n", @@ -579,7 +579,7 @@ int mds_fs_setup(struct obd_device *obd, struct vfsmount *mnt) mds->mds_logs_dir = dentry; /* end COMPAT_146 */ - dentry = simple_mkdir(current->fs->pwd, "OBJECTS", 0777, 1); + dentry = simple_mkdir(current->fs->pwd, mnt, "OBJECTS", 0777, 1); if (IS_ERR(dentry)) { rc = PTR_ERR(dentry); CERROR("cannot create OBJECTS directory: rc = %d\n", rc); @@ -769,8 +769,9 @@ int mds_obd_create(struct obd_export *exp, struct obdo *oa, GOTO(out_dput, rc = PTR_ERR(handle)); lock_kernel(); - rc = vfs_rename(mds->mds_objects_dir->d_inode, filp->f_dentry, - mds->mds_objects_dir->d_inode, new_child); + rc = ll_vfs_rename(mds->mds_objects_dir->d_inode, filp->f_dentry, + filp->f_vfsmnt, mds->mds_objects_dir->d_inode, + new_child, filp->f_vfsmnt); unlock_kernel(); if (rc) CERROR("error renaming new object "LPU64":%u: rc %d\n", @@ -845,7 +846,7 @@ int mds_obd_destroy(struct obd_export *exp, struct obdo *oa, vfs_unlink() context. bug 10409 */ inode = de->d_inode; atomic_inc(&inode->i_count); - rc = vfs_unlink(mds->mds_objects_dir->d_inode, de); + rc = ll_vfs_unlink(mds->mds_objects_dir->d_inode, de, mds->mds_vfsmnt); if (rc) CERROR("error destroying object "LPU64":%u: rc %d\n", oa->o_id, oa->o_generation, rc); diff --git a/lustre/mds/mds_join.c b/lustre/mds/mds_join.c index 26b9862..68329cd 100644 --- a/lustre/mds/mds_join.c +++ b/lustre/mds/mds_join.c @@ -321,7 +321,7 @@ static int mds_join_unlink_tail_inode(struct mds_update_record *rec, le32_to_cpu(tail_lmm->lmm_magic) == LOV_MAGIC); LASSERT(de_tailparent); - rc = vfs_unlink(de_tailparent->d_inode, de_tail); + rc = ll_vfs_unlink(de_tailparent->d_inode, de_tail, mds->mds_vfsmnt); if (rc == 0) { CDEBUG(D_INODE, "delete the tail inode %lu/%u \n", diff --git a/lustre/mds/mds_open.c b/lustre/mds/mds_open.c index 4cebcfd..041b991 100644 --- a/lustre/mds/mds_open.c +++ b/lustre/mds/mds_open.c @@ -1251,7 +1251,8 @@ found_child: ldlm_lock_decref(child_lockh, child_mode); case 2: if (rc && created) { - int err = vfs_unlink(dparent->d_inode, dchild); + int err = ll_vfs_unlink(dparent->d_inode, dchild, + mds->mds_vfsmnt); if (err) { CERROR("unlink(%.*s) in error path: %d\n", dchild->d_name.len, dchild->d_name.name, @@ -1360,7 +1361,8 @@ int mds_mfd_close(struct ptlrpc_request *req, int offset, cleanup_phase = 2; /* dput(pending_child) when finished */ if (S_ISDIR(pending_child->d_inode->i_mode)) { - rc = vfs_rmdir(pending_dir, pending_child); + rc = ll_vfs_rmdir(pending_dir, pending_child, + mds->mds_vfsmnt); if (rc) CERROR("error unlinking orphan dir %s: rc %d\n", fidname,rc); @@ -1387,7 +1389,7 @@ int mds_mfd_close(struct ptlrpc_request *req, int offset, dp.ldp_inum = 0; dp.ldp_ptr = req; pending_child->d_fsdata = (void *) &dp; - rc = vfs_unlink(pending_dir, pending_child); + rc = ll_vfs_unlink(pending_dir, pending_child, mds->mds_vfsmnt); if (rc) CERROR("error unlinking orphan %s: rc %d\n",fidname,rc); diff --git a/lustre/mds/mds_reint.c b/lustre/mds/mds_reint.c index 04e5b23..5249b8c 100644 --- a/lustre/mds/mds_reint.c +++ b/lustre/mds/mds_reint.c @@ -914,7 +914,7 @@ static int mds_reint_create(struct mds_update_record *rec, int offset, handle = fsfilt_start(obd, dir, FSFILT_OP_MKDIR, NULL); if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - rc = vfs_mkdir(dir, dchild, rec->ur_mode); + rc = ll_vfs_mkdir(dir, dchild, mds->mds_vfsmnt, rec->ur_mode); mds_counter_incr(req->rq_export, LPROC_MDS_MKDIR); EXIT; break; @@ -926,7 +926,8 @@ static int mds_reint_create(struct mds_update_record *rec, int offset, if (rec->ur_tgt == NULL) /* no target supplied */ rc = -EINVAL; /* -EPROTO? */ else - rc = ll_vfs_symlink(dir, dchild, rec->ur_tgt, S_IALLUGO); + rc = ll_vfs_symlink(dir, dchild, mds->mds_vfsmnt, + rec->ur_tgt, S_IALLUGO); mds_counter_incr(req->rq_export, LPROC_MDS_MKNOD); EXIT; break; @@ -939,7 +940,8 @@ static int mds_reint_create(struct mds_update_record *rec, int offset, handle = fsfilt_start(obd, dir, FSFILT_OP_MKNOD, NULL); if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - rc = vfs_mknod(dir, dchild, rec->ur_mode, rdev); + rc = ll_vfs_mknod(dir, dchild, mds->mds_vfsmnt, rec->ur_mode, + rdev); mds_counter_incr(req->rq_export, LPROC_MDS_MKNOD); EXIT; break; @@ -1026,12 +1028,12 @@ cleanup: */ switch (type) { case S_IFDIR: - err = vfs_rmdir(dir, dchild); + err = ll_vfs_rmdir(dir, dchild, mds->mds_vfsmnt); if (err) CERROR("rmdir in error path: %d\n", err); break; default: - err = vfs_unlink(dir, dchild); + err = ll_vfs_unlink(dir, dchild, mds->mds_vfsmnt); if (err) CERROR("unlink in error path: %d\n", err); break; @@ -1562,7 +1564,8 @@ static int mds_orphan_add_link(struct mds_update_record *rec, * for linking and return real mode back then -bzzz */ mode = inode->i_mode; inode->i_mode = S_IFREG; - rc = vfs_link(dentry, pending_dir, pending_child); + rc = ll_vfs_link(dentry, mds->mds_vfsmnt, pending_dir, pending_child, + mds->mds_vfsmnt); if (rc) CERROR("error linking orphan %s to PENDING: rc = %d\n", rec->ur_name, rc); @@ -1737,7 +1740,7 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, NULL); if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - rc = vfs_rmdir(dparent->d_inode, dchild); + rc = ll_vfs_rmdir(dparent->d_inode, dchild, mds->mds_vfsmnt); mds_counter_incr(req->rq_export, LPROC_MDS_RMDIR); break; case S_IFREG: { @@ -1748,7 +1751,7 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, le32_to_cpu(lmm->lmm_stripe_count)); if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - rc = vfs_unlink(dparent->d_inode, dchild); + rc = ll_vfs_unlink(dparent->d_inode, dchild, mds->mds_vfsmnt); mds_counter_incr(req->rq_export, LPROC_MDS_UNLINK); break; } @@ -1761,7 +1764,7 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, NULL); if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - rc = vfs_unlink(dparent->d_inode, dchild); + rc = ll_vfs_unlink(dparent->d_inode, dchild, mds->mds_vfsmnt); mds_counter_incr(req->rq_export, LPROC_MDS_UNLINK); break; default: @@ -1958,7 +1961,8 @@ static int mds_reint_link(struct mds_update_record *rec, int offset, if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - rc = vfs_link(de_src, de_tgt_dir->d_inode, dchild); + rc = ll_vfs_link(de_src, mds->mds_vfsmnt, de_tgt_dir->d_inode, dchild, + mds->mds_vfsmnt); if (rc && rc != -EPERM && rc != -EACCES) CERROR("vfs_link error %d\n", rc); cleanup: @@ -2333,7 +2337,8 @@ no_unlink: de_old->d_fsdata = req; de_new->d_fsdata = req; - rc = vfs_rename(de_srcdir->d_inode, de_old, de_tgtdir->d_inode, de_new); + rc = ll_vfs_rename(de_srcdir->d_inode, de_old, mds->mds_vfsmnt, + de_tgtdir->d_inode, de_new, mds->mds_vfsmnt); unlock_kernel(); if (rc == 0 && new_inode != NULL && new_inode->i_nlink == 0) { diff --git a/lustre/mds/mds_unlink_open.c b/lustre/mds/mds_unlink_open.c index 76c497d..2725ef6 100644 --- a/lustre/mds/mds_unlink_open.c +++ b/lustre/mds/mds_unlink_open.c @@ -128,7 +128,7 @@ static int mds_unlink_orphan(struct obd_device *obd, struct dentry *dchild, * especially not mds_get_md (may get a default LOV EA, bug 4554) */ mode = inode->i_mode; if (S_ISDIR(mode)) { - rc = vfs_rmdir(pending_dir, dchild); + rc = ll_vfs_rmdir(pending_dir, dchild, mds->mds_vfsmnt); if (rc) CERROR("error %d unlinking dir %*s from PENDING\n", rc, dchild->d_name.len, dchild->d_name.name); @@ -153,7 +153,7 @@ static int mds_unlink_orphan(struct obd_device *obd, struct dentry *dchild, GOTO(out_free_lmm, rc); } - rc = vfs_unlink(pending_dir, dchild); + rc = ll_vfs_unlink(pending_dir, dchild, mds->mds_vfsmnt); if (rc) { CERROR("error %d unlinking orphan %.*s from PENDING\n", rc, dchild->d_name.len, dchild->d_name.name); diff --git a/lustre/mgc/mgc_request.c b/lustre/mgc/mgc_request.c index b836e2a..f245250 100644 --- a/lustre/mgc/mgc_request.c +++ b/lustre/mgc/mgc_request.c @@ -1065,7 +1065,8 @@ out_closel: struct client_obd *cli = &obd->u.cli; LASSERT(cli); LASSERT(cli->cl_mgc_configs_dir); - rc = lustre_rename(cli->cl_mgc_configs_dir, temp_log, logname); + rc = lustre_rename(cli->cl_mgc_configs_dir, cli->cl_mgc_vfsmnt, + temp_log, logname); } CDEBUG(D_MGC, "Copied remote log %s (%d)\n", logname, rc); out: diff --git a/lustre/mgs/mgs_fs.c b/lustre/mgs/mgs_fs.c index 3e58281..735a3d5 100644 --- a/lustre/mgs/mgs_fs.c +++ b/lustre/mgs/mgs_fs.c @@ -195,7 +195,7 @@ int mgs_fs_setup(struct obd_device *obd, struct vfsmount *mnt) push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); /* Setup the configs dir */ - dentry = simple_mkdir(current->fs->pwd, MOUNT_CONFIGS_DIR, 0777, 1); + dentry = simple_mkdir(current->fs->pwd, mnt, MOUNT_CONFIGS_DIR, 0777, 1); if (IS_ERR(dentry)) { rc = PTR_ERR(dentry); CERROR("cannot create %s directory: rc = %d\n", diff --git a/lustre/obdclass/llog_lvfs.c b/lustre/obdclass/llog_lvfs.c index 2f0e528..5876981 100644 --- a/lustre/obdclass/llog_lvfs.c +++ b/lustre/obdclass/llog_lvfs.c @@ -725,6 +725,7 @@ static int llog_lvfs_destroy(struct llog_handle *handle) if (strcmp(fdentry->d_parent->d_name.name, dir) == 0) { struct inode *inode = fdentry->d_parent->d_inode; struct lvfs_run_ctxt saved; + struct vfsmount *mnt = mntget(handle->lgh_file->f_vfsmnt); push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); dget(fdentry); @@ -732,9 +733,10 @@ static int llog_lvfs_destroy(struct llog_handle *handle) if (rc == 0) { LOCK_INODE_MUTEX(inode); - rc = vfs_unlink(inode, fdentry); + rc = ll_vfs_unlink(inode, fdentry, mnt); UNLOCK_INODE_MUTEX(inode); } + mntput(mnt); dput(fdentry); pop_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); diff --git a/lustre/obdfilter/filter.c b/lustre/obdfilter/filter.c index 2f39aa0..9492d06 100644 --- a/lustre/obdfilter/filter.c +++ b/lustre/obdfilter/filter.c @@ -937,7 +937,8 @@ static int filter_prep_groups(struct obd_device *obd) int i, rc = 0, cleanup_phase = 0; ENTRY; - O_dentry = simple_mkdir(current->fs->pwd, "O", 0700, 1); + O_dentry = simple_mkdir(current->fs->pwd, filter->fo_vfsmnt, + "O", 0700, 1); CDEBUG(D_INODE, "got/created O: %p\n", O_dentry); if (IS_ERR(O_dentry)) { rc = PTR_ERR(O_dentry); @@ -964,7 +965,8 @@ static int filter_prep_groups(struct obd_device *obd) loff_t off = 0; sprintf(name, "%d", i); - dentry = simple_mkdir(O_dentry, name, 0700, 1); + dentry = simple_mkdir(O_dentry, filter->fo_vfsmnt, + name, 0700, 1); CDEBUG(D_INODE, "got/created O/%s: %p\n", name, dentry); if (IS_ERR(dentry)) { rc = PTR_ERR(dentry); @@ -1015,7 +1017,8 @@ static int filter_prep_groups(struct obd_device *obd) char dir[20]; snprintf(dir, sizeof(dir), "d%u", i); - dentry = simple_mkdir(O_dentry, dir, 0700, 1); + dentry = simple_mkdir(O_dentry, filter->fo_vfsmnt, + dir, 0700, 1); CDEBUG(D_INODE, "got/created O/0/%s: %p\n", dir,dentry); if (IS_ERR(dentry)) { rc = PTR_ERR(dentry); @@ -1308,7 +1311,8 @@ static int filter_prepare_destroy(struct obd_device *obd, obd_id objid) * i_sem before starting a handle, while filter_destroy() + vfs_unlink do the * reverse. Caller must take i_sem before starting the transaction and we * drop it here before the inode is removed from the dentry. bug 4180/6984 */ -int filter_vfs_unlink(struct inode *dir, struct dentry *dentry) +int filter_vfs_unlink(struct inode *dir, struct dentry *dentry, + struct vfsmount *mnt) { int rc; ENTRY; @@ -1342,7 +1346,7 @@ int filter_vfs_unlink(struct inode *dir, struct dentry *dentry) DQUOT_INIT(dir); #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) - rc = security_inode_unlink(dir, dentry); + rc = ll_security_inode_unlink(dir, dentry, mnt); if (rc) GOTO(out, rc); #endif @@ -1365,6 +1369,7 @@ static int filter_destroy_internal(struct obd_device *obd, obd_id objid, struct dentry *dchild) { struct inode *inode = dchild->d_inode; + struct filter_obd *filter = &obd->u.filter; int rc; if (inode->i_nlink != 1 || atomic_read(&inode->i_count) != 1) { @@ -1374,7 +1379,7 @@ static int filter_destroy_internal(struct obd_device *obd, obd_id objid, atomic_read(&inode->i_count)); } - rc = filter_vfs_unlink(dparent->d_inode, dchild); + rc = filter_vfs_unlink(dparent->d_inode, dchild, filter->fo_vfsmnt); if (rc) CERROR("error unlinking objid %.*s: rc %d\n", dchild->d_name.len, dchild->d_name.name, rc); -- 1.8.3.1