update from b1_4.
+ */
+
+ /*if (ac.ac_found > ext3_mb_max_to_scan)
-+ printk(KERN_ERR "EXT3-fs: too long searching at "
++ printk(KERN_DEBUG "EXT3-fs: too long searching at "
+ "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len,
+ ac.ac_g_ex.fe_len);*/
+ ext3_mb_try_best_found(&ac, &e3b);
+ * Someone more lucky has already allocated it.
+ * The only thing we can do is just take first
+ * found block(s)
++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n");
+ */
-+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n");
+ ac.ac_b_ex.fe_group = 0;
+ ac.ac_b_ex.fe_start = 0;
+ ac.ac_b_ex.fe_len = 0;
+ *errp = -ENOSPC;
+ block = 0;
+#if 1
-+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n",
++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n",
+ ac.ac_status, ac.ac_flags);
-+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n",
++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n",
+ ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group,
+ ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr);
+ printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n",
+
+ sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL);
+ if (sbi->s_group_info[i] == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n");
++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n");
+ goto err_out;
+ }
+ desc = ext3_get_group_desc(sb, i, NULL);
+ if (desc == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i);
++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i);
+ goto err_out;
+ }
+ memset(sbi->s_group_info[i], 0, len);
+ char str[32];
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_STATS_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+
+ proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs);
+ if (proc_root_ext3 == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n", EXT3_ROOT);
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT);
+ return -EIO;
+ }
+
+ proc_ext3_mb_stats = create_proc_entry(EXT3_MB_STATS_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_stats == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_STATS_NAME);
+ remove_proc_entry(EXT3_ROOT, proc_root_fs);
+ return -EIO;
+ EXT3_MB_MAX_TO_SCAN_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_max_to_scan == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_MAX_TO_SCAN_NAME);
+ remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3);
+ remove_proc_entry(EXT3_ROOT, proc_root_fs);
+ EXT3_MB_MIN_TO_SCAN_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_min_to_scan == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_MIN_TO_SCAN_NAME);
+ remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, proc_root_ext3);
+ remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3);
+ */
+
+ /*if (ac.ac_found > ext3_mb_max_to_scan)
-+ printk(KERN_ERR "EXT3-fs: too long searching at "
++ printk(KERN_DEBUG "EXT3-fs: too long searching at "
+ "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len,
+ ac.ac_g_ex.fe_len);*/
+ ext3_mb_try_best_found(&ac, &e3b);
+ * Someone more lucky has already allocated it.
+ * The only thing we can do is just take first
+ * found block(s)
++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n");
+ */
-+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n");
+ ac.ac_b_ex.fe_group = 0;
+ ac.ac_b_ex.fe_start = 0;
+ ac.ac_b_ex.fe_len = 0;
+ *errp = -ENOSPC;
+ block = 0;
+#if 1
-+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n",
++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n",
+ ac.ac_status, ac.ac_flags);
-+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n",
++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n",
+ ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group,
+ ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr);
+ printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n",
+
+ sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL);
+ if (sbi->s_group_info[i] == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n");
++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n");
+ goto err_out;
+ }
+ desc = ext3_get_group_desc(sb, i, NULL);
+ if (desc == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i);
++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i);
+ goto err_out;
+ }
+ memset(sbi->s_group_info[i], 0, len);
+ char str[32];
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_STATS_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+
+ proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs);
+ if (proc_root_ext3 == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n", EXT3_ROOT);
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT);
+ return -EIO;
+ }
+
+ proc_ext3_mb_stats = create_proc_entry(EXT3_MB_STATS_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_stats == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_STATS_NAME);
+ remove_proc_entry(EXT3_ROOT, proc_root_fs);
+ return -EIO;
+ EXT3_MB_MAX_TO_SCAN_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_max_to_scan == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_MAX_TO_SCAN_NAME);
+ remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3);
+ remove_proc_entry(EXT3_ROOT, proc_root_fs);
+ EXT3_MB_MIN_TO_SCAN_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_min_to_scan == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_MIN_TO_SCAN_NAME);
+ remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, proc_root_ext3);
+ remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3);
+ */
+
+ /*if (ac.ac_found > ext3_mb_max_to_scan)
-+ printk(KERN_ERR "EXT3-fs: too long searching at "
++ printk(KERN_DEBUG "EXT3-fs: too long searching at "
+ "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len,
+ ac.ac_g_ex.fe_len);*/
+ ext3_mb_try_best_found(&ac, &e3b);
+ * Someone more lucky has already allocated it.
+ * The only thing we can do is just take first
+ * found block(s)
++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n");
+ */
-+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n");
+ ac.ac_b_ex.fe_group = 0;
+ ac.ac_b_ex.fe_start = 0;
+ ac.ac_b_ex.fe_len = 0;
+ *errp = -ENOSPC;
+ block = 0;
+#if 1
-+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n",
++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n",
+ ac.ac_status, ac.ac_flags);
-+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n",
++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n",
+ ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group,
+ ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr);
+ printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n",
+
+ sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL);
+ if (sbi->s_group_info[i] == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n");
++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n");
+ goto err_out;
+ }
+ desc = ext3_get_group_desc(sb, i, NULL);
+ if (desc == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i);
++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i);
+ goto err_out;
+ }
+ memset(sbi->s_group_info[i], 0, len);
+ char str[32];
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_STATS_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3: %s string too long, max %u bytes\n",
+ EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
code, and ensure that only a single connection will be processed
for a given client UUID, even if the lock is dropped.
+Severity : enhancement
+Bugzilla : 3627
+Description: add TCP zero-copy support to kernel
+Details : Add support to the kernel TCP stack to allow zero-copy bulk
+ sends if the hardware supports scatter-gather and checksumming.
+ This allows socklnd to do client-write and server-read more
+ efficiently and reduce CPU utilization from skbuf copying.
+
+Severity : minor
+Frequency : only if NFS exporting from client
+Bugzilla : 10258
+Description: NULL pointer deref in ll_iocontrol() if chattr mknod file
+Details : If setting attributes on a file created under NFS that had
+ never been opened it would be possible to oops the client
+ if the file had no objects.
+
+Severity : minor
+Frequency : always for liblustre
+Bugzilla : 10290
+Description: liblustre client does MDS+OSTs setattr RPC for each write
+Details : When doing a write from a liblustre client, the client
+ incorrectly issued an RPC to the MDS and each OST the file was
+ striped over in order to update the timestamps. When writing
+ with small chunks and many clients this could overwhelm the MDS
+ with RPCs. In all cases it would slow down the write because
+ these RPCs are unnecessary.
+
------------------------------------------------------------------------------
02-14-2006 Cluster File Systems, Inc. <info@clusterfs.com>
RETURN(rc);
}
-static inline int obd_connect(struct lustre_handle *conn, struct obd_device *obd,
+static inline int obd_connect(struct lustre_handle *conn,struct obd_device *obd,
struct obd_uuid *cluuid,
struct obd_connect_data *d)
{
ENTRY;
OBD_CHECK_DEV(obd);
if (!obd->obd_set_up) {
- CERROR("obd %s not set up\n", obd->obd_name);
+ CDEBUG(D_HA, "obd %s not set up\n", obd->obd_name);
RETURN(-EINVAL);
}
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet
-# Thu Oct 27 17:02:11 2005
+# Sat Mar 11 23:36:27 2006
#
CONFIG_X86=y
CONFIG_MMU=y
# Firmware Drivers
#
CONFIG_EDD=m
+CONFIG_DELL_RBU=m
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SAS_CLASS=m
+# CONFIG_SAS_DEBUG is not set
#
# SCSI low-level drivers
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
CONFIG_AIC7XXX_DEBUG_MASK=0
# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+# CONFIG_SCSI_AIC94XX is not set
CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_AIC79XX=m
CONFIG_AIC79XX_CMDS_PER_DEVICE=4
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_SAS=m
CONFIG_SCSI_SATA=y
CONFIG_SCSI_SATA_AHCI=m
CONFIG_SCSI_SATA_SVW=m
#
# Fusion MPT device support
#
-CONFIG_FUSION=m
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=m
+CONFIG_FUSION_FC=m
+CONFIG_FUSION_SAS=m
CONFIG_FUSION_MAX_SGE=40
CONFIG_FUSION_CTL=m
CONFIG_FUSION_LAN=m
+CONFIG_FUSION_OLD_MODULE_COMPAT=m
#
# IEEE 1394 (FireWire) support
# CONFIG_YELLOWFIN is not set
CONFIG_R8169=m
CONFIG_R8169_NAPI=y
+CONFIG_SKY2=m
CONFIG_SK98LIN=m
CONFIG_VIA_VELOCITY=m
CONFIG_TIGON3=m
+CONFIG_BNX2=m
#
# Ethernet (10000 Mbit)
# Active AVM cards
#
CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_T1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
#
# Active Eicon DIVA Server cards
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_CRASH=m
# CONFIG_USB_GADGET is not set
#
+# InfiniBand support
+#
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_MTHCA=m
+# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
+CONFIG_INFINIBAND_IPOIB=m
+# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
+CONFIG_INFINIBAND_SDP=m
+# CONFIG_INFINIBAND_SDP_DEBUG is not set
+CONFIG_INFINIBAND_SRP=m
+
+#
+# EDAC - error detection and reporting (RAS)
+#
+CONFIG_EDAC=m
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD76X=m
+CONFIG_EDAC_E7XXX=m
+CONFIG_EDAC_E752X=m
+CONFIG_EDAC_I82875P=m
+CONFIG_EDAC_I82860=m
+CONFIG_EDAC_R82600=m
+CONFIG_EDAC_POLL=y
+
+#
# File systems
#
CONFIG_EXT2_FS=y
#
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_DEBUG_HIGHMEM=y
-# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_INFO=y
# CONFIG_FRAME_POINTER is not set
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet
-# Thu Oct 27 17:01:23 2005
+# Sat Mar 11 23:44:45 2006
#
CONFIG_X86=y
CONFIG_MMU=y
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
+CONFIG_BROKEN_ON_SMP=y
#
# General setup
CONFIG_MODULE_SIG=y
# CONFIG_MODULE_SIG_FORCE is not set
CONFIG_KMOD=y
-CONFIG_STOP_MACHINE=y
#
# Processor type and features
#
-CONFIG_MEM_MIRROR=y
-# CONFIG_X86_PC is not set
+CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# 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=y
+# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
-CONFIG_X86_CYCLONE_TIMER=y
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_X86_HIGH_ENTRY is not set
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
-CONFIG_SMP=y
-CONFIG_NR_CPUS=32
-CONFIG_SCHED_SMT=y
+# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set
CONFIG_PREEMPT_VOLUNTARY=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
+# CONFIG_X86_UP_APIC is not set
CONFIG_X86_TSC=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_NONFATAL is not set
-CONFIG_X86_MCE_P4THERMAL=y
CONFIG_TOSHIBA=m
CONFIG_I8K=m
CONFIG_MICROCODE=m
# Firmware Drivers
#
CONFIG_EDD=m
+CONFIG_DELL_RBU=m
# CONFIG_NOHIGHMEM is not set
-# CONFIG_HIGHMEM4G is not set
-CONFIG_HIGHMEM64G=y
+CONFIG_HIGHMEM4G=y
+# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
-CONFIG_X86_PAE=y
-# CONFIG_NUMA is not set
CONFIG_HIGHPTE=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
-# CONFIG_IRQBALANCE is not set
-CONFIG_HAVE_DEC_LOCK=y
CONFIG_REGPARM=y
CONFIG_IOPROC=y
CONFIG_PTRACK=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_MSI=y
CONFIG_PCI_LEGACY_PROC=y
# CONFIG_PCI_NAMES is not set
CONFIG_ISA=y
# CONFIG_HOTPLUG_PCI_FAKE is not set
CONFIG_HOTPLUG_PCI_COMPAQ=m
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-CONFIG_HOTPLUG_PCI_IBM=m
CONFIG_HOTPLUG_PCI_ACPI=m
CONFIG_HOTPLUG_PCI_ACPI_IBM=m
# CONFIG_HOTPLUG_PCI_CPCI is not set
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SAS_CLASS=m
+# CONFIG_SAS_DEBUG is not set
#
# SCSI low-level drivers
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
CONFIG_AIC7XXX_DEBUG_MASK=0
# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+# CONFIG_SCSI_AIC94XX is not set
CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_AIC79XX=m
CONFIG_AIC79XX_CMDS_PER_DEVICE=4
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_SAS=m
CONFIG_SCSI_SATA=y
CONFIG_SCSI_SATA_AHCI=m
CONFIG_SCSI_SATA_SVW=m
#
# Fusion MPT device support
#
-CONFIG_FUSION=m
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=m
+CONFIG_FUSION_FC=m
+CONFIG_FUSION_SAS=m
CONFIG_FUSION_MAX_SGE=40
CONFIG_FUSION_CTL=m
CONFIG_FUSION_LAN=m
+CONFIG_FUSION_OLD_MODULE_COMPAT=m
#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
# CONFIG_IEEE1394_OUI_DB is not set
-# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
+CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
+CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
#
# Device Drivers
#
CONFIG_IEEE1394_PCILYNX=m
-CONFIG_IEEE1394_OHCI1394=y
+CONFIG_IEEE1394_OHCI1394=m
#
# Protocol Drivers
# CONFIG_ULTRA is not set
CONFIG_SMC9194=m
CONFIG_NET_VENDOR_RACAL=y
+# CONFIG_NI5010 is not set
# CONFIG_NI52 is not set
# CONFIG_NI65 is not set
CONFIG_WINBOND_840=m
CONFIG_DM9102=m
CONFIG_PCMCIA_XIRCOM=m
+# CONFIG_PCMCIA_XIRTULIP is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
CONFIG_HP100=m
# CONFIG_YELLOWFIN is not set
CONFIG_R8169=m
CONFIG_R8169_NAPI=y
+CONFIG_SKY2=m
CONFIG_SK98LIN=m
CONFIG_VIA_VELOCITY=m
CONFIG_TIGON3=m
+CONFIG_BNX2=m
#
# Ethernet (10000 Mbit)
#
# ISDN feature submodules
#
+CONFIG_ISDN_DRV_LOOP=m
#
# ISDN4Linux hardware drivers
CONFIG_ISDN_DRV_SC=m
CONFIG_ISDN_DRV_ACT2000=m
CONFIG_ISDN_DRV_TPAM=m
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
#
# CAPI subsystem
# Active AVM cards
#
CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_T1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
#
# Active Eicon DIVA Server cards
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
# CONFIG_ROCKETPORT is not set
# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_DIGI is not set
+# CONFIG_ESPSERIAL is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_ISI is not set
CONFIG_SYNCLINK=m
CONFIG_SYNCLINKMP=m
CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
CONFIG_STALDRV=y
+# CONFIG_STALLION is not set
+# CONFIG_ISTALLION is not set
#
# Serial drivers
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_CRASH=m
#
# Ftape, the floppy tape device driver
#
+# CONFIG_FTAPE is not set
CONFIG_AGP=y
CONFIG_AGP_ALI=y
CONFIG_AGP_ATI=y
CONFIG_I2C_ALI15X3=m
CONFIG_I2C_AMD756=m
CONFIG_I2C_AMD8111=m
+# CONFIG_I2C_ELEKTOR is not set
CONFIG_I2C_I801=m
CONFIG_I2C_I810=m
CONFIG_I2C_ISA=m
# CONFIG_TUNER_3036 is not set
# CONFIG_VIDEO_STRADIS is not set
# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_SAA7134 is not set
# CONFIG_VIDEO_MXB is not set
# CONFIG_VIDEO_DPC is not set
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
# CONFIG_USB_GADGET is not set
#
+# InfiniBand support
+#
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_MTHCA=m
+# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
+CONFIG_INFINIBAND_IPOIB=m
+# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
+CONFIG_INFINIBAND_SDP=m
+# CONFIG_INFINIBAND_SDP_DEBUG is not set
+CONFIG_INFINIBAND_SRP=m
+
+#
+# EDAC - error detection and reporting (RAS)
+#
+CONFIG_EDAC=m
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD76X=m
+CONFIG_EDAC_E7XXX=m
+CONFIG_EDAC_E752X=m
+CONFIG_EDAC_I82875P=m
+CONFIG_EDAC_I82860=m
+CONFIG_EDAC_R82600=m
+CONFIG_EDAC_POLL=y
+
+#
# File systems
#
CONFIG_EXT2_FS=y
#
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_DEBUG_HIGHMEM=y
-# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_INFO=y
# CONFIG_FRAME_POINTER is not set
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_4KSTACKS is not set
# CONFIG_SCHEDSTATS is not set
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
#
# Security options
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
CONFIG_PC=y
--- /dev/null
+Index: linux-2.6.3/fs/jbd/journal.c
+===================================================================
+--- linux-2.6.3.orig/fs/jbd/journal.c 2004-01-08 22:59:10.000000000 -0800
++++ linux-2.6.3/fs/jbd/journal.c 2004-02-23 20:09:34.000000000 -0800
+@@ -71,6 +71,7 @@
+ EXPORT_SYMBOL(journal_errno);
+ EXPORT_SYMBOL(journal_ack_err);
+ EXPORT_SYMBOL(journal_clear_err);
++EXPORT_SYMBOL(log_start_commit);
+ EXPORT_SYMBOL(log_wait_commit);
+ EXPORT_SYMBOL(journal_start_commit);
+ EXPORT_SYMBOL(journal_wipe);
/*
* second extended-fs super-block data in memory
*/
-Index: linux-2.6.9-5.0.3.EL/kernel/kallsyms.c
-===================================================================
---- linux-2.6.9-5.0.3.EL.orig/kernel/kallsyms.c 2005-02-26 13:24:35.479811840 +0200
-+++ linux-2.6.9-5.0.3.EL/kernel/kallsyms.c 2005-02-26 13:53:13.799587528 +0200
-@@ -310,3 +310,4 @@
- __initcall(kallsyms_init);
-
- EXPORT_SYMBOL(__print_symbol);
-+EXPORT_SYMBOL(kernel_text_address);
Index: linux-2.6.9-5.0.3.EL/net/core/sock.c
===================================================================
--- linux-2.6.9-5.0.3.EL.orig/net/core/sock.c 2005-02-26 13:24:35.490810168 +0200
static inline void __put_fs_struct(struct fs_struct *fs)
{
/* No need to hold fs->lock if we are killing it */
-Index: linux-2.6.4-51.0/kernel/kallsyms.c
-===================================================================
---- linux-2.6.4-51.0.orig/kernel/kallsyms.c 2004-04-05 12:42:08.000000000 -0400
-+++ linux-2.6.4-51.0/kernel/kallsyms.c 2004-04-15 15:00:56.000000000 -0400
-@@ -329,3 +329,4 @@
-
- EXPORT_SYMBOL(kallsyms_lookup);
- EXPORT_SYMBOL(__print_symbol);
-+EXPORT_SYMBOL(kernel_text_address);
+ */
+
+ /*if (ac.ac_found > ext3_mb_max_to_scan)
-+ printk(KERN_ERR "EXT3-fs: too long searching at "
++ printk(KERN_DEBUG "EXT3-fs: too long searching at "
+ "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len,
+ ac.ac_g_ex.fe_len);*/
+ ext3_mb_try_best_found(&ac, &e3b);
+ * Someone more lucky has already allocated it.
+ * The only thing we can do is just take first
+ * found block(s)
++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n");
+ */
-+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n");
+ ac.ac_b_ex.fe_group = 0;
+ ac.ac_b_ex.fe_start = 0;
+ ac.ac_b_ex.fe_len = 0;
+ *errp = -ENOSPC;
+ block = 0;
+#if 1
-+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n",
++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n",
+ ac.ac_status, ac.ac_flags);
-+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n",
++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n",
+ ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group,
+ ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr);
+ printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n",
+
+ sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL);
+ if (sbi->s_group_info[i] == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n");
++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n");
+ goto err_out;
+ }
+ desc = ext3_get_group_desc(sb, i, NULL);
+ if (desc == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i);
++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i);
+ goto err_out;
+ }
+ memset(sbi->s_group_info[i], 0, len);
+ char str[32];
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_STATS_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+
+ proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs);
+ if (proc_root_ext3 == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n", EXT3_ROOT);
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT);
+ return -EIO;
+ }
+
+ proc_ext3_mb_stats = create_proc_entry(EXT3_MB_STATS_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_stats == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_STATS_NAME);
+ remove_proc_entry(EXT3_ROOT, proc_root_fs);
+ return -EIO;
+ EXT3_MB_MAX_TO_SCAN_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_max_to_scan == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_MAX_TO_SCAN_NAME);
+ remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3);
+ remove_proc_entry(EXT3_ROOT, proc_root_fs);
+ EXT3_MB_MIN_TO_SCAN_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_min_to_scan == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_MIN_TO_SCAN_NAME);
+ remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, proc_root_ext3);
+ remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3);
+ */
+
+ /*if (ac.ac_found > ext3_mb_max_to_scan)
-+ printk(KERN_ERR "EXT3-fs: too long searching at "
++ printk(KERN_DEBUG "EXT3-fs: too long searching at "
+ "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len,
+ ac.ac_g_ex.fe_len);*/
+ ext3_mb_try_best_found(&ac, &e3b);
+ * Someone more lucky has already allocated it.
+ * The only thing we can do is just take first
+ * found block(s)
++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n");
+ */
-+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n");
+ ac.ac_b_ex.fe_group = 0;
+ ac.ac_b_ex.fe_start = 0;
+ ac.ac_b_ex.fe_len = 0;
+ *errp = -ENOSPC;
+ block = 0;
+#if 1
-+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n",
++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n",
+ ac.ac_status, ac.ac_flags);
-+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n",
++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n",
+ ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group,
+ ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr);
+ printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n",
+
+ sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL);
+ if (sbi->s_group_info[i] == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n");
++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n");
+ goto err_out;
+ }
+ desc = ext3_get_group_desc(sb, i, NULL);
+ if (desc == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i);
++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i);
+ goto err_out;
+ }
+ memset(sbi->s_group_info[i], 0, len);
+ char str[32];
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_STATS_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+
+ proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs);
+ if (proc_root_ext3 == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n", EXT3_ROOT);
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT);
+ return -EIO;
+ }
+
+ proc_ext3_mb_stats = create_proc_entry(EXT3_MB_STATS_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_stats == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_STATS_NAME);
+ remove_proc_entry(EXT3_ROOT, proc_root_fs);
+ return -EIO;
+ EXT3_MB_MAX_TO_SCAN_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_max_to_scan == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_MAX_TO_SCAN_NAME);
+ remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3);
+ remove_proc_entry(EXT3_ROOT, proc_root_fs);
+ EXT3_MB_MIN_TO_SCAN_NAME,
+ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3);
+ if (proc_ext3_mb_min_to_scan == NULL) {
-+ printk(KERN_ERR "EXT3: Unable to create %s\n",
++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n",
+ EXT3_MB_MIN_TO_SCAN_NAME);
+ remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, proc_root_ext3);
+ remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3);
+ */
+
+ /*if (ac.ac_found > ext3_mb_max_to_scan)
-+ printk(KERN_ERR "EXT3-fs: too long searching at "
++ printk(KERN_DEBUG "EXT3-fs: too long searching at "
+ "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len,
+ ac.ac_g_ex.fe_len);*/
+ ext3_mb_try_best_found(&ac, &e3b);
+ * Someone more lucky has already allocated it.
+ * The only thing we can do is just take first
+ * found block(s)
++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n");
+ */
-+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n");
+ ac.ac_b_ex.fe_group = 0;
+ ac.ac_b_ex.fe_start = 0;
+ ac.ac_b_ex.fe_len = 0;
+ *errp = -ENOSPC;
+ block = 0;
+#if 1
-+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n",
++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n",
+ ac.ac_status, ac.ac_flags);
-+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n",
++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n",
+ ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group,
+ ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr);
+ printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n",
+
+ sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL);
+ if (sbi->s_group_info[i] == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n");
++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n");
+ goto err_out;
+ }
+ desc = ext3_get_group_desc(sb, i, NULL);
+ if (desc == NULL) {
-+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i);
++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i);
+ goto err_out;
+ }
+ memset(sbi->s_group_info[i], 0, len);
+ char str[32];
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_STATS_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n",
+ EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
+ long value;
+
+ if (count >= sizeof(str)) {
-+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n",
++ printk(KERN_ERR "EXT3: %s string too long, max %u bytes\n",
+ EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str));
+ return -EOVERFLOW;
+ }
-Index: linux-2.6.9-5.0.3.EL/fs/nfs/dir.c
-===================================================================
---- linux-2.6.9-5.0.3.EL.orig/fs/nfs/dir.c 2005-02-25 13:43:42.454529040 +0200
-+++ linux-2.6.9-5.0.3.EL/fs/nfs/dir.c 2005-02-25 13:46:04.832884240 +0200
-@@ -791,7 +791,7 @@
+diff -urp a/fs/cifs/dir.c b/fs/cifs/dir.c
+--- a/fs/cifs/dir.c 2006-03-10 18:50:15.000000000 -0800
++++ b/fs/cifs/dir.c 2006-03-10 18:50:44.000000000 -0800
+@@ -146,23 +146,23 @@ cifs_create(struct inode *inode, struct
+ }
+
+ if(nd) {
+- if ((nd->intent.open.flags & O_ACCMODE) == O_RDONLY)
++ if ((nd->intent.it_flags & O_ACCMODE) == O_RDONLY)
+ desiredAccess = GENERIC_READ;
+- else if ((nd->intent.open.flags & O_ACCMODE) == O_WRONLY) {
++ else if ((nd->intent.it_flags & O_ACCMODE) == O_WRONLY) {
+ desiredAccess = GENERIC_WRITE;
+ write_only = TRUE;
+- } else if ((nd->intent.open.flags & O_ACCMODE) == O_RDWR) {
++ } else if ((nd->intent.it_flags & O_ACCMODE) == O_RDWR) {
+ /* GENERIC_ALL is too much permission to request */
+ /* can cause unnecessary access denied on create */
+ /* desiredAccess = GENERIC_ALL; */
+ desiredAccess = GENERIC_READ | GENERIC_WRITE;
+ }
+
+- if((nd->intent.open.flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))
++ if((nd->intent.it_flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))
+ disposition = FILE_CREATE;
+- else if((nd->intent.open.flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC))
++ else if((nd->intent.it_flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC))
+ disposition = FILE_OVERWRITE_IF;
+- else if((nd->intent.open.flags & O_CREAT) == O_CREAT)
++ else if((nd->intent.it_flags & O_CREAT) == O_CREAT)
+ disposition = FILE_OPEN_IF;
+ else {
+ cFYI(1,("Create flag not set in create function"));
+diff -urp a/fs/nfs/dir.c b/fs/nfs/dir.c
+--- a/fs/nfs/dir.c 2006-03-10 19:07:50.000000000 -0800
++++ b/fs/nfs/dir.c 2006-03-10 17:27:15.000000000 -0800
+@@ -752,7 +752,7 @@ int nfs_is_exclusive_create(struct inode
+ return 0;
+ if (!nd || (nd->flags & LOOKUP_CONTINUE) || !(nd->flags & LOOKUP_CREATE))
+ return 0;
+- return (nd->intent.open.flags & O_EXCL) != 0;
++ return (nd->intent.it_flags & O_EXCL) != 0;
+ }
+
+ static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd)
+@@ -827,7 +827,7 @@ static int is_atomic_open(struct inode *
if (nd->flags & LOOKUP_DIRECTORY)
return 0;
/* Are we trying to write to a read only partition? */
return 0;
return 1;
}
-@@ -812,7 +812,7 @@
+@@ -848,7 +848,7 @@ static struct dentry *nfs_atomic_lookup(
dentry->d_op = NFS_PROTO(dir)->dentry_ops;
/* Let vfs_create() deal with O_EXCL */
goto no_entry;
/* Open the file on the server */
-@@ -820,7 +820,7 @@
- /* Revalidate parent directory attribute cache */
- nfs_revalidate_inode(NFS_SERVER(dir), dir);
+@@ -860,7 +860,7 @@ static struct dentry *nfs_atomic_lookup(
+ goto out;
+ }
- if (nd->intent.open.flags & O_CREAT) {
+ if (nd->intent.it_flags & O_CREAT) {
nfs_begin_data_update(dir);
inode = nfs4_atomic_open(dir, dentry, nd);
nfs_end_data_update(dir);
-@@ -836,7 +836,7 @@
+@@ -876,7 +876,7 @@ static struct dentry *nfs_atomic_lookup(
break;
/* This turned out not to be a regular file */
case -ELOOP:
goto no_open;
/* case -EISDIR: */
/* case -EINVAL: */
-@@ -875,7 +875,7 @@
+@@ -915,7 +915,7 @@ static int nfs_open_revalidate(struct de
/* NFS only supports OPEN on regular files */
if (!S_ISREG(inode->i_mode))
goto no_open;
/* We cannot do exclusive creation on a positive dentry */
if ((openflags & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL))
goto no_open;
-Index: linux-2.6.9-5.0.3.EL/fs/nfs/nfs4proc.c
-===================================================================
---- linux-2.6.9-5.0.3.EL.orig/fs/nfs/nfs4proc.c 2004-10-19 00:54:40.000000000 +0300
-+++ linux-2.6.9-5.0.3.EL/fs/nfs/nfs4proc.c 2005-02-25 13:44:27.537675360 +0200
-@@ -775,17 +775,17 @@
+@@ -1080,7 +1080,7 @@ static int nfs_create(struct inode *dir,
+ attr.ia_valid = ATTR_MODE;
+
+ if (nd && (nd->flags & LOOKUP_CREATE))
+- open_flags = nd->intent.open.flags;
++ open_flags = nd->intent.it_flags;
+
+ /*
+ * The 0 argument passed into the create function should one day
+diff -urp a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
+--- a/fs/nfs/nfs4proc.c 2006-03-10 17:19:45.000000000 -0800
++++ b/fs/nfs/nfs4proc.c 2006-03-10 17:19:58.000000000 -0800
+@@ -776,17 +776,17 @@ nfs4_atomic_open(struct inode *dir, stru
struct nfs4_state *state;
if (nd->flags & LOOKUP_CREATE) {
put_rpccred(cred);
if (IS_ERR(state))
return (struct inode *)state;
-Index: linux-2.6.9-5.0.3.EL/fs/cifs/dir.c
-===================================================================
---- linux-2.6.9-5.0.3.EL.orig/fs/cifs/dir.c 2004-10-19 00:54:37.000000000 +0300
-+++ linux-2.6.9-5.0.3.EL/fs/cifs/dir.c 2005-02-25 13:44:27.539675056 +0200
-@@ -199,23 +199,23 @@
- }
-
- if(nd) {
-- if ((nd->intent.open.flags & O_ACCMODE) == O_RDONLY)
-+ if ((nd->intent.it_flags & O_ACCMODE) == O_RDONLY)
- desiredAccess = GENERIC_READ;
-- else if ((nd->intent.open.flags & O_ACCMODE) == O_WRONLY) {
-+ else if ((nd->intent.it_flags & O_ACCMODE) == O_WRONLY) {
- desiredAccess = GENERIC_WRITE;
- write_only = TRUE;
-- } else if ((nd->intent.open.flags & O_ACCMODE) == O_RDWR) {
-+ } else if ((nd->intent.it_flags & O_ACCMODE) == O_RDWR) {
- /* GENERIC_ALL is too much permission to request */
- /* can cause unnecessary access denied on create */
- /* desiredAccess = GENERIC_ALL; */
- desiredAccess = GENERIC_READ | GENERIC_WRITE;
- }
-
-- if((nd->intent.open.flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))
-+ if((nd->intent.it_flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))
- disposition = FILE_CREATE;
-- else if((nd->intent.open.flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC))
-+ else if((nd->intent.it_flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC))
- disposition = FILE_OVERWRITE_IF;
-- else if((nd->intent.open.flags & O_CREAT) == O_CREAT)
-+ else if((nd->intent.it_flags & O_CREAT) == O_CREAT)
- disposition = FILE_OPEN_IF;
- else {
- cFYI(1,("Create flag not set in create function"));
-@@ -400,7 +400,7 @@
- parent_dir_inode, direntry->d_name.name, direntry));
-
- if(nd) { /* BB removeme */
-- cFYI(1,("In lookup nd flags 0x%x open intent flags 0x%x",nd->flags,nd->intent.open.flags));
-+ cFYI(1,("In lookup nd flags 0x%x open intent flags 0x%x",nd->flags,nd->intent.it_flags));
- } /* BB removeme BB */
- /* BB Add check of incoming data - e.g. frame not longer than maximum SMB - let server check the namelen BB */
-
i = skb_shinfo(skb)->nr_frags;
+
+ if (zccd != NULL && /* this is a zcc I/O */
-+ skb_shinfo(skb)->zccd != NULL && /* skb is part of a zcc I/O */
-+ skb_shinfo(skb)->zccd2 != NULL &&
-+ skb_shinfo(skb)->zccd != zccd && /* not the same one */
-+ skb_shinfo(skb)->zccd2 != zccd)
++ skb_shinfo(skb)->zccd != NULL && /* skb part of a zcc I/O */
++ skb_shinfo(skb)->zccd2 != NULL &&
++ skb_shinfo(skb)->zccd != zccd && /* not the same one */
++ skb_shinfo(skb)->zccd2 != zccd)
+ {
-+ tcp_mark_push (tp, skb);
-+ goto new_segment;
++ tcp_mark_push (tp, skb);
++ goto new_segment;
+ }
+
can_coalesce = skb_can_coalesce(skb, i, page, offset);
+ return res;
+}
+
-+ssize_t tcp_sendpage_zccd(struct socket *sock, struct page *page, int offset, size_t size,
-+ int flags, zccd_t *zccd)
++ssize_t tcp_sendpage_zccd(struct socket *sock, struct page *page, int offset,
++ size_t size, int flags, zccd_t *zccd)
+{
+ ssize_t res;
+ struct sock *sk = sock->sk;
TCP_CHECK_TIMER(sk);
release_sock(sk);
return res;
-@@ -1528,6 +1578,202 @@
+@@ -1528,6 +1578,194 @@
goto out;
}
+
+ skb = skb_peek(&sk->sk_receive_queue);
+
-+ if (skb == NULL) /* nothing ready */
-+ {
++ if (skb == NULL) { /* nothing ready */
+ if (copied) {
+ if (sk->sk_err ||
+ sk->sk_state == TCP_CLOSE ||
+ offset++;
+ used--;
+ }
-+ } else /* truncate read */
++ } else { /* truncate read */
+ used = urg_offset;
++ }
+ }
+ }
+
+ if (len < used)
+ used = len;
+
-+ if (used == 0)
++ if (used == 0) {
+ exhausted = 1;
-+ else
-+ {
-+ if (skb_is_nonlinear (skb))
-+ {
++ } else {
++ if (skb_is_nonlinear (skb)) {
+ int rc = skb_linearize (skb, GFP_KERNEL);
+
+ printk ("tcp_recvpackets(): linearising: %d\n", rc);
+
-+ if (rc)
-+ {
++ if (rc) {
+ if (!copied)
+ copied = rc;
+ break;
+ }
+ }
+
-+ if ((offset + used) == skb->len) /* consuming the whole packet */
-+ {
++ if ((offset + used) == skb->len) { /* consuming the whole packet */
+ __skb_unlink (skb, &sk->sk_receive_queue);
+ dst_release (skb->dst);
+ skb_orphan (skb);
+ __skb_pull (skb, offset);
+ __skb_queue_tail (packets, skb);
+ exhausted = eaten = 1;
-+ }
-+ else /* consuming only part of the packet */
-+ {
++ } else { /* consuming only part of the packet */
+ struct sk_buff *skb2 = skb_clone (skb, GFP_KERNEL);
+
-+ if (skb2 == NULL)
-+ {
++ if (skb2 == NULL) {
+ if (!copied)
+ copied = -ENOMEM;
+ break;
+ if (!exhausted)
+ continue;
+
-+ if (skb->h.th->fin)
-+ {
++ if (skb->h.th->fin) {
+ tp->copied_seq++;
+ if (!eaten)
+ sk_eat_skb (sk, skb);
-Index: linux-2.6.9-22.0.2.EL/fs/exec.c
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/fs/exec.c 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/fs/exec.c 2006-01-26 18:46:33.000000000 -0500
-@@ -125,9 +125,10 @@
+diff -urp a/fs/exec.c b/fs/exec.c
+--- a/fs/exec.c 2006-03-10 14:59:58.000000000 -0800
++++ b/fs/exec.c 2006-03-10 18:09:26.000000000 -0800
+@@ -125,9 +125,10 @@ asmlinkage long sys_uselib(const char __
struct file * file;
struct nameidata nd;
int error;
if (error)
goto out;
-@@ -139,7 +140,7 @@
+@@ -139,7 +140,7 @@ asmlinkage long sys_uselib(const char __
if (error)
goto exit;
error = PTR_ERR(file);
if (IS_ERR(file))
goto out;
-@@ -488,8 +489,9 @@
+@@ -488,8 +489,9 @@ struct file *open_exec(const char *name)
int err;
struct file *file;
file = ERR_PTR(err);
if (!err) {
-@@ -502,7 +504,7 @@
+@@ -502,7 +504,7 @@ struct file *open_exec(const char *name)
err = -EACCES;
file = ERR_PTR(err);
if (!err) {
if (!IS_ERR(file)) {
err = deny_write_access(file);
if (err) {
-Index: linux-2.6.9-22.0.2.EL/fs/namei.c
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/fs/namei.c 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/fs/namei.c 2006-01-26 18:46:33.000000000 -0500
-@@ -274,8 +274,19 @@
+diff -urp a/fs/inode.c b/fs/inode.c
+--- a/fs/inode.c 2006-03-10 14:59:59.000000000 -0800
++++ b/fs/inode.c 2006-03-10 14:59:59.000000000 -0800
+@@ -235,6 +235,7 @@ void __iget(struct inode * inode)
+ inodes_stat.nr_unused--;
+ }
+
++EXPORT_SYMBOL(__iget);
+ /**
+ * clear_inode - clear an inode
+ * @inode: inode to clear
+diff -urp a/fs/namei.c b/fs/namei.c
+--- a/fs/namei.c 2006-03-10 14:59:59.000000000 -0800
++++ b/fs/namei.c 2006-03-10 16:42:11.000000000 -0800
+@@ -274,8 +274,19 @@ int deny_write_access(struct file * file
return 0;
}
dput(nd->dentry);
mntput(nd->mnt);
}
-@@ -367,7 +378,10 @@
+@@ -367,7 +378,10 @@ static struct dentry * real_lookup(struc
{
struct dentry * result;
struct inode *dir = parent->d_inode;
down(&dir->i_sem);
/*
* First re-do the cached lookup just in case it was created
-@@ -406,7 +420,10 @@
+@@ -406,7 +420,10 @@ static struct dentry * real_lookup(struc
if (result->d_op && result->d_op->d_revalidate) {
if (!result->d_op->d_revalidate(result, nd) && !d_invalidate(result)) {
dput(result);
}
}
return result;
-@@ -436,7 +453,9 @@
+@@ -436,7 +453,9 @@ walk_init_root(const char *name, struct
static inline int __vfs_follow_link(struct nameidata *nd, const char *link)
{
int res = 0;
if (IS_ERR(link))
goto fail;
-@@ -446,6 +465,9 @@
+@@ -446,6 +465,9 @@ static inline int __vfs_follow_link(stru
/* weird __emul_prefix() stuff did it */
goto out;
}
res = link_path_walk(link, nd);
out:
if (nd->depth || res || nd->last_type!=LAST_NORM)
-@@ -654,6 +676,33 @@
+@@ -654,6 +676,33 @@ fail:
return PTR_ERR(dentry);
}
/*
* Name resolution.
* This is the basic name resolution function, turning a pathname into
-@@ -755,8 +804,12 @@
+@@ -755,8 +804,12 @@ static fastcall int __link_path_walk(con
goto out_dput;
if (inode->i_op->follow_link) {
dput(next.dentry);
mntput(next.mnt);
if (err)
-@@ -795,14 +848,34 @@
+@@ -795,14 +848,34 @@ last_component:
inode = nd->dentry->d_inode;
/* fallthrough */
case 1:
if (err)
break;
follow_mount(&next.mnt, &next.dentry);
-@@ -1053,7 +1126,7 @@
+@@ -1053,7 +1126,7 @@ struct dentry * lookup_hash(struct qstr
}
/* SMP-safe */
{
unsigned long hash;
struct qstr this;
-@@ -1073,11 +1146,16 @@
+@@ -1073,11 +1146,16 @@ struct dentry * lookup_one_len(const cha
}
this.hash = end_name_hash(hash);
/*
* namei()
*
-@@ -1089,7 +1167,7 @@
+@@ -1089,7 +1167,7 @@ access:
* that namei follows links, while lnamei does not.
* SMP-safe
*/
{
char *tmp = getname(name);
int err = PTR_ERR(tmp);
-@@ -1101,6 +1179,12 @@
+@@ -1101,6 +1179,12 @@ int fastcall __user_walk(const char __us
return err;
}
/*
* It's inline, so penalty for filesystems that don't use sticky bit is
* minimal.
-@@ -1387,8 +1471,8 @@
+@@ -1387,8 +1471,8 @@ int open_namei(const char * pathname, in
acc_mode |= MAY_APPEND;
/* Fill in the open() intent data */
/*
* The simplest case - just a plain lookup.
-@@ -1403,6 +1487,7 @@
+@@ -1403,6 +1487,7 @@ int open_namei(const char * pathname, in
/*
* Create - we need to know the parent.
*/
error = path_lookup(pathname, LOOKUP_PARENT|LOOKUP_OPEN|LOOKUP_CREATE, nd);
if (error)
return error;
-@@ -1419,7 +1504,9 @@
+@@ -1419,7 +1504,9 @@ int open_namei(const char * pathname, in
dir = nd->dentry;
nd->flags &= ~LOOKUP_PARENT;
down(&dir->d_inode->i_sem);
do_last:
error = PTR_ERR(dentry);
-@@ -1532,7 +1619,9 @@
+@@ -1532,7 +1619,9 @@ do_link:
}
dir = nd->dentry;
down(&dir->d_inode->i_sem);
__putname(nd->last.name);
goto do_last;
}
-Index: linux-2.6.9-22.0.2.EL/fs/namespace.c
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/fs/namespace.c 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/fs/namespace.c 2006-01-26 18:46:32.000000000 -0500
-@@ -61,6 +61,7 @@
+diff -urp a/fs/namespace.c b/fs/namespace.c
+--- a/fs/namespace.c 2006-03-10 15:00:00.000000000 -0800
++++ b/fs/namespace.c 2006-03-10 17:04:09.000000000 -0800
+@@ -61,6 +61,7 @@ struct vfsmount *alloc_vfsmnt(const char
INIT_LIST_HEAD(&mnt->mnt_mounts);
INIT_LIST_HEAD(&mnt->mnt_list);
INIT_LIST_HEAD(&mnt->mnt_fslink);
if (name) {
int size = strlen(name)+1;
char *newname = kmalloc(size, GFP_KERNEL);
-@@ -114,6 +115,7 @@
+@@ -114,6 +115,7 @@ static inline int check_mnt(struct vfsmo
static void detach_mnt(struct vfsmount *mnt, struct nameidata *old_nd)
{
old_nd->dentry = mnt->mnt_mountpoint;
old_nd->mnt = mnt->mnt_parent;
mnt->mnt_parent = mnt;
-@@ -177,6 +179,9 @@
+@@ -177,6 +179,9 @@ void __mntput(struct vfsmount *mnt)
{
struct super_block *sb = mnt->mnt_sb;
dput(mnt->mnt_root);
free_vfsmnt(mnt);
deactivate_super(sb);
}
-@@ -403,6 +408,8 @@
+@@ -403,6 +408,8 @@ static int do_umount(struct vfsmount *mn
*/
lock_kernel();
if( (flags&MNT_FORCE) && sb->s_op->umount_begin)
sb->s_op->umount_begin(sb);
unlock_kernel();
-@@ -627,6 +634,7 @@
+@@ -627,6 +634,7 @@ static int do_loopback(struct nameidata
return err;
if (!old_name || !*old_name)
return -EINVAL;
err = path_lookup(old_name, LOOKUP_FOLLOW, &old_nd);
if (err)
return err;
-@@ -701,6 +709,7 @@
+@@ -701,6 +709,7 @@ static int do_move_mount(struct nameidat
return -EPERM;
if (!old_name || !*old_name)
return -EINVAL;
err = path_lookup(old_name, LOOKUP_FOLLOW, &old_nd);
if (err)
return err;
-@@ -1012,6 +1021,7 @@
+@@ -1012,6 +1021,7 @@ long do_mount(char * dev_name, char * di
int retval = 0;
int mnt_flags = 0;
/* Discard magic */
if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
flags &= ~MS_MGC_MSK;
-Index: linux-2.6.9-22.0.2.EL/fs/open.c
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/fs/open.c 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/fs/open.c 2006-01-26 18:46:33.000000000 -0500
-@@ -216,12 +216,12 @@
+diff -urp a/fs/open.c b/fs/open.c
+--- a/fs/open.c 2006-03-10 15:00:01.000000000 -0800
++++ b/fs/open.c 2006-03-10 18:09:51.000000000 -0800
+@@ -216,12 +216,12 @@ static inline long do_sys_truncate(const
struct nameidata nd;
struct inode * inode;
int error;
if (error)
goto out;
inode = nd.dentry->d_inode;
-@@ -475,6 +475,7 @@
+@@ -475,6 +475,7 @@ asmlinkage long sys_access(const char __
int old_fsuid, old_fsgid;
kernel_cap_t old_cap;
int res;
if (mode & ~S_IRWXO) /* where's F_OK, X_OK, W_OK, R_OK? */
return -EINVAL;
-@@ -499,13 +500,14 @@
+@@ -499,13 +500,14 @@ asmlinkage long sys_access(const char __
else
current->cap_effective = current->cap_permitted;
path_release(&nd);
}
-@@ -520,8 +522,9 @@
+@@ -520,8 +522,9 @@ asmlinkage long sys_chdir(const char __u
{
struct nameidata nd;
int error;
if (error)
goto out;
-@@ -573,8 +576,9 @@
+@@ -573,8 +576,9 @@ asmlinkage long sys_chroot(const char __
{
struct nameidata nd;
int error;
if (error)
goto out;
-@@ -755,27 +759,8 @@
- * 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;
+@@ -741,8 +745,6 @@ asmlinkage long sys_fchown(unsigned int
+ return error;
+ }
+
+-static struct file *__dentry_open(struct dentry *, struct vfsmount *, int, struct file *);
-
-- namei_flags = flags;
-- if ((namei_flags+1) & O_ACCMODE)
-- namei_flags++;
-- if (namei_flags & O_TRUNC)
-- namei_flags |= 2;
+ /*
+ * Note that while the flag value (low two bits) for sys_open means:
+ * 00 - read-only
+@@ -760,8 +762,9 @@ static struct file *__dentry_open(struct
+ struct file *filp_open(const char * filename, int flags, int mode)
+ {
+ int namei_flags, error;
++ struct file * temp_filp;
+ struct nameidata nd;
+- struct file *f;
++ intent_init(&nd.intent, IT_OPEN);
+
+ namei_flags = flags;
+ if ((namei_flags+1) & O_ACCMODE)
+@@ -769,16 +772,11 @@ struct file *filp_open(const char * file
+ if (namei_flags & O_TRUNC)
+ namei_flags |= 2;
+
+- error = -ENFILE;
+- f = get_empty_filp();
+- if (f == NULL)
+- return ERR_PTR(error);
-
-- error = open_namei(filename, namei_flags, mode, &nd);
+ error = open_namei(filename, namei_flags, mode, &nd);
- if (!error)
-- return dentry_open(nd.dentry, nd.mnt, flags);
+- return __dentry_open(nd.dentry, nd.mnt, flags, f);
-
-- return ERR_PTR(error);
--}
--
--EXPORT_SYMBOL(filp_open);
+- put_filp(f);
++ if (!error) {
++ temp_filp = dentry_open_it(nd.dentry, nd.mnt, flags, &nd.intent);
++ return temp_filp;
++ }
+ return ERR_PTR(error);
+ }
+
+@@ -786,29 +784,27 @@ EXPORT_SYMBOL(filp_open);
+
+ struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags)
+ {
+- int error;
+- struct file *f;
-
--struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags)
-+struct file *dentry_open_it(struct dentry *dentry, struct vfsmount *mnt, int flags,
-+ struct lookup_intent *it)
+- error = -ENFILE;
+- f = get_empty_filp();
+- if (f == NULL) {
+- dput(dentry);
+- mntput(mnt);
+- return ERR_PTR(error);
+- }
++ struct lookup_intent it;
++ intent_init(&it, IT_LOOKUP);
+
+- return __dentry_open(dentry, mnt, flags, f);
++ return dentry_open_it(dentry, mnt, flags, &it);
+ }
+
+ EXPORT_SYMBOL(dentry_open);
+
+-static struct file *__dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags, struct file *f)
++struct file *dentry_open_it(struct dentry *dentry, struct vfsmount *mnt, int flags, struct lookup_intent *it)
{
- struct file * f;
++ struct file *f;
struct inode *inode;
-@@ -787,6 +772,7 @@
- goto cleanup_dentry;
+ int error;
+
++ error = -ENFILE;
++ f = get_empty_filp();
++ if (!f)
++ goto cleanup_dentry;
f->f_flags = flags;
f->f_mode = ((flags+1) & O_ACCMODE) | FMODE_LSEEK | FMODE_PREAD | FMODE_PWRITE;
+ f->f_it = it;
inode = dentry->d_inode;
if (f->f_mode & FMODE_WRITE) {
error = get_write_access(inode);
-@@ -805,6 +791,7 @@
+@@ -827,6 +823,7 @@ static struct file *__dentry_open(struct
error = f->f_op->open(inode,f);
if (error)
goto cleanup_all;
}
f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC);
-@@ -830,6 +817,7 @@
+@@ -851,6 +848,8 @@ cleanup_all:
+ f->f_vfsmnt = NULL;
cleanup_file:
put_filp(f);
- cleanup_dentry:
++cleanup_dentry:
+ intent_release(it);
dput(dentry);
mntput(mnt);
return ERR_PTR(error);
-@@ -837,6 +825,36 @@
-
- EXPORT_SYMBOL(dentry_open);
-
-+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.intent, IT_OPEN);
-+
-+ 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_it(nd.dentry, nd.mnt, flags, &nd.intent);
-+ return temp_filp;
-+ }
-+ return ERR_PTR(error);
-+}
-+
-+
-+struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags)
-+{
-+ struct lookup_intent it;
-+ intent_init(&it, IT_LOOKUP);
-+
-+ return dentry_open_it(dentry, mnt, flags, &it);
-+}
-+
- /*
- * Find an empty file descriptor entry, and mark it busy.
- */
-Index: linux-2.6.9-22.0.2.EL/fs/stat.c
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/fs/stat.c 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/fs/stat.c 2006-01-25 23:40:55.000000000 -0500
-@@ -37,7 +37,7 @@
+diff -urp a/fs/stat.c b/fs/stat.c
+--- a/fs/stat.c 2006-03-10 15:00:01.000000000 -0800
++++ b/fs/stat.c 2006-03-10 15:00:02.000000000 -0800
+@@ -37,7 +37,7 @@ void generic_fillattr(struct inode *inod
EXPORT_SYMBOL(generic_fillattr);
{
struct inode *inode = dentry->d_inode;
int retval;
-@@ -46,6 +46,8 @@
+@@ -46,6 +46,8 @@ int vfs_getattr(struct vfsmount *mnt, st
if (retval)
return retval;
if (inode->i_op->getattr)
return inode->i_op->getattr(mnt, dentry, stat);
-@@ -62,14 +64,20 @@
+@@ -62,14 +64,20 @@ int vfs_getattr(struct vfsmount *mnt, st
EXPORT_SYMBOL(vfs_getattr);
path_release(&nd);
}
return error;
-@@ -81,10 +89,11 @@
+@@ -81,10 +89,11 @@ int vfs_lstat(char __user *name, struct
{
struct nameidata nd;
int error;
path_release(&nd);
}
return error;
-@@ -96,9 +105,12 @@
+@@ -96,9 +105,12 @@ int vfs_fstat(unsigned int fd, struct ks
{
struct file *f = fget(fd);
int error = -EBADF;
fput(f);
}
return error;
-Index: linux-2.6.9-22.0.2.EL/fs/nfs/dir.c
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/fs/nfs/dir.c 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/fs/nfs/dir.c 2006-01-26 18:46:32.000000000 -0500
-@@ -726,7 +726,7 @@
- return 0;
- if (!nd || (nd->flags & LOOKUP_CONTINUE) || !(nd->flags & LOOKUP_CREATE))
- return 0;
-- return (nd->intent.open.flags & O_EXCL) != 0;
-+ return (nd->intent.it_flags & O_EXCL) != 0;
- }
-
- static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd)
-@@ -1057,7 +1057,7 @@
- attr.ia_valid = ATTR_MODE;
-
- if (nd && (nd->flags & LOOKUP_CREATE))
-- open_flags = nd->intent.open.flags;
-+ open_flags = nd->intent.it_flags;
-
- /*
- * The 0 argument passed into the create function should one day
-Index: linux-2.6.9-22.0.2.EL/fs/inode.c
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/fs/inode.c 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/fs/inode.c 2006-01-25 23:40:55.000000000 -0500
-@@ -235,6 +235,7 @@
- inodes_stat.nr_unused--;
- }
-
-+EXPORT_SYMBOL(__iget);
- /**
- * clear_inode - clear an inode
- * @inode: inode to clear
-Index: linux-2.6.9-22.0.2.EL/include/linux/dcache.h
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/include/linux/dcache.h 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/include/linux/dcache.h 2006-01-26 18:46:32.000000000 -0500
+diff -urp a/include/linux/dcache.h b/include/linux/dcache.h
+--- a/include/linux/dcache.h 2006-03-10 15:00:02.000000000 -0800
++++ b/include/linux/dcache.h 2006-03-10 17:01:52.000000000 -0800
@@ -4,6 +4,7 @@
#ifdef __KERNEL__
#include <linux/list.h>
#include <linux/spinlock.h>
#include <linux/cache.h>
-@@ -37,6 +38,8 @@
+@@ -37,6 +38,8 @@ struct qstr {
const unsigned char *name;
};
struct dentry_stat_t {
int nr_dentry;
int nr_unused;
-Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/include/linux/fs.h 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/include/linux/fs.h 2006-01-26 18:46:33.000000000 -0500
-@@ -75,6 +75,7 @@
+diff -urp a/include/linux/fs.h b/include/linux/fs.h
+--- a/include/linux/fs.h 2006-03-10 15:00:02.000000000 -0800
++++ b/include/linux/fs.h 2006-03-10 17:05:51.000000000 -0800
+@@ -75,6 +75,7 @@ extern int leases_enable, dir_notify_ena
#define FMODE_READ 1
#define FMODE_WRITE 2
/* Internal kernel extensions */
#define FMODE_LSEEK 4
-@@ -259,6 +260,8 @@
+@@ -259,6 +260,8 @@ typedef void (dio_iodone_t)(struct inode
#define ATTR_ATTR_FLAG 1024
#define ATTR_KILL_SUID 2048
#define ATTR_KILL_SGID 4096
/*
* This is the Inode Attributes structure, used for notify_change(). It
-@@ -457,6 +460,7 @@
+@@ -457,6 +460,7 @@ struct inode {
struct block_device *i_bdev;
struct cdev *i_cdev;
int i_cindex;
__u32 i_generation;
-@@ -590,6 +594,7 @@
+@@ -590,6 +594,7 @@ struct file {
spinlock_t f_ep_lock;
#endif /* #ifdef CONFIG_EPOLL */
struct address_space *f_mapping;
};
extern spinlock_t files_lock;
#define file_list_lock() spin_lock(&files_lock);
-@@ -960,7 +965,9 @@
+@@ -962,7 +967,9 @@ struct inode_operations {
void (*truncate) (struct inode *);
int (*permission) (struct inode *, int, struct nameidata *);
int (*setattr) (struct dentry *, struct iattr *);
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);
-@@ -1000,6 +1007,7 @@
+@@ -1002,6 +1009,7 @@ struct super_operations {
int (*remount_fs) (struct super_block *, int *, char *);
void (*clear_inode) (struct inode *);
void (*umount_begin) (struct super_block *);
int (*show_options)(struct seq_file *, struct vfsmount *);
};
-@@ -1192,6 +1200,7 @@
+@@ -1194,6 +1202,7 @@ extern int unregister_filesystem(struct
extern struct vfsmount *kern_mount(struct file_system_type *);
extern int may_umount_tree(struct vfsmount *);
extern int may_umount(struct vfsmount *);
extern long do_mount(char *, char *, char *, unsigned long, void *);
extern int vfs_statfs(struct super_block *, struct kstatfs *);
-@@ -1256,6 +1265,7 @@
+@@ -1258,6 +1267,7 @@ static inline int break_lease(struct ino
extern int do_truncate(struct dentry *, loff_t start);
extern struct file *filp_open(const char *, int, int);
extern struct file * dentry_open(struct dentry *, struct vfsmount *, int);
extern int filp_close(struct file *, fl_owner_t id);
extern char * getname(const char __user *);
-Index: linux-2.6.9-22.0.2.EL/include/linux/namei.h
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/include/linux/namei.h 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/include/linux/namei.h 2006-01-25 23:40:55.000000000 -0500
+diff -urp a/include/linux/mount.h b/include/linux/mount.h
+--- a/include/linux/mount.h 2006-03-10 15:00:03.000000000 -0800
++++ b/include/linux/mount.h 2006-03-10 15:00:03.000000000 -0800
+@@ -34,6 +34,8 @@ struct vfsmount
+ struct list_head mnt_list;
+ struct list_head mnt_fslink; /* link in fs-specific expiry list */
+ struct namespace *mnt_namespace; /* containing namespace */
++ struct list_head mnt_lustre_list; /* GNS mount list */
++ unsigned long mnt_last_used; /* for GNS auto-umount (jiffies) */
+ };
+
+ static inline struct vfsmount *mntget(struct vfsmount *mnt)
+diff -urp a/include/linux/namei.h b/include/linux/namei.h
+--- a/include/linux/namei.h 2006-03-10 15:00:03.000000000 -0800
++++ b/include/linux/namei.h 2006-03-10 15:00:03.000000000 -0800
@@ -2,14 +2,48 @@
#define _LINUX_NAMEI_H
enum { MAX_NESTED_LINKS = 8 };
struct nameidata {
-@@ -21,10 +55,7 @@
+@@ -21,10 +55,7 @@ struct nameidata {
unsigned depth;
char *saved_names[MAX_NESTED_LINKS + 1];
};
/*
-@@ -47,6 +78,8 @@
+@@ -47,6 +78,8 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LA
#define LOOKUP_NOALT 32
#define LOOKUP_ATOMIC 64
#define LOOKUP_REVAL 128
/*
* Intent data
-@@ -56,6 +89,12 @@
+@@ -56,6 +89,12 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LA
#define LOOKUP_ACCESS (0x0400)
extern int FASTCALL(__user_walk(const char __user *, unsigned, struct nameidata *));
#define user_path_walk(name,nd) \
__user_walk(name, LOOKUP_FOLLOW, nd)
#define user_path_walk_link(name,nd) \
-@@ -68,7 +107,6 @@
+@@ -68,7 +107,6 @@ extern void path_release_on_umount(struc
extern struct dentry * lookup_one_len(const char *, struct dentry *, int);
extern struct dentry * lookup_hash(struct qstr *, struct dentry *);
extern int follow_down(struct vfsmount **, struct dentry **);
extern int follow_up(struct vfsmount **, struct dentry **);
-Index: linux-2.6.9-22.0.2.EL/include/linux/mount.h
-===================================================================
---- linux-2.6.9-22.0.2.EL.orig/include/linux/mount.h 2006-01-25 23:40:13.000000000 -0500
-+++ linux-2.6.9-22.0.2.EL/include/linux/mount.h 2006-01-25 23:40:55.000000000 -0500
-@@ -34,6 +34,8 @@
- struct list_head mnt_list;
- struct list_head mnt_fslink; /* link in fs-specific expiry list */
- struct namespace *mnt_namespace; /* containing namespace */
-+ struct list_head mnt_lustre_list; /* GNS mount list */
-+ unsigned long mnt_last_used; /* for GNS auto-umount (jiffies) */
- };
-
- static inline struct vfsmount *mntget(struct vfsmount *mnt)
+ newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
+ newattrs.ia_valid |= ATTR_RAW;
+ error = op->setattr_raw(inode, &newattrs);
-+ /* the file system wants to use normal vfs path now */
++ /* the file system wants to use the normal vfs path now */
+ if (error != -EOPNOTSUPP)
+ goto out;
+ }
+
+ if (inode->i_op->setattr_raw) {
+ struct inode_operations *op = dentry->d_inode->i_op;
-+
++
+ newattrs.ia_mode = mode;
+ newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
+ newattrs.ia_valid |= ATTR_RAW;
export-truncate-2.6-suse.patch
export_symbols-2.6-rhel4.patch
dev_read_only-2.6-suse.patch
-export-2.6-suse.patch
+export-log-2.6-rhel4.patch
lookup_bdev_init_intent.patch
remove-suid-2.6-suse.patch
export-show_task-2.6-vanilla.patch
lnxmaj="2.6.9"
-lnxrel="22.0.2.EL"
+lnxrel="34.EL"
KERNEL=linux-${lnxmaj}-${lnxrel}.tar.bz2
SERIES=2.6-rhel4.series
LDLM_FL_WAIT_NOREPROC,
NULL);
if (err) {
+ if (flags & LDLM_FL_TEST_LOCK)
+ LDLM_LOCK_PUT(lock);
+ else
+ ldlm_lock_decref_internal(lock, mode);
rc = 0;
goto out2;
}
if (ocd == NULL)
GOTO(out_cleanup, rc = -ENOMEM);
+ ocd->ocd_connect_flags = OBD_CONNECT_VERSION;
ocd->ocd_version = LUSTRE_VERSION_CODE;
/* Disable initial recovery on this import */
int llu_iop_write(struct inode *ino,
struct ioctx *ioctx)
{
- struct iattr iattr;
- int rc;
-
- memset(&iattr, 0, sizeof(iattr));
- iattr.ia_mtime = iattr.ia_atime = CURRENT_TIME;
- iattr.ia_valid = ATTR_MTIME | ATTR_ATIME | ATTR_RAW;
-
- liblustre_wait_event(0);
- rc = llu_setattr_raw(ino, &iattr);
- if (rc) {
- CERROR("failed to set mtime/atime during write: %d", rc);
- /* XXX should continue or return error? */
- }
+ struct intnl_stat *st = llu_i2stat(ino);
+ st->st_mtime = st->st_ctime = CURRENT_TIME;
return llu_file_rwx(ino, ioctx, 0);
}
char buf[128];
int fd, i;
struct stat statbuf[3];
- ENTRY("write should change mtime/atime");
+ ENTRY("write should change mtime/ctime");
snprintf(file, MAX_PATH_LENGTH, "%s/test_t18_file", lustre_path);
for (i = 0; i < 3; i++) {
printf("Error stat\n");
return(1);
}
- printf("atime %lu, mtime %lu\n",
- statbuf[i].st_atime, statbuf[i].st_mtime);
+ printf("ctime %lu, mtime %lu\n",
+ statbuf[i].st_ctime, statbuf[i].st_mtime);
sleep(2);
}
for (i = 1; i < 3; i++) {
- if ((statbuf[i].st_atime <= statbuf[i-1].st_atime) ||
+ if ((statbuf[i].st_ctime <= statbuf[i-1].st_ctime) ||
(statbuf[i].st_mtime <= statbuf[i-1].st_mtime)) {
printf("time error\n");
return(-1);
set -e
ONLY=${ONLY:-"$*"}
-# bug number for skipped test:
+# bug number for skipped test:
ALWAYS_EXCEPT=" $CONF_SANITY_EXCEPT"
# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
[ -d $MOUNT ] || mkdir -p $MOUNT
$LCONF --nosetup --node client_facet $XMLCONFIG > /dev/null
- llmount -o nettype=$NETTYPE,$MOUNTOPT `facet_nid mds`://mds_svc/client_facet $MOUNT || return 1
+ llmount -o nettype=$NETTYPE,$MOUNTOPT `facet_nid mds`://mds_svc/client_facet $MOUNT || return 1
umount_client $MOUNT || return 2
start_mds
mount_client $MOUNT
CHECK_PTLDEBUG="`do_facet mds sysctl lnet.debug | sed -e 's/.* = //'`"
- if [ "$CHECK_PTLDEBUG" = "1" ]; then
+ if [ "$CHECK_PTLDEBUG" ] && [ $CHECK_PTLDEBUG -eq 1 ]; then
echo "lmc --debug success"
else
echo "lmc --debug: want 1, have $CHECK_PTLDEBUG"
return 1
fi
# again with the pdsh prefix
- CHECK_SUBSYSTEM="`do_facet mds sysctl lnet.subsystem_debug | cut -d= -f2`"
- if [ "$CHECK_SUBSYSTEM" = "2" ]; then
+ CHECK_SUBSYS="`do_facet mds sysctl lnet.subsystem_debug|cut -d= -f2`"
+ if [ "$CHECK_SUBSYS" ] && [ $CHECK_SUBSYS -eq 2 ]; then
echo "lmc --subsystem success"
else
- echo "lmc --subsystem: want 2, have $CHECK_SUBSYSTEM"
+ echo "lmc --subsystem: want 2, have $CHECK_SUBSYS"
return 1
fi
check_mount || return 41
start_ost
start_mds
CHECK_PTLDEBUG="`do_facet mds sysctl lnet.debug | cut -d= -f2`"
- if [ $CHECK_PTLDEBUG = "3" ]; then
+ if [ "$CHECK_PTLDEBUG" ] && [ $CHECK_PTLDEBUG -eq 3 ]; then
echo "lconf --debug success"
else
echo "lconf --debug: want 3, have $CHECK_PTLDEBUG"
return 1
fi
CHECK_SUBSYS="`do_facet mds sysctl lnet.subsystem_debug | cut -d= -f2`"
- if [ $CHECK_SUBSYS = "20" ]; then
+ if [ "$CHECK_SUBSYS" ] && [ $CHECK_SUBSYS -eq 20 ]; then
echo "lconf --subsystem success"
else
echo "lconf --subsystem: want 20, have $CHECK_SUBSYS"
test_16() {
TMPMTPT="/mnt/conf16"
-
+
if [ ! -f "$MDSDEV" ]; then
echo "no $MDSDEV existing, so mount Lustre to create one"
start_ost
check_mount || return 41
cleanup || return $?
fi
-
+
echo "change the mode of $MDSDEV/OBJECTS,LOGS,PENDING to 555"
do_facet mds "[ -d $TMPMTPT ] || mkdir -p $TMPMTPT;
mount -o loop -t ext3 $MDSDEV $TMPMTPT || return \$?;
mount_client $MOUNT
check_mount || return 41
cleanup || return $?
-
+
echo "read the mode of OBJECTS/LOGS/PENDING and check if they has been changed properly"
- EXPECTEDOBJECTSMODE=`do_facet mds "debugfs -R 'stat OBJECTS' $MDSDEV 2> /dev/null" | awk '/Mode: /{print $NF}'`
- EXPECTEDLOGSMODE=`do_facet mds "debugfs -R 'stat LOGS' $MDSDEV 2> /dev/null" | awk '/Mode: /{print $NF}'`
- EXPECTEDPENDINGMODE=`do_facet mds "debugfs -R 'stat PENDING' $MDSDEV 2> /dev/null" | awk '/Mode: /{print $NF}'`
+ EXPECTEDOBJECTSMODE=`do_facet mds "debugfs -R 'stat OBJECTS' $MDSDEV 2> /dev/null" | grep 'Mode: ' | sed -e "s/.*Mode: *//" -e "s/ *Flags:.*//"`
+ EXPECTEDLOGSMODE=`do_facet mds "debugfs -R 'stat LOGS' $MDSDEV 2> /dev/null" | grep 'Mode: ' | sed -e "s/.*Mode: *//" -e "s/ *Flags:.*//"`
+ EXPECTEDPENDINGMODE=`do_facet mds "debugfs -R 'stat PENDING' $MDSDEV 2> /dev/null" | grep 'Mode: ' | sed -e "s/.*Mode: *//" -e "s/ *Flags:.*//"`
if [ "$EXPECTEDOBJECTSMODE" = "0777" ]; then
echo "Success:Lustre change the mode of OBJECTS correctly"
else
- echo "Error: Lustre does not change the mode of OBJECTS properly"
+ echo "Error: Lustre does not change mode of OBJECTS properly"
return 1
fi
-
+
if [ "$EXPECTEDLOGSMODE" = "0777" ]; then
echo "Success:Lustre change the mode of LOGS correctly"
else
- echo "Error: Lustre does not change the mode of LOGS properly"
+ echo "Error: Lustre does not change mode of LOGS properly"
return 1
fi
-
+
if [ "$EXPECTEDPENDINGMODE" = "0777" ]; then
echo "Success:Lustre change the mode of PENDING correctly"
else
- echo "Error: Lustre does not change the mode of PENDING properly"
+ echo "Error: Lustre does not change mode of PENDING properly"
return 1
fi
}
OLDMDSSIZE=$MDSSIZE
MDSSIZE=2000000
gen_config
-
+
echo "mount lustre system..."
start_ost
start_mds
mount_client $MOUNT
check_mount || return 41
-
+
echo "check journal size..."
FOUNDJOURNALSIZE=`do_facet mds "debugfs -R 'stat <8>' $MDSDEV" | awk '/Size: / { print $NF; exit;}'`
if [ "$FOUNDJOURNALSIZE" = "79691776" ]; then
echo "expected journal size: 79691776(76M), found journal size: $FOUNDJOURNALSIZE"
return 1
fi
-
+
cleanup || return $?
-
+
MDSSIZE=$OLDMDSSIZE
gen_config
}
##################################
# Test interface
error() {
- sysctl -w lustre.fail_loc=0 || true
+ sysctl -w lustre.fail_loc=0 2> /dev/null || true
echo "${TESTSUITE}: **** FAIL:" $@
log "FAIL: $@"
exit 1