From 11e53628a1fcbef8638801b46dd278c178c78255 Mon Sep 17 00:00:00 2001 From: braam Date: Mon, 30 Jun 2003 20:52:50 +0000 Subject: [PATCH] - move things forward to 2.5.73, include lkcd patches --- .../kernel_configs/kgdb-vmware-2.5.73 | 908 +++++++++++++++++ lustre/kernel_patches/patches/iopen-2.5.73.patch | 403 ++++++++ .../patches/kgdb-ga-docco-fixes-2.5.73.patch | 347 +++++++ ...5.69.patch => lkcd-kernel-changes-2.5.73.patch} | 224 +++-- .../patches/vfs_intent_2.5.72_rev1.patch.keep | 1028 ++++++++++++++++++++ lustre/kernel_patches/pc/iopen-2.5.73.pc | 8 + .../pc/kgdb-ga-docco-fixes-2.5.73.pc | 1 + lustre/kernel_patches/pc/lkcd-cvs-2.5.69.pc | 19 + .../pc/lkcd-kernel-changes-2.5.73.pc | 25 + lustre/kernel_patches/series/kgdb-2.5.73 | 14 + .../txt/lkcd-kernel-changes-2.5.73.txt | 4 + lustre/llite/llite_lib.c | 3 +- 12 files changed, 2887 insertions(+), 97 deletions(-) create mode 100644 lustre/kernel_patches/kernel_configs/kgdb-vmware-2.5.73 create mode 100644 lustre/kernel_patches/patches/iopen-2.5.73.patch create mode 100644 lustre/kernel_patches/patches/kgdb-ga-docco-fixes-2.5.73.patch rename lustre/kernel_patches/patches/{lkcd-kernel-changes-2.5.69.patch => lkcd-kernel-changes-2.5.73.patch} (61%) create mode 100644 lustre/kernel_patches/patches/vfs_intent_2.5.72_rev1.patch.keep create mode 100644 lustre/kernel_patches/pc/iopen-2.5.73.pc create mode 100644 lustre/kernel_patches/pc/kgdb-ga-docco-fixes-2.5.73.pc create mode 100644 lustre/kernel_patches/pc/lkcd-cvs-2.5.69.pc create mode 100644 lustre/kernel_patches/pc/lkcd-kernel-changes-2.5.73.pc create mode 100644 lustre/kernel_patches/series/kgdb-2.5.73 create mode 100644 lustre/kernel_patches/txt/lkcd-kernel-changes-2.5.73.txt diff --git a/lustre/kernel_patches/kernel_configs/kgdb-vmware-2.5.73 b/lustre/kernel_patches/kernel_configs/kgdb-vmware-2.5.73 new file mode 100644 index 0000000..4033739 --- /dev/null +++ b/lustre/kernel_patches/kernel_configs/kgdb-vmware-2.5.73 @@ -0,0 +1,908 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_UID16=y +CONFIG_GENERIC_ISA_DMA=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_LOG_BUF_SHIFT=15 +# CONFIG_EMBEDDED is not set +CONFIG_FUTEX=y +CONFIG_EPOLL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# Processor type and features +# +CONFIG_X86_PC=y +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_NUMAQ is not set +# CONFIG_X86_SUMMIT is not set +# CONFIG_X86_BIGSMP is not set +# CONFIG_X86_VISWS is not set +# CONFIG_X86_GENERICARCH is not set +# CONFIG_X86_ES7000 is not set +# CONFIG_M386 is not set +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMII is not set +CONFIG_MPENTIUMIII=y +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MELAN is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_X86_GENERIC is not set +CONFIG_X86_CMPXCHG=y +CONFIG_X86_XADD=y +CONFIG_X86_L1_CACHE_SHIFT=5 +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_SMP=y +CONFIG_NR_CPUS=16 +# CONFIG_PREEMPT is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_TSC=y +CONFIG_X86_MCE=y +# CONFIG_X86_MCE_NONFATAL is not set +CONFIG_X86_MCE_P4THERMAL=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +CONFIG_EDD=y +CONFIG_NOHIGHMEM=y +# CONFIG_HIGHMEM4G is not set +# CONFIG_HIGHMEM64G is not set +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +CONFIG_HAVE_DEC_LOCK=y + +# +# Power management options (ACPI, APM) +# +# CONFIG_PM is not set + +# +# ACPI Support +# +# CONFIG_ACPI is not set + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set + +# +# Bus options (PCI, PCMCIA, EISA, MCA, ISA) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_NAMES=y +CONFIG_ISA=y +# CONFIG_EISA is not set +# CONFIG_MCA is not set +# CONFIG_SCx200 is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_YENTA is not set +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +CONFIG_PCMCIA_PROBE=y + +# +# PCI Hotplug Support +# +# CONFIG_HOTPLUG_PCI is not set + +# +# Executable file formats +# +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_MISC=y + +# +# Generic Driver Options +# +# CONFIG_FW_LOADER is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play support +# +CONFIG_PNP=y +CONFIG_PNP_NAMES=y +# CONFIG_PNP_DEBUG is not set + +# +# Protocols +# +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y +CONFIG_LBD=y + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +CONFIG_IDEDISK_MULTI_MODE=y +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_TASKFILE_IO=y + +# +# IDE chipset support/bugfixes +# +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_IDEPNP is not set +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDE_TCQ is not set +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_PIIX=y +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +CONFIG_BLK_DEV_RZ1000=y +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +CONFIG_BLK_DEV_IDE_MODES=y + +# +# SCSI device support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_REPORT_LUNS=y +CONFIG_SCSI_CONSTANTS=y +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_CPQFCTS is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_NCR53C406A is not set +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SEAGATE is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_ULTRASTOR is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +# CONFIG_PCMCIA_AHA152X is not set +# CONFIG_PCMCIA_FDOMAIN is not set +# CONFIG_PCMCIA_NINJA_SCSI is not set +# CONFIG_PCMCIA_QLOGIC is not set + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# Networking support +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_IPV6 is not set +# CONFIG_XFRM_USER is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_MII is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set + +# +# Tulip family network device support +# +# CONFIG_NET_TULIP is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=y +# CONFIG_AMD8111_ETH is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_B44 is not set +# CONFIG_CS89x0 is not set +# CONFIG_DGRS is not set +CONFIG_EEPRO100=y +# CONFIG_EEPRO100_PIO is not set +# CONFIG_E100 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set + +# +# Ethernet (10000 Mbit) +# +# CONFIG_IXGB is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices (depends on LLC=y) +# +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_AXNET is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Telephony Support +# +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input I/O drivers +# +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +# CONFIG_SERIO is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MOUSE=y +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# I2C Hardware Sensors Mainboard support +# + +# +# I2C Hardware Sensors Chip support +# +# CONFIG_I2C_SENSOR is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +CONFIG_AGP=y +# CONFIG_AGP_ALI is not set +# CONFIG_AGP_AMD is not set +# CONFIG_AGP_AMD_8151 is not set +# CONFIG_AGP_INTEL is not set +# CONFIG_AGP_NVIDIA is not set +# CONFIG_AGP_SIS is not set +# CONFIG_AGP_SWORKS is not set +# CONFIG_AGP_VIA is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set +# CONFIG_MWAVE is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_HANGCHECK_TIMER is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# Digital Video Broadcasting Devices +# +# CONFIG_DVB is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_DEVPTS_FS_XATTR is not set +CONFIG_TMPFS=y +CONFIG_RAMFS=y + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFSD is not set +CONFIG_LOCKD=y +# CONFIG_EXPORTFS is not set +CONFIG_SUNRPC=y +# CONFIG_SUNRPC_GSS is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +CONFIG_LUSTRE_FS=y +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Graphics support +# +# CONFIG_FB is not set +CONFIG_VIDEO_SELECT=y + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_MDA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Profiling support +# +CONFIG_PROFILING=y +CONFIG_OPROFILE=y + +# +# Kernel hacking +# +# CONFIG_CRASH_DUMP is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_IOVIRT is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_KALLSYMS=y +CONFIG_DEBUG_SPINLOCK_SLEEP=y +CONFIG_KGDB=y +# CONFIG_KGDB_9600BAUD is not set +# CONFIG_KGDB_19200BAUD is not set +# CONFIG_KGDB_38400BAUD is not set +# CONFIG_KGDB_57600BAUD is not set +CONFIG_KGDB_115200BAUD=y +CONFIG_KGDB_PORT=0x3f8 +CONFIG_KGDB_IRQ=4 +CONFIG_DEBUG_INFO=y +# CONFIG_KGDB_MORE is not set +CONFIG_NO_KGDB_CPUS=16 +# CONFIG_KGDB_TS is not set +# CONFIG_STACK_OVERFLOW_TEST is not set +CONFIG_KGDB_CONSOLE=y +CONFIG_KGDB_SYSRQ=y +CONFIG_FRAME_POINTER=y +CONFIG_X86_EXTRA_IRQS=y +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y + +# +# Security options +# +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_X86_SMP=y +CONFIG_X86_HT=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_X86_TRAMPOLINE=y diff --git a/lustre/kernel_patches/patches/iopen-2.5.73.patch b/lustre/kernel_patches/patches/iopen-2.5.73.patch new file mode 100644 index 0000000..ab3d35f --- /dev/null +++ b/lustre/kernel_patches/patches/iopen-2.5.73.patch @@ -0,0 +1,403 @@ + Documentation/filesystems/ext2.txt | 16 ++ + fs/ext3/Makefile | 2 + fs/ext3/inode.c | 3 + fs/ext3/iopen.c | 239 +++++++++++++++++++++++++++++++++++++ + fs/ext3/iopen.h | 15 ++ + fs/ext3/namei.c | 13 ++ + fs/ext3/super.c | 11 + + include/linux/ext3_fs.h | 2 + 8 files changed, 300 insertions(+), 1 deletion(-) + +--- linux-2.5.73/Documentation/filesystems/ext2.txt~iopen-2.5.73 2003-06-22 12:32:37.000000000 -0600 ++++ linux-2.5.73-braam/Documentation/filesystems/ext2.txt 2003-06-30 12:20:17.000000000 -0600 +@@ -35,6 +35,22 @@ resgid=n The group ID which may use th + + sb=n Use alternate superblock at this location. + ++iopen Makes an invisible pseudo-directory called ++ __iopen__ available in the root directory ++ of the filesystem. Allows open-by-inode- ++ number. i.e., inode 3145 can be accessed ++ via /mntpt/__iopen__/3145 ++ ++iopen_nopriv This option makes the iopen directory be ++ world-readable. This may be safer since it ++ allows daemons to run as an unprivileged user, ++ however it significantly changes the security ++ model of a Unix filesystem, since previously ++ all files under a mode 700 directory were not ++ generally avilable even if the ++ permissions on the file itself is ++ world-readable. ++ + grpquota,noquota,quota,usrquota Quota options are silently ignored by ext2. + + +--- linux-2.5.73/fs/ext3/Makefile~iopen-2.5.73 2003-06-22 12:32:32.000000000 -0600 ++++ linux-2.5.73-braam/fs/ext3/Makefile 2003-06-30 12:20:17.000000000 -0600 +@@ -5,7 +5,7 @@ + obj-$(CONFIG_EXT3_FS) += ext3.o + + ext3-objs := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \ +- ioctl.o namei.o super.o symlink.o hash.o ++ iopen.o ioctl.o namei.o super.o symlink.o hash.o + + ifeq ($(CONFIG_EXT3_FS_XATTR),y) + ext3-objs += xattr.o xattr_user.o xattr_trusted.o +--- linux-2.5.73/fs/ext3/inode.c~iopen-2.5.73 2003-06-30 12:19:21.000000000 -0600 ++++ linux-2.5.73-braam/fs/ext3/inode.c 2003-06-30 12:20:17.000000000 -0600 +@@ -37,6 +37,7 @@ + #include + #include + #include "xattr.h" ++#include "iopen.h" + #include "acl.h" + + /* +@@ -2376,6 +2377,8 @@ void ext3_read_inode(struct inode * inod + ei->i_acl = EXT3_ACL_NOT_CACHED; + ei->i_default_acl = EXT3_ACL_NOT_CACHED; + #endif ++ if (ext3_iopen_get_inode(inode)) ++ return; + if (ext3_get_inode_loc(inode, &iloc)) + goto bad_inode; + bh = iloc.bh; +--- /dev/null 2003-01-30 03:24:37.000000000 -0700 ++++ linux-2.5.73-braam/fs/ext3/iopen.c 2003-06-30 12:20:17.000000000 -0600 +@@ -0,0 +1,239 @@ ++ ++ ++/* ++ * linux/fs/ext3/iopen.c ++ * ++ * Special support for open by inode number ++ * ++ * Copyright (C) 2001 by Theodore Ts'o (tytso@alum.mit.edu). ++ * ++ * This file may be redistributed under the terms of the GNU General ++ * Public License. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include "iopen.h" ++ ++#ifndef assert ++#define assert(test) J_ASSERT(test) ++#endif ++ ++#define IOPEN_NAME_LEN 32 ++ ++/* ++ * This implements looking up an inode by number. ++ */ ++static struct dentry *iopen_lookup(struct inode * dir, struct dentry *dentry) ++{ ++ struct inode * inode; ++ unsigned long ino; ++ struct list_head *lp; ++ struct dentry *alternate; ++ char buf[IOPEN_NAME_LEN]; ++ ++ if (dentry->d_name.len >= IOPEN_NAME_LEN) ++ return ERR_PTR(-ENAMETOOLONG); ++ ++ memcpy(buf, dentry->d_name.name, dentry->d_name.len); ++ buf[dentry->d_name.len] = 0; ++ ++ if (strcmp(buf, ".") == 0) ++ ino = dir->i_ino; ++ else if (strcmp(buf, "..") == 0) ++ ino = EXT3_ROOT_INO; ++ else ++ ino = simple_strtoul(buf, 0, 0); ++ ++ if ((ino != EXT3_ROOT_INO && ++ //ino != EXT3_ACL_IDX_INO && ++ //ino != EXT3_ACL_DATA_INO && ++ ino < EXT3_FIRST_INO(dir->i_sb)) || ++ ino > le32_to_cpu(EXT3_SB(dir->i_sb)->s_es->s_inodes_count)) ++ return ERR_PTR(-ENOENT); ++ ++ inode = iget(dir->i_sb, ino); ++ if (!inode) ++ return ERR_PTR(-EACCES); ++ if (is_bad_inode(inode)) { ++ iput(inode); ++ return ERR_PTR(-ENOENT); ++ } ++ ++ /* preferrably return a connected dentry */ ++ spin_lock(&dcache_lock); ++ list_for_each(lp, &inode->i_dentry) { ++ alternate = list_entry(lp, struct dentry, d_alias); ++ assert(!(alternate->d_flags & DCACHE_DISCONNECTED)); ++ } ++ ++ if (!list_empty(&inode->i_dentry)) { ++ alternate = list_entry(inode->i_dentry.next, ++ struct dentry, d_alias); ++ dget_locked(alternate); ++ alternate->d_vfs_flags |= DCACHE_REFERENCED; ++ iput(inode); ++ spin_unlock(&dcache_lock); ++ return alternate; ++ } ++ dentry->d_flags |= DCACHE_DISCONNECTED; ++ spin_unlock(&dcache_lock); ++ ++ d_add(dentry, inode); ++ return NULL; ++} ++ ++#define do_switch(x,y) do { \ ++ __typeof__ (x) __tmp = x; \ ++ x = y; y = __tmp; } while (0) ++ ++static inline void switch_names(struct dentry * dentry, struct dentry * target) ++{ ++ const unsigned char *old_name, *new_name; ++ ++ memcpy(dentry->d_iname, target->d_iname, DNAME_INLINE_LEN); ++ old_name = target->d_name.name; ++ new_name = dentry->d_name.name; ++ if (old_name == target->d_iname) ++ old_name = dentry->d_iname; ++ if (new_name == dentry->d_iname) ++ new_name = target->d_iname; ++ target->d_name.name = new_name; ++ dentry->d_name.name = old_name; ++} ++ ++ ++struct dentry *iopen_connect_dentry(struct dentry *de, struct inode *inode) ++{ ++ struct dentry *tmp, *goal = NULL; ++ struct list_head *lp; ++ ++ /* preferrably return a connected dentry */ ++ spin_lock(&dcache_lock); ++ /* verify this dentry is really new */ ++ assert(!de->d_inode); ++ assert(list_empty(&de->d_subdirs)); ++ assert(list_empty(&de->d_alias)); ++ ++ ++ list_for_each(lp, &inode->i_dentry) { ++ tmp = list_entry(lp, struct dentry, d_alias); ++ if (tmp->d_flags & DCACHE_DISCONNECTED) { ++ assert(tmp->d_alias.next == &inode->i_dentry); ++ assert(tmp->d_alias.prev == &inode->i_dentry); ++ goal = tmp; ++ dget_locked(goal); ++ break; ++ } ++ } ++ ++ if (!goal) { ++ spin_unlock(&dcache_lock); ++ return NULL; ++ } ++ ++ /* Move the goal to the de hash queue */ ++ goal->d_flags &= ~DCACHE_DISCONNECTED; ++ hlist_add_before(&goal->d_hash, &de->d_hash); ++ hlist_del(&goal->d_hash); ++ ++ list_del(&goal->d_child); ++ list_del(&de->d_child); ++ ++ /* Switch the parents and the names.. */ ++ switch_names(goal, de); ++ do_switch(goal->d_parent, de->d_parent); ++ do_switch(goal->d_name.len, de->d_name.len); ++ do_switch(goal->d_name.hash, de->d_name.hash); ++ ++ /* And add them back to the (new) parent lists */ ++ list_add(&goal->d_child, &goal->d_parent->d_subdirs); ++ list_add(&de->d_child, &de->d_parent->d_subdirs); ++ ++ spin_unlock(&dcache_lock); ++ return goal; ++} ++ ++/* ++ * These are the special structures for the iopen pseudo directory. ++ */ ++ ++static struct inode_operations iopen_inode_operations = { ++ lookup: iopen_lookup, /* BKL held */ ++}; ++ ++static struct file_operations iopen_file_operations = { ++ read: generic_read_dir, ++}; ++ ++static int match_dentry(struct dentry *dentry, const char *name) ++{ ++ int len; ++ ++ len = strlen(name); ++ if (dentry->d_name.len != len) ++ return 0; ++ if (strncmp(dentry->d_name.name, name, len)) ++ return 0; ++ return 1; ++} ++ ++/* ++ * This function is spliced into ext3_lookup and returns 1 the file ++ * name is __iopen__ and dentry has been filled in appropriately. ++ */ ++int ext3_check_for_iopen(struct inode * dir, struct dentry *dentry) ++{ ++ struct inode * inode; ++ ++ if (dir->i_ino != EXT3_ROOT_INO || ++ !test_opt(dir->i_sb, IOPEN) || ++ !match_dentry(dentry, "__iopen__")) ++ return 0; ++ ++ inode = iget(dir->i_sb, EXT3_BAD_INO); ++ ++ if (!inode) ++ return 0; ++ d_add(dentry, inode); ++ return 1; ++} ++ ++/* ++ * This function is spliced into read_inode; it returns 1 if inode ++ * number is the one for /__iopen__, in which case the inode is filled ++ * in appropriately. Otherwise, this fuction returns 0. ++ */ ++int ext3_iopen_get_inode(struct inode * inode) ++{ ++ if (inode->i_ino != EXT3_BAD_INO) ++ return 0; ++ ++ inode->i_mode = S_IFDIR | S_IRUSR | S_IXUSR; ++ if (test_opt(inode->i_sb, IOPEN_NOPRIV)) ++ inode->i_mode |= 0777; ++ inode->i_uid = 0; ++ inode->i_gid = 0; ++ inode->i_nlink = 1; ++ inode->i_size = 4096; ++ inode->i_atime = CURRENT_TIME; ++ inode->i_ctime = CURRENT_TIME; ++ inode->i_mtime = CURRENT_TIME; ++ EXT3_I(inode)->i_dtime = 0; ++ inode->i_blksize = PAGE_SIZE; /* This is the optimal IO size ++ * (for stat), not the fs block ++ * size */ ++ inode->i_blocks = 0; ++ inode->i_version = 1; ++ inode->i_generation = 0; ++ ++ inode->i_op = &iopen_inode_operations; ++ inode->i_fop = &iopen_file_operations; ++ inode->i_mapping->a_ops = 0; ++ ++ return 1; ++} +--- /dev/null 2003-01-30 03:24:37.000000000 -0700 ++++ linux-2.5.73-braam/fs/ext3/iopen.h 2003-06-30 12:20:17.000000000 -0600 +@@ -0,0 +1,15 @@ ++/* ++ * iopen.h ++ * ++ * Special support for opening files by inode number. ++ * ++ * Copyright (C) 2001 by Theodore Ts'o (tytso@alum.mit.edu). ++ * ++ * This file may be redistributed under the terms of the GNU General ++ * Public License. ++ */ ++ ++extern int ext3_check_for_iopen(struct inode * dir, struct dentry *dentry); ++extern int ext3_iopen_get_inode(struct inode * inode); ++ ++ +--- linux-2.5.73/fs/ext3/namei.c~iopen-2.5.73 2003-06-22 12:32:56.000000000 -0600 ++++ linux-2.5.73-braam/fs/ext3/namei.c 2003-06-30 12:22:12.000000000 -0600 +@@ -37,6 +37,7 @@ + #include + #include + #include "xattr.h" ++#include "iopen.h" + #include "acl.h" + + /* +@@ -970,15 +971,21 @@ errout: + } + #endif + ++struct dentry *iopen_connect_dentry(struct dentry *de, struct inode *inode); ++ + static struct dentry *ext3_lookup(struct inode * dir, struct dentry *dentry) + { + struct inode * inode; + struct ext3_dir_entry_2 * de; + struct buffer_head * bh; ++ struct dentry *alternate = NULL; + + if (dentry->d_name.len > EXT3_NAME_LEN) + return ERR_PTR(-ENAMETOOLONG); + ++ if (ext3_check_for_iopen(dir, dentry)) ++ return NULL; ++ + bh = ext3_find_entry(dentry, &de); + inode = NULL; + if (bh) { +@@ -991,6 +998,12 @@ static struct dentry *ext3_lookup(struct + } + if (inode) + return d_splice_alias(inode, dentry); ++ ++ if (inode && (alternate = iopen_connect_dentry(dentry, inode))) { ++ iput(inode); ++ return alternate; ++ } ++ + d_add(dentry, inode); + return NULL; + } +--- linux-2.5.73/fs/ext3/super.c~iopen-2.5.73 2003-06-30 12:16:36.000000000 -0600 ++++ linux-2.5.73-braam/fs/ext3/super.c 2003-06-30 12:20:17.000000000 -0600 +@@ -752,6 +752,17 @@ static int parse_options (char * options + || !strcmp (this_char, "quota") + || !strcmp (this_char, "usrquota")) + /* Don't do anything ;-) */ ; ++ else if (!strcmp (this_char, "iopen")) { ++ set_opt (sbi->s_mount_opt, IOPEN); ++ clear_opt (sbi->s_mount_opt, IOPEN_NOPRIV); ++ } else if (!strcmp (this_char, "noiopen")) { ++ clear_opt (sbi->s_mount_opt, IOPEN); ++ clear_opt (sbi->s_mount_opt, IOPEN_NOPRIV); ++ } ++ else if (!strcmp (this_char, "iopen_nopriv")) { ++ set_opt (sbi->s_mount_opt, IOPEN); ++ set_opt (sbi->s_mount_opt, IOPEN_NOPRIV); ++ } + else if (!strcmp (this_char, "journal")) { + /* @@@ FIXME */ + /* Eventually we will want to be able to create +--- linux-2.5.73/include/linux/ext3_fs.h~iopen-2.5.73 2003-06-22 12:32:56.000000000 -0600 ++++ linux-2.5.73-braam/include/linux/ext3_fs.h 2003-06-30 12:20:17.000000000 -0600 +@@ -330,6 +330,8 @@ struct ext3_inode { + #define EXT3_MOUNT_NO_UID32 0x2000 /* Disable 32-bit UIDs */ + #define EXT3_MOUNT_XATTR_USER 0x4000 /* Extended user attributes */ + #define EXT3_MOUNT_POSIX_ACL 0x8000 /* POSIX Access Control Lists */ ++#define EXT3_MOUNT_IOPEN 0x10000 /* Allow access via iopen */ ++#define EXT3_MOUNT_IOPEN_NOPRIV 0x20000 /* Make iopen world-readable */ + + /* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */ + #ifndef _LINUX_EXT2_FS_H + +_ diff --git a/lustre/kernel_patches/patches/kgdb-ga-docco-fixes-2.5.73.patch b/lustre/kernel_patches/patches/kgdb-ga-docco-fixes-2.5.73.patch new file mode 100644 index 0000000..47d451c --- /dev/null +++ b/lustre/kernel_patches/patches/kgdb-ga-docco-fixes-2.5.73.patch @@ -0,0 +1,347 @@ + +From: "Randy.Dunlap" + +Just some readability fixes. + + + + Documentation/i386/kgdb/kgdb.txt | 135 +++++++++++++++++++-------------------- + 1 files changed, 68 insertions(+), 67 deletions(-) + +diff -puN Documentation/i386/kgdb/kgdb.txt~kgdb-gs-docco-fixes Documentation/i386/kgdb/kgdb.txt +--- 25/Documentation/i386/kgdb/kgdb.txt~kgdb-gs-docco-fixes 2003-06-26 17:32:25.000000000 -0700 ++++ 25-akpm/Documentation/i386/kgdb/kgdb.txt 2003-06-26 17:32:25.000000000 -0700 +@@ -6,10 +6,10 @@ New features: + ============ + 20030505.1827.27 + We are starting to align with the sourceforge version, at least in +-commands. To this end, the boot command sting to start kgdb at ++commands. To this end, the boot command string to start kgdb at + boot time has been changed from "kgdb" to "gdb". + +-Andrew Morton sent a couple of patchs which are now included as follows: ++Andrew Morton sent a couple of patches which are now included as follows: + 1.) We now return a flag to the interrupt handler. + 2.) We no longer use smp_num_cpus (a conflict with the lock meter). + 3.) And from William Lee Irwin III code to make +@@ -27,18 +27,18 @@ This is currently the version for the 2. + + We have several new "features" beginning with this version: + +-1.) Kgdb now syncs the "other" cpus with a cross cpu NMI. No more +- waiting and it will pull that guy out of an irq off spin lock :) ++1.) Kgdb now syncs the "other" CPUs with a cross-CPU NMI. No more ++ waiting and it will pull that guy out of an IRQ off spin lock :) + + 2.) We doctored up the code that tells where a task is waiting and + included it so that the "info thread" command will show a bit more + than "schedule()". Try it... + + 3.) Added the ability to call a function from gdb. All the standard gdb +- issues apply, i.e. if you hit a break point in the function you are +- not allowed to call another (gdb limitation, not kgdb). T0 help ++ issues apply, i.e. if you hit a breakpoint in the function, you are ++ not allowed to call another (gdb limitation, not kgdb). To help + this capability we added a memory allocation function. Gdb does not +- return this memory (it is used for stings you pass to that function ++ return this memory (it is used for strings that you pass to that function + you are calling from gdb) so we fixed up a way to allow you to + manually return the memory (see below). + +@@ -61,23 +61,23 @@ $2 = {used_malloc = 0, called_from = 0xc + Things to note here: a.) used_malloc is the amount of memory that + has been malloc'ed to do calls from gdb. You can reclaim this + memory like this: "p kgdb_info.used_malloc=0" Cool, huh? b.) +- cpus_waiting is now "sized" by the number of cpus you enter at +- configure time in the kgdb configure section. This is NOT used any +- where else in the system, but it is "nice" here. c.) The tasks ++ cpus_waiting is now "sized" by the number of CPUs you enter at ++ configure time in the kgdb configure section. This is NOT used ++ anywhere else in the system, but it is "nice" here. c.) The task's + "pid" is now in the structure. This is the pid you will need to use + to decode to the thread id to get gdb to look at that thread. + Remember that the "info thread" command prints a list of threads +- where in it numbers each thread with its reference number followed +- by the threads pid. Note that the per cpu idle threads actually +- have pids of 0 (yes there is more than one pid 0 in an SMP system). ++ wherein it numbers each thread with its reference number followed ++ by the thread's pid. Note that the per-CPU idle threads actually ++ have pids of 0 (yes, there is more than one pid 0 in an SMP system). + To avoid confusion, kgdb numbers these threads with numbers beyond +- the MAX_PID. That is why you see 32768 above. ++ the MAX_PID. That is why you see 32768 and above. + + 6.) A subtle change, we now provide the complete register set for tasks +- that are active on the other cpus. This allows better trace back on ++ that are active on the other CPUs. This allows better trace back on + those tasks. + +- And, lets mention what we could not fix. Back-trace from all but the ++ And, let's mention what we could not fix. Back-trace from all but the + thread that we trapped will, most likely, have a bogus entry in it. + The problem is that gdb does not recognize the entry code for + functions that use "current" near (at all?) the entry. The compiler +@@ -88,9 +88,9 @@ $2 = {used_malloc = 0, called_from = 0xc + + 20011220.0050.35 + Major enhancement with this version is the ability to hold one or more +-cpus in an SMP system while allowing the others to continue. Also, by +-default only the current cpu is enabled on single step commands (please +-note that gdb issues single step commands at times other than when you ++CPUs in an SMP system while allowing the others to continue. Also, by ++default only the current CPU is enabled on single-step commands (please ++note that gdb issues single-step commands at times other than when you + use the si command). + + Another change is to collect some useful information in +@@ -111,14 +111,14 @@ $4 = {called_from = 0xc010732c, entry_ts + + "Called_from" is the return address from the current entry into kgdb. + Sometimes it is useful to know why you are in kgdb, for example, was +-it an NMI or a real break point? The simple way to interrogate this ++it an NMI or a real breakpoint? The simple way to interrogate this + return address is: + + l *0xc010732c + + which will print the surrounding few lines of source code. + +-"Entry_tsc" is the cpu TSC on entry to kgdb (useful to compare to the ++"Entry_tsc" is the CPU TSC on entry to kgdb (useful to compare to the + kgdb_ts entries). + + "errcode" and "vector" are other entry parameters which may be helpful on +@@ -139,34 +139,34 @@ $7 = {called_from = 0xc0112739, entry_ts + hold = 0, regs = 0x0}, {task = 0x0, hold = 0, regs = 0x0}, {task = 0x0, + hold = 0, regs = 0x0}}} + +-"Cpus_waiting" has an entry for each cpu other than the current one that ++"Cpus_waiting" has an entry for each CPU other than the current one that + has been stopped. Each entry contains the task_struct address for that +-cpu, the address of the regs for that task and a hold flag. All these ++CPU, the address of the regs for that task and a hold flag. All these + have the proper typing so that, for example: + + p *kgdb_info.cpus_waiting[1].regs + +-will print the registers for cpu 1. ++will print the registers for CPU 1. + + "Hold_on_sstep" is a new feature with this version and comes up set or +-true. What is means is that whenever kgdb is asked to single step all +-other cpus are held (i.e. not allowed to execute). The flag applies to +-all but the current cpu and, again, can be changed: ++true. What this means is that whenever kgdb is asked to single-step all ++other CPUs are held (i.e. not allowed to execute). The flag applies to ++all but the current CPU and, again, can be changed: + + p kgdb_info.hold_on_sstep=0 + +-restores the old behavior of letting all cpus run during single stepping. ++restores the old behavior of letting all CPUs run during single-stepping. + +-Likewise, each cpu has a "hold" flag, which if set, locks that cpu out +-of execution. Note that this has some risk in cases where the cpus need +-to communicate with each other. If kgdb finds no cpu available on exit, ++Likewise, each CPU has a "hold" flag, which if set, locks that CPU out ++of execution. Note that this has some risk in cases where the CPUs need ++to communicate with each other. If kgdb finds no CPU available on exit, + it will push a message thru gdb and stay in kgdb. Note that it is legal +-to hold the current cpu as long as at least one cpu can execute. ++to hold the current CPU as long as at least one CPU can execute. + + 20010621.1117.09 + This version implements an event queue. Events are signaled by calling + a function in the kgdb stub and may be examined from gdb. See EVENTS +-below for details. This version also tighten up the interrupt and SMP ++below for details. This version also tightens up the interrupt and SMP + handling to not allow interrupts on the way to kgdb from a breakpoint + trap. It is fine to allow these interrupts for user code, but not + system debugging. +@@ -190,18 +190,18 @@ machine. This is the machine that will + kernel. + + The two machines will be connected together via a serial line out +-one or the other of the COM ports of the PC. You will need a modem +-eliminator and the appropriate cables. ++one or the other of the COM ports of the PC. You will need the ++appropriate modem eliminator (null modem) cable(s) for this. + + Decide on which tty port you want the machines to communicate, then +-cable them up back-to-back using the null modem. COM1 is /dev/ttyS0 and +-COM2 is /dev/ttyS1. You should test this connection with the two +-machines prior to trying to debug a kernel. Once you have it working, +-on the TARGET machine, enter: ++connect them up back-to-back using the null modem cable. COM1 is ++/dev/ttyS0 and COM2 is /dev/ttyS1. You should test this connection ++with the two machines prior to trying to debug a kernel. Once you ++have it working, on the TARGET machine, enter: + + setserial /dev/ttyS0 (or what ever tty you are using) + +-and record the port and the irq addresses. ++and record the port address and the IRQ number. + + On the DEVELOPMENT machine you need to apply the patch for the kgdb + hooks. You have probably already done that if you are reading this +@@ -212,7 +212,7 @@ On your DEVELOPMENT machine, go to your + configuring in the standard serial driver, it must not be a module. + Either yes or no is ok, but making the serial driver a module means it + will initialize after kgdb has set up the UART interrupt code and may +-cause a failure of the control C option discussed below. The configure ++cause a failure of the control-C option discussed below. The configure + question for the serial driver is under the "Character devices" heading + and is: + +@@ -231,16 +231,16 @@ The baud rate. Default is 115200. What + the host machine is set to the same speed. I recommend the default. + + The port. This is the I/O address of the serial UART that you should +-have gotten using setserial as described above. The standard com1 port +-(3f8) using irq 4 is default . Com2 is 2f8 which by convention uses irq ++have gotten using setserial as described above. The standard COM1 port ++(3f8) using IRQ 4 is default. COM2 is 2f8 which by convention uses IRQ + 3. + +-The port irq (see above). ++The port IRQ (see above). + + Stack overflow test. This option makes a minor change in the trap, + system call and interrupt code to detect stack overflow and transfer +-control to kgdb if it happens. (Some platforms have this in the base +-line code, but the i386 does not.) ++control to kgdb if it happens. (Some platforms have this in the ++baseline code, but the i386 does not.) + + You can also configure the system to recognize the boot option + "console=kgdb" which if given will cause all console output during +@@ -251,9 +251,9 @@ This will happen before any kernel outpu + and will stall the boot until the connection is made. + + You can also configure in a patch to SysRq to enable the kGdb SysRq. +-This request generates a breakpoint. Since the serial port irq line is ++This request generates a breakpoint. Since the serial port IRQ line is + set up after any serial drivers, it is possible that this command will +-work when the control C will not. ++work when the control-C will not. + + Save and exit the Xconfig program. Then do "make clean" , "make dep" + and "make bzImage" (or whatever target you want to make). This gets the +@@ -360,11 +360,11 @@ Triggering kgdbstub at other times + Often you don't need to enter the debugger until much later in the boot + or even after the machine has been running for some time. Once the + kernel is booted and interrupts are on, you can force the system to +-enter the debugger by sending a control C to the debug port. This is ++enter the debugger by sending a control-C to the debug port. This is + what the first line of the recommended .gdbinit file does. This allows + you to start gdb any time after the system is up as well as when the +-system is already at a break point. (In the case where the system is +-already at a break point the control C is not needed, however, it will ++system is already at a breakpoint. (In the case where the system is ++already at a breakpoint the control-C is not needed, however, it will + be ignored by the target so no harm is done. Also note the the echo + command assumes that the port speed is already set. This will be true + once gdb has connected, but it is best to set the port speed before you +@@ -442,7 +442,7 @@ turn on a debug switch with the followin + This will print out the protocol messages that gdb is exchanging with + the target machine. + +-Another place to look is /usr/src/arch/i386/lib/kgdb_serial.c This is ++Another place to look is /usr/src/arch/i386/lib/kgdb_serial.c. This is + the code that talks to the serial port on the target side. There might + be a problem there. In particular there is a section of this code that + tests the UART which will tell you what UART you have if you define +@@ -454,7 +454,7 @@ it finds. (You need to wait so that the + printed. Early in the boot they are cached, waiting for the console to + be enabled. Also, if kgdb is entered thru a breakpoint it is possible + to cause a dead lock by calling printk when the console is locked. The +-stub, thus avoids doing printks from break points especially in the ++stub thus avoids doing printks from breakpoints, especially in the + serial code.) At this time, if the UART fails to do the expected thing, + kgdb will print out (using printk) information on what failed. (These + messages will be buried in all the other boot up messages. Look for +@@ -464,7 +464,7 @@ don't connect, review your answers for t + + setserial /dev/ttyS0 + +-to get the current port and irq information. This command will also ++to get the current port and IRQ information. This command will also + tell you what the system found for the UART type. The stub recognizes + the following UART types: + +@@ -581,11 +581,11 @@ When a breakpoint occurs or user issues + client, all the processors are forced to enter the debugger. Current + thread corresponds to the thread running on the processor where + breakpoint occurred. Threads running on other processor(s) appear +-similar to other non running threads in the 'info threads' output. With +-in the kgdb stub there is a structure "waiting_cpus" in which kgdb +-records the values of "current" and "regs" for each cpu other than the ++similar to other non-running threads in the 'info threads' output. ++Within the kgdb stub there is a structure "waiting_cpus" in which kgdb ++records the values of "current" and "regs" for each CPU other than the + one that hit the breakpoint. "current" is a pointer to the task +-structure for the task that cpu is running, while "regs" points to the ++structure for the task that CPU is running, while "regs" points to the + saved registers for the task. This structure can be examined with the + gdb "p" command. + +@@ -601,22 +601,23 @@ Kill it. restart gdb. Connect to target + 2. gdb cannot connect to target machine (after killing a gdb and + restarting another) If the target machine was not inside debugger when + you killed gdb, gdb cannot connect because the target machine won't +-respond. In this case echo "Ctrl+C"(ASCII 3) in the serial line. +-e.g. echo -e "\003" > /dev/ttyS1 This forces that target machine into +-debugger after which you can connect. ++respond. In this case echo "Ctrl+C"(ASCII 3) to the serial line. ++e.g. echo -e "\003" > /dev/ttyS1 ++This forces that target machine into the debugger, after which you ++can connect. + + 3. gdb cannot connect even after echoing Ctrl+C into serial line + Try changing serial line settings min to 1 and time to 0 + e.g. stty min 1 time 0 < /dev/ttyS1 + Try echoing again + +-check serial line speed and set it to correct value if required ++Check serial line speed and set it to correct value if required + e.g. stty ispeed 115200 ospeed 115200 < /dev/ttyS1 + + EVENTS + ====== + +-Ever want to know the order of things happening? Which cpu did what and ++Ever want to know the order of things happening? Which CPU did what and + when? How did the spinlock get the way it is? Then events are for + you. Events are defined by calls to an event collection interface and + saved for later examination. In this case, kgdb events are saved by a +@@ -631,7 +632,7 @@ Events are signaled to kgdb by calling: + kgdb_ts(data0,data1) + + For each call kgdb records each call in an array along with other info. +-Here is the array def: ++Here is the array definition: + + struct kgdb_and_then_struct { + #ifdef CONFIG_SMP +@@ -646,7 +647,7 @@ struct kgdb_and_then_struct { + int data1; + }; + +-For SMP machines the cpu is recorded, for all machines the TSC is ++For SMP machines the CPU is recorded, for all machines the TSC is + recorded (gets a time stamp) as well as the line number and source file + the call was made from. The address of the (from), the "if" (interrupt + flag) and the two data items are also recorded. The macro kgdb_ts casts +@@ -709,7 +710,7 @@ Amit S. Kale + Extended threads to include the idle threads. + Enhancements to allow breakpoint() at first C code. + Use of module_init() and __setup() to automate the configure. +- Enhanced the cpu "collection" code to work in early bring up. ++ Enhanced the cpu "collection" code to work in early bring-up. + Added ability to call functions from gdb + Print info thread stuff without going back to schedule() +- Now collect the "other" cpus with a IPI/ NMI. +\ No newline at end of file ++ Now collect the "other" cpus with an IPI/ NMI. + +_ diff --git a/lustre/kernel_patches/patches/lkcd-kernel-changes-2.5.69.patch b/lustre/kernel_patches/patches/lkcd-kernel-changes-2.5.73.patch similarity index 61% rename from lustre/kernel_patches/patches/lkcd-kernel-changes-2.5.69.patch rename to lustre/kernel_patches/patches/lkcd-kernel-changes-2.5.73.patch index 71bb781..9e78ff3 100644 --- a/lustre/kernel_patches/patches/lkcd-kernel-changes-2.5.69.patch +++ b/lustre/kernel_patches/patches/lkcd-kernel-changes-2.5.73.patch @@ -1,13 +1,43 @@ ---- linux-2.5.69/drivers/Makefile.kernel-changes Sun May 4 16:53:37 2003 -+++ linux-2.5.69/drivers/Makefile Mon Jun 2 17:39:46 2003 -@@ -50,3 +50,4 @@ + + + + arch/i386/Kconfig | 50 ++++++++++++++++++++++++++++ + arch/i386/boot/Makefile | 1 + arch/i386/kernel/i386_ksyms.c | 19 ++++++++++ + arch/i386/kernel/nmi.c | 2 + + arch/i386/kernel/setup.c | 10 +++++ + arch/i386/kernel/smp.c | 14 +++++++ + arch/i386/kernel/traps.c | 2 + + arch/i386/mm/init.c | 6 +++ + arch/s390/boot/Makefile | 2 - + arch/s390/boot/install.sh | 24 +++++++++---- + drivers/Makefile | 1 + include/asm-i386/kmap_types.h | 3 + + include/asm-i386/mach-default/irq_vectors.h | 1 + include/asm-i386/smp.h | 1 + include/linux/major.h | 2 + + include/linux/sysctl.h | 2 + + init/Makefile | 4 ++ + init/main.c | 10 +++++ + init/version.c | 4 ++ + kernel/ksyms.c | 8 ++++ + kernel/panic.c | 17 +++++++++ + kernel/sched.c | 22 ++++++++++++ + lib/Kconfig | 10 +++-- + mm/page_alloc.c | 3 + + scripts/mkcompile_h | 4 +- + 25 files changed, 206 insertions(+), 16 deletions(-) + +--- linux-2.5.73/drivers/Makefile~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/drivers/Makefile 2003-06-30 12:37:53.000000000 -0600 +@@ -50,3 +50,4 @@ obj-$(CONFIG_ISDN_BOOL) += isdn/ obj-$(CONFIG_MCA) += mca/ obj-$(CONFIG_EISA) += eisa/ obj-$(CONFIG_CPU_FREQ) += cpufreq/ +obj-$(CONFIG_CRASH_DUMP) += dump/ ---- linux-2.5.69/include/linux/major.h.kernel-changes Sun May 4 16:53:08 2003 -+++ linux-2.5.69/include/linux/major.h Mon Jun 2 17:39:46 2003 -@@ -156,6 +156,8 @@ +--- linux-2.5.73/include/linux/major.h~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/include/linux/major.h 2003-06-30 12:37:53.000000000 -0600 +@@ -157,6 +157,8 @@ #define OSST_MAJOR 206 /* OnStream-SCx0 SCSI tape */ @@ -16,9 +46,9 @@ #define IBM_TTY3270_MAJOR 227 #define IBM_FS3270_MAJOR 228 ---- linux-2.5.69/include/linux/sysctl.h.kernel-changes Sun May 4 16:53:31 2003 -+++ linux-2.5.69/include/linux/sysctl.h Mon Jun 2 17:39:46 2003 -@@ -130,6 +130,8 @@ +--- linux-2.5.73/include/linux/sysctl.h~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/include/linux/sysctl.h 2003-06-30 12:37:53.000000000 -0600 +@@ -130,6 +130,8 @@ enum KERN_PIDMAX=55, /* int: PID # limit */ KERN_CORE_PATTERN=56, /* string: pattern for core-file names */ KERN_PANIC_ON_OOPS=57, /* int: whether we will panic on an oops */ @@ -27,8 +57,8 @@ }; ---- linux-2.5.69/include/asm-i386/mach-default/irq_vectors.h.kernel-changes Sun May 4 16:53:08 2003 -+++ linux-2.5.69/include/asm-i386/mach-default/irq_vectors.h Mon Jun 2 17:39:46 2003 +--- linux-2.5.73/include/asm-i386/mach-default/irq_vectors.h~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/include/asm-i386/mach-default/irq_vectors.h 2003-06-30 12:37:53.000000000 -0600 @@ -48,6 +48,7 @@ #define INVALIDATE_TLB_VECTOR 0xfd #define RESCHEDULE_VECTOR 0xfc @@ -37,9 +67,9 @@ #define THERMAL_APIC_VECTOR 0xf0 /* ---- linux-2.5.69/include/asm-i386/kmap_types.h.kernel-changes Sun May 4 16:53:36 2003 -+++ linux-2.5.69/include/asm-i386/kmap_types.h Mon Jun 2 17:39:46 2003 -@@ -24,7 +24,8 @@ +--- linux-2.5.73/include/asm-i386/kmap_types.h~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/include/asm-i386/kmap_types.h 2003-06-30 12:37:53.000000000 -0600 +@@ -24,7 +24,8 @@ D(10) KM_IRQ0, D(11) KM_IRQ1, D(12) KM_SOFTIRQ0, D(13) KM_SOFTIRQ1, @@ -49,18 +79,18 @@ }; #undef D ---- linux-2.5.69/include/asm-i386/smp.h.kernel-changes Sun May 4 16:53:32 2003 -+++ linux-2.5.69/include/asm-i386/smp.h Mon Jun 2 17:39:46 2003 -@@ -39,6 +39,7 @@ +--- linux-2.5.73/include/asm-i386/smp.h~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/include/asm-i386/smp.h 2003-06-30 12:37:53.000000000 -0600 +@@ -39,6 +39,7 @@ extern int smp_num_siblings; extern int cpu_sibling_map[]; extern void smp_flush_tlb(void); +extern void dump_send_ipi(void); extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs); extern void smp_send_reschedule(int cpu); - extern void smp_send_reschedule_all(void); ---- linux-2.5.69/arch/i386/kernel/i386_ksyms.c.kernel-changes Sun May 4 16:53:57 2003 -+++ linux-2.5.69/arch/i386/kernel/i386_ksyms.c Mon Jun 2 17:39:46 2003 + extern void smp_invalidate_rcv(void); /* Process an NMI */ +--- linux-2.5.73/arch/i386/kernel/i386_ksyms.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/i386/kernel/i386_ksyms.c 2003-06-30 12:37:53.000000000 -0600 @@ -16,6 +16,7 @@ #include #include @@ -77,7 +107,7 @@ extern void dump_thread(struct pt_regs *, struct user *); extern spinlock_t rtc_lock; -@@ -211,3 +213,20 @@ +@@ -208,3 +210,20 @@ EXPORT_SYMBOL(kmap_atomic_to_page); EXPORT_SYMBOL(edd); EXPORT_SYMBOL(eddnr); #endif @@ -98,17 +128,17 @@ +EXPORT_SYMBOL(touch_nmi_watchdog); +#endif +#endif ---- linux-2.5.69/arch/i386/kernel/nmi.c.kernel-changes Sun May 4 16:53:31 2003 -+++ linux-2.5.69/arch/i386/kernel/nmi.c Mon Jun 2 17:39:46 2003 -@@ -23,6 +23,7 @@ - #include +--- linux-2.5.73/arch/i386/kernel/nmi.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/i386/kernel/nmi.c 2003-06-30 12:39:00.000000000 -0600 +@@ -24,6 +24,7 @@ #include #include + #include +#include + #include #include - #include -@@ -404,6 +405,7 @@ +@@ -426,6 +427,7 @@ void nmi_watchdog_tick (struct pt_regs * bust_spinlocks(1); printk("NMI Watchdog detected LOCKUP on CPU%d, eip %08lx, registers:\n", cpu, regs->eip); show_registers(regs); @@ -116,9 +146,9 @@ printk("console shuts up ...\n"); console_silent(); spin_unlock(&nmi_print_lock); ---- linux-2.5.69/arch/i386/kernel/setup.c.kernel-changes Sun May 4 16:53:14 2003 -+++ linux-2.5.69/arch/i386/kernel/setup.c Mon Jun 2 17:39:46 2003 -@@ -431,6 +431,7 @@ +--- linux-2.5.73/arch/i386/kernel/setup.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/i386/kernel/setup.c 2003-06-30 12:40:12.000000000 -0600 +@@ -438,6 +438,7 @@ static void __init setup_memory_region(v print_memory_map(who); } /* setup_memory_region */ @@ -126,7 +156,7 @@ static void __init parse_cmdline_early (char ** cmdline_p) { -@@ -520,6 +521,9 @@ +@@ -531,6 +532,9 @@ static void __init parse_cmdline_early ( if (c == ' ' && !memcmp(from, "highmem=", 8)) highmem_pages = memparse(from+8, &from) >> PAGE_SHIFT; @@ -136,7 +166,7 @@ c = *(from++); if (!c) break; -@@ -902,6 +906,8 @@ +@@ -913,6 +917,8 @@ static int __init noreplacement_setup(ch __setup("noreplacement", noreplacement_setup); @@ -145,19 +175,19 @@ void __init setup_arch(char **cmdline_p) { unsigned long max_low_pfn; -@@ -959,6 +965,10 @@ - smp_alloc_memory(); /* AP processor realmode stacks in low memory*/ - #endif - paging_init(); -+ +@@ -977,6 +983,10 @@ void __init setup_arch(char **cmdline_p) + generic_apic_probe(*cmdline_p); + #endif + +#ifdef CONFIG_CRASH_DUMP_SOFTBOOT + crashdump_reserve(); /* Preserve crash dump state from prev boot */ +#endif ++ #ifdef CONFIG_ACPI_BOOT /* * Parse the ACPI tables for possible boot-time SMP configuration. ---- linux-2.5.69/arch/i386/kernel/smp.c.kernel-changes Mon Jun 2 17:39:29 2003 -+++ linux-2.5.69/arch/i386/kernel/smp.c Mon Jun 2 17:39:46 2003 +--- linux-2.5.73/arch/i386/kernel/smp.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/i386/kernel/smp.c 2003-06-30 12:37:53.000000000 -0600 @@ -19,6 +19,7 @@ #include #include @@ -166,7 +196,7 @@ #include #include -@@ -144,6 +145,13 @@ +@@ -144,6 +145,13 @@ inline void __send_IPI_shortcut(unsigned */ cfg = __prepare_ICR(shortcut, vector); @@ -180,7 +210,7 @@ /* * Send the IPI. The write to APIC_ICR fires this off. */ -@@ -450,6 +458,11 @@ +@@ -450,6 +458,11 @@ void flush_tlb_all(void) on_each_cpu(do_flush_tlb_all, 0, 1, 1); } @@ -192,13 +222,13 @@ /* * this function sends a 'reschedule' IPI to another CPU. * it goes straight through and wastes no time serializing -@@ -574,4 +587,3 @@ +@@ -589,4 +602,3 @@ asmlinkage void smp_call_function_interr atomic_inc(&call_data->finished); } } - ---- linux-2.5.69/arch/i386/kernel/traps.c.kernel-changes Sun May 4 16:53:03 2003 -+++ linux-2.5.69/arch/i386/kernel/traps.c Mon Jun 2 17:39:46 2003 +--- linux-2.5.73/arch/i386/kernel/traps.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/i386/kernel/traps.c 2003-06-30 12:37:53.000000000 -0600 @@ -25,6 +25,7 @@ #include #include @@ -207,7 +237,7 @@ #ifdef CONFIG_EISA #include -@@ -260,6 +261,7 @@ +@@ -258,6 +259,7 @@ void die(const char * str, struct pt_reg handle_BUG(regs); printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter); show_registers(regs); @@ -215,9 +245,9 @@ bust_spinlocks(0); spin_unlock_irq(&die_lock); if (in_interrupt()) ---- linux-2.5.69/arch/i386/mm/init.c.kernel-changes Sun May 4 16:53:36 2003 -+++ linux-2.5.69/arch/i386/mm/init.c Mon Jun 2 17:39:46 2003 -@@ -188,6 +188,12 @@ +--- linux-2.5.73/arch/i386/mm/init.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/i386/mm/init.c 2003-06-30 12:41:12.000000000 -0600 +@@ -189,6 +189,12 @@ static inline int page_is_ram(unsigned l return 0; } @@ -227,19 +257,19 @@ + return (page_is_ram(pfn)); +} + - #if CONFIG_HIGHMEM + #ifdef CONFIG_HIGHMEM pte_t *kmap_pte; pgprot_t kmap_prot; ---- linux-2.5.69/arch/i386/boot/Makefile.kernel-changes Sun May 4 16:53:13 2003 -+++ linux-2.5.69/arch/i386/boot/Makefile Mon Jun 2 17:39:46 2003 -@@ -101,3 +101,4 @@ +--- linux-2.5.73/arch/i386/boot/Makefile~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/i386/boot/Makefile 2003-06-30 12:37:53.000000000 -0600 +@@ -101,3 +101,4 @@ zlilo: $(BOOTIMAGE) install: $(BOOTIMAGE) sh $(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)" + if [ -f init/kerntypes.o ]; then cp init/kerntypes.o $(INSTALL_PATH)/Kerntypes; fi ---- linux-2.5.69/arch/i386/Kconfig.kernel-changes Mon Jun 2 17:39:29 2003 -+++ linux-2.5.69/arch/i386/Kconfig Mon Jun 2 17:39:46 2003 -@@ -1460,6 +1460,56 @@ +--- linux-2.5.73/arch/i386/Kconfig~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/i386/Kconfig 2003-06-30 12:37:53.000000000 -0600 +@@ -1347,6 +1347,56 @@ source "arch/i386/oprofile/Kconfig" menu "Kernel hacking" @@ -296,16 +326,16 @@ config DEBUG_KERNEL bool "Kernel debugging" help ---- linux-2.5.69/arch/s390/boot/Makefile.kernel-changes Sun May 4 16:53:57 2003 -+++ linux-2.5.69/arch/s390/boot/Makefile Mon Jun 2 17:39:46 2003 -@@ -16,4 +16,4 @@ +--- linux-2.5.73/arch/s390/boot/Makefile~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/s390/boot/Makefile 2003-06-30 12:37:53.000000000 -0600 +@@ -16,4 +16,4 @@ $(obj)/image: vmlinux FORCE install: $(CONFIGURE) $(obj)/image sh -x $(obj)/install.sh $(KERNELRELEASE) $(obj)/image \ - System.map Kerntypes "$(INSTALL_PATH)" + System.map init/kerntypes.o "$(INSTALL_PATH)" ---- linux-2.5.69/arch/s390/boot/install.sh.kernel-changes Sun May 4 16:53:32 2003 -+++ linux-2.5.69/arch/s390/boot/install.sh Mon Jun 2 17:39:46 2003 +--- linux-2.5.73/arch/s390/boot/install.sh~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/arch/s390/boot/install.sh 2003-06-30 12:37:53.000000000 -0600 @@ -16,7 +16,8 @@ # $1 - kernel version # $2 - kernel image file @@ -316,7 +346,7 @@ # # User may have a custom install script -@@ -26,13 +27,22 @@ +@@ -26,13 +27,22 @@ if [ -x /sbin/installkernel ]; then exec # Default install - same as make zlilo @@ -345,9 +375,9 @@ +if [ -f $4 ]; then + cp $4 $5/Kerntypes +fi ---- linux-2.5.69/scripts/mkcompile_h.kernel-changes Sun May 4 16:53:57 2003 -+++ linux-2.5.69/scripts/mkcompile_h Mon Jun 2 17:39:46 2003 -@@ -33,7 +33,7 @@ +--- linux-2.5.73/scripts/mkcompile_h~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/scripts/mkcompile_h 2003-06-30 12:37:53.000000000 -0600 +@@ -33,7 +33,7 @@ UTS_VERSION="$UTS_VERSION `LANG=C date`" UTS_LEN=64 UTS_TRUNCATE="sed -e s/\(.\{1,$UTS_LEN\}\).*/\1/" @@ -356,7 +386,7 @@ # Generate a temporary compile.h ( echo /\* This file is auto generated, version $VERSION \*/ -@@ -55,6 +55,8 @@ +@@ -55,6 +55,8 @@ UTS_TRUNCATE="sed -e s/\(.\{1,$UTS_LEN\} fi echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -1`\" @@ -365,9 +395,9 @@ ) > .tmpcompile # Only replace the real compile.h if the new one is different, ---- linux-2.5.69/kernel/ksyms.c.kernel-changes Sun May 4 16:52:49 2003 -+++ linux-2.5.69/kernel/ksyms.c Mon Jun 2 17:39:46 2003 -@@ -60,6 +60,8 @@ +--- linux-2.5.73/kernel/ksyms.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/kernel/ksyms.c 2003-06-30 12:41:57.000000000 -0600 +@@ -59,6 +59,8 @@ #include #include #include @@ -376,18 +406,18 @@ #if defined(CONFIG_PROC_FS) #include -@@ -616,3 +618,9 @@ - EXPORT_SYMBOL(ptrace_notify); +@@ -606,3 +608,9 @@ EXPORT_SYMBOL(ptrace_notify); + EXPORT_SYMBOL(console_printk); - EXPORT_SYMBOL(current_kernel_time); + EXPORT_SYMBOL(current_kernel_time); + +#ifdef CONFIG_CRASH_DUMP_MODULE +EXPORT_SYMBOL(min_low_pfn); +EXPORT_SYMBOL(dump_oncpu); +EXPORT_SYMBOL(dump_function_ptr); +#endif ---- linux-2.5.69/kernel/panic.c.kernel-changes Mon Jun 2 17:39:29 2003 -+++ linux-2.5.69/kernel/panic.c Mon Jun 2 17:42:07 2003 +--- linux-2.5.73/kernel/panic.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/kernel/panic.c 2003-06-30 12:37:53.000000000 -0600 @@ -16,12 +16,16 @@ #include #include @@ -405,7 +435,7 @@ struct notifier_block *panic_notifier_list; -@@ -54,6 +58,7 @@ +@@ -54,6 +58,7 @@ NORET_TYPE void panic(const char * fmt, va_start(args, fmt); vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); @@ -413,7 +443,7 @@ printk(KERN_EMERG "Kernel panic: %s\n",buf); if (in_interrupt()) printk(KERN_EMERG "In interrupt handler - not syncing\n"); -@@ -76,6 +81,18 @@ +@@ -76,6 +81,18 @@ NORET_TYPE void panic(const char * fmt, * We can't use the "normal" timers since we just panicked.. */ printk(KERN_EMERG "Rebooting in %d seconds..",panic_timeout); @@ -432,9 +462,9 @@ mdelay(panic_timeout*1000); /* * Should we run the reboot notifier. For the moment Im ---- linux-2.5.69/kernel/sched.c.kernel-changes Sun May 4 16:53:37 2003 -+++ linux-2.5.69/kernel/sched.c Mon Jun 2 17:39:46 2003 -@@ -39,6 +39,9 @@ +--- linux-2.5.73/kernel/sched.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/kernel/sched.c 2003-06-30 12:37:53.000000000 -0600 +@@ -40,6 +40,9 @@ #define cpu_to_node_mask(cpu) (cpu_online_map) #endif @@ -444,7 +474,7 @@ /* * Convert user-nice values [ -20 ... 0 ... 19 ] * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ], -@@ -1267,6 +1270,15 @@ +@@ -1249,6 +1252,15 @@ asmlinkage void schedule(void) struct list_head *queue; int idx; @@ -460,7 +490,7 @@ /* * Test if we are atomic. Since do_exit() needs to call into * schedule() atomically, we ignore that path for now. -@@ -1355,6 +1367,16 @@ +@@ -1336,6 +1348,16 @@ switch_tasks: preempt_enable_no_resched(); if (test_thread_flag(TIF_NEED_RESCHED)) goto need_resched; @@ -477,9 +507,9 @@ } #ifdef CONFIG_PREEMPT ---- linux-2.5.69/lib/Kconfig.kernel-changes Sun May 4 16:53:32 2003 -+++ linux-2.5.69/lib/Kconfig Mon Jun 2 17:39:46 2003 -@@ -17,14 +17,16 @@ +--- linux-2.5.73/lib/Kconfig~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/lib/Kconfig 2003-06-30 12:37:54.000000000 -0600 +@@ -17,14 +17,16 @@ config CRC32 # config ZLIB_INFLATE tristate @@ -500,9 +530,9 @@ endmenu ---- linux-2.5.69/mm/page_alloc.c.kernel-changes Sun May 4 16:53:01 2003 -+++ linux-2.5.69/mm/page_alloc.c Mon Jun 2 17:39:46 2003 -@@ -85,7 +85,8 @@ +--- linux-2.5.73/mm/page_alloc.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/mm/page_alloc.c 2003-06-30 12:37:54.000000000 -0600 +@@ -84,7 +84,8 @@ static void bad_page(const char *functio page->mapping = NULL; } @@ -512,9 +542,9 @@ #define prep_compound_page(page, order) do { } while (0) #define destroy_compound_page(page, order) do { } while (0) #else ---- linux-2.5.69/init/Makefile.kernel-changes Sun May 4 16:53:13 2003 -+++ linux-2.5.69/init/Makefile Mon Jun 2 17:39:46 2003 -@@ -9,6 +9,9 @@ +--- linux-2.5.73/init/Makefile~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/init/Makefile 2003-06-30 12:37:54.000000000 -0600 +@@ -9,6 +9,9 @@ mounts-$(CONFIG_BLK_DEV_RAM) += do_mount mounts-$(CONFIG_BLK_DEV_INITRD) += do_mounts_initrd.o mounts-$(CONFIG_BLK_DEV_MD) += do_mounts_md.o @@ -524,14 +554,14 @@ # files to be removed upon make clean clean-files := ../include/linux/compile.h -@@ -24,3 +27,4 @@ +@@ -24,3 +27,4 @@ $(obj)/version.o: include/linux/compile. include/linux/compile.h: FORCE @echo ' CHK $@' @sh $(srctree)/scripts/mkcompile_h $@ "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CC) $(CFLAGS)" + ---- linux-2.5.69/init/main.c.kernel-changes Sun May 4 16:53:03 2003 -+++ linux-2.5.69/init/main.c Mon Jun 2 17:39:46 2003 -@@ -100,6 +100,16 @@ +--- linux-2.5.73/init/main.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/init/main.c 2003-06-30 12:37:54.000000000 -0600 +@@ -101,6 +101,16 @@ extern void ipc_init(void); int system_running = 0; /* @@ -548,8 +578,8 @@ * Boot command-line arguments */ #define MAX_INIT_ARGS 8 ---- linux-2.5.69/init/version.c.kernel-changes Sun May 4 16:53:14 2003 -+++ linux-2.5.69/init/version.c Mon Jun 2 17:39:46 2003 +--- linux-2.5.73/init/version.c~lkcd-kernel-changes-2.5.73 2003-06-30 12:24:21.000000000 -0600 ++++ linux-2.5.73-braam/init/version.c 2003-06-30 12:37:54.000000000 -0600 @@ -10,6 +10,7 @@ #include #include @@ -558,10 +588,12 @@ #define version(a) Version_ ## a #define version_string(a) version(a) -@@ -24,3 +25,6 @@ +@@ -24,3 +25,6 @@ struct new_utsname system_utsname = { const char *linux_banner = "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n"; + +const char *LINUX_COMPILE_VERSION_ID = __stringify(LINUX_COMPILE_VERSION_ID); +LINUX_COMPILE_VERSION_ID_TYPE; + +_ diff --git a/lustre/kernel_patches/patches/vfs_intent_2.5.72_rev1.patch.keep b/lustre/kernel_patches/patches/vfs_intent_2.5.72_rev1.patch.keep new file mode 100644 index 0000000..17819ca --- /dev/null +++ b/lustre/kernel_patches/patches/vfs_intent_2.5.72_rev1.patch.keep @@ -0,0 +1,1028 @@ + fs/dcache.c | 15 +++- + fs/exec.c | 15 ++-- + fs/namei.c | 170 +++++++++++++++++++++++++++++++++++++++++-------- + fs/namespace.c | 1 + fs/open.c | 67 ++++++++++++------- + fs/stat.c | 28 +++++--- + fs/sysfs/inode.c | 2 + include/linux/dcache.h | 30 ++++++++ + include/linux/fs.h | 11 +++ + include/linux/namei.h | 10 ++ + kernel/ksyms.c | 7 ++ + net/sunrpc/rpc_pipe.c | 6 - + net/unix/af_unix.c | 2 + 13 files changed, 293 insertions(+), 71 deletions(-) + +--- linux-2.5.72/fs/sysfs/inode.c~vfs_intent_2.5.72_rev1 2003-06-16 22:20:21.000000000 -0600 ++++ linux-2.5.72-braam/fs/sysfs/inode.c 2003-06-25 05:30:42.000000000 -0600 +@@ -81,7 +81,7 @@ struct dentry * sysfs_get_dentry(struct + qstr.name = name; + qstr.len = strlen(name); + qstr.hash = full_name_hash(name,qstr.len); +- return lookup_hash(&qstr,parent); ++ return lookup_hash(&qstr,parent,NULL); + } + + void sysfs_hash_and_remove(struct dentry * dir, const char * name) +--- linux-2.5.72/fs/dcache.c~vfs_intent_2.5.72_rev1 2003-06-16 22:19:41.000000000 -0600 ++++ linux-2.5.72-braam/fs/dcache.c 2003-06-25 05:30:42.000000000 -0600 +@@ -1132,14 +1132,23 @@ void d_delete(struct dentry * dentry) + * Adds a dentry to the hash according to its name. + */ + +-void d_rehash(struct dentry * entry) ++void __d_rehash(struct dentry * entry, int lock) + { + struct hlist_head *list = d_hash(entry->d_parent, entry->d_name.hash); +- spin_lock(&dcache_lock); ++ if (lock) ++ spin_lock(&dcache_lock); + entry->d_vfs_flags &= ~DCACHE_UNHASHED; + entry->d_bucket = list; + hlist_add_head_rcu(&entry->d_hash, list); +- spin_unlock(&dcache_lock); ++ if (lock) ++ spin_unlock(&dcache_lock); ++} ++ ++EXPORT_SYMBOL(__d_rehash); ++ ++void d_rehash(struct dentry * entry) ++{ ++ __d_rehash(entry, 1); + } + + #define do_switch(x,y) do { \ +--- linux-2.5.72/fs/exec.c~vfs_intent_2.5.72_rev1 2003-06-16 22:19:59.000000000 -0600 ++++ linux-2.5.72-braam/fs/exec.c 2003-06-25 05:30:42.000000000 -0600 +@@ -116,8 +116,9 @@ asmlinkage long sys_uselib(const char __ + struct file * file; + struct nameidata nd; + int error; ++ intent_init(&nd.it, IT_OPEN, O_RDONLY); + +- error = user_path_walk(library, &nd); ++ error = user_path_walk_it(library, &nd); + if (error) + goto out; + +@@ -129,7 +130,7 @@ asmlinkage long sys_uselib(const char __ + if (error) + goto exit; + +- file = dentry_open(nd.dentry, nd.mnt, O_RDONLY); ++ file = dentry_open_nd(&nd, O_RDONLY); + error = PTR_ERR(file); + if (IS_ERR(file)) + goto out; +@@ -453,8 +454,12 @@ static inline void free_arg_pages(struct + struct file *open_exec(const char *name) + { + struct nameidata nd; +- int err = path_lookup(name, LOOKUP_FOLLOW, &nd); +- struct file *file = ERR_PTR(err); ++ int err; ++ struct file *file; ++ ++ intent_init(&nd.it, IT_OPEN, O_RDONLY); ++ err = path_lookup(name, LOOKUP_FOLLOW, &nd); ++ file = ERR_PTR(err); + + if (!err) { + struct inode *inode = nd.dentry->d_inode; +@@ -466,7 +471,7 @@ struct file *open_exec(const char *name) + err = -EACCES; + file = ERR_PTR(err); + if (!err) { +- file = dentry_open(nd.dentry, nd.mnt, O_RDONLY); ++ file = dentry_open_nd(&nd, O_RDONLY); + if (!IS_ERR(file)) { + err = deny_write_access(file); + if (err) { +--- linux-2.5.72/fs/namei.c~vfs_intent_2.5.72_rev1 2003-06-16 22:19:57.000000000 -0600 ++++ linux-2.5.72-braam/fs/namei.c 2003-06-25 05:33:20.000000000 -0600 +@@ -263,8 +263,27 @@ int deny_write_access(struct file * file + return 0; + } + ++void intent_init(struct lookup_intent *it, int op, int flags) ++{ ++ memset(it, 0, sizeof(*it)); ++ it->it_magic = INTENT_MAGIC; ++ it->it_op = op; ++ it->it_flags = flags; ++} ++ ++void intent_release(struct nameidata *nd) ++{ ++ if (!nd) ++ return; ++ if (nd->it.it_magic != INTENT_MAGIC) ++ return; ++ if (nd->it.it_op_release) ++ nd->it.it_op_release(nd); ++} ++ + void path_release(struct nameidata *nd) + { ++ intent_release(nd); + dput(nd->dentry); + mntput(nd->mnt); + } +@@ -273,7 +292,7 @@ void path_release(struct nameidata *nd) + * Internal lookup() using the new generic dcache. + * SMP-safe + */ +-static struct dentry * cached_lookup(struct dentry * parent, struct qstr * name, int flags) ++static struct dentry * cached_lookup(struct dentry * parent, struct qstr * name, int flags, struct nameidata *nd) + { + struct dentry * dentry = __d_lookup(parent, name); + +@@ -283,6 +302,14 @@ static struct dentry * cached_lookup(str + if (!dentry) + dentry = d_lookup(parent, name); + ++ if (dentry && dentry->d_op && dentry->d_op->d_revalidate_it) { ++ if (!dentry->d_op->d_revalidate_it(dentry, flags, nd) && ++ !d_invalidate(dentry)) { ++ dput(dentry); ++ dentry = NULL; ++ } ++ return dentry; ++ } else + if (dentry && dentry->d_op && dentry->d_op->d_revalidate) { + if (!dentry->d_op->d_revalidate(dentry, flags) && !d_invalidate(dentry)) { + dput(dentry); +@@ -336,7 +363,7 @@ ok: + * make sure that nobody added the entry to the dcache in the meantime.. + * SMP-safe + */ +-static struct dentry * real_lookup(struct dentry * parent, struct qstr * name, int flags) ++static struct dentry * real_lookup(struct dentry * parent, struct qstr * name, int flags, struct nameidata *nd) + { + struct dentry * result; + struct inode *dir = parent->d_inode; +@@ -361,7 +388,10 @@ static struct dentry * real_lookup(struc + struct dentry * dentry = d_alloc(parent, name); + result = ERR_PTR(-ENOMEM); + if (dentry) { +- result = dir->i_op->lookup(dir, dentry); ++ if (dir->i_op->lookup_it) ++ result = dir->i_op->lookup_it(dir, dentry, nd); ++ else ++ result = dir->i_op->lookup(dir, dentry); + if (result) + dput(dentry); + else +@@ -381,6 +411,12 @@ static struct dentry * real_lookup(struc + dput(result); + result = ERR_PTR(-ENOENT); + } ++ } else if (result->d_op && result->d_op->d_revalidate_it) { ++ if (!result->d_op->d_revalidate_it(result, flags, nd) && ++ !d_invalidate(result)) { ++ dput(result); ++ result = ERR_PTR(-ENOENT); ++ } + } + return result; + } +@@ -406,6 +442,7 @@ static inline int do_follow_link(struct + current->link_count++; + current->total_link_count++; + update_atime(dentry->d_inode); ++ nd->flags |= LOOKUP_PARENT; + err = dentry->d_inode->i_op->follow_link(dentry, nd); + current->link_count--; + return err; +@@ -455,15 +492,25 @@ static int follow_mount(struct vfsmount + return res; + } + +-static inline int __follow_down(struct vfsmount **mnt, struct dentry **dentry) ++static inline int __follow_down(struct vfsmount **mnt, struct dentry **dentry, ++ struct lookup_intent *it) + { + struct vfsmount *mounted; + + spin_lock(&dcache_lock); + mounted = lookup_mnt(*mnt, *dentry); + if (mounted) { ++ int opc = 0, mode = 0; + *mnt = mntget(mounted); + spin_unlock(&dcache_lock); ++ if (it) { ++ opc = it->it_op; ++ mode = it->it_mode; ++ } ++ if (it) { ++ it->it_op = opc; ++ it->it_mode = mode; ++ } + dput(*dentry); + mntput(mounted->mnt_parent); + *dentry = dget(mounted->mnt_root); +@@ -475,7 +522,7 @@ static inline int __follow_down(struct v + + int follow_down(struct vfsmount **mnt, struct dentry **dentry) + { +- return __follow_down(mnt,dentry); ++ return __follow_down(mnt,dentry,NULL); + } + + static inline void follow_dotdot(struct vfsmount **mnt, struct dentry **dentry) +@@ -531,7 +578,8 @@ static int do_lookup(struct nameidata *n + + if (!dentry) + goto need_lookup; +- if (dentry->d_op && dentry->d_op->d_revalidate) ++ if (dentry->d_op && (dentry->d_op->d_revalidate || ++ dentry->d_op->d_revalidate_it) ) + goto need_revalidate; + done: + path->mnt = mnt; +@@ -539,13 +587,17 @@ done: + return 0; + + need_lookup: +- dentry = real_lookup(nd->dentry, name, LOOKUP_CONTINUE); ++ dentry = real_lookup(nd->dentry, name, LOOKUP_CONTINUE, nd); + if (IS_ERR(dentry)) + goto fail; + goto done; + + need_revalidate: +- if (dentry->d_op->d_revalidate(dentry, flags)) ++ if (dentry->d_op->d_revalidate && ++ dentry->d_op->d_revalidate(dentry, flags)) ++ goto done; ++ if (dentry->d_op->d_revalidate_it && ++ dentry->d_op->d_revalidate_it(dentry, flags, nd)) + goto done; + if (d_invalidate(dentry)) + goto done; +@@ -568,6 +620,7 @@ int link_path_walk(const char * name, st + { + struct path next; + struct inode *inode; ++ int saved_flags; + int err; + unsigned int lookup_flags = nd->flags; + +@@ -654,8 +707,11 @@ int link_path_walk(const char * name, st + goto out_dput; + + if (inode->i_op->follow_link) { ++ int it_op = nd->it.it_op; ++ nd->it.it_op = IT_LOOKUP; + mntget(next.mnt); + err = do_follow_link(next.dentry, nd); ++ nd->it.it_op = it_op; + dput(next.dentry); + mntput(next.mnt); + if (err) +@@ -673,7 +729,7 @@ int link_path_walk(const char * name, st + nd->dentry = next.dentry; + } + err = -ENOTDIR; +- if (!inode->i_op->lookup) ++ if (!inode->i_op->lookup && !inode->i_op->lookup_it) + break; + continue; + /* here ends the main loop */ +@@ -700,7 +756,10 @@ last_component: + if (err < 0) + break; + } ++ saved_flags = nd->flags; ++ nd->flags &= ~LOOKUP_PARENT; + err = do_lookup(nd, &this, &next, 0); ++ nd->flags &= saved_flags; + if (err) + break; + follow_mount(&next.mnt, &next.dentry); +@@ -724,7 +783,8 @@ last_component: + break; + if (lookup_flags & LOOKUP_DIRECTORY) { + err = -ENOTDIR; +- if (!inode->i_op || !inode->i_op->lookup) ++ if (!inode->i_op || ++ (!inode->i_op->lookup && !inode->i_op->lookup_it)) + break; + } + goto return_base; +@@ -743,7 +803,7 @@ out_dput: + dput(next.dentry); + break; + } +- path_release(nd); ++ path_release(nd); + return_err: + return err; + } +@@ -866,7 +926,8 @@ int path_lookup(const char *name, unsign + * needs parent already locked. Doesn't follow mounts. + * SMP-safe. + */ +-struct dentry * lookup_hash(struct qstr *name, struct dentry * base) ++struct dentry * lookup_hash(struct qstr *name, struct dentry * base, ++ struct nameidata *nd) + { + struct dentry * dentry; + struct inode *inode; +@@ -889,13 +950,16 @@ struct dentry * lookup_hash(struct qstr + goto out; + } + +- dentry = cached_lookup(base, name, 0); ++ dentry = cached_lookup(base, name, 0, nd); + if (!dentry) { + struct dentry *new = d_alloc(base, name); + dentry = ERR_PTR(-ENOMEM); + if (!new) + goto out; +- dentry = inode->i_op->lookup(inode, new); ++ if (inode->i_op->lookup_it) ++ dentry = inode->i_op->lookup_it(inode, new, nd); ++ else ++ dentry = inode->i_op->lookup(inode, new); + if (!dentry) + dentry = new; + else +@@ -906,7 +970,7 @@ out: + } + + /* SMP-safe */ +-struct dentry * lookup_one_len(const char * name, struct dentry * base, int len) ++struct dentry * lookup_one_len_it(const char * name, struct dentry * base, int len, struct nameidata *nd) + { + unsigned long hash; + struct qstr this; +@@ -926,11 +990,16 @@ struct dentry * lookup_one_len(const cha + } + this.hash = end_name_hash(hash); + +- return lookup_hash(&this, base); ++ return lookup_hash(&this, base, nd); + access: + return ERR_PTR(-EACCES); + } + ++struct dentry * lookup_one_len(const char * name, struct dentry * base, int len) ++{ ++ return lookup_one_len_it(name, base, len, NULL); ++} ++ + /* + * namei() + * +@@ -942,10 +1011,11 @@ access: + * that namei follows links, while lnamei does not. + * SMP-safe + */ +-int __user_walk(const char __user *name, unsigned flags, struct nameidata *nd) ++int __user_walk_it(const char __user *name, unsigned flags, struct nameidata *nd) + { + char *tmp = getname(name); + int err = PTR_ERR(tmp); ++ + + if (!IS_ERR(tmp)) { + err = path_lookup(tmp, flags, nd); +@@ -954,6 +1024,12 @@ int __user_walk(const char __user *name, + return err; + } + ++int __user_walk(const char __user *name, unsigned flags, struct nameidata *nd) ++{ ++ intent_init(&nd->it, IT_LOOKUP, 0); ++ return __user_walk_it(name, flags, nd); ++} ++ + /* + * It's inline, so penalty for filesystems that don't use sticky bit is + * minimal. +@@ -1093,6 +1169,32 @@ void unlock_rename(struct dentry *p1, st + } + } + ++int vfs_create_it(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd) ++{ ++ int error = may_create(dir, dentry); ++ ++ if (error) ++ return error; ++ ++ if (!dir->i_op || (!dir->i_op->create && !dir->i_op->create_it)) ++ return -EACCES; /* shouldn't it be ENOSYS? */ ++ mode &= S_IALLUGO; ++ mode |= S_IFREG; ++ error = security_inode_create(dir, dentry, mode); ++ if (error) ++ return error; ++ DQUOT_INIT(dir); ++ if (dir->i_op->create_it) ++ error = dir->i_op->create_it(dir, dentry, mode, nd); ++ else ++ error = dir->i_op->create(dir, dentry, mode); ++ if (!error) { ++ inode_dir_notify(dir, DN_CREATE); ++ security_inode_post_create(dir, dentry, mode); ++ } ++ return error; ++} ++ + int vfs_create(struct inode *dir, struct dentry *dentry, int mode) + { + int error = may_create(dir, dentry); +@@ -1232,6 +1334,9 @@ int open_namei(const char * pathname, in + /* + * Create - we need to know the parent. + */ ++ nd->it.it_mode = mode; ++ nd->it.it_op |= IT_CREAT; ++ + error = path_lookup(pathname, LOOKUP_PARENT, nd); + if (error) + return error; +@@ -1247,7 +1352,8 @@ int open_namei(const char * pathname, in + + dir = nd->dentry; + down(&dir->d_inode->i_sem); +- dentry = lookup_hash(&nd->last, nd->dentry); ++ nd->flags &= ~LOOKUP_PARENT; ++ dentry = lookup_hash(&nd->last, nd->dentry, nd); + + do_last: + error = PTR_ERR(dentry); +@@ -1255,12 +1361,13 @@ do_last: + up(&dir->d_inode->i_sem); + goto exit; + } +- ++ ++ nd->it.it_mode = mode; + /* Negative dentry, just create the file */ + if (!dentry->d_inode) { + if (!IS_POSIXACL(dir->d_inode)) + mode &= ~current->fs->umask; +- error = vfs_create(dir->d_inode, dentry, mode); ++ error = vfs_create_it(dir->d_inode, dentry, mode, nd); + up(&dir->d_inode->i_sem); + dput(nd->dentry); + nd->dentry = dentry; +@@ -1285,7 +1392,7 @@ do_last: + error = -ELOOP; + if (flag & O_NOFOLLOW) + goto exit_dput; +- while (__follow_down(&nd->mnt,&dentry) && d_mountpoint(dentry)); ++ while (__follow_down(&nd->mnt,&dentry,&nd->it) && d_mountpoint(dentry)); + } + error = -ENOENT; + if (!dentry->d_inode) +@@ -1328,6 +1435,7 @@ do_link: + if (error) + goto exit_dput; + update_atime(dentry->d_inode); ++ nd->flags |= LOOKUP_PARENT; + error = dentry->d_inode->i_op->follow_link(dentry, nd); + dput(dentry); + if (error) +@@ -1350,7 +1458,8 @@ do_link: + } + dir = nd->dentry; + down(&dir->d_inode->i_sem); +- dentry = lookup_hash(&nd->last, nd->dentry); ++ nd->flags &= ~LOOKUP_PARENT; ++ dentry = lookup_hash(&nd->last, nd->dentry, nd); + putname(nd->last.name); + goto do_last; + } +@@ -1364,7 +1473,7 @@ static struct dentry *lookup_create(stru + dentry = ERR_PTR(-EEXIST); + if (nd->last_type != LAST_NORM) + goto fail; +- dentry = lookup_hash(&nd->last, nd->dentry); ++ dentry = lookup_hash(&nd->last, nd->dentry, nd); + if (IS_ERR(dentry)) + goto fail; + if (!is_dir && nd->last.name[nd->last.len] && !dentry->d_inode) +@@ -1596,7 +1705,7 @@ asmlinkage long sys_rmdir(const char __u + goto exit1; + } + down(&nd.dentry->d_inode->i_sem); +- dentry = lookup_hash(&nd.last, nd.dentry); ++ dentry = lookup_hash(&nd.last, nd.dentry, &nd); + error = PTR_ERR(dentry); + if (!IS_ERR(dentry)) { + error = vfs_rmdir(nd.dentry->d_inode, dentry); +@@ -1665,7 +1774,7 @@ asmlinkage long sys_unlink(const char __ + if (nd.last_type != LAST_NORM) + goto exit1; + down(&nd.dentry->d_inode->i_sem); +- dentry = lookup_hash(&nd.last, nd.dentry); ++ dentry = lookup_hash(&nd.last, nd.dentry, &nd); + error = PTR_ERR(dentry); + if (!IS_ERR(dentry)) { + /* Why not before? Because we want correct error value */ +@@ -2015,7 +2124,7 @@ static inline int do_rename(const char * + + trap = lock_rename(new_dir, old_dir); + +- old_dentry = lookup_hash(&oldnd.last, old_dir); ++ old_dentry = lookup_hash(&oldnd.last, old_dir, &oldnd); + error = PTR_ERR(old_dentry); + if (IS_ERR(old_dentry)) + goto exit3; +@@ -2035,7 +2144,7 @@ static inline int do_rename(const char * + error = -EINVAL; + if (old_dentry == trap) + goto exit4; +- new_dentry = lookup_hash(&newnd.last, new_dir); ++ new_dentry = lookup_hash(&newnd.last, new_dir, &newnd); + error = PTR_ERR(new_dentry); + if (IS_ERR(new_dentry)) + goto exit4; +@@ -2100,10 +2209,17 @@ static inline int + __vfs_follow_link(struct nameidata *nd, const char *link) + { + int res = 0; ++ struct lookup_intent it = nd->it; ++ int mode = it.it_mode; + char *name; ++ + if (IS_ERR(link)) + goto fail; + ++ intent_release(nd); ++ intent_init(&nd->it, it.it_op, it.it_flags); ++ nd->it.it_mode = mode; ++ + if (*link == '/') { + path_release(nd); + if (!walk_init_root(link, nd)) +--- linux-2.5.72/fs/namespace.c~vfs_intent_2.5.72_rev1 2003-06-16 22:20:06.000000000 -0600 ++++ linux-2.5.72-braam/fs/namespace.c 2003-06-25 05:30:42.000000000 -0600 +@@ -937,6 +937,7 @@ void set_fs_pwd(struct fs_struct *fs, st + mntput(old_pwdmnt); + } + } ++EXPORT_SYMBOL(set_fs_pwd); + + static void chroot_fs_refs(struct nameidata *old_nd, struct nameidata *new_nd) + { +--- linux-2.5.72/fs/open.c~vfs_intent_2.5.72_rev1 2003-06-16 22:19:40.000000000 -0600 ++++ linux-2.5.72-braam/fs/open.c 2003-06-25 05:30:42.000000000 -0600 +@@ -97,7 +97,7 @@ static inline long do_sys_truncate(const + struct nameidata nd; + struct inode * inode; + int error; +- ++ intent_init(&nd.it, IT_GETATTR, 0); + error = -EINVAL; + if (length < 0) /* sorry, but loff_t says... */ + goto out; +@@ -340,6 +340,7 @@ asmlinkage long sys_access(const char __ + int old_fsuid, old_fsgid; + kernel_cap_t old_cap; + int res; ++ intent_init(&nd.it, IT_GETATTR, 0); + + if (mode & ~S_IRWXO) /* where's F_OK, X_OK, W_OK, R_OK? */ + return -EINVAL; +@@ -371,6 +372,7 @@ asmlinkage long sys_access(const char __ + if(!res && (mode & S_IWOTH) && IS_RDONLY(nd.dentry->d_inode) + && !special_file(nd.dentry->d_inode->i_mode)) + res = -EROFS; ++ + path_release(&nd); + } + +@@ -385,6 +387,7 @@ asmlinkage long sys_chdir(const char __u + { + struct nameidata nd; + int error; ++ intent_init(&nd.it, IT_GETATTR, 0); + + error = __user_walk(filename, LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &nd); + if (error) +@@ -436,6 +439,7 @@ asmlinkage long sys_chroot(const char __ + { + struct nameidata nd; + int error; ++ intent_init(&nd.it, IT_GETATTR, 0); + + error = __user_walk(filename, LOOKUP_FOLLOW | LOOKUP_DIRECTORY | LOOKUP_NOALT, &nd); + if (error) +@@ -508,7 +512,7 @@ asmlinkage long sys_chmod(const char __u + error = -EROFS; + if (IS_RDONLY(inode)) + goto dput_and_out; +- ++ + error = -EPERM; + if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) + goto dput_and_out; +@@ -616,29 +620,13 @@ asmlinkage long sys_fchown(unsigned int + * for the internal routines (ie open_namei()/follow_link() etc). 00 is + * used by symlinks. + */ +-struct file *filp_open(const char * filename, int flags, int mode) +-{ +- int namei_flags, error; +- struct nameidata nd; +- +- namei_flags = flags; +- if ((namei_flags+1) & O_ACCMODE) +- namei_flags++; +- if (namei_flags & O_TRUNC) +- namei_flags |= 2; +- +- error = open_namei(filename, namei_flags, mode, &nd); +- if (!error) +- return dentry_open(nd.dentry, nd.mnt, flags); +- +- return ERR_PTR(error); +-} +- +-struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags) ++struct file *dentry_open_nd(struct nameidata *nd, int flags) + { + struct file * f; + struct inode *inode; + int error; ++ struct dentry *dentry = nd->dentry; ++ struct vfsmount *mnt = nd->mnt; + + error = -ENFILE; + f = get_empty_filp(); +@@ -646,6 +634,7 @@ struct file *dentry_open(struct dentry * + goto cleanup_dentry; + f->f_flags = flags; + f->f_mode = (flags+1) & O_ACCMODE; ++ f->f_it = &nd->it; + inode = dentry->d_inode; + if (f->f_mode & FMODE_WRITE) { + error = get_write_access(inode); +@@ -664,6 +653,7 @@ struct file *dentry_open(struct dentry * + error = f->f_op->open(inode,f); + if (error) + goto cleanup_all; ++ intent_release(nd); + } + f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC); + +@@ -675,7 +665,7 @@ struct file *dentry_open(struct dentry * + f = ERR_PTR(-EINVAL); + } + } +- ++ + return f; + + cleanup_all: +@@ -688,11 +678,44 @@ cleanup_all: + cleanup_file: + put_filp(f); + cleanup_dentry: ++ intent_release(nd); + dput(dentry); + mntput(mnt); + return ERR_PTR(error); + } + ++struct file *filp_open(const char * filename, int flags, int mode) ++{ ++ int namei_flags, error; ++ struct file * temp_filp; ++ struct nameidata nd; ++ intent_init(&nd.it, IT_OPEN, flags); ++ ++ namei_flags = flags; ++ if ((namei_flags+1) & O_ACCMODE) ++ namei_flags++; ++ if (namei_flags & O_TRUNC) ++ namei_flags |= 2; ++ ++ error = open_namei(filename, namei_flags, mode, &nd); ++ if (!error) { ++ temp_filp = dentry_open_nd(&nd, flags); ++ return temp_filp; ++ } ++ return ERR_PTR(error); ++} ++ ++ ++struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags) ++{ ++ struct nameidata nd; ++ nd.dentry = dentry; ++ nd.mnt = mnt; ++ intent_init(&nd.it, IT_LOOKUP, 0); ++ ++ return dentry_open_nd(&nd, flags); ++} ++ + /* + * Find an empty file descriptor entry, and mark it busy. + */ +--- linux-2.5.72/fs/stat.c~vfs_intent_2.5.72_rev1 2003-06-16 22:19:42.000000000 -0600 ++++ linux-2.5.72-braam/fs/stat.c 2003-06-25 05:30:42.000000000 -0600 +@@ -33,7 +33,7 @@ void generic_fillattr(struct inode *inod + stat->blksize = inode->i_blksize; + } + +-int vfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) ++int vfs_getattr_it(struct vfsmount *mnt, struct dentry *dentry, struct lookup_intent *it, struct kstat *stat) + { + struct inode *inode = dentry->d_inode; + int retval; +@@ -44,6 +44,8 @@ int vfs_getattr(struct vfsmount *mnt, st + + if (inode->i_op->getattr) + return inode->i_op->getattr(mnt, dentry, stat); ++ if (inode->i_op->getattr_it) ++ return inode->i_op->getattr_it(mnt, dentry, it, stat); + + generic_fillattr(inode, stat); + if (!stat->blksize) { +@@ -56,15 +58,21 @@ int vfs_getattr(struct vfsmount *mnt, st + return 0; + } + ++int vfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) ++{ ++ return vfs_getattr_it(mnt, dentry, NULL, stat); ++} ++ + int vfs_stat(char __user *name, struct kstat *stat) + { + struct nameidata nd; + int error; ++ intent_init(&nd.it, IT_GETATTR, 0); + +- error = user_path_walk(name, &nd); ++ error = user_path_walk_it(name, &nd); + if (!error) { +- error = vfs_getattr(nd.mnt, nd.dentry, stat); +- path_release(&nd); ++ error = vfs_getattr_it(nd.mnt, nd.dentry, &nd.it, stat); ++ path_release(&nd); + } + return error; + } +@@ -73,11 +81,12 @@ int vfs_lstat(char __user *name, struct + { + struct nameidata nd; + int error; ++ intent_init(&nd.it, IT_GETATTR, 0); + +- error = user_path_walk_link(name, &nd); ++ error = user_path_walk_link_it(name, &nd); + if (!error) { +- error = vfs_getattr(nd.mnt, nd.dentry, stat); +- path_release(&nd); ++ error = vfs_getattr_it(nd.mnt, nd.dentry, &nd.it, stat); ++ path_release(&nd); + } + return error; + } +@@ -86,9 +95,12 @@ int vfs_fstat(unsigned int fd, struct ks + { + struct file *f = fget(fd); + int error = -EBADF; ++ struct nameidata nd; ++ intent_init(&nd.it, IT_GETATTR, 0); + + if (f) { +- error = vfs_getattr(f->f_vfsmnt, f->f_dentry, stat); ++ error = vfs_getattr_it(f->f_vfsmnt, f->f_dentry, &nd.it, stat); ++ intent_release(&nd); + fput(f); + } + return error; +--- linux-2.5.72/include/linux/dcache.h~vfs_intent_2.5.72_rev1 2003-06-16 22:20:27.000000000 -0600 ++++ linux-2.5.72-braam/include/linux/dcache.h 2003-06-25 06:37:05.000000000 -0600 +@@ -4,6 +4,7 @@ + #ifdef __KERNEL__ + + #include ++#include + #include + #include + #include +@@ -12,6 +13,30 @@ + + struct vfsmount; + ++#define IT_OPEN (1) ++#define IT_CREAT (1<<1) ++#define IT_READDIR (1<<2) ++#define IT_GETATTR (1<<3) ++#define IT_LOOKUP (1<<4) ++#define IT_UNLINK (1<<5) ++#define IT_GETXATTR (1<<6) ++ ++struct nameidata; ++#define INTENT_MAGIC 0x19620323 ++struct lookup_intent { ++ int it_op; ++ int it_mode; ++ void (*it_op_release)(struct nameidata *); ++ int it_magic; ++ int it_flags; ++ int it_disposition; ++ int it_status; ++ struct iattr *it_iattr; ++ __u64 it_lock_handle[2]; ++ int it_lock_mode; ++ void *it_data; ++}; ++ + /* + * linux/include/linux/dcache.h + * +@@ -34,6 +59,8 @@ struct qstr { + char name_str[0]; + }; + ++#include ++ + struct dentry_stat_t { + int nr_dentry; + int nr_unused; +@@ -112,6 +139,7 @@ struct dentry_operations { + int (*d_delete)(struct dentry *); + void (*d_release)(struct dentry *); + void (*d_iput)(struct dentry *, struct inode *); ++ int (*d_revalidate_it)(struct dentry *, int, struct nameidata *); + }; + + /* the dentry parameter passed to d_hash and d_compare is the parent +@@ -152,6 +180,8 @@ d_iput: no no yes + + #define DCACHE_REFERENCED 0x0008 /* Recently used, don't discard. */ + #define DCACHE_UNHASHED 0x0010 ++#define DCACHE_LUSTRE_INVALID 0x0020 /* Lustre invalidated */ ++ + + extern spinlock_t dcache_lock; + +--- linux-2.5.72/include/linux/fs.h~vfs_intent_2.5.72_rev1 2003-06-16 22:19:46.000000000 -0600 ++++ linux-2.5.72-braam/include/linux/fs.h 2003-06-25 05:30:42.000000000 -0600 +@@ -237,6 +237,9 @@ typedef int (get_blocks_t)(struct inode + #define ATTR_ATTR_FLAG 1024 + #define ATTR_KILL_SUID 2048 + #define ATTR_KILL_SGID 4096 ++#define ATTR_RAW 8192 /* file system, not vfs will massage attrs */ ++#define ATTR_FROM_OPEN 16384 /* called from open path, ie O_TRUNC */ ++ + + /* + * This is the Inode Attributes structure, used for notify_change(). It +@@ -445,6 +448,7 @@ struct file { + /* Used by fs/eventpoll.c to link all the hooks to this file */ + struct list_head f_ep_links; + spinlock_t f_ep_lock; ++ struct lookup_intent *f_it; + }; + extern spinlock_t files_lock; + #define file_list_lock() spin_lock(&files_lock); +@@ -731,7 +735,10 @@ struct file_operations { + + struct inode_operations { + int (*create) (struct inode *,struct dentry *,int); ++ int (*create_it) (struct inode *,struct dentry *,int, struct nameidata *); + struct dentry * (*lookup) (struct inode *,struct dentry *); ++ struct dentry * (*lookup_it) (struct inode *,struct dentry *, ++ struct nameidata *); + int (*link) (struct dentry *,struct inode *,struct dentry *); + int (*unlink) (struct inode *,struct dentry *); + int (*symlink) (struct inode *,struct dentry *,const char *); +@@ -745,7 +752,9 @@ struct inode_operations { + void (*truncate) (struct inode *); + int (*permission) (struct inode *, int); + int (*setattr) (struct dentry *, struct iattr *); ++ int (*setattr_raw) (struct inode *, struct iattr *); + int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *); ++ int (*getattr_it) (struct vfsmount *, struct dentry *, struct lookup_intent *, struct kstat *); + int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); + ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); + ssize_t (*listxattr) (struct dentry *, char *, size_t); +@@ -958,6 +967,7 @@ extern int register_filesystem(struct fi + extern int unregister_filesystem(struct file_system_type *); + extern struct vfsmount *kern_mount(struct file_system_type *); + extern int may_umount(struct vfsmount *); ++struct vfsmount *do_kern_mount(const char *type, int flags, const char *name, void *data); + extern long do_mount(char *, char *, char *, unsigned long, void *); + + extern int vfs_statfs(struct super_block *, struct statfs *); +@@ -1025,6 +1035,7 @@ extern int do_truncate(struct dentry *, + + extern struct file *filp_open(const char *, int, int); + extern struct file * dentry_open(struct dentry *, struct vfsmount *, int); ++extern struct file * dentry_open_nd(struct nameidata *, int); + extern int filp_close(struct file *, fl_owner_t id); + extern char * getname(const char __user *); + +--- linux-2.5.72/include/linux/namei.h~vfs_intent_2.5.72_rev1 2003-06-16 22:19:47.000000000 -0600 ++++ linux-2.5.72-braam/include/linux/namei.h 2003-06-25 06:43:56.000000000 -0600 +@@ -11,6 +11,7 @@ struct nameidata { + struct qstr last; + unsigned int flags; + int last_type; ++ struct lookup_intent it; + }; + + /* +@@ -34,17 +35,24 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LA + + + extern int FASTCALL(__user_walk(const char __user *, unsigned, struct nameidata *)); ++extern int FASTCALL(__user_walk_it(const char __user *name, unsigned flags, struct nameidata *nd)); + #define user_path_walk(name,nd) \ + __user_walk(name, LOOKUP_FOLLOW, nd) + #define user_path_walk_link(name,nd) \ + __user_walk(name, 0, nd) ++#define user_path_walk_it(name,nd) \ ++ __user_walk_it(name, LOOKUP_FOLLOW, nd) ++#define user_path_walk_link_it(name,nd) \ ++ __user_walk_it(name, 0, nd) ++extern void intent_init(struct lookup_intent *it, int op, int flags); ++extern void intent_release(struct nameidata *); + extern int FASTCALL(path_lookup(const char *, unsigned, struct nameidata *)); + extern int FASTCALL(path_walk(const char *, struct nameidata *)); + extern int FASTCALL(link_path_walk(const char *, struct nameidata *)); + extern void path_release(struct nameidata *); + + extern struct dentry * lookup_one_len(const char *, struct dentry *, int); +-extern struct dentry * lookup_hash(struct qstr *, struct dentry *); ++extern struct dentry * lookup_hash(struct qstr *, struct dentry *, struct nameidata *); + + extern int follow_down(struct vfsmount **, struct dentry **); + extern int follow_up(struct vfsmount **, struct dentry **); +--- linux-2.5.72/kernel/ksyms.c~vfs_intent_2.5.72_rev1 2003-06-16 22:19:39.000000000 -0600 ++++ linux-2.5.72-braam/kernel/ksyms.c 2003-06-25 05:30:42.000000000 -0600 +@@ -375,6 +375,7 @@ EXPORT_SYMBOL(unregister_filesystem); + EXPORT_SYMBOL(kern_mount); + EXPORT_SYMBOL(__mntput); + EXPORT_SYMBOL(may_umount); ++EXPORT_SYMBOL(reparent_to_init); + + /* executable format registration */ + EXPORT_SYMBOL(register_binfmt); +@@ -404,6 +405,12 @@ EXPORT_SYMBOL(del_timer); + EXPORT_SYMBOL(request_irq); + EXPORT_SYMBOL(free_irq); + ++/* lustre */ ++EXPORT_SYMBOL(do_kern_mount); ++EXPORT_SYMBOL(exit_files); ++//EXPORT_SYMBOL(kmem_cache_validate); ++ ++ + /* waitqueue handling */ + EXPORT_SYMBOL(add_wait_queue); + EXPORT_SYMBOL(add_wait_queue_exclusive); +--- linux-2.5.72/net/unix/af_unix.c~vfs_intent_2.5.72_rev1 2003-06-16 22:20:06.000000000 -0600 ++++ linux-2.5.72-braam/net/unix/af_unix.c 2003-06-25 05:30:42.000000000 -0600 +@@ -704,7 +704,7 @@ static int unix_bind(struct socket *sock + /* + * Do the final lookup. + */ +- dentry = lookup_hash(&nd.last, nd.dentry); ++ dentry = lookup_hash(&nd.last, nd.dentry, NULL); + err = PTR_ERR(dentry); + if (IS_ERR(dentry)) + goto out_mknod_unlock; +--- linux-2.5.72/net/sunrpc/rpc_pipe.c~vfs_intent_2.5.72_rev1 2003-06-16 22:19:47.000000000 -0600 ++++ linux-2.5.72-braam/net/sunrpc/rpc_pipe.c 2003-06-25 05:30:42.000000000 -0600 +@@ -598,7 +598,7 @@ rpc_lookup_negative(char *path, struct n + return ERR_PTR(error); + dir = nd->dentry->d_inode; + down(&dir->i_sem); +- dentry = lookup_hash(&nd->last, nd->dentry); ++ dentry = lookup_hash(&nd->last, nd->dentry, NULL); + if (IS_ERR(dentry)) + goto out_err; + if (dentry->d_inode) { +@@ -660,7 +660,7 @@ rpc_rmdir(char *path) + return error; + dir = nd.dentry->d_inode; + down(&dir->i_sem); +- dentry = lookup_hash(&nd.last, nd.dentry); ++ dentry = lookup_hash(&nd.last, nd.dentry, NULL); + if (IS_ERR(dentry)) { + error = PTR_ERR(dentry); + goto out_release; +@@ -721,7 +721,7 @@ rpc_unlink(char *path) + return error; + dir = nd.dentry->d_inode; + down(&dir->i_sem); +- dentry = lookup_hash(&nd.last, nd.dentry); ++ dentry = lookup_hash(&nd.last, nd.dentry, NULL); + if (IS_ERR(dentry)) { + error = PTR_ERR(dentry); + goto out_release; + +_ diff --git a/lustre/kernel_patches/pc/iopen-2.5.73.pc b/lustre/kernel_patches/pc/iopen-2.5.73.pc new file mode 100644 index 0000000..b40b1f3 --- /dev/null +++ b/lustre/kernel_patches/pc/iopen-2.5.73.pc @@ -0,0 +1,8 @@ +Documentation/filesystems/ext2.txt +fs/ext3/Makefile +fs/ext3/inode.c +fs/ext3/iopen.c +fs/ext3/iopen.h +fs/ext3/namei.c +fs/ext3/super.c +include/linux/ext3_fs.h diff --git a/lustre/kernel_patches/pc/kgdb-ga-docco-fixes-2.5.73.pc b/lustre/kernel_patches/pc/kgdb-ga-docco-fixes-2.5.73.pc new file mode 100644 index 0000000..87e2eca --- /dev/null +++ b/lustre/kernel_patches/pc/kgdb-ga-docco-fixes-2.5.73.pc @@ -0,0 +1 @@ +Documentation/i386/kgdb/kgdb.txt diff --git a/lustre/kernel_patches/pc/lkcd-cvs-2.5.69.pc b/lustre/kernel_patches/pc/lkcd-cvs-2.5.69.pc new file mode 100644 index 0000000..2799a8e --- /dev/null +++ b/lustre/kernel_patches/pc/lkcd-cvs-2.5.69.pc @@ -0,0 +1,19 @@ +drivers/dump/Makefile +drivers/dump/dump_blockdev.c +drivers/dump/dump_execute.c +drivers/dump/dump_filters.c +drivers/dump/dump_fmt.c +drivers/dump/dump_gzip.c +drivers/dump/dump_i386.c +drivers/dump/dump_memdev.c +drivers/dump/dump_netdev.c +drivers/dump/dump_overlay.c +drivers/dump/dump_rle.c +drivers/dump/dump_scheme.c +drivers/dump/dump_setup.c +include/linux/dumpdev.h +include/linux/dump.h +include/linux/dump_netdev.h +include/asm-i386/dump.h +init/kerntypes.c +drivers/dump/dump_methods.h diff --git a/lustre/kernel_patches/pc/lkcd-kernel-changes-2.5.73.pc b/lustre/kernel_patches/pc/lkcd-kernel-changes-2.5.73.pc new file mode 100644 index 0000000..722bb20 --- /dev/null +++ b/lustre/kernel_patches/pc/lkcd-kernel-changes-2.5.73.pc @@ -0,0 +1,25 @@ +drivers/Makefile +include/linux/major.h +include/linux/sysctl.h +include/asm-i386/mach-default/irq_vectors.h +include/asm-i386/kmap_types.h +include/asm-i386/smp.h +arch/i386/kernel/i386_ksyms.c +arch/i386/kernel/nmi.c +arch/i386/kernel/setup.c +arch/i386/kernel/smp.c +arch/i386/kernel/traps.c +arch/i386/mm/init.c +arch/i386/boot/Makefile +arch/i386/Kconfig +arch/s390/boot/Makefile +arch/s390/boot/install.sh +scripts/mkcompile_h +kernel/ksyms.c +kernel/panic.c +kernel/sched.c +lib/Kconfig +mm/page_alloc.c +init/Makefile +init/main.c +init/version.c diff --git a/lustre/kernel_patches/series/kgdb-2.5.73 b/lustre/kernel_patches/series/kgdb-2.5.73 new file mode 100644 index 0000000..2d18f29 --- /dev/null +++ b/lustre/kernel_patches/series/kgdb-2.5.73 @@ -0,0 +1,14 @@ +lkcd-cvs-2.5.69.patch +lkcd-kernel-changes-2.5.73.patch +kgdb-ga-2.5.73.patch +kgdb-use-ggdb-2.5.73.patch +kgdb-ga-docco-fixes-2.5.73.patch +lustre_build.patch +lustre_version.patch +vfs_intent_2.5.72_rev1.patch +vfs_nointent_2.5.69_rev1.patch +vfs_races_2.5.72_rev1.patch +vfs_mntcwd_2.5.72_rev1.patch +ext3-san-jdike-2.5.73.patch +iopen-2.5.73.patch +export-truncate-2.5.63.patch diff --git a/lustre/kernel_patches/txt/lkcd-kernel-changes-2.5.73.txt b/lustre/kernel_patches/txt/lkcd-kernel-changes-2.5.73.txt new file mode 100644 index 0000000..aa1bf42 --- /dev/null +++ b/lustre/kernel_patches/txt/lkcd-kernel-changes-2.5.73.txt @@ -0,0 +1,4 @@ +DESC +the other part of lkcd's cvs tree, as mentioned in lkcd-cvs*.txt, is a +patch to the core kernel. +EDESC diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index 9f7c6fa..3ddbf12 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -291,7 +292,7 @@ out_free: goto out_dev; } /* ll_read_super */ -int ll_statfs(struct super_block *sb, struct statfs *sfs) +int ll_statfs(struct super_block *sb, struct kstatfs *sfs) { struct ll_sb_info *sbi = ll_s2sbi(sb); struct obd_statfs osfs; -- 1.8.3.1