diff -Nru lustre-1.8.3/aclocal.m4 lustre-1.8.5+dfsg/aclocal.m4 --- lustre-1.8.3/aclocal.m4 2010-04-10 02:28:59.000000000 +0200 +++ lustre-1.8.5+dfsg/aclocal.m4 2010-11-17 04:31:50.000000000 +0100 @@ -388,86 +388,7 @@ [use alternate names for ldiskfs-enabled e2fsprogs]), [],[withval='no']) -if test x$withval = xyes ; then - AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - AC_MSG_RESULT([enabled]) -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - AC_MSG_RESULT([disabled]) -fi - AC_DEFINE_UNQUOTED(E2FSPROGS, "$E2FSPROGS", [name of ldiskfs e2fsprogs package]) - AC_DEFINE_UNQUOTED(MKE2FS, "$MKE2FS", [name of ldiskfs mkfs program]) - AC_DEFINE_UNQUOTED(DEBUGFS, "$DEBUGFS", [name of ldiskfs debug program]) - AC_DEFINE_UNQUOTED(TUNE2FS, "$TUNE2FS", [name of ldiskfs tune program]) - AC_DEFINE_UNQUOTED(E2LABEL, "$E2LABEL", [name of ldiskfs label program]) - AC_DEFINE_UNQUOTED(DUMPE2FS,"$DUMPE2FS", [name of ldiskfs dump program]) - AC_DEFINE_UNQUOTED(E2FSCK, "$E2FSCK", [name of ldiskfs fsck program]) -]) - -# -# LB_DEFINE_E2FSPROGS_NAMES -# -# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package. -# -AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES], -[AC_ARG_WITH([ldiskfsprogs], - AC_HELP_STRING([--with-ldiskfsprogs], - [use alternate names for ldiskfs-enabled e2fsprogs]), - [],[withval='no']) - -if test x$withval = xyes ; then - AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - AC_MSG_RESULT([enabled]) -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - AC_MSG_RESULT([disabled]) -fi - AC_DEFINE_UNQUOTED(E2FSPROGS, "$E2FSPROGS", [name of ldiskfs e2fsprogs package]) - AC_DEFINE_UNQUOTED(MKE2FS, "$MKE2FS", [name of ldiskfs mkfs program]) - AC_DEFINE_UNQUOTED(DEBUGFS, "$DEBUGFS", [name of ldiskfs debug program]) - AC_DEFINE_UNQUOTED(TUNE2FS, "$TUNE2FS", [name of ldiskfs tune program]) - AC_DEFINE_UNQUOTED(E2LABEL, "$E2LABEL", [name of ldiskfs label program]) - AC_DEFINE_UNQUOTED(DUMPE2FS,"$DUMPE2FS", [name of ldiskfs dump program]) - AC_DEFINE_UNQUOTED(E2FSCK, "$E2FSCK", [name of ldiskfs fsck program]) -]) - -# -# LB_DEFINE_E2FSPROGS_NAMES -# -# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package. -# -AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES], -[AC_ARG_WITH([ldiskfsprogs], - AC_HELP_STRING([--with-ldiskfsprogs], - [use alternate names for ldiskfs-enabled e2fsprogs]), - [],[withval='no']) - +AC_MSG_CHECKING([whether to use alternate names for e2fsprogs]) if test x$withval = xyes ; then AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) E2FSPROGS="ldiskfsprogs" @@ -981,10 +902,6 @@ LB_DEFINE_E2FSPROGS_NAMES -LB_DEFINE_E2FSPROGS_NAMES - -LB_DEFINE_E2FSPROGS_NAMES - LC_CONFIG_LIBLUSTRE LIBCFS_CONFIGURE LN_CONFIGURE @@ -1450,6 +1367,7 @@ [LB_CHECK_FILE([$LINUX/include/linux/posix_acl_xattr.h],[ AC_MSG_CHECKING([if linux/posix_acl_xattr.h can be compiled]) LB_LINUX_TRY_COMPILE([ + #include #include ],[],[ AC_MSG_RESULT([yes]) @@ -1465,18 +1383,6 @@ ]) # -# LC_EXPORT___IGET -# starting from 2.6.19 linux kernel exports __iget() -# -AC_DEFUN([LC_EXPORT___IGET], -[LB_CHECK_SYMBOL_EXPORT([__iget], -[fs/inode.c],[ - AC_DEFINE(HAVE_EXPORT___IGET, 1, [kernel exports __iget]) -],[ -]) -]) - -# # only for Lustre-patched kernels # AC_DEFUN([LC_LUSTRE_VERSION_H], @@ -1598,6 +1504,30 @@ ]) # +# LC_FLUSH_OWNER_ID +# starting from 2.6.18 the file_operations .flush +# method has a new "fl_owner_t id" parameter +# +AC_DEFUN([LC_FLUSH_OWNER_ID], +[AC_MSG_CHECKING([if file_operations .flush has an fl_owner_t id]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct file_operations *fops = NULL; + fl_owner_t id; + int i; + + i = fops->flush(NULL, id); +],[ + AC_DEFINE(HAVE_FLUSH_OWNER_ID, 1, + [file_operations .flush method has an fl_owner_t id]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# # LC_STATFS_DENTRY_PARAM # starting from 2.6.18 linux kernel uses dentry instead of # super_block for first vfs_statfs argument @@ -2522,15 +2452,21 @@ ]) ]) -# 2.6.27 sles11 move the quotaio_v1.h to fs +# +# 2.6.27 sles11 move the quotaio_v1{2}.h from include/linux to fs +# 2.6.32 move the quotaio_v1{2}.h from fs to fs/quota AC_DEFUN([LC_HAVE_QUOTAIO_V1_H], [LB_CHECK_FILE([$LINUX/include/linux/quotaio_v1.h],[ AC_DEFINE(HAVE_QUOTAIO_V1_H, 1, [kernel has include/linux/quotaio_v1.h]) +],[LB_CHECK_FILE([$LINUX/fs/quota/quotaio_v1.h],[ + AC_DEFINE(HAVE_FS_QUOTA_QUOTAIO_V1_H, 1, + [kernel has fs/quota/quotaio_v1.h]) ],[ AC_MSG_RESULT([no]) ]) ]) +]) # sles10 sp2 need 5 parameter for vfs_symlink AC_DEFUN([LC_VFS_SYMLINK_5ARGS], @@ -2660,6 +2596,16 @@ ]) ]) +# 2.6.27 has bdi_init()/bdi_destroy() functions. +AC_DEFUN([LC_EXPORT_BDI_INIT], +[LB_CHECK_SYMBOL_EXPORT([bdi_init], +[mm/backing-dev.c],[ + AC_DEFINE(HAVE_BDI_INIT, 1, + [bdi_init/bdi_destroy functions are present]) +],[ +]) +]) + # 2.6.29 change prepare/commit_write to write_begin/end AC_DEFUN([LC_WRITE_BEGIN_END], [AC_MSG_CHECKING([if kernel has .write_begin/end]) @@ -2765,6 +2711,74 @@ ]) ]) +# 2.6.32 has new BDI interface. +AC_DEFUN([LC_NEW_BACKING_DEV_INFO], +[AC_MSG_CHECKING([if backing_dev_info has a bdi_list field]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct backing_dev_info bdi; + memset(&bdi.bdi_list, 0x00, sizeof(bdi.bdi_list)); +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_NEW_BACKING_DEV_INFO, 1, + [backing_dev_info has a bdi_list field]) +],[ + AC_MSG_RESULT(no) +]) +]) + +# LC_WALK_SPACE_HAS_DATA_SEM +# +# 2.6.33 ext4_ext_walk_space() takes i_data_sem internally. +# Not a very robust check, but it will hopefully last long +# enough until it can avoid being conditional. +# +AC_DEFUN([LC_WALK_SPACE_HAS_DATA_SEM], +[AC_MSG_CHECKING([if ext4_ext_walk_space() takes i_data_sem]) +WALK_SPACE_DATA_SEM="$(awk '/ext4_ext_walk_space/,/ext4_ext_find_extent/' $LINUX/fs/ext4/extents.c | grep -c 'down_read.*i_data_sem')" +if test "$WALK_SPACE_DATA_SEM" != 0 ; then + AC_DEFINE(WALK_SPACE_HAS_DATA_SEM, 1, + [ext4_ext_walk_space takes i_data_sem]) + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +]) + +# 2.6.32 without DQUOT_INIT defined. +AC_DEFUN([LC_DQUOT_INIT], +[AC_MSG_CHECKING([if DQUOT_INIT is defined]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + DQUOT_INIT(NULL); +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DQUOT_INIT, 1, + [DQUOT_INIT is defined]) +],[ + AC_MSG_RESULT(no) +]) +]) + +# 2.6.32 add a limits member in struct request_queue. +AC_DEFUN([LC_REQUEST_QUEUE_LIMITS], +[AC_MSG_CHECKING([if request_queue has a limits field]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct request_queue rq; + rq.limits.io_min = 0; +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_REQUEST_QUEUE_LIMITS, 1, + [request_queue has a limits field]) +],[ + AC_MSG_RESULT(no) +]) +]) + # # LC_PROG_LINUX # @@ -2805,7 +2819,6 @@ LC_XATTR_ACL LC_STRUCT_INTENT_FILE LC_POSIX_ACL_XATTR_H - LC_EXPORT___IGET LC_FUNC_MS_FLOCK_LOCK LC_FUNC_HAVE_CAN_SLEEP_ARG LC_FUNC_F_OP_FLOCK @@ -2813,7 +2826,6 @@ LC_COOKIE_FOLLOW_LINK LC_FUNC_RCU LC_PERCPU_COUNTER - LC_QUOTA64 LC_4ARGS_VFS_SYMLINK # does the kernel have VFS intent patches? @@ -2845,6 +2857,7 @@ LC_UMOUNTBEGIN_HAS_VFSMOUNT LC_INODE_IPRIVATE LC_EXPORT_FILEMAP_FDATAWRITE_RANGE + LC_FLUSH_OWNER_ID if test x$enable_server = xyes ; then LC_EXPORT_INVALIDATE_MAPPING_PAGES fi @@ -2911,6 +2924,7 @@ LC_VFS_SYMLINK_5ARGS LC_SB_ANY_QUOTA_ACTIVE LC_SB_HAS_QUOTA_ACTIVE + LC_EXPORT_BDI_INIT #2.6.29 LC_WRITE_BEGIN_END @@ -2920,6 +2934,19 @@ # 2.6.31 LC_BLK_QUEUE_LOG_BLK_SIZE + + # 2.6.32 + LC_NEW_BACKING_DEV_INFO + if test x$enable_server = xyes ; then + LC_WALK_SPACE_HAS_DATA_SEM + fi + LC_DQUOT_INIT + LC_REQUEST_QUEUE_LIMITS + + # + if test x$enable_server = xyes ; then + LC_QUOTA64 # must after LC_HAVE_QUOTAIO_V1_H + fi ]) # @@ -3178,37 +3205,34 @@ # linux kernel may have 64-bit limits support # AC_DEFUN([LC_QUOTA64], -if test x$enable_server = xyes ; then [AC_MSG_CHECKING([if kernel has 64-bit quota limits support]) +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-I$LINUX/fs" LB_LINUX_TRY_COMPILE([ #include #include - #include + #ifdef HAVE_QUOTAIO_V1_H + # include int versions[] = V2_INITQVERSIONS_R1; struct v2_disk_dqblk_r1 dqblk_r1; + #else + # ifdef HAVE_FS_QUOTA_QUOTAIO_V1_H + # include + # else + # include + # endif + struct v2r1_disk_dqblk dqblk_r1; + #endif ],[],[ AC_DEFINE(HAVE_QUOTA64, 1, [have quota64]) AC_MSG_RESULT([yes]) ],[ - tmp_flags="$EXTRA_KCFLAGS" - EXTRA_KCFLAGS="-I $LINUX/fs" - LB_LINUX_TRY_COMPILE([ - #include - #include - #include - struct v2r1_disk_dqblk dqblk_r1; - ],[],[ - AC_DEFINE(HAVE_QUOTA64, 1, [have quota64]) - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - AC_MSG_WARN([4 TB (or larger) block quota limits can only be used with OSTs not larger than 4 TB.]) - AC_MSG_WARN([Continuing with limited quota support.]) - AC_MSG_WARN([quotacheck is needed for filesystems with recent quota versions.]) - ]) - EXTRA_KCFLAGS=$tmp_flags + AC_MSG_RESULT([no]) + AC_MSG_WARN([4 TB (or larger) block quota limits can only be used with OSTs not larger than 4 TB.]) + AC_MSG_WARN([Continuing with limited quota support.]) + AC_MSG_WARN([quotacheck is needed for filesystems with recent quota versions.]) ]) -fi +EXTRA_KCFLAGS=$tmp_flags ]) # LC_SECURITY_PLUG # for SLES10 SP2 @@ -3507,7 +3531,7 @@ AC_MSG_RESULT([$LINUXRELEASE]) AC_SUBST(LINUXRELEASE) -moduledir='/lib/modules/'$LINUXRELEASE/kernel +moduledir='/lib/modules/'$LINUXRELEASE/updates/kernel AC_SUBST(moduledir) modulefsdir='$(moduledir)/fs/$(PACKAGE)' @@ -3788,7 +3812,7 @@ # like AC_COMPILE_IFELSE # AC_DEFUN([LB_LINUX_COMPILE_IFELSE], -[m4_ifvaln([$1], [LB_LINUX_CONFTEST([$1])])dnl +[m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl rm -f build/conftest.o build/conftest.mod.c build/conftest.ko AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])], [$4], @@ -3952,7 +3976,7 @@ . $O2IBPATH/ofed_patch.mk fi if test -n "$BACKPORT_INCLUDES"; then - OFED_BACKPORT_PATH=`echo $BACKPORT_INCLUDES | sed "s#.*/src/ofa_kernel/#$O2IBPATH/#"` + OFED_BACKPORT_PATH="$O2IBPATH/${BACKPORT_INCLUDES/*\/kernel_addons/kernel_addons}/" EXTRA_LNET_INCLUDE="-I$OFED_BACKPORT_PATH $EXTRA_LNET_INCLUDE" AC_MSG_RESULT([yes]) else @@ -3988,32 +4012,6 @@ ]) ]) -# LC_MODULE_LOADING -# after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains -# so we test if request_module is implemented or not -AC_DEFUN([LC_MODULE_LOADING], -[AC_MSG_CHECKING([if kernel module loading is possible]) -LB_LINUX_TRY_MAKE([ - #include -],[ - int myretval=ENOSYS ; - return myretval; -],[ - $makerule LUSTRE_KERNEL_TEST=conftest.i -],[ - grep request_module build/conftest.i | grep -v `grep "int myretval=" build/conftest.i | cut -d= -f2 | cut -d" " -f1` >/dev/null -],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_MODULE_LOADING_SUPPORT, 1, - [kernel module loading is possible]) -],[ - AC_MSG_RESULT(no) - AC_MSG_WARN([]) - AC_MSG_WARN([Kernel module loading support is highly recommended.]) - AC_MSG_WARN([]) -]) -]) - # # LB_PROG_LINUX # @@ -5177,12 +5175,17 @@ # LN_FUNC_SHOW_TASK # # we export show_task(), but not all kernels have it (yet) +# also check sched_show_task() in here, since 2.6.27. # AC_DEFUN([LN_FUNC_SHOW_TASK], [LB_CHECK_SYMBOL_EXPORT([show_task], [kernel/ksyms.c kernel/sched.c],[ AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported]) ],[ + LB_CHECK_SYMBOL_EXPORT([sched_show_task], + [kernel/ksyms.c kernel/sched.c],[ + AC_DEFINE(HAVE_SCHED_SHOW_TASK, 1, [sched_show_task is exported]) + ],[]) ]) ]) @@ -5215,6 +5218,7 @@ tmp_flags="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE([ + #include #include #include int main(void) { @@ -5240,6 +5244,7 @@ tmp_flags="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE([ + #include #include #include int main(void) { @@ -5264,6 +5269,7 @@ tmp_flags="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE([ + #include #include #include int main(void) { @@ -5451,7 +5457,7 @@ # AC_DEFUN([LN_FUNC_DUMP_TRACE], [LB_CHECK_SYMBOL_EXPORT([dump_trace], -[kernel/ksyms.c arch/${LINUX_ARCH%_64}/kernel/traps_64.c],[ +[kernel/ksyms.c arch/${LINUX_ARCH%_64}/kernel/traps_64.c arch/x86/kernel/dumpstack_32.c arch/x86/kernel/dumpstack_64.c],[ tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" AC_MSG_CHECKING([whether we can really use dump_trace]) @@ -5622,6 +5628,50 @@ EXTRA_KCFLAGS="$tmp_flags" ]) +# See if sysctl proc_handler wants only 5 arguments (since 2.6.32) +AC_DEFUN([LN_5ARGS_SYSCTL_PROC_HANDLER], +[AC_MSG_CHECKING([if sysctl proc_handler wants 5 args]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct ctl_table *table = NULL; + int write = 1; + void __user *buffer = NULL; + size_t *lenp = NULL; + loff_t *ppos = NULL; + + proc_handler *proc_handler; + proc_handler(table, write, buffer, lenp, ppos); + +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_5ARGS_SYSCTL_PROC_HANDLER, 1, + [sysctl proc_handler wants 5 args]) +],[ + AC_MSG_RESULT(no) +]) +]) + +# +# LN_HAVE_IS_COMPAT_TASK +# +# Added in 2.6.17, it wasn't until 2.6.29 that all +# Linux architectures have is_compat_task() +# +AC_DEFUN([LN_HAVE_IS_COMPAT_TASK], +[AC_MSG_CHECKING([if is_compat_task() is declared]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + int i = is_compat_task(); +],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_IS_COMPAT_TASK, 1, [is_compat_task() is available]) +],[ + AC_MSG_RESULT([no]) +]) +]) + # # LN_PROG_LINUX # @@ -5656,6 +5706,7 @@ LN_TASK_RCU # 2.6.18 LN_TASKLIST_LOCK +LN_HAVE_IS_COMPAT_TASK # 2.6.19 LN_KMEM_CACHE_DESTROY_INT LN_ATOMIC_PANIC_NOTIFIER @@ -5679,6 +5730,8 @@ LN_STRUCT_CRED_IN_TASK # 2.6.30 LN_FUNC_UNSHARE_FS_STRUCT +# 2.6.32 +LN_5ARGS_SYSCTL_PROC_HANDLER ]) # diff -Nru lustre-1.8.3/autoMakefile.in lustre-1.8.5+dfsg/autoMakefile.in --- lustre-1.8.3/autoMakefile.in 2010-04-10 02:29:08.000000000 +0200 +++ lustre-1.8.5+dfsg/autoMakefile.in 2010-11-17 04:31:59.000000000 +0100 @@ -593,7 +593,7 @@ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + -find $(distdir) -type d ! -perm -755 -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ @@ -879,7 +879,52 @@ cversion=$$(sed -ne '1s/^lustre (\(.*\)-[0-9][0-9]*).*$$/\1/p' debian/changelog); \ if [ "$$lversion" != "$$cversion" ]; then \ echo -e "1i\nlustre ($$lversion-1) unstable; urgency=low\n\n * Automated changelog entry update\n\n -- Brian J. Murrell $$(date -R)\n\n.\nwq" | ed debian/changelog; \ + fi; \ + if [ -d .git ]; then \ + ver=$$(git describe --match v\* --tags); \ + if [[ $$ver = *-*-* ]]; then \ + hash=$${ver##*-}; \ + ffw=$${ver#*-}; \ + ffw=$${ffw%-*}; \ + ver=$${ver%%-*}; \ + fi; \ + if [ $$ffw -gt 0 ]; then \ + tag=$$ver; \ + if [[ $$ver =~ ^v([0-9]+_)+([0-9]+|RC[0-9]+)$$ ]]; then \ + ver=$$(echo $$ver | \ + sed -e 's/^v\(.*\)/\1/' \ + -e 's/_RC[[0-9]].*$$//' \ + -e 's/_/./g'); \ + fi; \ + pdir="debian/patches"; \ + if [ -d $$pdir ]; then \ + rm -rf $$pdir; \ + fi; \ + mkdir $$pdir; \ + git format-patch -o $$pdir $$tag..HEAD; \ + pushd $$pdir; \ + if [ -d ../patched ]; then \ + rm -rf ../patched; \ + fi; \ + mkdir ../patched; \ + rm -f 00list *.dpatch; \ + for file in [0-9][0-9][0-9][0-9]-*.patch; do \ + if ! grep -q "^ debian/changelog" $$file; then \ + desc=$$(cat $$file | sed -e '1,/^$$/d' \ + -e '/^---$$/,$$d'); \ + dpatch_file=$${file/.patch/.dpatch}; \ + sed -e '1,/^---$$/d' $$file | \ + dpatch patch-template -p "$${file%.patch}" \ + "$$desc" > $$dpatch_file; \ + echo "faked by make debs run from git" > \ + ../patched/$$dpatch_file; \ + echo $$dpatch_file >> 00list; \ + fi; \ + rm -f $$file; \ + done; \ + fi; \ fi + rm -rf debs dpkg-buildpackage || { \ rc=$${PIPESTATUS[0]}; \ [ $${rc} -gt 1 ] && exit $${rc}; \ @@ -889,7 +934,7 @@ version=$$(sed -ne '1s/^lustre (\(.*\)).*$$/\1/p' debian/changelog) && \ rm -rf debian/tmp/modules-deb && \ mkdir debian/tmp/modules-deb && \ - cd debian/tmp/modules-deb && \ + pushd debian/tmp/modules-deb && \ dpkg -x ../../../../lustre-source_$${version}_all.deb $$(pwd) && \ mkdir usr_src/ && \ tar -C usr_src/ -xjf usr/src/lustre.tar.bz2 && \ @@ -899,7 +944,12 @@ ln -s /usr/share/modass/packages/ usr_share_modass/ && \ echo "lustre" > usr_share_modass/compliant.list && \ export MA_DIR=$$(pwd)/usr_share_modass && \ - m-a build $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre + KVERS=$${KVERS:-$(LINUXRELEASE)}; \ + m-a build $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre && \ + popd && \ + VER=$$(sed -ne '1s/^lustre (\(.*-[0-9][0-9]*\)).*$$/\1/p' debian/changelog); \ + mkdir -p debs && \ + mv ../liblustre_$${VER}_*.deb ../linux-patch-lustre_$${VER}_all.deb ../lustre-dev_$${VER}_*.deb ../lustre-source_$${VER}_all.deb ../lustre-tests_$${VER}_*.deb ../lustre-utils_$${VER}_*.deb ../lustre_$${VER}.dsc ../lustre_$${VER}_*.changes ../lustre_$${VER}.tar.gz ../lustre-client-modules-$${KVERS}_$${VER}_*.deb debs/ @LDISKFS_ENABLED_TRUE@@LDISKFS_IN_KERNEL_FALSE@@SYMVERFILE@: @LDISKFS_DIR@/@SYMVERFILE@ @LDISKFS_ENABLED_TRUE@@LDISKFS_IN_KERNEL_FALSE@ touch @SYMVERFILE@ diff -Nru lustre-1.8.3/build/autoconf/lustre-build-linux.m4 lustre-1.8.5+dfsg/build/autoconf/lustre-build-linux.m4 --- lustre-1.8.3/build/autoconf/lustre-build-linux.m4 2010-03-15 03:04:07.000000000 +0100 +++ lustre-1.8.5+dfsg/build/autoconf/lustre-build-linux.m4 2010-11-17 04:31:48.000000000 +0100 @@ -84,7 +84,7 @@ AC_MSG_RESULT([$LINUXRELEASE]) AC_SUBST(LINUXRELEASE) -moduledir='/lib/modules/'$LINUXRELEASE/kernel +moduledir='/lib/modules/'$LINUXRELEASE/updates/kernel AC_SUBST(moduledir) modulefsdir='$(moduledir)/fs/$(PACKAGE)' @@ -365,7 +365,7 @@ # like AC_COMPILE_IFELSE # AC_DEFUN([LB_LINUX_COMPILE_IFELSE], -[m4_ifvaln([$1], [LB_LINUX_CONFTEST([$1])])dnl +[m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl rm -f build/conftest.o build/conftest.mod.c build/conftest.ko AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])], [$4], @@ -529,7 +529,7 @@ . $O2IBPATH/ofed_patch.mk fi if test -n "$BACKPORT_INCLUDES"; then - OFED_BACKPORT_PATH=`echo $BACKPORT_INCLUDES | sed "s#.*/src/ofa_kernel/#$O2IBPATH/#"` + OFED_BACKPORT_PATH="$O2IBPATH/${BACKPORT_INCLUDES/*\/kernel_addons/kernel_addons}/" EXTRA_LNET_INCLUDE="-I$OFED_BACKPORT_PATH $EXTRA_LNET_INCLUDE" AC_MSG_RESULT([yes]) else @@ -540,32 +540,6 @@ ]) # LC_MODULE_LOADING -# after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains -# so we test if request_module is implemented or not -AC_DEFUN([LC_MODULE_LOADING], -[AC_MSG_CHECKING([if kernel module loading is possible]) -LB_LINUX_TRY_MAKE([ - #include -],[ - int myretval=ENOSYS ; - return myretval; -],[ - $makerule LUSTRE_KERNEL_TEST=conftest.i -],[ - grep request_module build/conftest.i | grep -v `grep "int myretval=" build/conftest.i | cut -d= -f2 | cut -d" " -f1` >/dev/null -],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_MODULE_LOADING_SUPPORT, 1, - [kernel module loading is possible]) -],[ - AC_MSG_RESULT(no) - AC_MSG_WARN([]) - AC_MSG_WARN([Kernel module loading support is highly recommended.]) - AC_MSG_WARN([]) -]) -]) - -# LC_MODULE_LOADING # after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains # so we test if request_module is implemented or not AC_DEFUN([LC_MODULE_LOADING], diff -Nru lustre-1.8.3/build/autoconf/lustre-build.m4 lustre-1.8.5+dfsg/build/autoconf/lustre-build.m4 --- lustre-1.8.3/build/autoconf/lustre-build.m4 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/build/autoconf/lustre-build.m4 2010-11-17 04:31:48.000000000 +0100 @@ -331,86 +331,7 @@ [use alternate names for ldiskfs-enabled e2fsprogs]), [],[withval='no']) -if test x$withval = xyes ; then - AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - AC_MSG_RESULT([enabled]) -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - AC_MSG_RESULT([disabled]) -fi - AC_DEFINE_UNQUOTED(E2FSPROGS, "$E2FSPROGS", [name of ldiskfs e2fsprogs package]) - AC_DEFINE_UNQUOTED(MKE2FS, "$MKE2FS", [name of ldiskfs mkfs program]) - AC_DEFINE_UNQUOTED(DEBUGFS, "$DEBUGFS", [name of ldiskfs debug program]) - AC_DEFINE_UNQUOTED(TUNE2FS, "$TUNE2FS", [name of ldiskfs tune program]) - AC_DEFINE_UNQUOTED(E2LABEL, "$E2LABEL", [name of ldiskfs label program]) - AC_DEFINE_UNQUOTED(DUMPE2FS,"$DUMPE2FS", [name of ldiskfs dump program]) - AC_DEFINE_UNQUOTED(E2FSCK, "$E2FSCK", [name of ldiskfs fsck program]) -]) - -# -# LB_DEFINE_E2FSPROGS_NAMES -# -# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package. -# -AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES], -[AC_ARG_WITH([ldiskfsprogs], - AC_HELP_STRING([--with-ldiskfsprogs], - [use alternate names for ldiskfs-enabled e2fsprogs]), - [],[withval='no']) - -if test x$withval = xyes ; then - AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - AC_MSG_RESULT([enabled]) -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - AC_MSG_RESULT([disabled]) -fi - AC_DEFINE_UNQUOTED(E2FSPROGS, "$E2FSPROGS", [name of ldiskfs e2fsprogs package]) - AC_DEFINE_UNQUOTED(MKE2FS, "$MKE2FS", [name of ldiskfs mkfs program]) - AC_DEFINE_UNQUOTED(DEBUGFS, "$DEBUGFS", [name of ldiskfs debug program]) - AC_DEFINE_UNQUOTED(TUNE2FS, "$TUNE2FS", [name of ldiskfs tune program]) - AC_DEFINE_UNQUOTED(E2LABEL, "$E2LABEL", [name of ldiskfs label program]) - AC_DEFINE_UNQUOTED(DUMPE2FS,"$DUMPE2FS", [name of ldiskfs dump program]) - AC_DEFINE_UNQUOTED(E2FSCK, "$E2FSCK", [name of ldiskfs fsck program]) -]) - -# -# LB_DEFINE_E2FSPROGS_NAMES -# -# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package. -# -AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES], -[AC_ARG_WITH([ldiskfsprogs], - AC_HELP_STRING([--with-ldiskfsprogs], - [use alternate names for ldiskfs-enabled e2fsprogs]), - [],[withval='no']) - +AC_MSG_CHECKING([whether to use alternate names for e2fsprogs]) if test x$withval = xyes ; then AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) E2FSPROGS="ldiskfsprogs" @@ -924,10 +845,6 @@ LB_DEFINE_E2FSPROGS_NAMES -LB_DEFINE_E2FSPROGS_NAMES - -LB_DEFINE_E2FSPROGS_NAMES - LC_CONFIG_LIBLUSTRE LIBCFS_CONFIGURE LN_CONFIGURE diff -Nru lustre-1.8.3/build/autoMakefile.am.toplevel lustre-1.8.5+dfsg/build/autoMakefile.am.toplevel --- lustre-1.8.3/build/autoMakefile.am.toplevel 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/build/autoMakefile.am.toplevel 2010-11-17 04:31:48.000000000 +0100 @@ -152,7 +152,52 @@ cversion=$$(sed -ne '1s/^lustre (\(.*\)-[0-9][0-9]*).*$$/\1/p' debian/changelog); \ if [ "$$lversion" != "$$cversion" ]; then \ echo -e "1i\nlustre ($$lversion-1) unstable; urgency=low\n\n * Automated changelog entry update\n\n -- Brian J. Murrell $$(date -R)\n\n.\nwq" | ed debian/changelog; \ + fi; \ + if [ -d .git ]; then \ + ver=$$(git describe --match v\* --tags); \ + if [[ $$ver = *-*-* ]]; then \ + hash=$${ver##*-}; \ + ffw=$${ver#*-}; \ + ffw=$${ffw%-*}; \ + ver=$${ver%%-*}; \ + fi; \ + if [ $$ffw -gt 0 ]; then \ + tag=$$ver; \ + if [[ $$ver =~ ^v([0-9]+_)+([0-9]+|RC[0-9]+)$$ ]]; then \ + ver=$$(echo $$ver | \ + sed -e 's/^v\(.*\)/\1/' \ + -e 's/_RC[[0-9]].*$$//' \ + -e 's/_/./g'); \ + fi; \ + pdir="debian/patches"; \ + if [ -d $$pdir ]; then \ + rm -rf $$pdir; \ + fi; \ + mkdir $$pdir; \ + git format-patch -o $$pdir $$tag..HEAD; \ + pushd $$pdir; \ + if [ -d ../patched ]; then \ + rm -rf ../patched; \ + fi; \ + mkdir ../patched; \ + rm -f 00list *.dpatch; \ + for file in [0-9][0-9][0-9][0-9]-*.patch; do \ + if ! grep -q "^ debian/changelog" $$file; then \ + desc=$$(cat $$file | sed -e '1,/^$$/d' \ + -e '/^---$$/,$$d'); \ + dpatch_file=$${file/.patch/.dpatch}; \ + sed -e '1,/^---$$/d' $$file | \ + dpatch patch-template -p "$${file%.patch}" \ + "$$desc" > $$dpatch_file; \ + echo "faked by make debs run from git" > \ + ../patched/$$dpatch_file; \ + echo $$dpatch_file >> 00list; \ + fi; \ + rm -f $$file; \ + done; \ + fi; \ fi + rm -rf debs dpkg-buildpackage || { \ rc=$${PIPESTATUS[0]}; \ [ $${rc} -gt 1 ] && exit $${rc}; \ @@ -162,7 +207,7 @@ version=$$(sed -ne '1s/^lustre (\(.*\)).*$$/\1/p' debian/changelog) && \ rm -rf debian/tmp/modules-deb && \ mkdir debian/tmp/modules-deb && \ - cd debian/tmp/modules-deb && \ + pushd debian/tmp/modules-deb && \ dpkg -x ../../../../lustre-source_$${version}_all.deb $$(pwd) && \ mkdir usr_src/ && \ tar -C usr_src/ -xjf usr/src/lustre.tar.bz2 && \ @@ -172,4 +217,9 @@ ln -s /usr/share/modass/packages/ usr_share_modass/ && \ echo "lustre" > usr_share_modass/compliant.list && \ export MA_DIR=$$(pwd)/usr_share_modass && \ - m-a build $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre + KVERS=$${KVERS:-$(LINUXRELEASE)}; \ + m-a build $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre && \ + popd && \ + VER=$$(sed -ne '1s/^lustre (\(.*-[0-9][0-9]*\)).*$$/\1/p' debian/changelog); \ + mkdir -p debs && \ + mv ../liblustre_$${VER}_*.deb ../linux-patch-lustre_$${VER}_all.deb ../lustre-dev_$${VER}_*.deb ../lustre-source_$${VER}_all.deb ../lustre-tests_$${VER}_*.deb ../lustre-utils_$${VER}_*.deb ../lustre_$${VER}.dsc ../lustre_$${VER}_*.changes ../lustre_$${VER}.tar.gz ../lustre-client-modules-$${KVERS}_$${VER}_*.deb debs/ diff -Nru lustre-1.8.3/build/lbuild lustre-1.8.5+dfsg/build/lbuild --- lustre-1.8.3/build/lbuild 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/build/lbuild 2010-11-17 04:31:48.000000000 +0100 @@ -89,6 +89,11 @@ # build the lustre-tests rpm? LUSTRE_TESTS=true +# these are disabled by default, enabled with command line switches or by +# the calling environment +BUILD_MPTLINUX=${BUILD_MPTLINUX:-false} +BUILD_RDAC=${BUILD_RDAC:-false} + DATE=$(date) USE_DATESTAMP=1 @@ -237,6 +242,17 @@ --xen Builds a Xen domX kernel. + --enable-mptlinux + Enables the building of MPTLINUX with the same kernel Lustre is + built with. + + --enable-rdac + Enables the building of MPTLINUX with the same kernel Lustre is + built with. + + --set-value + Set's a variable to a given value. + EOF # list_targets @@ -491,7 +507,7 @@ touch $semaphore if ! wget -nv "$from" -O "$to" || [ ! -s "$to" ]; then # the trap will remove the files via the fatal below - fatal 1 "Could not download ${to##*/} from ${from%%/*}/." + fatal 1 "Could not download ${to##*/} from ${from%/*}/." fi rm -f $semaphore delete_exit_trap "download" @@ -507,58 +523,30 @@ download_ofed() { local force="${1:-false}" - local location="http://downloads.lustre.org/public/OFED/" + if [ -z "$OFED_VERSION" -o "$OFED_VERSION" = "inkernel" ]; then + return 0 + fi + + local location="http://www.openfabrics.org/downloads/OFED/ofed-${OFED_VERSION}/" - local Mmv daily if [[ $OFED_VERSION = daily-* ]]; then + local Mmv daily OFED_VERSION=${OFED_VERSION/daily-/} Mmv=${OFED_VERSION%%-*} daily=${OFED_VERSION##$Mmv-} location="http://www.openfabrics.org/downloads/OFED/ofed-${Mmv}-daily/" # find the filename for the version for the date specified - OFED_VERSION=$(curl -s "$location" | sed -nre "/${daily}-/s/.*href=\"OFED-([0-9]+\.[0-9]+-${daily}-[0-9]{4,4}).tgz.*$/\1/p" | tail -1) + OFED_VERSION=$(curl -s "$location" | sed -nre "/${daily}-/s/.*href=\"OFED-(${Mmv//./\\.}-${daily}-[0-9]{4,4}).tgz.*$/\1/p" | tail -1) if [ -z "$OFED_VERSION" ]; then fatal 1 "Could not determine the filename of the OFED snapshot for ${daily}" fi fi - if [ -z "$OFED_VERSION" -o "$OFED_VERSION" = "inkernel" ]; then - return 0 - fi - local file="OFED-${OFED_VERSION}.tgz" download_file "$location/$file" "$KERNELTREE" "$force" } -download_rdac() { - local force="${1:-false}" - - local location="http://downloads.lustre.org/public/RDAC/" - - if [ -z "$RDAC_VERSION" -o "$RDAC_VERSION" = "inkernel" ]; then - return 0 - fi - - local file="rdac-LINUX-${RDAC_VERSION}-source.tar.gz" - download_file "$location/$file" "$KERNELTREE" "$force" - -} - -download_mptlinux() { - local force="${1:-false}" - - local location="http://downloads.lustre.org/public/MPTLINUX/" - - if [ -z "$MPTLINUX_VERSION" -o "$MPTLINUX_VERSION" = "inkernel" ]; then - return 0 - fi - - file="MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip" - download_file "$location/$file" "$KERNELTREE" "$force" - -} - load_target() { EXTRA_VERSION_save="$EXTRA_VERSION" @@ -637,11 +625,10 @@ elif ! $RELEASE; then # if there is no patch series, then this is not a lustre specific # kernel. don't make it look like one - if [ -n "$SERIES" ]; then - #remove the @VERSION@ (lustre version) -# EXTRA_VERSION=$(echo $EXTRA_VERSION | sed -e "s/\(.*_lustre\)\..*/\1/") + if $PATCHLESS || [ -n "$SERIES" ]; then + EXTRA_VERSION=$(echo $EXTRA_VERSION | sed -e "s/\(.*_lustre\)\..*/\1/") # EXTRA_VERSION="${EXTRA_VERSION}-${TAG}.${TIMESTAMP}" - ! ( $PATCHLESS ) && EXTRA_VERSION="${EXTRA_VERSION}.${TIMESTAMP}" + EXTRA_VERSION="${EXTRA_VERSION}.${TIMESTAMP}" fi fi # EXTRA_VERSION=${EXTRA_VERSION//-/_} @@ -683,10 +670,12 @@ } untar() { - local file="$1" + local tarfile="$1" + shift + local extractfile="$@" - echo "Untarring ${file##*/}..." - tar $(tarflags "$file") "$file" + echo "Untarring ${tarfile##*/}..." + tar $(tarflags "$tarfile") "$tarfile" $extractfile } @@ -710,10 +699,10 @@ unpack_mptlinux() { - if ! unzip -p $KERNELTREE/MPTLINUX_RHEL5_SLES10_PH15-4.16.00.00-2.zip | tar xzvf - srpms-2/mptlinux-4.16.00.00-2.src.rpm; then + if ! untar $KERNELTREE/SUN_MPTLINUX_RHEL5_PH16-${MPTLINUX_VERSION}.tar.gz pkg1-rhel5/srpms-1/mptlinux-${MPTLINUX_VERSION}-1.src.rpm; then return 1 fi - mv srpms-2/mptlinux-4.16.00.00-2.src.rpm . + mv pkg1-rhel5/srpms-1/mptlinux-${MPTLINUX_VERSION}-1.src.rpm . } @@ -856,6 +845,7 @@ $RPMBUILD $targets $rpmbuildopt ../lustre.spec \ ${is_patchless:+--define "lustre_name lustre-client"} \ ${lustre_tests:+--define "build_lustre_tests 0"} \ + ${FIND_REQUIRES:+--define "__find_requires $FIND_REQUIRES"} \ --define "configure_args $confoptions ${CONFIGURE_FLAGS}" \ --define "_tmppath $TMPDIR" \ --define "_topdir $TOPDIR" 2>&1 || \ @@ -965,6 +955,10 @@ [ $infact_arch == $smp_type ] && RPMSMPTYPE=bigsmp && break done + for smp_type in $PPC64_ARCHS; do + [ $infact_arch == $smp_type ] && RPMSMPTYPE=ppc64 && break + done + for smp_type in $DEFAULT_ARCHS; do [ $infact_arch == $smp_type ] && RPMSMPTYPE=default && break done @@ -1035,7 +1029,9 @@ # call a distro specific hook, if available if type -p unpack_linux_devel_rpm-$DISTRO; then - unpack_linux_devel_rpm-$DISTRO "$kernelrpm" + if ! unpack_linux_devel_rpm-$DISTRO "$kernelrpm"; then + return 255 + fi fi popd &>/dev/null @@ -1083,7 +1079,7 @@ rpm --define "_topdir ${TOPDIR}" -ivh $SOURCE SOURCE="${TOPDIR}/SPECS/ofa_kernel.spec" local file ed_fragment1 ed_fragment2 n=1 - for file in ${TOPDIR}/lustre/build/patches/ofed/*; do + for file in $(ls ${TOPDIR}/lustre/build/patches/ofed/*); do ed_fragment1="$ed_fragment1 Patch$n: ${file%%*/}" ed_fragment2="$ed_fragment2 @@ -1092,7 +1088,8 @@ let n=$n+1 done - ed $SOURCE </dev/null @@ -1571,7 +1594,7 @@ fatal 1 "Failed to find a kernel development RPM in $TOPDIR/RPMS/$arch/" fi - # install the -devel RPM in preparation for the lustre build + # install the -devel RPM in preparation for modules builds if ! lnxrel="$kernel_extra_version" unpack_linux_devel_rpm \ "$TOPDIR/RPMS/$arch/$kernel_devel_rpm"; then fatal 1 "Could not find the Linux tree in $TOPDIR/RPMS/$arch/$kernel_devel_rpm" @@ -1589,6 +1612,38 @@ fi fi + # ~sigh~ have to make copies of and modify some of the rpm + # infrastructure files so that find-requires can find our unpacked + # kernel-devel artifacts + cp $RPM_HELPERS_DIR/{symset-table,find-requires{,.ksyms}} . + FIND_REQUIRES="$(pwd)/find-requires" + chmod 755 {symset-table,find-requires{,.ksyms}} + local tmp="$(pwd)" + tmp="${tmp//\//\\/}" + ed find-requires < ++ - update to 4.18.20.04 +* Wed Oct 28 2009 Brian J. Murrell + - split into modules and non-modules packages so that multiple + modules packages can be installed, for several kernels diff -Nru lustre-1.8.3/config.h.in lustre-1.8.5+dfsg/config.h.in --- lustre-1.8.3/config.h.in 2010-04-10 02:29:01.000000000 +0200 +++ lustre-1.8.5+dfsg/config.h.in 2010-11-17 04:31:52.000000000 +0100 @@ -72,6 +72,9 @@ /* vfs_symlink wants 4 args */ #undef HAVE_4ARGS_VFS_SYMLINK +/* sysctl proc_handler wants 5 args */ +#undef HAVE_5ARGS_SYSCTL_PROC_HANDLER + /* kernel exports add_to_page_cache_lru */ #undef HAVE_ADD_TO_PAGE_CACHE_LRU @@ -99,6 +102,9 @@ /* Enable adaptive timeouts support */ #undef HAVE_AT_SUPPORT +/* bdi_init/bdi_destroy functions are present */ +#undef HAVE_BDI_INIT + /* Enable BGL Features */ #undef HAVE_BGL_SUPPORT @@ -156,6 +162,9 @@ /* after 2.6.17 dquote use mutex instead if semaphore */ #undef HAVE_DQUOTOFF_MUTEX +/* DQUOT_INIT is defined */ +#undef HAVE_DQUOT_INIT + /* dump_trace is exported */ #undef HAVE_DUMP_TRACE @@ -177,9 +186,6 @@ /* inode_permission is exported by the kernel */ #undef HAVE_EXPORT_INODE_PERMISSION -/* kernel exports __iget */ -#undef HAVE_EXPORT___IGET - /* Define to 1 if you have the header file. */ #undef HAVE_EXT2FS_EXT2FS_H @@ -213,6 +219,12 @@ /* use fops->writev */ #undef HAVE_FILE_WRITEV +/* file_operations .flush method has an fl_owner_t id */ +#undef HAVE_FLUSH_OWNER_ID + +/* kernel has fs/quota/quotaio_v1.h */ +#undef HAVE_FS_QUOTA_QUOTAIO_V1_H + /* kernel has FS_RENAME_DOES_D_MOVE flag */ #undef HAVE_FS_RENAME_DOES_D_MOVE @@ -264,6 +276,9 @@ /* exported invalidate_mapping_pages */ #undef HAVE_INVALIDATE_MAPPING_PAGES +/* is_compat_task() is available */ +#undef HAVE_IS_COMPAT_TASK + /* kernel has .sendfile */ #undef HAVE_KERNEL_SENDFILE @@ -360,6 +375,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_TCP_H +/* backing_dev_info has a bdi_list field */ +#undef HAVE_NEW_BACKING_DEV_INFO + /* node_to_cpumask is exported by the kernel */ #undef HAVE_NODE_TO_CPUMASK @@ -438,6 +456,9 @@ /* releasepage with gfp_t parameter */ #undef HAVE_RELEASEPAGE_WITH_GFP +/* request_queue has a limits field */ +#undef HAVE_REQUEST_QUEUE_LIMITS + /* mapping->tree_lock is rw_lock */ #undef HAVE_RW_TREE_LOCK @@ -450,6 +471,9 @@ /* struct scatterlist has page member */ #undef HAVE_SCATTERLIST_SETPAGE +/* sched_show_task is exported */ +#undef HAVE_SCHED_SHOW_TASK + /* SLES10 SP2 use extra parameter in vfs */ #undef HAVE_SECURITY_PLUG @@ -674,3 +698,6 @@ /* Version number of package */ #undef VERSION + +/* ext4_ext_walk_space takes i_data_sem */ +#undef WALK_SPACE_HAS_DATA_SEM diff -Nru lustre-1.8.3/configure lustre-1.8.5+dfsg/configure --- lustre-1.8.3/configure 2010-04-10 02:29:13.000000000 +0200 +++ lustre-1.8.5+dfsg/configure 2010-11-17 04:32:04.000000000 +0100 @@ -1428,16 +1428,16 @@ AC_LUSTRE_MAJOR=1 AC_LUSTRE_MINOR=8 -AC_LUSTRE_PATCH=3 +AC_LUSTRE_PATCH=5 AC_LUSTRE_FIX=0 -AC_LUSTRE_VERSION_STRING=1.8.3 +AC_LUSTRE_VERSION_STRING=1.8.5 AC_LUSTRE_VER_ALLOWED_OFFSET="OBD_OCD_VERSION(0,0,1,32)" AC_LUSTRE_LIB_VER_OFFSET_WARN="OBD_OCD_VERSION(0,0,1,32)" AC_LUSTRE_CLI_VER_OFFSET_WARN="OBD_OCD_VERSION(0,2,0,0)" -AC_LUSTRE_CLIENT_URN="LUSTRE-183-CLT" -AC_LUSTRE_MGS_URN="LUSTRE-183-MGS" -AC_LUSTRE_MDS_URN="LUSTRE-183-MDS" -AC_LUSTRE_OSS_URN="LUSTRE-183-OSS" +AC_LUSTRE_CLIENT_URN="LUSTRE-185-CLT" +AC_LUSTRE_MGS_URN="LUSTRE-185-MGS" +AC_LUSTRE_MDS_URN="LUSTRE-185-MDS" +AC_LUSTRE_OSS_URN="LUSTRE-185-OSS" @@ -1465,7 +1465,7 @@ fi -if test "1.8.3" = "LUSTRE""_VERSION" ; then +if test "1.8.5" = "LUSTRE""_VERSION" ; then { { echo "$as_me:$LINENO: error: This script was not built with a version number." >&5 echo "$as_me: error: This script was not built with a version number." >&2;} { (exit 1); exit 1; }; } @@ -1833,7 +1833,7 @@ # Define the identity of the package. PACKAGE='lustre' - VERSION='1.8.3' + VERSION='1.8.5' cat >>confdefs.h <<_ACEOF @@ -5000,7 +5000,7 @@ echo "$as_me:$LINENO: checking for external module build support" >&5 echo $ECHO_N "checking for external module build support... $ECHO_C" >&6 rm -f build/conftest.i - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5015,7 +5015,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d $makerule LUSTRE_KERNEL_TEST=conftest.i ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5039,7 +5038,7 @@ makerule="_module_$makerule" MODULE_TARGET="M" - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5054,7 +5053,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d $makerule LUSTRE_KERNEL_TEST=conftest.i ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5099,7 +5097,7 @@ # --- check that we can build modules at all echo "$as_me:$LINENO: checking that modules can be built at all" >&5 echo $ECHO_N "checking that modules can be built at all... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5114,7 +5112,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5159,7 +5156,7 @@ else LINUXRELEASEHEADER=version.h fi -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5179,7 +5176,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d $makerule LUSTRE_KERNEL_TEST=conftest.i @@ -5226,7 +5222,7 @@ echo "${ECHO_T}$LINUXRELEASE" >&6 -moduledir='/lib/modules/'$LINUXRELEASE/kernel +moduledir='/lib/modules/'$LINUXRELEASE/updates/kernel modulefsdir='$(moduledir)/fs/$(PACKAGE)' @@ -5246,7 +5242,7 @@ # check is redhat/suse kernels echo "$as_me:$LINENO: checking that RedHat kernel" >&5 echo $ECHO_N "checking that RedHat kernel... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5267,7 +5263,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5300,7 +5295,7 @@ echo "$as_me:$LINENO: checking if Linux was built with CONFIG_SUSE_KERNEL" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_SUSE_KERNEL... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5321,7 +5316,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5385,7 +5379,7 @@ echo "$as_me:$LINENO: checking if Linux was built with CONFIG_MODULES" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_MODULES... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5406,7 +5400,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5444,7 +5437,7 @@ echo "$as_me:$LINENO: checking if Linux was built with CONFIG_MODVERSIONS" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_MODVERSIONS... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5465,7 +5458,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5499,7 +5491,7 @@ echo "$as_me:$LINENO: checking if Linux was built with CONFIG_KALLSYMS" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_KALLSYMS... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5520,7 +5512,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5561,7 +5552,7 @@ # 2.6.28 echo "$as_me:$LINENO: checking if kernel module loading is possible" >&5 echo $ECHO_N "checking if kernel module loading is possible... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5581,7 +5572,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d $makerule LUSTRE_KERNEL_TEST=conftest.i @@ -5692,7 +5682,7 @@ . $O2IBPATH/ofed_patch.mk fi if test -n "$BACKPORT_INCLUDES"; then - OFED_BACKPORT_PATH=`echo $BACKPORT_INCLUDES | sed "s#.*/src/ofa_kernel/#$O2IBPATH/#"` + OFED_BACKPORT_PATH="$O2IBPATH/${BACKPORT_INCLUDES/*\/kernel_addons/kernel_addons}/" EXTRA_LNET_INCLUDE="-I$OFED_BACKPORT_PATH $EXTRA_LNET_INCLUDE" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 @@ -5708,7 +5698,7 @@ echo "$as_me:$LINENO: checking if kernel defines cpu_online()" >&5 echo $ECHO_N "checking if kernel defines cpu_online()... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5727,7 +5717,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5763,7 +5752,7 @@ echo "$as_me:$LINENO: checking if kernel defines gfp_t" >&5 echo $ECHO_N "checking if kernel defines gfp_t... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5782,7 +5771,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5818,7 +5806,7 @@ echo "$as_me:$LINENO: checking if kernel defines cpumask_t" >&5 echo $ECHO_N "checking if kernel defines cpumask_t... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5837,7 +5825,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5885,7 +5872,7 @@ echo "$as_me:$LINENO: result: no (by request)" >&5 echo "${ECHO_T}no (by request)" >&6 else - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5910,7 +5897,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6038,7 +6024,7 @@ if test x$QSNET = x$LINUX ; then echo "$as_me:$LINENO: checking if Linux was built with CONFIG_QSNET" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_QSNET... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6059,7 +6045,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6087,7 +6072,7 @@ echo "$as_me:$LINENO: checking if Linux was built with CONFIG_QSNET_MODULE" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_QSNET_MODULE... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6108,7 +6093,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6217,7 +6201,7 @@ echo "$as_me:$LINENO: checking that code using GM compiles with given path" >&5 echo $ECHO_N "checking that code using GM compiles with given path... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6243,7 +6227,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6277,7 +6260,7 @@ echo "$as_me:$LINENO: checking that GM has gm_register_memory_ex_phys()" >&5 echo $ECHO_N "checking that GM has gm_register_memory_ex_phys()... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6307,7 +6290,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6411,7 +6393,7 @@ OPENIBCPPFLAGS="$OPENIBCPPFLAGS -DIB_NTXRXPARAMS=4" EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="$EXTRA_KCFLAGS $OPENIBCPPFLAGS" - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6439,7 +6421,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6525,7 +6506,7 @@ CIBCPPFLAGS="$CIBCPPFLAGS -DIB_NTXRXPARAMS=3" EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="$EXTRA_KCFLAGS $CIBCPPFLAGS" - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6553,7 +6534,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6623,7 +6603,7 @@ VIBCPPFLAGS="-I${VIBPATH}/include -I${VIBPATH}/cm" EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="$EXTRA_KCFLAGS $VIBCPPFLAGS" - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6666,7 +6646,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6701,7 +6680,7 @@ EXTRA_KCFLAGS="$EXTRA_KCFLAGS $VIBCPPFLAGS" echo "$as_me:$LINENO: checking if Voltaire still uses void * sg addresses" >&5 echo $ECHO_N "checking if Voltaire still uses void * sg addresses... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6734,7 +6713,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6819,7 +6797,7 @@ fi EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="$EXTRA_KCFLAGS $IIBCPPFLAGS" - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6844,7 +6822,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -6963,7 +6940,7 @@ EXTRA_KCFLAGS="$EXTRA_KCFLAGS $O2IBCPPFLAGS" EXTRA_LNET_INCLUDE="$EXTRA_LNET_INCLUDE $O2IBCPPFLAGS" - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6998,7 +6975,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7072,7 +7048,7 @@ echo "$as_me:$LINENO: checking if OFED has ib_dma_map_single" >&5 echo $ECHO_N "checking if OFED has ib_dma_map_single... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7097,7 +7073,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7133,7 +7108,7 @@ echo "$as_me:$LINENO: checking if ib_create_cq wants comp_vector" >&5 echo $ECHO_N "checking if ib_create_cq wants comp_vector... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7158,7 +7133,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7194,7 +7168,7 @@ echo "$as_me:$LINENO: checking if OFED supports iWarp transport" >&5 echo $ECHO_N "checking if OFED supports iWarp transport... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7219,7 +7193,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7255,7 +7228,7 @@ echo "$as_me:$LINENO: checking if OFED has RDMA_CM_EVENT_ADDR_CHANGE" >&5 echo $ECHO_N "checking if OFED has RDMA_CM_EVENT_ADDR_CHANGE... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7279,7 +7252,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7315,7 +7287,7 @@ echo "$as_me:$LINENO: checking if OFED has RDMA_CM_EVENT_TIMEWAIT_EXIT" >&5 echo $ECHO_N "checking if OFED has RDMA_CM_EVENT_TIMEWAIT_EXIT... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7339,7 +7311,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7388,7 +7359,7 @@ RACPPFLAGS="-I${LINUX}/drivers/xd1/include" EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="$EXTRA_KCFLAGS $RACPPFLAGS" -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7413,7 +7384,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7552,7 +7522,7 @@ EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="$EXTRA_KCFLAGS $MXCPPFLAGS" MXLIBS="-L$MXPATH/lib" - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7583,7 +7553,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7635,7 +7604,7 @@ echo "$as_me:$LINENO: checking if struct page has a list field" >&5 echo $ECHO_N "checking if struct page has a list field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7655,7 +7624,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7691,7 +7659,7 @@ echo "$as_me:$LINENO: checking if task_struct has a sighand field" >&5 echo $ECHO_N "checking if task_struct has a sighand field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7711,7 +7679,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7763,6 +7730,47 @@ echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 + echo "$as_me:$LINENO: checking if Linux was built with symbol sched_show_task exported" >&5 +echo $ECHO_N "checking if Linux was built with symbol sched_show_task exported... $ECHO_C" >&6 +grep -q -E '[[:space:]]sched_show_task[[:space:]]' $LINUX/$SYMVERFILE 2>/dev/null +rc=$? +if test $rc -ne 0; then + export=0 + for file in kernel/ksyms.c kernel/sched.c; do + grep -q -E "EXPORT_SYMBOL.*\(sched_show_task\)" "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + + else + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SCHED_SHOW_TASK 1 +_ACEOF + + + fi +else + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SCHED_SHOW_TASK 1 +_ACEOF + + +fi + else echo "$as_me:$LINENO: result: yes" >&5 @@ -7792,7 +7800,7 @@ echo $ECHO_N "checking kernel __u64 is long long type... $ECHO_C" >&6 tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Werror" -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7815,7 +7823,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -7856,6 +7863,7 @@ CFLAGS="$CFLAGS -Werror" cat >conftest.$ac_ext <<_ACEOF + #include #include #include int main(void) { @@ -7916,6 +7924,7 @@ CFLAGS="$CFLAGS -Werror" cat >conftest.$ac_ext <<_ACEOF + #include #include #include int main(void) { @@ -7972,7 +7981,7 @@ echo "$as_me:$LINENO: checking __le16 and __le32 types are defined" >&5 echo $ECHO_N "checking __le16 and __le32 types are defined... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -7992,7 +8001,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8028,7 +8036,7 @@ echo "$as_me:$LINENO: checking if task_struct has a rcu field" >&5 echo $ECHO_N "checking if task_struct has a rcu field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8049,7 +8057,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8127,10 +8134,64 @@ fi +echo "$as_me:$LINENO: checking if is_compat_task() is declared" >&5 +echo $ECHO_N "checking if is_compat_task() is declared... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main (void) +{ + + int i = is_compat_task(); + + ; + return 0; +} +_ACEOF +rm -f build/conftest.o build/conftest.mod.c build/conftest.ko +if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define HAVE_IS_COMPAT_TASK 1 +_ACEOF + + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + +fi + +rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c + # 2.6.19 echo "$as_me:$LINENO: checking kmem_cache_destroy(cachep) return int" >&5 echo $ECHO_N "checking kmem_cache_destroy(cachep) return int... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8149,7 +8210,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8185,7 +8245,7 @@ echo "$as_me:$LINENO: checking panic_notifier_list is atomic" >&5 echo $ECHO_N "checking panic_notifier_list is atomic... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8205,7 +8265,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8242,7 +8301,7 @@ # 2.6.20 echo "$as_me:$LINENO: checking check INIT_WORK want 3 args" >&5 echo $ECHO_N "checking check INIT_WORK want 3 args... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8263,7 +8322,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8300,7 +8358,7 @@ # 2.6.21 echo "$as_me:$LINENO: checking check register_sysctl_table want 2 args" >&5 echo $ECHO_N "checking check register_sysctl_table want 2 args... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8319,7 +8377,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8357,7 +8414,7 @@ echo $ECHO_N "checking check kernel has struct kmem_cache... $ECHO_C" >&6 tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8379,7 +8436,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8417,7 +8473,7 @@ # 2.6.23 echo "$as_me:$LINENO: checking check kmem_cache_create has dtor argument" >&5 echo $ECHO_N "checking check kmem_cache_create has dtor argument... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8436,7 +8492,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8473,7 +8528,7 @@ # 2.6.24 echo "$as_me:$LINENO: checking for CTL_UNNUMBERED" >&5 echo $ECHO_N "checking for CTL_UNNUMBERED... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8494,7 +8549,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8530,7 +8584,7 @@ echo "$as_me:$LINENO: checking for exist sg_set_page" >&5 echo $ECHO_N "checking for exist sg_set_page... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8550,7 +8604,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8587,7 +8640,7 @@ # 2.6.26 echo "$as_me:$LINENO: checking atomic sem.count" >&5 echo $ECHO_N "checking atomic sem.count... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8608,7 +8661,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8645,7 +8697,7 @@ # 2.6.27 echo "$as_me:$LINENO: checking sock_map_fd have second argument" >&5 echo $ECHO_N "checking sock_map_fd have second argument... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8664,7 +8716,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8704,7 +8755,7 @@ rc=$? if test $rc -ne 0; then export=0 - for file in kernel/ksyms.c arch/${LINUX_ARCH%_64}/kernel/traps_64.c; do + for file in kernel/ksyms.c arch/${LINUX_ARCH%_64}/kernel/traps_64.c arch/x86/kernel/dumpstack_32.c arch/x86/kernel/dumpstack_64.c; do grep -q -E "EXPORT_SYMBOL.*\(dump_trace\)" "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then @@ -8724,7 +8775,7 @@ EXTRA_KCFLAGS="-Werror" echo "$as_me:$LINENO: checking whether we can really use dump_trace" >&5 echo $ECHO_N "checking whether we can really use dump_trace... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8744,7 +8795,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8779,7 +8829,7 @@ rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c echo "$as_me:$LINENO: checking whether print_trace_address has reliable argument" >&5 echo $ECHO_N "checking whether print_trace_address has reliable argument... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8803,7 +8853,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8847,7 +8896,7 @@ EXTRA_KCFLAGS="-Werror" echo "$as_me:$LINENO: checking whether we can really use dump_trace" >&5 echo $ECHO_N "checking whether we can really use dump_trace... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8867,7 +8916,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8902,7 +8950,7 @@ rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c echo "$as_me:$LINENO: checking whether print_trace_address has reliable argument" >&5 echo $ECHO_N "checking whether print_trace_address has reliable argument... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8926,7 +8974,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -8997,7 +9044,7 @@ #2.6.29 echo "$as_me:$LINENO: checking if kernel has struct cred" >&5 echo $ECHO_N "checking if kernel has struct cred... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -9017,7 +9064,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -9056,7 +9102,7 @@ echo $ECHO_N "checking if kernel defines unshare_fs_struct()... $ECHO_C" >&6 tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -9076,7 +9122,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -9111,6 +9156,69 @@ rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c EXTRA_KCFLAGS="$tmp_flags" +# 2.6.32 +echo "$as_me:$LINENO: checking if sysctl proc_handler wants 5 args" >&5 +echo $ECHO_N "checking if sysctl proc_handler wants 5 args... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main (void) +{ + + struct ctl_table *table = NULL; + int write = 1; + void __user *buffer = NULL; + size_t *lenp = NULL; + loff_t *ppos = NULL; + + proc_handler *proc_handler; + proc_handler(table, write, buffer, lenp, ppos); + + + ; + return 0; +} +_ACEOF +rm -f build/conftest.o build/conftest.mod.c build/conftest.ko +if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define HAVE_5ARGS_SYSCTL_PROC_HANDLER 1 +_ACEOF + + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + +fi + +rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c + as_lb_File=`echo "lb_cv_file_$LINUX/include/linux/lustre_version.h" | $as_tr_sh` echo "$as_me:$LINENO: checking for $LINUX/include/linux/lustre_version.h" >&5 @@ -9165,7 +9273,7 @@ if test x$enable_server = xyes ; then echo "$as_me:$LINENO: checking if kernel has new dev_set_rdonly" >&5 echo $ECHO_N "checking if kernel has new dev_set_rdonly... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -9187,7 +9295,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -9282,7 +9389,7 @@ echo "$as_me:$LINENO: checking stack size big than 8k" >&5 echo $ECHO_N "checking stack size big than 8k... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -9303,7 +9410,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -9470,7 +9576,7 @@ if test x$enable_quota != xno; then echo "$as_me:$LINENO: checking if Linux was built with CONFIG_QUOTA" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_QUOTA... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -9491,7 +9597,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -9928,7 +10033,7 @@ echo $ECHO_N "checking if ldiskfs has xattr.h header... $ECHO_C" >&6 tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-I$LINUX/fs -I$LDISKFS_DIR -I$LDISKFS_DIR/ldiskfs" -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -9949,7 +10054,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10070,7 +10174,7 @@ echo "$as_me:$LINENO: checking if struct statfs has a f_namelen field" >&5 echo $ECHO_N "checking if struct statfs has a f_namelen field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10090,7 +10194,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10126,7 +10229,7 @@ echo "$as_me:$LINENO: checking for exported filemap_populate" >&5 echo $ECHO_N "checking for exported filemap_populate... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10146,7 +10249,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10182,7 +10284,7 @@ echo "$as_me:$LINENO: checking for d_add_unique" >&5 echo $ECHO_N "checking for d_add_unique... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10201,7 +10303,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10253,7 +10354,7 @@ echo "$as_me:$LINENO: checking if bit_spinlock.h can be compiled" >&5 echo $ECHO_N "checking if bit_spinlock.h can be compiled... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10272,7 +10373,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10327,7 +10427,7 @@ echo "$as_me:$LINENO: checking if xattr_acl.h can be compiled" >&5 echo $ECHO_N "checking if xattr_acl.h can be compiled... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10344,7 +10444,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10383,7 +10482,7 @@ echo "$as_me:$LINENO: checking if struct open_intent has a file field" >&5 echo $ECHO_N "checking if struct open_intent has a file field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10404,7 +10503,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10456,13 +10554,14 @@ echo "$as_me:$LINENO: checking if linux/posix_acl_xattr.h can be compiled" >&5 echo $ECHO_N "checking if linux/posix_acl_xattr.h can be compiled... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ + #include #include int @@ -10473,7 +10572,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10517,52 +10615,9 @@ fi - echo "$as_me:$LINENO: checking if Linux was built with symbol __iget exported" >&5 -echo $ECHO_N "checking if Linux was built with symbol __iget exported... $ECHO_C" >&6 -grep -q -E '[[:space:]]__iget[[:space:]]' $LINUX/$SYMVERFILE 2>/dev/null -rc=$? -if test $rc -ne 0; then - export=0 - for file in fs/inode.c; do - grep -q -E "EXPORT_SYMBOL.*\(__iget\)" "$LINUX/$file" 2>/dev/null - rc=$? - if test $rc -eq 0; then - export=1 - break; - fi - done - if test $export -eq 0; then - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - - - else - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_EXPORT___IGET 1 -_ACEOF - - - fi -else - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_EXPORT___IGET 1 -_ACEOF - - -fi - - echo "$as_me:$LINENO: checking if kernel has MS_FLOCK_LOCK sb flag" >&5 echo $ECHO_N "checking if kernel has MS_FLOCK_LOCK sb flag... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10581,7 +10636,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10617,7 +10671,7 @@ echo "$as_me:$LINENO: checking if kernel has third arg can_sleep in fs/locks.c: flock_lock_file_wait()" >&5 echo $ECHO_N "checking if kernel has third arg can_sleep in fs/locks.c: flock_lock_file_wait()... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10639,7 +10693,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10675,7 +10728,7 @@ echo "$as_me:$LINENO: checking if struct file_operations has flock field" >&5 echo $ECHO_N "checking if struct file_operations has flock field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10695,7 +10748,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10731,7 +10783,7 @@ echo "$as_me:$LINENO: checking if kernel supports quota_read" >&5 echo $ECHO_N "checking if kernel supports quota_read... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10751,7 +10803,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10787,7 +10838,7 @@ echo "$as_me:$LINENO: checking if inode_operations->follow_link returns a cookie" >&5 echo $ECHO_N "checking if inode_operations->follow_link returns a cookie... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10810,7 +10861,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10846,7 +10896,7 @@ echo "$as_me:$LINENO: checking if kernel have RCU supported" >&5 echo $ECHO_N "checking if kernel have RCU supported... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10863,7 +10913,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10887,7 +10936,7 @@ echo "$as_me:$LINENO: checking if call_rcu takes three parameters" >&5 echo $ECHO_N "checking if call_rcu takes three parameters... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10907,7 +10956,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10956,7 +11004,7 @@ echo "$as_me:$LINENO: checking if have struct percpu_counter defined" >&5 echo $ECHO_N "checking if have struct percpu_counter defined... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -10973,7 +11021,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -10997,7 +11044,7 @@ echo "$as_me:$LINENO: checking if percpu_counter_inc takes the 2nd argument" >&5 echo $ECHO_N "checking if percpu_counter_inc takes the 2nd argument... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11017,7 +11064,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11063,128 +11109,9 @@ rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c - if test x$enable_server = xyes ; then -echo "$as_me:$LINENO: checking if kernel has 64-bit quota limits support" >&5 -echo $ECHO_N "checking if kernel has 64-bit quota limits support... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include - #include - #include - int versions[] = V2_INITQVERSIONS_R1; - struct v2_disk_dqblk_r1 dqblk_r1; - -int -main (void) -{ - - ; - return 0; -} -_ACEOF - -rm -f build/conftest.o build/conftest.mod.c build/conftest.ko -if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_QUOTA64 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - tmp_flags="$EXTRA_KCFLAGS" - EXTRA_KCFLAGS="-I $LINUX/fs" - cat >conftest.c <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include - #include - #include - struct v2r1_disk_dqblk dqblk_r1; - -int -main (void) -{ - - ; - return 0; -} -_ACEOF - -rm -f build/conftest.o build/conftest.mod.c build/conftest.ko -if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_QUOTA64 1 -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - { echo "$as_me:$LINENO: WARNING: 4 TB (or larger) block quota limits can only be used with OSTs not larger than 4 TB." >&5 -echo "$as_me: WARNING: 4 TB (or larger) block quota limits can only be used with OSTs not larger than 4 TB." >&2;} - { echo "$as_me:$LINENO: WARNING: Continuing with limited quota support." >&5 -echo "$as_me: WARNING: Continuing with limited quota support." >&2;} - { echo "$as_me:$LINENO: WARNING: quotacheck is needed for filesystems with recent quota versions." >&5 -echo "$as_me: WARNING: quotacheck is needed for filesystems with recent quota versions." >&2;} - -fi - -rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c - EXTRA_KCFLAGS=$tmp_flags - -fi - -rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c -fi - echo "$as_me:$LINENO: checking if vfs_symlink wants 4 args" >&5 echo $ECHO_N "checking if vfs_symlink wants 4 args... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11208,7 +11135,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11246,7 +11172,7 @@ # does the kernel have VFS intent patches? echo "$as_me:$LINENO: checking if the kernel has the VFS intent patches" >&5 echo $ECHO_N "checking if the kernel has the VFS intent patches... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11272,7 +11198,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11357,7 +11282,7 @@ echo $ECHO_N "checking mapping->tree_lock is rw_lock... $ECHO_C" >&6 tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11378,7 +11303,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11460,7 +11384,7 @@ # 2.6.15 echo "$as_me:$LINENO: checking if inode has i_mutex " >&5 echo $ECHO_N "checking if inode has i_mutex ... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11483,7 +11407,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11519,7 +11442,7 @@ echo "$as_me:$LINENO: checking if kernel has atomic_cmpxchg" >&5 echo $ECHO_N "checking if kernel has atomic_cmpxchg... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11540,7 +11463,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11576,7 +11498,7 @@ echo "$as_me:$LINENO: checking if kernel has atomic_inc_not_zero" >&5 echo $ECHO_N "checking if kernel has atomic_inc_not_zero... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11597,7 +11519,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11635,7 +11556,7 @@ # 2.6.16 echo "$as_me:$LINENO: checking If kernel has security plug support" >&5 echo $ECHO_N "checking If kernel has security plug support... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11658,7 +11579,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11696,7 +11616,7 @@ # 2.6.17 echo "$as_me:$LINENO: checking use dqonoff_mutex" >&5 echo $ECHO_N "checking use dqonoff_mutex... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11719,7 +11639,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11757,7 +11676,7 @@ # 2.6.18 echo "$as_me:$LINENO: checking kernel export nr_pagecache" >&5 echo $ECHO_N "checking kernel export nr_pagecache... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11776,7 +11695,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11812,7 +11730,7 @@ echo "$as_me:$LINENO: checking first vfs_statfs parameter is dentry" >&5 echo $ECHO_N "checking first vfs_statfs parameter is dentry... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11831,7 +11749,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11867,7 +11784,7 @@ echo "$as_me:$LINENO: checking vfs_kern_mount exist in kernel" >&5 echo $ECHO_N "checking vfs_kern_mount exist in kernel... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11886,7 +11803,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11922,7 +11838,7 @@ echo "$as_me:$LINENO: checking invalidatepage has return int" >&5 echo $ECHO_N "checking invalidatepage has return int... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -11941,7 +11857,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -11979,7 +11894,7 @@ echo $ECHO_N "checking if umount_begin needs vfsmount parameter instead of super_block... $ECHO_C" >&6 tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12008,7 +11923,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12045,7 +11959,7 @@ echo "$as_me:$LINENO: checking if inode has a i_private field" >&5 echo $ECHO_N "checking if inode has a i_private field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12065,7 +11979,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12142,6 +12055,64 @@ fi + echo "$as_me:$LINENO: checking if file_operations .flush has an fl_owner_t id" >&5 +echo $ECHO_N "checking if file_operations .flush has an fl_owner_t id... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main (void) +{ + + struct file_operations *fops = NULL; + fl_owner_t id; + int i; + + i = fops->flush(NULL, id); + + ; + return 0; +} +_ACEOF +rm -f build/conftest.o build/conftest.mod.c build/conftest.ko +if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_FLUSH_OWNER_ID 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + +fi + +rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c + if test x$enable_server = xyes ; then echo "$as_me:$LINENO: checking if Linux was built with symbol invalidate_mapping_pages exported" >&5 echo $ECHO_N "checking if Linux was built with symbol invalidate_mapping_pages exported... $ECHO_C" >&6 @@ -12231,7 +12202,7 @@ #2.6.18 + RHEL5 (fc6) echo "$as_me:$LINENO: checking kernel has PG_fs_misc" >&5 echo $ECHO_N "checking kernel has PG_fs_misc... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12253,7 +12224,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12289,7 +12259,7 @@ echo "$as_me:$LINENO: checking kernel has PageChecked and SetPageChecked" >&5 echo $ECHO_N "checking kernel has PageChecked and SetPageChecked... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12319,7 +12289,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12371,7 +12340,7 @@ echo "$as_me:$LINENO: checking if fiemap.h can be compiled" >&5 echo $ECHO_N "checking if fiemap.h can be compiled... $ECHO_C" >&6 - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12389,7 +12358,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12430,7 +12398,7 @@ # 2.6.19 echo "$as_me:$LINENO: checking inode has i_blksize field" >&5 echo $ECHO_N "checking inode has i_blksize field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12450,7 +12418,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12488,7 +12455,7 @@ echo $ECHO_N "checking check vfs_readdir need 64bit inode number... $ECHO_C" >&6 tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12515,7 +12482,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12552,7 +12518,7 @@ echo "$as_me:$LINENO: checking if file_update_time is exported" >&5 echo $ECHO_N "checking if file_update_time is exported... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12571,7 +12537,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12607,7 +12572,7 @@ echo "$as_me:$LINENO: checking writev in fops" >&5 echo $ECHO_N "checking writev in fops... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12627,7 +12592,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12663,7 +12627,7 @@ echo "$as_me:$LINENO: checking readv in fops" >&5 echo $ECHO_N "checking readv in fops... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12683,7 +12647,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12728,7 +12691,7 @@ echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 else - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12748,7 +12711,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12787,7 +12749,7 @@ # raid5-zerocopy patch echo "$as_me:$LINENO: checking if kernel have PageConstant defined" >&5 echo $ECHO_N "checking if kernel have PageConstant defined... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12809,7 +12771,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12847,7 +12808,7 @@ # 2.6.22 echo "$as_me:$LINENO: checking if invalidate_bdev has second argument" >&5 echo $ECHO_N "checking if invalidate_bdev has second argument... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12866,7 +12827,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12902,7 +12862,7 @@ echo "$as_me:$LINENO: checking if kernel has FS_RENAME_DOES_D_MOVE flag" >&5 echo $ECHO_N "checking if kernel has FS_RENAME_DOES_D_MOVE flag... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12921,7 +12881,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -12958,7 +12917,7 @@ # 2.6.23 echo "$as_me:$LINENO: checking if unregister_blkdev return int" >&5 echo $ECHO_N "checking if unregister_blkdev return int... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -12977,7 +12936,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13013,7 +12971,7 @@ echo "$as_me:$LINENO: checking if kernel has .sendfile" >&5 echo $ECHO_N "checking if kernel has .sendfile... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13034,7 +12992,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13070,7 +13027,7 @@ echo "$as_me:$LINENO: checking if kernel has .splice_read" >&5 echo $ECHO_N "checking if kernel has .splice_read... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13091,7 +13048,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13157,7 +13113,7 @@ echo "$as_me:$LINENO: checking if kernel has .fault in vm_operation_struct" >&5 echo $ECHO_N "checking if kernel has .fault in vm_operation_struct... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13178,7 +13134,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13234,7 +13189,7 @@ echo $ECHO_N "checking if kernel using gfp_t for shrinker second paramter... $ECHO_C" >&6 tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13256,7 +13211,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13322,7 +13276,7 @@ echo "$as_me:$LINENO: checking if kernel has pde_users member in procfs entry struct" >&5 echo $ECHO_N "checking if kernel has pde_users member in procfs entry struct... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13343,7 +13297,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13381,7 +13334,7 @@ # 2.6.25 echo "$as_me:$LINENO: checking if kernel have mapping_cap_writeback_dirty" >&5 echo $ECHO_N "checking if kernel have mapping_cap_writeback_dirty... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13402,7 +13355,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13470,7 +13422,7 @@ echo "$as_me:$LINENO: checking if kernel has bio_endio with 2 args" >&5 echo $ECHO_N "checking if kernel has bio_endio with 2 args... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13489,7 +13441,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13525,7 +13476,7 @@ echo "$as_me:$LINENO: checking if kernel has .fh_to_dentry member in export_operations struct" >&5 echo $ECHO_N "checking if kernel has .fh_to_dentry member in export_operations struct... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13550,7 +13501,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13586,7 +13536,7 @@ echo "$as_me:$LINENO: checking if kernel has deleted member in procfs entry struct" >&5 echo $ECHO_N "checking if kernel has deleted member in procfs entry struct... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13607,7 +13557,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13645,7 +13594,7 @@ # 2.6.24-19-generic Ubuntu echo "$as_me:$LINENO: checking kernel has a remove_suid that takes a struct path" >&5 echo $ECHO_N "checking kernel has a remove_suid that takes a struct path... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13665,7 +13614,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13703,7 +13651,7 @@ # 2.6.26 echo "$as_me:$LINENO: checking fs_struct use path structure" >&5 echo $ECHO_N "checking fs_struct use path structure... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13727,7 +13675,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13765,7 +13712,7 @@ # 2.6.27 echo "$as_me:$LINENO: checking inode_operations->permission have two args" >&5 echo $ECHO_N "checking inode_operations->permission have two args... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13786,7 +13733,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13822,7 +13768,7 @@ echo "$as_me:$LINENO: checking kernel have file_remove_suid" >&5 echo $ECHO_N "checking kernel have file_remove_suid... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13841,7 +13787,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13877,7 +13822,7 @@ echo "$as_me:$LINENO: checking kernel use trylock_page for page lock" >&5 echo $ECHO_N "checking kernel use trylock_page for page lock... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13896,7 +13841,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13934,7 +13878,7 @@ echo $ECHO_N "checking mapping->tree_lock is rw_lock... $ECHO_C" >&6 tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13955,7 +13899,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -13992,7 +13935,7 @@ echo "$as_me:$LINENO: checking super_operations has a read_inode field" >&5 echo $ECHO_N "checking super_operations has a read_inode field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14012,7 +13955,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14091,7 +14033,7 @@ echo "$as_me:$LINENO: checking quota_on needs 5 parameters" >&5 echo $ECHO_N "checking quota_on needs 5 parameters... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14111,7 +14053,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14147,7 +14088,7 @@ echo "$as_me:$LINENO: checking quota_off needs 3 parameters" >&5 echo $ECHO_N "checking quota_off needs 3 parameters... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14167,7 +14108,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14203,7 +14143,7 @@ echo "$as_me:$LINENO: checking vfs_dq_off is defined" >&5 echo $ECHO_N "checking vfs_dq_off is defined... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14222,7 +14162,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14260,7 +14199,7 @@ # 2.6.27.15-2 sles11 echo "$as_me:$LINENO: checking struct bio has a bi_hw_segments field" >&5 echo $ECHO_N "checking struct bio has a bi_hw_segments field... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14280,7 +14219,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14337,6 +14275,29 @@ else + as_lb_File=`echo "lb_cv_file_$LINUX/fs/quota/quotaio_v1.h" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $LINUX/fs/quota/quotaio_v1.h" >&5 +echo $ECHO_N "checking for $LINUX/fs/quota/quotaio_v1.h... $ECHO_C" >&6 +if eval "test \"\${$as_lb_File+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -r "$LINUX/fs/quota/quotaio_v1.h"; then + eval "$as_lb_File=yes" +else + eval "$as_lb_File=no" +fi +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_lb_File'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_lb_File'}'`" >&6 +if test `eval echo '${'$as_lb_File'}'` = yes; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_FS_QUOTA_QUOTAIO_V1_H 1 +_ACEOF + + +else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 @@ -14344,9 +14305,12 @@ fi +fi + + echo "$as_me:$LINENO: checking vfs_symlink need 5 parameter" >&5 echo $ECHO_N "checking vfs_symlink need 5 parameter... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14369,7 +14333,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14405,7 +14368,7 @@ echo "$as_me:$LINENO: checking Kernel has sb_any_quota_active" >&5 echo $ECHO_N "checking Kernel has sb_any_quota_active... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14424,7 +14387,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14460,7 +14422,7 @@ echo "$as_me:$LINENO: checking Kernel has sb_has_quota_active" >&5 echo $ECHO_N "checking Kernel has sb_has_quota_active... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14479,7 +14441,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14513,11 +14474,54 @@ rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c + echo "$as_me:$LINENO: checking if Linux was built with symbol bdi_init exported" >&5 +echo $ECHO_N "checking if Linux was built with symbol bdi_init exported... $ECHO_C" >&6 +grep -q -E '[[:space:]]bdi_init[[:space:]]' $LINUX/$SYMVERFILE 2>/dev/null +rc=$? +if test $rc -ne 0; then + export=0 + for file in mm/backing-dev.c; do + grep -q -E "EXPORT_SYMBOL.*\(bdi_init\)" "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + + + else + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_BDI_INIT 1 +_ACEOF + + + fi +else + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_BDI_INIT 1 +_ACEOF + + +fi + + #2.6.29 echo "$as_me:$LINENO: checking if kernel has .write_begin/end" >&5 echo $ECHO_N "checking if kernel has .write_begin/end... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14545,7 +14549,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14581,7 +14584,7 @@ echo "$as_me:$LINENO: checking d_obtain_alias exist in kernel" >&5 echo $ECHO_N "checking d_obtain_alias exist in kernel... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14600,7 +14603,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14636,7 +14638,7 @@ echo "$as_me:$LINENO: checking blkdev_put needs 2 parameters" >&5 echo $ECHO_N "checking blkdev_put needs 2 parameters... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14655,7 +14657,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14691,7 +14692,7 @@ echo "$as_me:$LINENO: checking dentry_open needs 4 parameters" >&5 echo $ECHO_N "checking dentry_open needs 4 parameters... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14710,7 +14711,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14748,7 +14748,7 @@ # 2.6.31 echo "$as_me:$LINENO: checking if blk_queue_logical_block_size is defined" >&5 echo $ECHO_N "checking if blk_queue_logical_block_size is defined... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -14767,7 +14767,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -14802,6 +14801,268 @@ rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c + # 2.6.32 + echo "$as_me:$LINENO: checking if backing_dev_info has a bdi_list field" >&5 +echo $ECHO_N "checking if backing_dev_info has a bdi_list field... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main (void) +{ + + struct backing_dev_info bdi; + memset(&bdi.bdi_list, 0x00, sizeof(bdi.bdi_list)); + + ; + return 0; +} +_ACEOF +rm -f build/conftest.o build/conftest.mod.c build/conftest.ko +if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define HAVE_NEW_BACKING_DEV_INFO 1 +_ACEOF + + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + +fi + +rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c + + if test x$enable_server = xyes ; then + echo "$as_me:$LINENO: checking if ext4_ext_walk_space() takes i_data_sem" >&5 +echo $ECHO_N "checking if ext4_ext_walk_space() takes i_data_sem... $ECHO_C" >&6 +WALK_SPACE_DATA_SEM="$(awk '/ext4_ext_walk_space/,/ext4_ext_find_extent/' $LINUX/fs/ext4/extents.c | grep -c 'down_read.*i_data_sem')" +if test "$WALK_SPACE_DATA_SEM" != 0 ; then + +cat >>confdefs.h <<\_ACEOF +#define WALK_SPACE_HAS_DATA_SEM 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + fi + echo "$as_me:$LINENO: checking if DQUOT_INIT is defined" >&5 +echo $ECHO_N "checking if DQUOT_INIT is defined... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main (void) +{ + + DQUOT_INIT(NULL); + + ; + return 0; +} +_ACEOF +rm -f build/conftest.o build/conftest.mod.c build/conftest.ko +if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DQUOT_INIT 1 +_ACEOF + + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + +fi + +rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c + + echo "$as_me:$LINENO: checking if request_queue has a limits field" >&5 +echo $ECHO_N "checking if request_queue has a limits field... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + +int +main (void) +{ + + struct request_queue rq; + rq.limits.io_min = 0; + + ; + return 0; +} +_ACEOF +rm -f build/conftest.o build/conftest.mod.c build/conftest.ko +if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define HAVE_REQUEST_QUEUE_LIMITS 1 +_ACEOF + + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + +fi + +rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c + + + # + if test x$enable_server = xyes ; then + echo "$as_me:$LINENO: checking if kernel has 64-bit quota limits support" >&5 +echo $ECHO_N "checking if kernel has 64-bit quota limits support... $ECHO_C" >&6 +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-I$LINUX/fs" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #include + #include + #ifdef HAVE_QUOTAIO_V1_H + # include + int versions[] = V2_INITQVERSIONS_R1; + struct v2_disk_dqblk_r1 dqblk_r1; + #else + # ifdef HAVE_FS_QUOTA_QUOTAIO_V1_H + # include + # else + # include + # endif + struct v2r1_disk_dqblk dqblk_r1; + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f build/conftest.o build/conftest.mod.c build/conftest.ko +if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_QUOTA64 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: WARNING: 4 TB (or larger) block quota limits can only be used with OSTs not larger than 4 TB." >&5 +echo "$as_me: WARNING: 4 TB (or larger) block quota limits can only be used with OSTs not larger than 4 TB." >&2;} + { echo "$as_me:$LINENO: WARNING: Continuing with limited quota support." >&5 +echo "$as_me: WARNING: Continuing with limited quota support." >&2;} + { echo "$as_me:$LINENO: WARNING: quotacheck is needed for filesystems with recent quota versions." >&5 +echo "$as_me: WARNING: quotacheck is needed for filesystems with recent quota versions." >&2;} + +fi + +rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko build/conftest.c conftest.c +EXTRA_KCFLAGS=$tmp_flags + # must after LC_HAVE_QUOTAIO_V1_H + fi + ;; darwin*) kernel_framework="/System/Library/Frameworks/Kernel.framework" @@ -14919,6 +15180,7 @@ CFLAGS="$CFLAGS -Werror" cat >conftest.$ac_ext <<_ACEOF + #include #include #include int main(void) { @@ -15539,150 +15801,8 @@ withval='no' fi; -if test x$withval = xyes ; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LDISKFSPROGS 1 -_ACEOF - - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - echo "$as_me:$LINENO: result: enabled" >&5 -echo "${ECHO_T}enabled" >&6 -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - echo "$as_me:$LINENO: result: disabled" >&5 -echo "${ECHO_T}disabled" >&6 -fi - -cat >>confdefs.h <<_ACEOF -#define E2FSPROGS "$E2FSPROGS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define MKE2FS "$MKE2FS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define DEBUGFS "$DEBUGFS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define TUNE2FS "$TUNE2FS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define E2LABEL "$E2LABEL" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define DUMPE2FS "$DUMPE2FS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define E2FSCK "$E2FSCK" -_ACEOF - - - - -# Check whether --with-ldiskfsprogs or --without-ldiskfsprogs was given. -if test "${with_ldiskfsprogs+set}" = set; then - withval="$with_ldiskfsprogs" - -else - withval='no' -fi; - -if test x$withval = xyes ; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LDISKFSPROGS 1 -_ACEOF - - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - echo "$as_me:$LINENO: result: enabled" >&5 -echo "${ECHO_T}enabled" >&6 -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - echo "$as_me:$LINENO: result: disabled" >&5 -echo "${ECHO_T}disabled" >&6 -fi - -cat >>confdefs.h <<_ACEOF -#define E2FSPROGS "$E2FSPROGS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define MKE2FS "$MKE2FS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define DEBUGFS "$DEBUGFS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define TUNE2FS "$TUNE2FS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define E2LABEL "$E2LABEL" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define DUMPE2FS "$DUMPE2FS" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define E2FSCK "$E2FSCK" -_ACEOF - - - - -# Check whether --with-ldiskfsprogs or --without-ldiskfsprogs was given. -if test "${with_ldiskfsprogs+set}" = set; then - withval="$with_ldiskfsprogs" - -else - withval='no' -fi; - +echo "$as_me:$LINENO: checking whether to use alternate names for e2fsprogs" >&5 +echo $ECHO_N "checking whether to use alternate names for e2fsprogs... $ECHO_C" >&6 if test x$withval = xyes ; then cat >>confdefs.h <<\_ACEOF @@ -19753,7 +19873,7 @@ } >&5 cat >&5 <<_CSEOF -This file was extended by Lustre $as_me 1.8.3, which was +This file was extended by Lustre $as_me 1.8.5, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19816,7 +19936,7 @@ cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -Lustre config.status 1.8.3 +Lustre config.status 1.8.5 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff -Nru lustre-1.8.3/debian/changelog lustre-1.8.5+dfsg/debian/changelog --- lustre-1.8.3/debian/changelog 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/changelog 2012-01-08 21:10:41.000000000 +0100 @@ -1,3 +1,78 @@ +lustre (1.8.5+dfsg-3ubuntu1) precise; urgency=low + + * Merge from Debian testing (LP: #913526). Remaining changes: + - Add ldadd_for_loadgen.patch (updated) to correctly link against + libreadline. Fixes FTBFS. + * Drop changes: + - 615749_no_add_needed.dpatch now in debian + - Fix a bashism in lustre/liblustre/genlib.sh now in debian + - debian/rules: link against -lpthread to fix FTBFS no more needed + + -- Leo Iannacone Sun, 08 Jan 2012 20:25:29 +0100 + +lustre (1.8.5+dfsg-3) unstable; urgency=low + + * [9194f2d] Build ldiskfs kernel module also on plain + debian kernel (2.6.32) + * [897600b] move modifcations from .diff.gz to + modified-debian-specific-stuff.patch (Closes: #643209) + * [5dbe9c8] Don't depend anymore on automake1.7 (Closes: #648585) + + -- Patrick Winnertz Wed, 16 Nov 2011 13:36:11 +0100 + +lustre (1.8.5+dfsg-2) unstable; urgency=low + + * [2362539] the lib should be installed in /usr/lib/lustre-1.8 + and not in lustre-1.6 + * [d7b87bd] Add -Wl,--no-add-needed as linkerflags to debian/rules + * [0517031] Add a patch for building with + -Wl,--no-add-needed (Closes: #615749) + * [14e5cc4] lustre is since a long time maintained in a git vcs... + * [a66324e] Bump standards version to 3.9.1 - no further changes needed + + -- Patrick Winnertz Thu, 17 Mar 2011 11:56:54 +0100 + +lustre (1.8.5+dfsg-1) unstable; urgency=low + + * [b396782] Imported Upstream version 1.8.5+dfsg + * [fff132c] Move to 3.0 (quilt) + * [dad99d6] Add a series file + * [51aa515] Comment out two patches which doesn't apply with quilt + currently + * [2af3035] Refresh all patches using quilt refresh + * [c8394bc] Remove dpatch from build-depends, we're using only quilt + now + * [50c03e5] Fix a lintian warnings concerning the manpage of lctl and + lustre + * [53e15ec] Remove unused lintian overrides + * [629cb8f] Merge fix-lustre-manpage.patch and lustre_manpages.patch + * [0542c74] cleaned up debian/patches/ - removed unused stuff + * [5758022] Install all new manpages into the packages + * [2e982eb] Removed unused overrides + * [e890c68] Fix some more lintian warnings and errors in the lustre + packages + * [4d5e398] Fix some more lintian warnings + * [4fe0a09] Updated changelog entry for 1.8.5-1 + * [f5d142f] Remove mark_rodata_ro and mark_rodata_rw from cacheflush.h + + -- Patrick Winnertz Fri, 17 Dec 2010 13:26:08 +0100 + +lustre (1.8.4-1) unstable; urgency=low + + * [f4955cc] Remove .gitignore file to prevent conflicts with lustre- + git + * [bff2c31] Imported Upstream version 1.8.4~git20100804 + * [5b0ed6a] Add changelog entry for 1.8.4 + * [df980ba] Remove autogen.sh patch + * [83b26d5] Remove manpage fix + * [75375cb] Remove typecasts patch as it doesn't apply + * [94ce62e] Remove another patch which doesn't apply + * [d0dc2eb] Add a small patch to prevent version_tag.pl from failing + * [72e426e] Remove -Werror from gcc arguments + * [9cf2a66] Imported Upstream version 1.8.4 + + -- Patrick Winnertz Thu, 19 Aug 2010 10:05:29 +0200 + lustre (1.8.3-4ubuntu2) oneiric; urgency=low * Add ldadd_for_loadgen.dpatch to correctly link against diff -Nru lustre-1.8.3/debian/control lustre-1.8.5+dfsg/debian/control --- lustre-1.8.3/debian/control 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/control 2012-01-08 20:32:00.000000000 +0100 @@ -4,10 +4,10 @@ Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Debian Lustre Packaging team Uploaders: Patrick Winnertz , Noèl Köthe -Standards-Version: 3.8.4 -Build-Depends: libreadline-dev, debhelper (>=6.0.7), dpatch, dh-kpatches (>= 0.99.3), lyx, automake1.7, libsnmp-dev, bzip2, texlive-extra-utils | tetex-extra, quilt, texlive-latex-recommended +Standards-Version: 3.9.1 +Build-Depends: libreadline-dev, debhelper (>=6.0.7), dh-kpatches (>= 0.99.3), lyx, automake1.7, libsnmp-dev, bzip2, texlive-extra-utils, quilt, texlive-latex-recommended, libncurses-dev Homepage: http://www.lustre.org/ -Vcs-Cvs: -d :pserver:anonymous@cvs.lustre.org:/lustre +Vcs-Git: git://git.lustre.org/prime/lustre.git Package: linux-patch-lustre Section: kernel diff -Nru lustre-1.8.3/debian/liblustre.install lustre-1.8.5+dfsg/debian/liblustre.install --- lustre-1.8.3/debian/liblustre.install 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/liblustre.install 2011-11-16 13:36:55.000000000 +0100 @@ -1,2 +1,2 @@ -debian/tmp/usr/lib/liblustre.so usr/lib/lustre-1.6 -debian/tmp/usr/lib/lustre/snmp/lustresnmp.so usr/lib/lustre-1.6 +debian/tmp/usr/lib/liblustre.so usr/lib/lustre-1.8 +debian/tmp/usr/lib/lustre/snmp/lustresnmp.so usr/lib/lustre-1.8 diff -Nru lustre-1.8.3/debian/liblustre.lintian-overrides lustre-1.8.5+dfsg/debian/liblustre.lintian-overrides --- lustre-1.8.3/debian/liblustre.lintian-overrides 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/liblustre.lintian-overrides 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -liblustre: library-not-linked-against-libc ./usr/lib/lustre-1.6/liblustre.so diff -Nru lustre-1.8.3/debian/liblustre.manpages lustre-1.8.5+dfsg/debian/liblustre.manpages --- lustre-1.8.3/debian/liblustre.manpages 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/liblustre.manpages 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1 @@ +lustre/doc/liblustreapi.7 diff -Nru lustre-1.8.3/debian/lustre-tests.lintian-overrides lustre-1.8.5+dfsg/debian/lustre-tests.lintian-overrides --- lustre-1.8.3/debian/lustre-tests.lintian-overrides 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/lustre-tests.lintian-overrides 2011-11-16 13:36:55.000000000 +0100 @@ -1,2 +1,3 @@ #This are only config files, not executables lustre-tests: executable-not-elf-or-script ./usr/lib/lustre/tests/cfg/local.sh +lustre-tests: executable-not-elf-or-script ./usr/lib/lustre/tests/mdsrate-create-small.sh diff -Nru lustre-1.8.3/debian/lustre-utils.lintian-overrides lustre-1.8.5+dfsg/debian/lustre-utils.lintian-overrides --- lustre-1.8.3/debian/lustre-utils.lintian-overrides 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/lustre-utils.lintian-overrides 2011-11-16 13:36:55.000000000 +0100 @@ -1,7 +1,6 @@ #Overrides warnings about manpages, you've to read nevertheless the docu lustre-utils: binary-without-manpage usr/sbin/debugctl lustre-utils: binary-without-manpage usr/bin/ior-survey -lustre-utils: binary-without-manpage usr/sbin/l_getgroups lustre-utils: binary-without-manpage usr/sbin/lc_cluman lustre-utils: binary-without-manpage usr/sbin/lc_hb lustre-utils: binary-without-manpage usr/sbin/lc_lvm @@ -11,17 +10,10 @@ lustre-utils: binary-without-manpage usr/sbin/lc_servip lustre-utils: binary-without-manpage usr/bin/libecho lustre-utils: binary-without-manpage usr/sbin/ll_decode_filter_fid -lustre-utils: binary-without-manpage usr/sbin/ll_recover_lost_found_objs -lustre-utils: binary-without-manpage usr/bin/llobdstat -lustre-utils: binary-without-manpage usr/sbin/llog_reader -lustre-utils: binary-without-manpage usr/bin/llstat -lustre-utils: binary-without-manpage usr/sbin/llverdev lustre-utils: binary-without-manpage usr/sbin/llverfs lustre-utils: binary-without-manpage usr/sbin/loadgen lustre-utils: binary-without-manpage usr/sbin/lr_reader lustre-utils: binary-without-manpage usr/sbin/lrun -lustre-utils: binary-without-manpage usr/sbin/lshowmount -lustre-utils: binary-without-manpage usr/sbin/lst lustre-utils: binary-without-manpage usr/sbin/lstclient lustre-utils: binary-without-manpage usr/sbin/ltrack_stats lustre-utils: binary-without-manpage usr/sbin/lustre_config @@ -35,13 +27,11 @@ lustre-utils: binary-without-manpage usr/bin/obdfilter-survey lustre-utils: binary-without-manpage usr/bin/ost-survey lustre-utils: binary-without-manpage usr/bin/parse-ior -lustre-utils: binary-without-manpage usr/bin/plot-llstat lustre-utils: binary-without-manpage usr/bin/plot-obdfilter lustre-utils: binary-without-manpage usr/bin/plot-ost lustre-utils: binary-without-manpage usr/bin/plot-sgpdd lustre-utils: binary-without-manpage usr/sbin/ptlctl -lustre-utils: binary-without-manpage usr/sbin/routerstat lustre-utils: binary-without-manpage usr/bin/sgpdd-survey lustre-utils: binary-without-manpage usr/sbin/wirecheck lustre-utils: binary-without-manpage usr/sbin/wiretest - +lustre-utils: binary-without-manpage usr/bin/lfs_migrate diff -Nru lustre-1.8.3/debian/lustre-utils.manpages lustre-1.8.5+dfsg/debian/lustre-utils.manpages --- lustre-1.8.3/debian/lustre-utils.manpages 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/lustre-utils.manpages 2011-11-16 13:36:55.000000000 +0100 @@ -1,6 +1,24 @@ lustre/doc/lustre.7 lustre/doc/mkfs.lustre.8 lustre/doc/lctl.8 -debian/lfs.1 +lustre/doc/lfs.1 lustre/doc/mount.lustre.8 lustre/doc/tunefs.lustre.8 +lustre/doc/llapi_file_create.3 +lustre/doc/llbackup.8 +lustre/doc/llstat.8 +lustre/doc/mount.lustre.8 +lustre/doc/tunefs.lustre.8 +lustre/doc/llapi_file_get_stripe.3 +lustre/doc/llobdstat.8 +lustre/doc/llverdev.8 +lustre/doc/plot-llstat.8 +lustre/doc/l_getgroups.8 +lustre/doc/llapi_file_open.3 +lustre/doc/llog_reader.8 +lustre/doc/lshowmount.8 +lustre/doc/routerstat.8 +lustre/doc/llapi_quotactl.3 +lustre/doc/ll_recover_lost_found_objs.8 +lustre/doc/lst.8 + diff -Nru lustre-1.8.3/debian/patches/00list lustre-1.8.5+dfsg/debian/patches/00list --- lustre-1.8.3/debian/patches/00list 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/00list 1970-01-01 01:00:00.000000000 +0100 @@ -1,30 +0,0 @@ -# patches -page-size-undef-fixes.dpatch -#inode-no-i_blksize-2.6.20.dpatch -posix_acl.dpatch -ldiskfs-detect-2.6.20-2.6.22.dpatch -no_default_debugging.dpatch -autogen.sh.dpatch -no-darwin.dpatch -libsysio.dpatch -bug12769-ql-fix.dpatch -bug15587_security.capability_xattr.dpatch -# Debian patches -bash_completion.dpatch -lustre_manpage.dpatch -tex2pdf.dpatch -lustre_config.dpatch -fix-2.6.15-versioncheck.dpatch -bug13852-quota_includes.dpatch -fix-lustre-manpage.dpatch -enable-quota.dpatch -fix-symlink-attack.dpatch -use_bash_instead_of_sh.dpatch -#hotfixes for 1.8.2: -fix-oot-builds.dpatch -fix_various_typecasts.dpatch -no-strict-aliasing.dpatch -fix_bashisms_for_dash.dpatch -fix_dentry_conf_test.dpatch -ldadd_for_loadgen.dpatch -615749_no_add_needed.dpatch diff -Nru lustre-1.8.3/debian/patches/615749_no_add_needed lustre-1.8.5+dfsg/debian/patches/615749_no_add_needed --- lustre-1.8.3/debian/patches/615749_no_add_needed 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/615749_no_add_needed 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,14 @@ +Add missing -lpthread to the linking arguments of liblustreapi.a +Index: lustre/lustre/tests/Makefile.am +=================================================================== +--- lustre.orig/lustre/tests/Makefile.am 2011-03-17 11:19:36.220315409 +0100 ++++ lustre/lustre/tests/Makefile.am 2011-03-17 11:21:06.120761199 +0100 +@@ -61,7 +61,7 @@ + mmap_sanity_SOURCES= mmap_sanity.c + + LIBLUSTREAPI := $(top_builddir)/lustre/utils/liblustreapi.a +-multiop_LDADD=$(LIBLUSTREAPI) -lrt ++multiop_LDADD=$(LIBLUSTREAPI) -lrt -lpthread + + ll_dirstripe_verify_SOURCES= ll_dirstripe_verify.c + ll_dirstripe_verify_LDADD= -L$(top_builddir)/lustre/utils -llustreapi diff -Nru lustre-1.8.3/debian/patches/615749_no_add_needed.dpatch lustre-1.8.5+dfsg/debian/patches/615749_no_add_needed.dpatch --- lustre-1.8.3/debian/patches/615749_no_add_needed.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/615749_no_add_needed.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## 615749_no_add_needed.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Add missing -lpthread to the linking arguments of liblustreapi.a - -@DPATCH@ ---- lustre.orig/lustre/tests/Makefile.am 2011-03-17 11:19:36.220315409 +0100 -+++ lustre/lustre/tests/Makefile.am 2011-03-17 11:21:06.120761199 +0100 -@@ -61,7 +61,7 @@ - mmap_sanity_SOURCES= mmap_sanity.c - - LIBLUSTREAPI := $(top_builddir)/lustre/utils/liblustreapi.a --multiop_LDADD=$(LIBLUSTREAPI) -lrt -+multiop_LDADD=$(LIBLUSTREAPI) -lrt -lpthread - - ll_dirstripe_verify_SOURCES= ll_dirstripe_verify.c - ll_dirstripe_verify_LDADD= -L$(top_builddir)/lustre/utils -llustreapi diff -Nru lustre-1.8.3/debian/patches/autogen.sh.dpatch lustre-1.8.5+dfsg/debian/patches/autogen.sh.dpatch --- lustre-1.8.3/debian/patches/autogen.sh.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/autogen.sh.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,292 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## autogen.dpatch by Goswin von Brederlow -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: autogen.sh script from lustre upstream cvs for 1.6.4.2 - -@DPATCH@ -diff -urNad lustre-1.6.4.2~/autogen.sh lustre-1.6.4.2/autogen.sh ---- lustre-1.6.4.2~/autogen.sh 1970-01-01 01:00:00.000000000 +0100 -+++ lustre-1.6.4.2/autogen.sh 2008-02-13 12:31:39.631640478 +0100 -@@ -0,0 +1,2 @@ -+#!/bin/sh -+exec bash build/autogen.sh $@ -diff -urNad lustre-1.6.4.2~/build/autogen.sh lustre-1.6.4.2/build/autogen.sh ---- lustre-1.6.4.2~/build/autogen.sh 1970-01-01 01:00:00.000000000 +0100 -+++ lustre-1.6.4.2/build/autogen.sh 2008-02-13 12:31:39.631640478 +0100 -@@ -0,0 +1,128 @@ -+#!/bin/bash -+ -+# taken from gnome-common/macros2/autogen.sh -+compare_versions() { -+ ch_min_version=$1 -+ ch_actual_version=$2 -+ ch_status=0 -+ IFS="${IFS= }"; ch_save_IFS="$IFS"; IFS="." -+ set $ch_actual_version -+ for ch_min in $ch_min_version; do -+ ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes -+ if [ -z "$ch_min" ]; then break; fi -+ if [ -z "$ch_cur" ]; then ch_status=1; break; fi -+ if [ $ch_cur -gt $ch_min ]; then break; fi -+ if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi -+ done -+ IFS="$ch_save_IFS" -+ return $ch_status -+} -+ -+error_msg() { -+ echo "$cmd is $1. version $required is required to build Lustre." -+ -+ if [ -e /usr/lib/autolustre/bin/$cmd ]; then -+ cat >&2 <<-EOF -+ You apparently already have Lustre-specific autoconf/make RPMs -+ installed on your system at /usr/lib/autolustre/share/$cmd. -+ Please set your PATH to point to those versions: -+ -+ export PATH="/usr/lib/autolustre/bin:\$PATH" -+ EOF -+ else -+ cat >&2 <<-EOF -+ CFS provides RPMs which can be installed alongside your -+ existing autoconf/make RPMs, if you are nervous about -+ upgrading. See -+ -+ ftp://ftp.lustre.org/pub/other/autolustre/README.autolustre -+ -+ You may be able to download newer version from: -+ -+ http://ftp.gnu.org/gnu/$tool/$tool-$required.tar.gz -+ EOF -+ fi -+ [ "$cmd" = "autoconf" -a "$required" = "2.57" ] && cat >&2 <&2 </dev/null ; then -+ error_msg "missing" -+ fi -+ version=$($cmd --version | awk "/$tool \(GNU/ { print \$4 }") -+ echo "found $version" -+ if ! compare_versions "$required" "$version" ; then -+ error_msg "too old" -+ fi -+} -+ -+echo "Checking for a complete tree..." -+if [ -d kernel_patches ] ; then -+ # This is ldiskfs -+ REQUIRED_DIRS="build" -+ CONFIGURE_DIRS="" -+else -+ REQUIRED_DIRS="build lnet lustre" -+ OPTIONAL_DIRS="snmp portals" -+ CONFIGURE_DIRS="libsysio ldiskfs" -+fi -+ -+for dir in $REQUIRED_DIRS ; do -+ if [ ! -d "$dir" ] ; then -+ cat >&2 </dev/null -+ echo "Running autogen for $dir..." -+ sh autogen.sh || exit $? -+ popd >/dev/null -+ fi -+done -diff -urNad lustre-1.6.4.2~/ldiskfs/autogen.sh lustre-1.6.4.2/ldiskfs/autogen.sh ---- lustre-1.6.4.2~/ldiskfs/autogen.sh 1970-01-01 01:00:00.000000000 +0100 -+++ lustre-1.6.4.2/ldiskfs/autogen.sh 2008-02-13 12:31:39.631640478 +0100 -@@ -0,0 +1,2 @@ -+#!/bin/bash -+exec bash build/autogen.sh $@ -diff -urNad lustre-1.6.4.2~/ldiskfs/build/autogen.sh lustre-1.6.4.2/ldiskfs/build/autogen.sh ---- lustre-1.6.4.2~/ldiskfs/build/autogen.sh 1970-01-01 01:00:00.000000000 +0100 -+++ lustre-1.6.4.2/ldiskfs/build/autogen.sh 2008-02-13 12:31:33.000000000 +0100 -@@ -0,0 +1,128 @@ -+#!/bin/bash -+ -+# taken from gnome-common/macros2/autogen.sh -+compare_versions() { -+ ch_min_version=$1 -+ ch_actual_version=$2 -+ ch_status=0 -+ IFS="${IFS= }"; ch_save_IFS="$IFS"; IFS="." -+ set $ch_actual_version -+ for ch_min in $ch_min_version; do -+ ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes -+ if [ -z "$ch_min" ]; then break; fi -+ if [ -z "$ch_cur" ]; then ch_status=1; break; fi -+ if [ $ch_cur -gt $ch_min ]; then break; fi -+ if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi -+ done -+ IFS="$ch_save_IFS" -+ return $ch_status -+} -+ -+error_msg() { -+ echo "$cmd is $1. version $required is required to build Lustre." -+ -+ if [ -e /usr/lib/autolustre/bin/$cmd ]; then -+ cat >&2 <<-EOF -+ You apparently already have Lustre-specific autoconf/make RPMs -+ installed on your system at /usr/lib/autolustre/share/$cmd. -+ Please set your PATH to point to those versions: -+ -+ export PATH="/usr/lib/autolustre/bin:\$PATH" -+ EOF -+ else -+ cat >&2 <<-EOF -+ CFS provides RPMs which can be installed alongside your -+ existing autoconf/make RPMs, if you are nervous about -+ upgrading. See -+ -+ ftp://ftp.lustre.org/pub/other/autolustre/README.autolustre -+ -+ You may be able to download newer version from: -+ -+ http://ftp.gnu.org/gnu/$tool/$tool-$required.tar.gz -+ EOF -+ fi -+ [ "$cmd" = "autoconf" -a "$required" = "2.57" ] && cat >&2 <&2 </dev/null ; then -+ error_msg "missing" -+ fi -+ version=$($cmd --version | awk "/$tool \(GNU/ { print \$4 }") -+ echo "found $version" -+ if ! compare_versions "$required" "$version" ; then -+ error_msg "too old" -+ fi -+} -+ -+echo "Checking for a complete tree..." -+if [ -d kernel_patches ] ; then -+ # This is ldiskfs -+ REQUIRED_DIRS="build" -+ CONFIGURE_DIRS="" -+else -+ REQUIRED_DIRS="build lnet lustre" -+ OPTIONAL_DIRS="snmp portals" -+ CONFIGURE_DIRS="libsysio ldiskfs" -+fi -+ -+for dir in $REQUIRED_DIRS ; do -+ if [ ! -d "$dir" ] ; then -+ cat >&2 </dev/null -+ echo "Running autogen for $dir..." -+ sh autogen.sh || exit $? -+ popd >/dev/null -+ fi -+done -diff -urNad lustre-1.6.4.2~/libsysio/autogen.sh lustre-1.6.4.2/libsysio/autogen.sh ---- lustre-1.6.4.2~/libsysio/autogen.sh 1970-01-01 01:00:00.000000000 +0100 -+++ lustre-1.6.4.2/libsysio/autogen.sh 2008-02-13 12:31:39.631640478 +0100 -@@ -0,0 +1,5 @@ -+#!/bin/sh -+ -+aclocal && -+automake --add-missing --copy && -+${AUTOCONF:-autoconf} diff -Nru lustre-1.8.3/debian/patches/autogen.sh.patch lustre-1.8.5+dfsg/debian/patches/autogen.sh.patch --- lustre-1.8.3/debian/patches/autogen.sh.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/autogen.sh.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,291 @@ +## DP: autogen.sh script from lustre upstream cvs for 1.6.4.2 +Index: lustre/autogen.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ lustre/autogen.sh 2010-12-07 17:00:03.881545003 +0100 +@@ -0,0 +1,2 @@ ++#!/bin/sh ++exec bash build/autogen.sh $@ +Index: lustre/build/autogen.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ lustre/build/autogen.sh 2010-12-07 17:00:03.881545003 +0100 +@@ -0,0 +1,128 @@ ++#!/bin/bash ++ ++# taken from gnome-common/macros2/autogen.sh ++compare_versions() { ++ ch_min_version=$1 ++ ch_actual_version=$2 ++ ch_status=0 ++ IFS="${IFS= }"; ch_save_IFS="$IFS"; IFS="." ++ set $ch_actual_version ++ for ch_min in $ch_min_version; do ++ ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes ++ if [ -z "$ch_min" ]; then break; fi ++ if [ -z "$ch_cur" ]; then ch_status=1; break; fi ++ if [ $ch_cur -gt $ch_min ]; then break; fi ++ if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi ++ done ++ IFS="$ch_save_IFS" ++ return $ch_status ++} ++ ++error_msg() { ++ echo "$cmd is $1. version $required is required to build Lustre." ++ ++ if [ -e /usr/lib/autolustre/bin/$cmd ]; then ++ cat >&2 <<-EOF ++ You apparently already have Lustre-specific autoconf/make RPMs ++ installed on your system at /usr/lib/autolustre/share/$cmd. ++ Please set your PATH to point to those versions: ++ ++ export PATH="/usr/lib/autolustre/bin:\$PATH" ++ EOF ++ else ++ cat >&2 <<-EOF ++ CFS provides RPMs which can be installed alongside your ++ existing autoconf/make RPMs, if you are nervous about ++ upgrading. See ++ ++ ftp://ftp.lustre.org/pub/other/autolustre/README.autolustre ++ ++ You may be able to download newer version from: ++ ++ http://ftp.gnu.org/gnu/$tool/$tool-$required.tar.gz ++ EOF ++ fi ++ [ "$cmd" = "autoconf" -a "$required" = "2.57" ] && cat >&2 <&2 </dev/null ; then ++ error_msg "missing" ++ fi ++ version=$($cmd --version | awk "/$tool \(GNU/ { print \$4 }") ++ echo "found $version" ++ if ! compare_versions "$required" "$version" ; then ++ error_msg "too old" ++ fi ++} ++ ++echo "Checking for a complete tree..." ++if [ -d kernel_patches ] ; then ++ # This is ldiskfs ++ REQUIRED_DIRS="build" ++ CONFIGURE_DIRS="" ++else ++ REQUIRED_DIRS="build lnet lustre" ++ OPTIONAL_DIRS="snmp portals" ++ CONFIGURE_DIRS="libsysio ldiskfs" ++fi ++ ++for dir in $REQUIRED_DIRS ; do ++ if [ ! -d "$dir" ] ; then ++ cat >&2 </dev/null ++ echo "Running autogen for $dir..." ++ sh autogen.sh || exit $? ++ popd >/dev/null ++ fi ++done +Index: lustre/ldiskfs/autogen.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ lustre/ldiskfs/autogen.sh 2010-12-07 17:00:03.881545003 +0100 +@@ -0,0 +1,2 @@ ++#!/bin/bash ++exec bash build/autogen.sh $@ +Index: lustre/ldiskfs/build/autogen.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ lustre/ldiskfs/build/autogen.sh 2010-12-07 17:00:03.881545003 +0100 +@@ -0,0 +1,128 @@ ++#!/bin/bash ++ ++# taken from gnome-common/macros2/autogen.sh ++compare_versions() { ++ ch_min_version=$1 ++ ch_actual_version=$2 ++ ch_status=0 ++ IFS="${IFS= }"; ch_save_IFS="$IFS"; IFS="." ++ set $ch_actual_version ++ for ch_min in $ch_min_version; do ++ ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes ++ if [ -z "$ch_min" ]; then break; fi ++ if [ -z "$ch_cur" ]; then ch_status=1; break; fi ++ if [ $ch_cur -gt $ch_min ]; then break; fi ++ if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi ++ done ++ IFS="$ch_save_IFS" ++ return $ch_status ++} ++ ++error_msg() { ++ echo "$cmd is $1. version $required is required to build Lustre." ++ ++ if [ -e /usr/lib/autolustre/bin/$cmd ]; then ++ cat >&2 <<-EOF ++ You apparently already have Lustre-specific autoconf/make RPMs ++ installed on your system at /usr/lib/autolustre/share/$cmd. ++ Please set your PATH to point to those versions: ++ ++ export PATH="/usr/lib/autolustre/bin:\$PATH" ++ EOF ++ else ++ cat >&2 <<-EOF ++ CFS provides RPMs which can be installed alongside your ++ existing autoconf/make RPMs, if you are nervous about ++ upgrading. See ++ ++ ftp://ftp.lustre.org/pub/other/autolustre/README.autolustre ++ ++ You may be able to download newer version from: ++ ++ http://ftp.gnu.org/gnu/$tool/$tool-$required.tar.gz ++ EOF ++ fi ++ [ "$cmd" = "autoconf" -a "$required" = "2.57" ] && cat >&2 <&2 </dev/null ; then ++ error_msg "missing" ++ fi ++ version=$($cmd --version | awk "/$tool \(GNU/ { print \$4 }") ++ echo "found $version" ++ if ! compare_versions "$required" "$version" ; then ++ error_msg "too old" ++ fi ++} ++ ++echo "Checking for a complete tree..." ++if [ -d kernel_patches ] ; then ++ # This is ldiskfs ++ REQUIRED_DIRS="build" ++ CONFIGURE_DIRS="" ++else ++ REQUIRED_DIRS="build lnet lustre" ++ OPTIONAL_DIRS="snmp portals" ++ CONFIGURE_DIRS="libsysio ldiskfs" ++fi ++ ++for dir in $REQUIRED_DIRS ; do ++ if [ ! -d "$dir" ] ; then ++ cat >&2 </dev/null ++ echo "Running autogen for $dir..." ++ sh autogen.sh || exit $? ++ popd >/dev/null ++ fi ++done +Index: lustre/libsysio/autogen.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ lustre/libsysio/autogen.sh 2010-12-07 17:00:03.885545003 +0100 +@@ -0,0 +1,5 @@ ++#!/bin/sh ++ ++aclocal && ++automake --add-missing --copy && ++${AUTOCONF:-autoconf} diff -Nru lustre-1.8.3/debian/patches/bash_completion.dpatch lustre-1.8.5+dfsg/debian/patches/bash_completion.dpatch --- lustre-1.8.3/debian/patches/bash_completion.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/bash_completion.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## bash_completion.dpatch by Alastair McKinstry -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Support for Bash completion. Work in progress. - -@DPATCH@ -diff -urNad lustre/lustre-1.6.0.1/lustre/contrib/bash_completion/lctl /tmp/dpep.59jPKV/lustre/lustre-1.6.0.1/lustre/contrib/bash_completion/lctl ---- lustre-1.6.0.1/lustre/contrib/bash_completion/lctl 1970-01-01 01:00:00.000000000 +0100 -+++ lustre-1.6.0.1/lustre/contrib/bash_completion/lctl 2006-08-11 17:10:01.000000000 +0100 -@@ -0,0 +1,13 @@ -+#-*- mode: shell-script;-*- -+ -+have lctl && -+_lctl() -+{ -+ local cur -+ COMPREPLY=() -+ cur=${COMP_WORDS[COMP_CWORD]} -+ COMPREPLY=($( compgen -W '--device --threads --ignore-errors ignore-errors dump --net network net list_nids which_nid interface_list add_interface del_interface peer_list add_peer del_peer conn_list disconnect active_tc mynid add_uuid close_uuid del_uuid add_route del_route set_route fail ping newdev device cfg_device device_list dl lustre_build_version attach setup cleanup detach lov_setup lov_modify_tgts lov_getconfig record endrecord parse dump_log clear_log conf_param probe close getattr setattr create destroy test_getattr test_setattr test_brw get_stripe set_stripe unset_stripe dump_ldlm activate deactivate recover lookup notransno readonly abort_recovery mount_option del_mount_option set_timeout set_lustre_upcall add_conn del_conn local_param llog_catlist llog_info llog_print llog_check llog_cancel llog_remove debug_daemon debug_kernel dk debug_file df clear mark filter show debug_list modules panic lwt memhog help' -- $cur ) ) -+} -+ -+complete -F _lctl lctl -+ -diff -urNad lustre/lustre-1.6.0.1/lustre/contrib/bash_completion/lfs /tmp/dpep.59jPKV/lustre/lustre-1.6.0.1/lustre/contrib/bash_completion/lfs ---- lustre-1.6.0.1/lustre/contrib/bash_completion/lfs 1970-01-01 01:00:00.000000000 +0100 -+++ lustre-1.6.0.1/lustre/contrib/bash_completion/lfs 2006-08-11 16:40:23.000000000 +0100 -@@ -0,0 +1,13 @@ -+#-*- mode: shell-script;-*- -+ -+have lfs && -+_lfs() -+{ -+ local cur -+ COMPREPLY=() -+ cur=${COMP_WORDS[COMP_CWORD]} -+ COMPREPLY=($( compgen -W 'catinfo join osts help find getstripe setstripe quotachown quotacheck quotaon setquota quota setstripe check df' -- $cur ) ) -+} -+ -+complete -F _lfs lfs -+ diff -Nru lustre-1.8.3/debian/patches/bash_completion.patch lustre-1.8.5+dfsg/debian/patches/bash_completion.patch --- lustre-1.8.3/debian/patches/bash_completion.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/bash_completion.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,37 @@ +## DP: Support for Bash completion. Work in progress. +Index: lustre/lustre/contrib/bash_completion/lctl +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ lustre/lustre/contrib/bash_completion/lctl 2010-12-07 17:00:20.657545001 +0100 +@@ -0,0 +1,13 @@ ++#-*- mode: shell-script;-*- ++ ++have lctl && ++_lctl() ++{ ++ local cur ++ COMPREPLY=() ++ cur=${COMP_WORDS[COMP_CWORD]} ++ COMPREPLY=($( compgen -W '--device --threads --ignore-errors ignore-errors dump --net network net list_nids which_nid interface_list add_interface del_interface peer_list add_peer del_peer conn_list disconnect active_tc mynid add_uuid close_uuid del_uuid add_route del_route set_route fail ping newdev device cfg_device device_list dl lustre_build_version attach setup cleanup detach lov_setup lov_modify_tgts lov_getconfig record endrecord parse dump_log clear_log conf_param probe close getattr setattr create destroy test_getattr test_setattr test_brw get_stripe set_stripe unset_stripe dump_ldlm activate deactivate recover lookup notransno readonly abort_recovery mount_option del_mount_option set_timeout set_lustre_upcall add_conn del_conn local_param llog_catlist llog_info llog_print llog_check llog_cancel llog_remove debug_daemon debug_kernel dk debug_file df clear mark filter show debug_list modules panic lwt memhog help' -- $cur ) ) ++} ++ ++complete -F _lctl lctl ++ +Index: lustre/lustre/contrib/bash_completion/lfs +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ lustre/lustre/contrib/bash_completion/lfs 2010-12-07 17:00:20.657545001 +0100 +@@ -0,0 +1,13 @@ ++#-*- mode: shell-script;-*- ++ ++have lfs && ++_lfs() ++{ ++ local cur ++ COMPREPLY=() ++ cur=${COMP_WORDS[COMP_CWORD]} ++ COMPREPLY=($( compgen -W 'catinfo join osts help find getstripe setstripe quotachown quotacheck quotaon setquota quota setstripe check df' -- $cur ) ) ++} ++ ++complete -F _lfs lfs ++ diff -Nru lustre-1.8.3/debian/patches/bug12769-ql-fix.dpatch lustre-1.8.5+dfsg/debian/patches/bug12769-ql-fix.dpatch --- lustre-1.8.3/debian/patches/bug12769-ql-fix.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/bug12769-ql-fix.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,21 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## bug12769-ql-fix.dpatch by Goswin von Brederlow -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Ensure that dirty pages are flushed out with the right creds - -@DPATCH@ -diff --git a/lustre/llite/file.c b/lustre/llite/file.c ---- a/lustre/llite/file.c -+++ b/lustre/llite/file.c -@@ -281,6 +281,10 @@ int ll_file_release(struct inode *inode, - if (lsm) - lov_test_and_clear_async_rc(lsm); - lli->lli_async_rc = 0; -+ -+ /* Ensure that dirty pages are flushed out with the right creds */ -+ if (file->f_mode & FMODE_WRITE) -+ filemap_fdatawrite(file->f_mapping); - - rc = ll_mdc_close(sbi->ll_mdc_exp, inode, file); - RETURN(rc); diff -Nru lustre-1.8.3/debian/patches/bug12769-ql-fix.patch lustre-1.8.5+dfsg/debian/patches/bug12769-ql-fix.patch --- lustre-1.8.3/debian/patches/bug12769-ql-fix.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/bug12769-ql-fix.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,18 @@ +## bug12769-ql-fix.dpatch by Goswin von Brederlow +## DP: Ensure that dirty pages are flushed out with the right creds + +Index: lustre/lustre/llite/file.c +=================================================================== +--- lustre.orig/lustre/llite/file.c 2010-12-07 16:58:57.589545003 +0100 ++++ lustre/lustre/llite/file.c 2010-12-07 17:00:14.833545003 +0100 +@@ -277,6 +277,10 @@ + lov_test_and_clear_async_rc(lsm); + lli->lli_async_rc = 0; + ++ /* Ensure that dirty pages are flushed out with the right creds */ ++ if (file->f_mode & FMODE_WRITE) ++ filemap_fdatawrite(file->f_mapping); ++ + rc = ll_mdc_close(sbi->ll_mdc_exp, inode, file); + + if (OBD_FAIL_TIMEOUT_MS(OBD_FAIL_PTLRPC_DUMP_LOG, obd_fail_val)) diff -Nru lustre-1.8.3/debian/patches/bug13852-quota_includes.dpatch lustre-1.8.5+dfsg/debian/patches/bug13852-quota_includes.dpatch --- lustre-1.8.3/debian/patches/bug13852-quota_includes.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/bug13852-quota_includes.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Missing include of sys/quota.h - -@DPATCH@ ---- ./lustre/include/liblustre.h 2007-08-13 19:31:56.000000000 +0200 -+++ ./lustre/include/liblustre.h 2007-10-10 11:38:20.071254030 +0200 -@@ -50,6 +50,7 @@ - #ifndef _IOWR - # include "ioctl.h" - #endif -+#include - - #include - #include diff -Nru lustre-1.8.3/debian/patches/bug13852-quota_includes.patch lustre-1.8.5+dfsg/debian/patches/bug13852-quota_includes.patch --- lustre-1.8.3/debian/patches/bug13852-quota_includes.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/bug13852-quota_includes.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,14 @@ +## DP: Missing include of sys/quota.h + +Index: lustre/lustre/include/liblustre.h +=================================================================== +--- lustre.orig/lustre/include/liblustre.h 2010-12-07 16:54:32.573545003 +0100 ++++ lustre/lustre/include/liblustre.h 2010-12-07 17:00:35.193545002 +0100 +@@ -67,6 +67,7 @@ + #ifndef _IOWR + # include "ioctl.h" + #endif ++#include + + #include + #include diff -Nru lustre-1.8.3/debian/patches/bug15587_security.capability_xattr.dpatch lustre-1.8.5+dfsg/debian/patches/bug15587_security.capability_xattr.dpatch --- lustre-1.8.3/debian/patches/bug15587_security.capability_xattr.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/bug15587_security.capability_xattr.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,35 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## bug15587_security.capability_xattr.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: ignore security.capability xattr for now - -@DPATCH@ -diff --git a/lustre/llite/xattr.c b/lustre/llite/xattr.c -index 8fbc7bf..819e7bb 100644 ---- a/lustre/llite/xattr.c -+++ b/lustre/llite/xattr.c -@@ -142,6 +142,11 @@ int ll_setxattr_common(struct inode *inode, const char *name, - (xattr_type == XATTR_LUSTRE_T && strcmp(name, "lustre.lov") == 0)) - RETURN(0); - -+ /* b15587: ignore security.capability xattr for now */ -+ if ((xattr_type == XATTR_SECURITY_T && -+ strcmp(name, "security.capability") == 0)) -+ RETURN(0); -+ - ll_inode2fid(&fid, inode); - rc = mdc_setxattr(sbi->ll_mdc_exp, &fid, valid, - name, value, size, 0, flags, &req); -@@ -254,6 +259,11 @@ int ll_getxattr_common(struct inode *inode, const char *name, - if (rc) - RETURN(rc); - -+ /* b15587: ignore security.capability xattr for now */ -+ if ((xattr_type == XATTR_SECURITY_T && -+ strcmp(name, "security.capability") == 0)) -+ RETURN(-ENODATA); -+ - /* posix acl is under protection of LOOKUP lock. when calling to this, - * we just have path resolution to the target inode, so we have great - * chance that cached ACL is uptodate. diff -Nru lustre-1.8.3/debian/patches/bug15587_security.capability_xattr.patch lustre-1.8.5+dfsg/debian/patches/bug15587_security.capability_xattr.patch --- lustre-1.8.3/debian/patches/bug15587_security.capability_xattr.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/bug15587_security.capability_xattr.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,31 @@ +## bug15587_security.capability_xattr.dpatch by Patrick Winnertz +## DP: ignore security.capability xattr for now + +Index: lustre/lustre/llite/xattr.c +=================================================================== +--- lustre.orig/lustre/llite/xattr.c 2010-12-07 16:58:57.589545003 +0100 ++++ lustre/lustre/llite/xattr.c 2010-12-07 17:00:17.853545002 +0100 +@@ -148,6 +148,11 @@ + strcmp(name, "security.capability") == 0)) + RETURN(0); + ++ /* b15587: ignore security.capability xattr for now */ ++ if ((xattr_type == XATTR_SECURITY_T && ++ strcmp(name, "security.capability") == 0)) ++ RETURN(0); ++ + ll_inode2fid(&fid, inode); + rc = mdc_setxattr(sbi->ll_mdc_exp, &fid, valid, + name, value, size, 0, flags, &req); +@@ -260,6 +265,11 @@ + + /* b15587: ignore security.capability xattr for now */ + if ((xattr_type == XATTR_SECURITY_T && ++ strcmp(name, "security.capability") == 0)) ++ RETURN(-ENODATA); ++ ++ /* b15587: ignore security.capability xattr for now */ ++ if ((xattr_type == XATTR_SECURITY_T && + strcmp(name, "security.capability") == 0)) + RETURN(-ENODATA); + diff -Nru lustre-1.8.3/debian/patches/cacheflush_remove_mark_rodata.patch lustre-1.8.5+dfsg/debian/patches/cacheflush_remove_mark_rodata.patch --- lustre-1.8.3/debian/patches/cacheflush_remove_mark_rodata.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/cacheflush_remove_mark_rodata.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,37 @@ +diff --git a/lustre/kernel_patches/patches/cacheflush_remove_mark_rodata.patch b/lustre/kernel_patches/patches/cacheflush_remove_mark_rodata.patch +new file mode 100644 +index 0000000..a73080d +--- /dev/null ++++ b/lustre/kernel_patches/patches/cacheflush_remove_mark_rodata.patch +@@ -0,0 +1,12 @@ ++diff -Nurwd linux-2.6.32.19-0.2.orig/arch/x86/include/asm/cacheflush.h linux-2.6.32.19-0.2/arch/x86/include/asm/cacheflush.h ++--- linux-2.6.32.19-0.2.orig/arch/x86/include/asm/cacheflush.h 2010-12-17 13:06:00.980980003 +0100 +++++ linux-2.6.32.19-0.2/arch/x86/include/asm/cacheflush.h 2010-12-17 13:11:31.488980002 +0100 ++@@ -189,8 +189,6 @@ ++ void set_kernel_text_rw(void); ++ void set_kernel_text_ro(void); ++ #else ++-static inline void mark_rodata_ro(void) { } ++-static inline void mark_rodata_rw(void) { } ++ static inline void set_kernel_text_rw(void) { } ++ static inline void set_kernel_text_ro(void) { } ++ #endif +diff --git a/lustre/kernel_patches/series/2.6-sles11-2.6.32.series b/lustre/kernel_patches/series/2.6-sles11-2.6.32.series +new file mode 100644 +index 0000000..3478c30 +--- /dev/null ++++ b/lustre/kernel_patches/series/2.6-sles11-2.6.32.series +@@ -0,0 +1,13 @@ ++lustre_version.patch ++vfs_races-2.6.22-vanilla.patch ++iopen-misc-2.6.22-vanilla.patch ++export-truncate-2.6.18-vanilla.patch ++dev_read_only-2.6.27-vanilla.patch ++export-2.6.27-vanilla.patch ++export-show_task-2.6.27-vanilla.patch ++sd_iostats-2.6.32-vanilla.patch ++md-mmp-unplug-dev-sles11.patch ++quota-support-64-bit-quota-format.patch ++jbd2-jcberr-2.6-sles11.patch ++jbd2_stats_proc_init-wrong-place.patch ++cacheflush_remove_mark_rodata.patch diff -Nru lustre-1.8.3/debian/patches/configure_error_on_unstable.dpatch lustre-1.8.5+dfsg/debian/patches/configure_error_on_unstable.dpatch --- lustre-1.8.3/debian/patches/configure_error_on_unstable.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/configure_error_on_unstable.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,31 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## autogen.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: fix configure on debian unstable - -@DPATCH@ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/build/autoconf/lustre-build-linux.m4 lustre/build/autoconf/lustre-build-linux.m4 ---- lustre~/build/autoconf/lustre-build-linux.m4 2010-03-08 10:25:09.000000000 +0100 -+++ lustre/build/autoconf/lustre-build-linux.m4 2010-03-08 11:00:46.106781669 +0100 -@@ -343,7 +343,7 @@ - AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])], - [$4], - [_AC_MSG_LOG_CONFTEST --m4_ifvaln([$5],[$5])dnl])dnl -+m4_ifvaln([$5],[$5])dnl]) - rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko m4_ifval([$1], [build/conftest.c conftest.c])[]dnl - ]) - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/ldiskfs/build/autoconf/lustre-build-linux.m4 lustre/ldiskfs/build/autoconf/lustre-build-linux.m4 ---- lustre~/ldiskfs/build/autoconf/lustre-build-linux.m4 2010-03-08 10:25:09.000000000 +0100 -+++ lustre/ldiskfs/build/autoconf/lustre-build-linux.m4 2010-03-08 11:01:09.629794696 +0100 -@@ -343,7 +343,7 @@ - AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])], - [$4], - [_AC_MSG_LOG_CONFTEST --m4_ifvaln([$5],[$5])dnl])dnl -+m4_ifvaln([$5],[$5])dnl]) - rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko m4_ifval([$1], [build/conftest.c conftest.c])[]dnl - ]) - diff -Nru lustre-1.8.3/debian/patches/enable-quota.dpatch lustre-1.8.5+dfsg/debian/patches/enable-quota.dpatch --- lustre-1.8.3/debian/patches/enable-quota.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/enable-quota.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,28 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: --enable-quota check was only run when building modules. - -@DPATCH@ -diff -urNad lustre~/configure.ac lustre/configure.ac ---- lustre~/configure.ac 2009-03-12 10:32:27.000000000 +0100 -+++ lustre/configure.ac 2009-03-12 11:19:53.000000000 +0100 -@@ -8,6 +8,7 @@ - LB_CHECK_VERSION - - LC_CONFIG_SRCDIR -+LC_CONFIG_QUOTA - - AC_CANONICAL_SYSTEM - -diff -urNad lustre~/lustre/autoconf/lustre-core.m4 lustre/lustre/autoconf/lustre-core.m4 ---- lustre~/lustre/autoconf/lustre-core.m4 2009-03-12 11:19:52.000000000 +0100 -+++ lustre/lustre/autoconf/lustre-core.m4 2009-03-12 11:19:53.000000000 +0100 -@@ -1813,6 +1813,7 @@ - ]) - ]) - -+ - # - # LC_COOKIE_FOLLOW_LINK - # diff -Nru lustre-1.8.3/debian/patches/enable-quota.patch lustre-1.8.5+dfsg/debian/patches/enable-quota.patch --- lustre-1.8.3/debian/patches/enable-quota.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/enable-quota.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,26 @@ +## All lines beginning with `## DP:' are a description of the patch. +## DP: --enable-quota check was only run when building modules. +Index: lustre/configure.ac +=================================================================== +--- lustre.orig/configure.ac 2010-12-07 16:54:32.541545003 +0100 ++++ lustre/configure.ac 2010-12-07 17:00:37.901545003 +0100 +@@ -8,6 +8,7 @@ + LB_CHECK_VERSION + + LC_CONFIG_SRCDIR ++LC_CONFIG_QUOTA + + AC_CANONICAL_SYSTEM + +Index: lustre/lustre/autoconf/lustre-core.m4 +=================================================================== +--- lustre.orig/lustre/autoconf/lustre-core.m4 2010-12-07 16:54:32.549545003 +0100 ++++ lustre/lustre/autoconf/lustre-core.m4 2010-12-07 17:00:37.901545003 +0100 +@@ -2197,6 +2197,7 @@ + ]) + ]) + ++ + # + # LC_COOKIE_FOLLOW_LINK + # diff -Nru lustre-1.8.3/debian/patches/fix-2.6.15-versioncheck.dpatch lustre-1.8.5+dfsg/debian/patches/fix-2.6.15-versioncheck.dpatch --- lustre-1.8.3/debian/patches/fix-2.6.15-versioncheck.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix-2.6.15-versioncheck.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,21 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## fix-2.6.15-versioncheck.dpatch by Niklas Edmundsson -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Fix version-check for 2.6.15 ubuntu/vanilla kernel. -## DP: Upstream check assumes RedHat patched kernel. - -@DPATCH@ - -diff lustre-1.6.2/lustre/include/linux/lustre_compat25.h lustre-1.6.2/lustre/include/linux/lustre_compat25.h ---- lustre-1.6.2/lustre/include/linux/lustre_compat25.h (revision 135) -+++ lustre-1.6.2/lustre/include/linux/lustre_compat25.h (working copy) -@@ -75,7 +75,7 @@ - #define TRYLOCK_INODE_MUTEX(inode) (!down_trylock(&(inode)->i_sem)) - #endif /* HAVE_INODE_I_MUTEX */ - --#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15) -+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) - #define d_child d_u.d_child - #define d_rcu d_u.d_rcu - #endif diff -Nru lustre-1.8.3/debian/patches/fix-2.6.15-versioncheck.patch lustre-1.8.5+dfsg/debian/patches/fix-2.6.15-versioncheck.patch --- lustre-1.8.3/debian/patches/fix-2.6.15-versioncheck.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix-2.6.15-versioncheck.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,18 @@ +## fix-2.6.15-versioncheck.dpatch by Niklas Edmundsson +## DP: Fix version-check for 2.6.15 ubuntu/vanilla kernel. +## DP: Upstream check assumes RedHat patched kernel. + +diff lustre-1.6.2/lustre/include/linux/lustre_compat25.h lustre-1.6.2/lustre/include/linux/lustre_compat25.h +Index: lustre/lustre/include/linux/lustre_compat25.h +=================================================================== +--- lustre.orig/lustre/include/linux/lustre_compat25.h 2010-12-07 16:54:32.597545003 +0100 ++++ lustre/lustre/include/linux/lustre_compat25.h 2010-12-07 17:00:32.345545003 +0100 +@@ -106,7 +106,7 @@ + #define TRYLOCK_INODE_MUTEX(inode) (!down_trylock(&(inode)->i_sem)) + #endif /* HAVE_INODE_I_MUTEX */ + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15) ++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) + #define d_child d_u.d_child + #define d_rcu d_u.d_rcu + #endif diff -Nru lustre-1.8.3/debian/patches/fix_bashisms_for_dash.dpatch lustre-1.8.5+dfsg/debian/patches/fix_bashisms_for_dash.dpatch --- lustre-1.8.3/debian/patches/fix_bashisms_for_dash.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix_bashisms_for_dash.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,68 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## remove-set_tunables.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: fix some bashisms by switching the interpreter from sh to bash - -@DPATCH@ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/ldiskfs/configure.ac lustre/ldiskfs/configure.ac ---- lustre~/ldiskfs/configure.ac 2010-07-28 14:28:02.884964948 +0200 -+++ lustre/ldiskfs/configure.ac 2010-07-28 14:28:03.136965577 +0200 -@@ -91,7 +91,7 @@ - fi - - AC_SUBST(BACKFS) --BACKFSU=${BACKFS/ext/EXT} -+BACKFSU=`echo $BACKFS | sed -e 's#ext#EXT#'` - AC_SUBST(BACKFSU) # We need a Upper string - - AM_CONDITIONAL(USE_EXT4, test x$enable_ext4 = xyes) -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/tests/llog-test.sh lustre/lustre/tests/llog-test.sh ---- lustre~/lustre/tests/llog-test.sh 2010-01-11 04:29:50.000000000 +0100 -+++ lustre/lustre/tests/llog-test.sh 2010-07-28 14:28:03.136965577 +0200 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/bin/bash - - set -e - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/tests/lnet-selftest.sh lustre/lustre/tests/lnet-selftest.sh ---- lustre~/lustre/tests/lnet-selftest.sh 2010-04-10 02:28:57.000000000 +0200 -+++ lustre/lustre/tests/lnet-selftest.sh 2010-07-28 14:28:24.855977956 +0200 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/bin/bash - - LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} - . $LUSTRE/tests/test-framework.sh -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/tests/mdsrate-stat-large.sh lustre/lustre/tests/mdsrate-stat-large.sh ---- lustre~/lustre/tests/mdsrate-stat-large.sh 2010-04-10 02:28:57.000000000 +0200 -+++ lustre/lustre/tests/mdsrate-stat-large.sh 2010-07-28 14:28:03.136965577 +0200 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/bin/bash - # - # This test was used in a set of CMD3 tests (cmd3-8 test). - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/tests/rundbench lustre/lustre/tests/rundbench ---- lustre~/lustre/tests/rundbench 2010-01-11 04:29:50.000000000 +0100 -+++ lustre/lustre/tests/rundbench 2010-07-28 14:28:03.136965577 +0200 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/bin/bash - - LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} - . $LUSTRE/tests/test-framework.sh -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre-1.8.3~/lustre/liblustre/genlib.sh lustre-1.8.3/lustre/liblustre/genlib.sh ---- lustre-1.8.3~/lustre/liblustre/genlib.sh 2010-04-10 02:28:57.000000000 +0200 -+++ lustre-1.8.3/lustre/liblustre/genlib.sh 2010-06-25 12:04:34.000000000 +0200 -@@ -14,7 +14,7 @@ - AR=/usr/bin/ar - # see http://osdir.com/ml/gmane.comp.gnu.binutils.bugs/2006-01/msg00016.php - ppc64_CPU=`uname -p` --if [ ${ppc64_CPU} == "ppc64" ]; then -+if [ ${ppc64_CPU} = "ppc64" ]; then - LD="gcc -m64" - else - LD="gcc" - diff -Nru lustre-1.8.3/debian/patches/fix_bashisms_for_dash.patch lustre-1.8.5+dfsg/debian/patches/fix_bashisms_for_dash.patch --- lustre-1.8.3/debian/patches/fix_bashisms_for_dash.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix_bashisms_for_dash.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,56 @@ +## remove-set_tunables.dpatch by Patrick Winnertz +## DP: fix some bashisms by switching the interpreter from sh to bash + +Index: lustre/ldiskfs/configure.ac +=================================================================== +--- lustre.orig/ldiskfs/configure.ac 2010-12-07 16:59:06.421545002 +0100 ++++ lustre/ldiskfs/configure.ac 2010-12-07 17:00:50.253545002 +0100 +@@ -93,7 +93,7 @@ + fi + + AC_SUBST(BACKFS) +-BACKFSU=${BACKFS/ext/EXT} ++BACKFSU=`echo $BACKFS | sed -e 's#ext#EXT#'` + AC_SUBST(BACKFSU) # We need a Upper string + + AM_CONDITIONAL(USE_EXT4, test x$enable_ext4 = xyes) +Index: lustre/lustre/tests/llog-test.sh +=================================================================== +--- lustre.orig/lustre/tests/llog-test.sh 2010-12-07 16:54:32.297545003 +0100 ++++ lustre/lustre/tests/llog-test.sh 2010-12-07 17:00:50.253545002 +0100 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + + set -e + +Index: lustre/lustre/tests/lnet-selftest.sh +=================================================================== +--- lustre.orig/lustre/tests/lnet-selftest.sh 2010-12-07 16:54:32.281545003 +0100 ++++ lustre/lustre/tests/lnet-selftest.sh 2010-12-07 17:00:50.281545002 +0100 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + + LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} + . $LUSTRE/tests/test-framework.sh +Index: lustre/lustre/tests/mdsrate-stat-large.sh +=================================================================== +--- lustre.orig/lustre/tests/mdsrate-stat-large.sh 2010-12-07 16:54:32.285545003 +0100 ++++ lustre/lustre/tests/mdsrate-stat-large.sh 2010-12-07 17:00:50.281545002 +0100 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + # + # This test was used in a set of CMD3 tests (cmd3-8 test). + +Index: lustre/lustre/tests/rundbench +=================================================================== +--- lustre.orig/lustre/tests/rundbench 2010-12-07 16:54:32.277545003 +0100 ++++ lustre/lustre/tests/rundbench 2010-12-07 17:00:50.281545002 +0100 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + + LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} + . $LUSTRE/tests/test-framework.sh diff -Nru lustre-1.8.3/debian/patches/fix_dentry_conf_test.dpatch lustre-1.8.5+dfsg/debian/patches/fix_dentry_conf_test.dpatch --- lustre-1.8.3/debian/patches/fix_dentry_conf_test.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix_dentry_conf_test.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,25 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## no_default_debugging.patch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: HAVE_LINUX_EXPORTFS_H not defined in configure target :S - -@DPATCH@ -diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 -index d01d8e0..ac8eb0e 100644 ---- a/lustre/autoconf/lustre-core.m4 -+++ b/lustre/autoconf/lustre-core.m4 -@@ -1243,11 +1243,8 @@ LB_LINUX_TRY_COMPILE([ - AC_DEFUN([LC_FH_TO_DENTRY], - [AC_MSG_CHECKING([if kernel has .fh_to_dentry member in export_operations struct]) - LB_LINUX_TRY_COMPILE([ --#ifdef HAVE_LINUX_EXPORTFS_H -- #include --#else -- #include --#endif -+#include -+#include - ],[ - struct export_operations exp; - diff -Nru lustre-1.8.3/debian/patches/fix_dentry_conf_test.patch lustre-1.8.5+dfsg/debian/patches/fix_dentry_conf_test.patch --- lustre-1.8.3/debian/patches/fix_dentry_conf_test.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix_dentry_conf_test.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,21 @@ +## no_default_debugging.patch by Patrick Winnertz +## DP: HAVE_LINUX_EXPORTFS_H not defined in configure target :S + +Index: lustre/lustre/autoconf/lustre-core.m4 +=================================================================== +--- lustre.orig/lustre/autoconf/lustre-core.m4 2010-12-07 17:00:47.757545002 +0100 ++++ lustre/lustre/autoconf/lustre-core.m4 2010-12-07 17:00:52.705545002 +0100 +@@ -1258,11 +1258,8 @@ + AC_DEFUN([LC_FH_TO_DENTRY], + [AC_MSG_CHECKING([if kernel has .fh_to_dentry member in export_operations struct]) + LB_LINUX_TRY_COMPILE([ +-#ifdef HAVE_LINUX_EXPORTFS_H +- #include +-#else +- #include +-#endif ++#include ++#include + ],[ + struct export_operations exp; + diff -Nru lustre-1.8.3/debian/patches/fix-lustre-manpage.dpatch lustre-1.8.5+dfsg/debian/patches/fix-lustre-manpage.dpatch --- lustre-1.8.3/debian/patches/fix-lustre-manpage.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix-lustre-manpage.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,34 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## fix-lustre-manpage.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: fix some errors in the lustre manpage - -@DPATCH@ -diff -urNad lustre-1.6.5.1~/lustre/doc/lctl.8 lustre-1.6.5.1/lustre/doc/lctl.8 ---- lustre-1.6.5.1~/lustre/doc/lctl.8 2007-09-27 07:09:22.000000000 +0200 -+++ lustre-1.6.5.1/lustre/doc/lctl.8 2008-09-12 16:09:43.000000000 +0200 -@@ -36,7 +36,7 @@ - command, type - .B help - .I command --. Command completion is activated with the TAB key, and command history is available via the up- and down-arrow keys. -+Command completion is activated with the TAB key, and command history is available via the up- and down-arrow keys. - - For non-interactive use, one uses the second invocation, which runs command after connecting to the device. - -diff -urNad lustre-1.6.5.1~/lustre/doc/lustre.7 lustre-1.6.5.1/lustre/doc/lustre.7 ---- lustre-1.6.5.1~/lustre/doc/lustre.7 2008-09-12 16:09:32.000000000 +0200 -+++ lustre-1.6.5.1/lustre/doc/lustre.7 2008-09-12 16:09:33.000000000 +0200 -@@ -2,9 +2,9 @@ - .\" Copyright 2006 by Cluster FileSystems. All Rights Reserved. - .\" This file may be copied under the terms of the GNU Public License. - .\" --.TH Lustre 7 "2006 Jun 15" Lustre "A high-performance cluster file system" -+.TH Lustre 7 - .SH NAME --Lustre -+Lustre - a high-performance cluster file system - .SH SYNOPSIS - A high-performance file system designed for clusters. - .SH DESCRIPTION diff -Nru lustre-1.8.3/debian/patches/fix-oot-builds.dpatch lustre-1.8.5+dfsg/debian/patches/fix-oot-builds.dpatch --- lustre-1.8.3/debian/patches/fix-oot-builds.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix-oot-builds.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,74 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## autogen.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: forgot include dir in gcc flags and fix version_tag.pl to handle -## DP: out of tree builds. - -@DPATCH@ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/build/autoconf/lustre-build.m4 lustre/build/autoconf/lustre-build.m4 ---- lustre~/build/autoconf/lustre-build.m4 2010-03-03 14:44:38.000000000 +0100 -+++ lustre/build/autoconf/lustre-build.m4 2010-03-03 16:30:38.704635051 +0100 -@@ -816,7 +816,7 @@ - CC="$CC -m64" - fi - --CPPFLAGS="-I$PWD/$LIBCFS_INCLUDE_DIR -I$PWD/lnet/include -I$PWD/lustre/include $CPPFLAGS" -+CPPFLAGS="-I$PWD/$LIBCFS_INCLUDE_DIR -I$TOP_DIR/lnet/include -I$TOP_DIR/lustre/include -I$PWD/lnet/include -I$PWD/lustre/include $CPPFLAGS" - - LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1" - AC_SUBST(LLCPPFLAGS) -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/autoMakefile.am lustre/lustre/autoMakefile.am ---- lustre~/lustre/autoMakefile.am 2010-01-23 03:07:58.000000000 +0100 -+++ lustre/lustre/autoMakefile.am 2010-03-03 16:30:38.704635051 +0100 -@@ -85,7 +85,7 @@ - BUILD_VER_H=$(top_builddir)/lustre/include/lustre/lustre_build_version.h - - lustre_build_version: -- perl $(top_builddir)/lustre/scripts/version_tag.pl $(top_srcdir) $(top_builddir) > tmpver -+ perl $(top_srcdir)/lustre/scripts/version_tag.pl $(top_srcdir) $(top_builddir) > tmpver - echo "#define LUSTRE_RELEASE @RELEASE@" >> tmpver - cmp -s $(BUILD_VER_H) tmpver > tmpdiff 2> /dev/null && \ - $(RM) tmpver tmpdiff || \ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/scripts/version_tag.pl lustre/lustre/scripts/version_tag.pl ---- lustre~/lustre/scripts/version_tag.pl 2010-03-03 14:44:38.000000000 +0100 -+++ lustre/lustre/scripts/version_tag.pl 2010-03-03 16:33:54.136665590 +0100 -@@ -166,17 +166,19 @@ - !$ver->open("$objdir/include/linux/version.h") && - !$ver->open("$dir/include/linux/utsrelease.h") && - !$ver->open("$dir/include/linux/version.h")) { -- die "Run make dep on '$dir'\n"; -- } -+ #die "Run make dep on '$dir'\n"; -+ $kernver = "UNKOWN-KERNEL"; -+ } else { - -- while(defined($line = <$ver>)) { -- $line =~ /\#define UTS_RELEASE "(.*)"/; -- if ($1) { -- $kernver = $1; -- last; -- } -- } -- $ver->close(); -+ while(defined($line = <$ver>)) { -+ $line =~ /\#define UTS_RELEASE "(.*)"/; -+ if ($1) { -+ $kernver = $1; -+ last; -+ } -+ } -+ $ver->close(); -+ } - chomp($kernver); - $dir =~ s/\//\./g; - return $dir; -@@ -254,6 +256,8 @@ - if (!defined($ENV{LUSTRE_VERS})); - - if ($progname eq "version_tag.pl") { -+ chdir($cwd); -+ chdir($ARGV[1]); - my $linuxdir = get_linuxdir(); - $linuxdir =~ s/\//\./g; - generate_ver($tag, $mtime, $linuxdir); diff -Nru lustre-1.8.3/debian/patches/fix-oot-builds.patch lustre-1.8.5+dfsg/debian/patches/fix-oot-builds.patch --- lustre-1.8.3/debian/patches/fix-oot-builds.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix-oot-builds.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,74 @@ +## autogen.dpatch by Patrick Winnertz +## DP: forgot include dir in gcc flags and fix version_tag.pl to handle +## DP: out of tree builds. + +Index: lustre/build/autoconf/lustre-build.m4 +=================================================================== +--- lustre.orig/build/autoconf/lustre-build.m4 2010-12-07 16:54:32.365545003 +0100 ++++ lustre/build/autoconf/lustre-build.m4 2010-12-07 17:00:45.137545002 +0100 +@@ -737,7 +737,7 @@ + CC="$CC -m64" + fi + +-CPPFLAGS="-I$PWD/$LIBCFS_INCLUDE_DIR -I$PWD/lnet/include -I$PWD/lustre/include $CPPFLAGS" ++CPPFLAGS="-I$PWD/$LIBCFS_INCLUDE_DIR -I$TOP_DIR/lnet/include -I$TOP_DIR/lustre/include -I$PWD/lnet/include -I$PWD/lustre/include $CPPFLAGS" + + LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1" + AC_SUBST(LLCPPFLAGS) +Index: lustre/lustre/autoMakefile.am +=================================================================== +--- lustre.orig/lustre/autoMakefile.am 2010-12-07 16:54:32.369545003 +0100 ++++ lustre/lustre/autoMakefile.am 2010-12-07 17:00:45.137545002 +0100 +@@ -85,7 +85,7 @@ + BUILD_VER_H=$(top_builddir)/lustre/include/lustre/lustre_build_version.h + + lustre_build_version: +- perl $(top_builddir)/lustre/scripts/version_tag.pl $(top_srcdir) $(top_builddir) > tmpver ++ perl $(top_srcdir)/lustre/scripts/version_tag.pl $(top_srcdir) $(top_builddir) > tmpver + echo "#define LUSTRE_RELEASE @RELEASE@" >> tmpver + cmp -s $(BUILD_VER_H) tmpver > tmpdiff 2> /dev/null && \ + $(RM) tmpver tmpdiff || \ +Index: lustre/lustre/scripts/version_tag.pl +=================================================================== +--- lustre.orig/lustre/scripts/version_tag.pl 2010-12-07 16:54:32.385545003 +0100 ++++ lustre/lustre/scripts/version_tag.pl 2010-12-07 17:00:45.137545002 +0100 +@@ -166,17 +166,19 @@ + !$ver->open("$objdir/include/linux/version.h") && + !$ver->open("$dir/include/linux/utsrelease.h") && + !$ver->open("$dir/include/linux/version.h")) { +- die "Run make dep on '$dir'\n"; +- } +- +- while(defined($line = <$ver>)) { +- $line =~ /\#define UTS_RELEASE "(.*)"/; +- if ($1) { +- $kernver = $1; +- last; +- } +- } +- $ver->close(); ++ #die "Run make dep on '$dir'\n"; ++ $kernver = "UNKOWN-KERNEL"; ++ } else { ++ ++ while(defined($line = <$ver>)) { ++ $line =~ /\#define UTS_RELEASE "(.*)"/; ++ if ($1) { ++ $kernver = $1; ++ last; ++ } ++ } ++ $ver->close(); ++ } + chomp($kernver); + $dir =~ s/\//\./g; + return $dir; +@@ -254,6 +256,8 @@ + if (!defined($ENV{LUSTRE_VERS})); + + if ($progname eq "version_tag.pl") { ++ chdir($cwd); ++ chdir($ARGV[1]); + my $linuxdir = get_linuxdir(); + $linuxdir =~ s/\//\./g; + generate_ver($tag, $mtime, $linuxdir); diff -Nru lustre-1.8.3/debian/patches/fix-symlink-attack.dpatch lustre-1.8.5+dfsg/debian/patches/fix-symlink-attack.dpatch --- lustre-1.8.3/debian/patches/fix-symlink-attack.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix-symlink-attack.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,23 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## fix-symlink-attack.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Fix symlink attack on runiozone - -@DPATCH@ -diff -urNad lustre-1.6.5.1~/lustre/tests/runiozone lustre-1.6.5.1/lustre/tests/runiozone ---- lustre-1.6.5.1~/lustre/tests/runiozone 2007-02-10 07:33:10.000000000 +0100 -+++ lustre-1.6.5.1/lustre/tests/runiozone 2008-08-27 16:58:36.000000000 +0200 -@@ -9,9 +9,11 @@ - LOOP=0 - rm -f endiozone - echo 0 > /proc/sys/lnet/debug -+tmpfile=$(mktemp -t iozone.XXXXXXXXXXXX) - while date; do - LOOP=`expr $LOOP + 1` - echo "Test #$LOOP" - iozone $VERIFY $ODIR -r $REC -i 0 -i 1 -f $FILE -s $SIZE 2>&1 || exit $? - [ -f endiozone -o $LOOP -ge $COUNT ] && rm -f endiozone && exit 0 --done | tee /tmp/iozone.log -+done | tee $tmpfile -+echo "You'll find the log of this iozone run at: $tmpfile" diff -Nru lustre-1.8.3/debian/patches/fix-symlink-attack.patch lustre-1.8.5+dfsg/debian/patches/fix-symlink-attack.patch --- lustre-1.8.3/debian/patches/fix-symlink-attack.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix-symlink-attack.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,20 @@ +## fix-symlink-attack.dpatch by Patrick Winnertz +## DP: Fix symlink attack on runiozone + +Index: lustre/lustre/tests/runiozone +=================================================================== +--- lustre.orig/lustre/tests/runiozone 2010-12-07 16:54:32.473545003 +0100 ++++ lustre/lustre/tests/runiozone 2010-12-07 17:00:40.373545001 +0100 +@@ -9,9 +9,11 @@ + LOOP=0 + rm -f endiozone + echo 0 > /proc/sys/lnet/debug ++tmpfile=$(mktemp -t iozone.XXXXXXXXXXXX) + while date; do + LOOP=`expr $LOOP + 1` + echo "Test #$LOOP" + iozone $VERIFY $ODIR -r $REC -i 0 -i 1 -f $FILE -s $SIZE 2>&1 || exit $? + [ -f endiozone -o $LOOP -ge $COUNT ] && rm -f endiozone && exit 0 +-done | tee /tmp/iozone.log ++done | tee $tmpfile ++echo "You'll find the log of this iozone run at: $tmpfile" diff -Nru lustre-1.8.3/debian/patches/fix_various_typecasts.dpatch lustre-1.8.5+dfsg/debian/patches/fix_various_typecasts.dpatch --- lustre-1.8.3/debian/patches/fix_various_typecasts.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix_various_typecasts.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,19 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## autogen.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: as we compile now with -Werror add typecasts for the printf stuff in sanity.c - -@DPATCH@ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/liblustre/tests/sanity.c lustre/lustre/liblustre/tests/sanity.c ---- lustre~/lustre/liblustre/tests/sanity.c 2010-03-03 14:44:38.000000000 +0100 -+++ lustre/lustre/liblustre/tests/sanity.c 2010-03-03 18:18:43.028668969 +0100 -@@ -705,7 +705,7 @@ - } - - t_fcntl(fd, F_SETFL, O_APPEND); -- if (!(ret = t_fcntl(fd, F_GETFL)) & O_APPEND) { -+ if ((!(ret = t_fcntl(fd, F_GETFL))) & O_APPEND) { - printf("error get flag: ret %x\n", ret); - return(-1); - } diff -Nru lustre-1.8.3/debian/patches/fix_various_typecasts.patch lustre-1.8.5+dfsg/debian/patches/fix_various_typecasts.patch --- lustre-1.8.3/debian/patches/fix_various_typecasts.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix_various_typecasts.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,15 @@ +## autogen.dpatch by Patrick Winnertz +## DP: as we compile now with -Werror add typecasts for the printf stuff in sanity.c + +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/liblustre/tests/sanity.c lustre/lustre/liblustre/tests/sanity.c +--- lustre~/lustre/liblustre/tests/sanity.c 2010-03-03 14:44:38.000000000 +0100 ++++ lustre/lustre/liblustre/tests/sanity.c 2010-03-03 18:18:43.028668969 +0100 +@@ -705,7 +705,7 @@ + } + + t_fcntl(fd, F_SETFL, O_APPEND); +- if (!(ret = t_fcntl(fd, F_GETFL)) & O_APPEND) { ++ if ((!(ret = t_fcntl(fd, F_GETFL))) & O_APPEND) { + printf("error get flag: ret %x\n", ret); + return(-1); + } diff -Nru lustre-1.8.3/debian/patches/fix_version_tag-pl.patch lustre-1.8.5+dfsg/debian/patches/fix_version_tag-pl.patch --- lustre-1.8.3/debian/patches/fix_version_tag-pl.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/fix_version_tag-pl.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,17 @@ +## fix_version_tag-pl.dpatch by Patrick Winnertz +## DP: No description. + +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/scripts/version_tag.pl lustre/lustre/scripts/version_tag.pl +--- lustre~/lustre/scripts/version_tag.pl 2010-01-11 04:29:50.000000000 +0100 ++++ lustre/lustre/scripts/version_tag.pl 2010-08-04 12:25:25.942494281 +0200 +@@ -125,8 +125,8 @@ + $last_mtime = time(); + } else { + my $tree_status = new IO::File; +- if (!$tree_status->open("tree_status")) { +- die "unable to open the tree_status file: $!\n"; ++ if (!$tree_status->open("configure")) { ++ die "unable to open the configure file: $!\n"; + } + my $line; + while (defined($line = <$tree_status>)) { diff -Nru lustre-1.8.3/debian/patches/inode-no-i_blksize-2.6.20.dpatch lustre-1.8.5+dfsg/debian/patches/inode-no-i_blksize-2.6.20.dpatch --- lustre-1.8.3/debian/patches/inode-no-i_blksize-2.6.20.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/inode-no-i_blksize-2.6.20.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## inode-no-i_blksize-2.6.20.patch by Goswin von Brederlow -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Patch from Q-Leap Networks - -@DPATCH@ -diff -urNad lustre-1.6.2~/lustre/mds/handler.c lustre-1.6.2/lustre/mds/handler.c ---- lustre-1.6.2~/lustre/mds/handler.c 2007-09-06 14:41:18.000000000 +0200 -+++ lustre-1.6.2/lustre/mds/handler.c 2007-09-06 14:47:31.185757912 +0200 -@@ -1191,6 +1191,7 @@ - struct lvfs_run_ctxt saved; - int rc, size[2] = { sizeof(struct ptlrpc_body), sizeof(*repbody) }; - struct lvfs_ucred uc = {NULL,}; -+ int blksize; - ENTRY; - - if (OBD_FAIL_CHECK(OBD_FAIL_MDS_READPAGE_PACK)) -@@ -1223,17 +1224,18 @@ - if (IS_ERR(file)) - GOTO(out_pop, rc = PTR_ERR(file)); - -+ blksize = de->d_inode->i_sb->s_blocksize; - /* body->size is actually the offset -eeb */ -- if ((body->size & (de->d_inode->i_sb->s_blocksize - 1)) != 0) { -+ if ((body->size & (blksize - 1)) != 0) { - CERROR("offset "LPU64" not on a block boundary of %lu\n", -- body->size, de->d_inode->i_sb->s_blocksize); -+ body->size, blksize); - GOTO(out_file, rc = -EFAULT); - } - - /* body->nlink is actually the #bytes to read -eeb */ -- if (body->nlink & (de->d_inode->i_sb->s_blocksize - 1)) { -+ if (body->nlink & (blksize - 1)) { - CERROR("size %u is not multiple of blocksize %lu\n", -- body->nlink, de->d_inode->i_sb->s_blocksize); -+ body->nlink, blksize); - GOTO(out_file, rc = -EFAULT); - } - diff -Nru lustre-1.8.3/debian/patches/LBUG_open-unlinked_bug_22177-1.dpatch lustre-1.8.5+dfsg/debian/patches/LBUG_open-unlinked_bug_22177-1.dpatch --- lustre-1.8.3/debian/patches/LBUG_open-unlinked_bug_22177-1.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/LBUG_open-unlinked_bug_22177-1.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,132 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## LBUG_open-unlinked_bug_22177-1.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Patch from bugzilla #22177 - -@DPATCH@ -diff --git a/lustre/mds/mds_reint.c b/lustre/mds/mds_reint.c -index 97dc613..3c53148 100644 ---- a/lustre/mds/mds_reint.c -+++ b/lustre/mds/mds_reint.c -@@ -1755,31 +1755,37 @@ static int mds_orphan_add_link(struct mds_update_record *rec, - * for linking and return real mode back then -bzzz */ - mode = inode->i_mode; - inode->i_mode = S_IFREG; -- /* avoid vfs_link upon 0 nlink inode */ -- ++inode->i_nlink; -+ /* avoid vfs_link upon 0 nlink inode, inc by 2 instead of 1 because -+ * ext3_inc_count() can reset i_nlink for indexed directory */ -+ inode->i_nlink += 2; - rc = ll_vfs_link(dentry, mds->mds_vfsmnt, pending_dir, pending_child, - mds->mds_vfsmnt); - if (rc) -- CERROR("error linking orphan %s to PENDING: rc = %d\n", -+ CERROR("error linking orphan %s %s to PENDING: rc = %d\n", -+ S_ISDIR(mode) ? "dir" : S_ISREG(mode) ? "file" : "other", - rec->ur_name, rc); - else - mds_inode_set_orphan(inode); - - /* return mode and correct i_nlink if inode is directory */ - inode->i_mode = mode; -- LASSERTF(inode->i_nlink == 2, "%s nlink == %d\n", -+ LASSERTF(rc || inode->i_nlink == 3, "%s nlink == %d\n", - S_ISDIR(mode) ? "dir" : S_ISREG(mode) ? "file" : "other", - inode->i_nlink); -+ - if (S_ISDIR(mode)) { - pending_dir->i_nlink++; - if (pending_dir->i_sb->s_op->dirty_inode) - pending_dir->i_sb->s_op->dirty_inode(pending_dir); -- } else { -- --inode->i_nlink; -- if (inode->i_sb->s_op->dirty_inode) -- inode->i_sb->s_op->dirty_inode(inode); - } - -+ inode->i_nlink -= 2; -+ if (inode->i_sb->s_op->dirty_inode) -+ inode->i_sb->s_op->dirty_inode(inode); -+ -+ if (rc) -+ GOTO(out_dput, rc); -+ - GOTO(out_dput, rc = 1); - out_dput: - l_dput(pending_child); -@@ -2048,11 +2054,18 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, - } - - if (rc == 0 && child_inode->i_nlink == 0) { -- if (mds_orphan_needed(obd, child_inode)) -+ if (mds_orphan_needed(obd, child_inode)) { - rc = mds_orphan_add_link(rec, obd, dchild); -- -- if (rc == 1) -- GOTO(cleanup, rc = 0); -+ if (rc == 1) -+ /* child inode was successfully linked -+ * to PENDING */ -+ GOTO(cleanup, rc = 0); -+ else -+ /* we failed to move the file to PENDING, -+ * really unlink the file as if there were -+ * no more openers */ -+ rc = 0; -+ } - - if (!S_ISREG(child_inode->i_mode)) - GOTO(cleanup, rc); -@@ -2738,11 +2751,18 @@ no_unlink: - } - - if (rc == 0 && new_inode != NULL && new_inode->i_nlink == 0) { -- if (mds_orphan_needed(obd, new_inode)) -+ if (mds_orphan_needed(obd, new_inode)) { - rc = mds_orphan_add_link(rec, obd, de_new); - -- if (rc == 1) -- GOTO(cleanup, rc = 0); -+ if (rc == 1) -+ /* inode successfully linked to PENDING */ -+ GOTO(cleanup, rc = 0); -+ else -+ /* we failed to move the file to PENDING, -+ * really unlink the file as if there were -+ * no more openers */ -+ rc = 0; -+ } - - if (!S_ISREG(new_inode->i_mode)) - GOTO(cleanup, rc); -diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh -index 4241a6b..7cefe84 100644 ---- a/lustre/tests/sanity.sh -+++ b/lustre/tests/sanity.sh -@@ -6458,6 +6458,25 @@ test_202() { - } - run_test 202 "O_APPEND+O_DIRECT multistripe write ========================" - -+test_203() { # bug 22177 -+ mkdir -p $DIR/$tdir || error "creating dir $DIR/$tdir" -+ # create enough files to index the directory -+ createmany -o $DIR/$tdir/foobar 4000 -+ # print attributes for debug purpose -+ lsattr -d . -+ # open dir -+ multiop_bg_pause $DIR/$tdir D_Sc || return 1 -+ MULTIPID=$! -+ # remove the files & current working dir -+ unlinkmany $DIR/$tdir/foobar 4000 -+ rmdir $DIR/$tdir -+ kill -USR1 $MULTIPID -+ wait $MULTIPID -+ stat $DIR/$tdir && error "open-unlinked dir was not removed!" -+ return 0 -+} -+run_test 203 "Test open-unlinked dir ========================" -+ - # - # tests that do cleanup/setup should be run at the end - # diff -Nru lustre-1.8.3/debian/patches/LBUG_open-unlinked_bug_22177-2.dpatch lustre-1.8.5+dfsg/debian/patches/LBUG_open-unlinked_bug_22177-2.dpatch --- lustre-1.8.3/debian/patches/LBUG_open-unlinked_bug_22177-2.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/LBUG_open-unlinked_bug_22177-2.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## LBUG_open-unlinked_bug_22177.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Patch from Bugzilla #22177, should be fixed in 1.8.3 - -@DPATCH@ -diff --git a/lustre/mds/mds_open.c b/lustre/mds/mds_open.c -index 4feb1d8..31e1768 100644 ---- a/lustre/mds/mds_open.c -+++ b/lustre/mds/mds_open.c -@@ -1496,7 +1496,7 @@ int mds_mfd_close(struct ptlrpc_request *req, int offset, - CDEBUG(D_INODE, "destroying orphan object %s\n", fidname); - - if ((S_ISREG(inode->i_mode) && inode->i_nlink != 1) || -- (S_ISDIR(inode->i_mode) && inode->i_nlink != 2)) -+ (S_ISDIR(inode->i_mode) && inode->i_nlink > 2)) - CERROR("found \"orphan\" %s %s with link count %d\n", - S_ISREG(inode->i_mode) ? "file" : "dir", - fidname, inode->i_nlink); diff -Nru lustre-1.8.3/debian/patches/ldadd_for_loadgen.dpatch lustre-1.8.5+dfsg/debian/patches/ldadd_for_loadgen.dpatch --- lustre-1.8.3/debian/patches/ldadd_for_loadgen.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/ldadd_for_loadgen.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,19 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## ldadd_for_loadgen.dpatch by Daniel T Chen -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Fix FTBFS with gcc-4.6. - -@DPATCH@ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre-1.8.3~/lustre/utils/Makefile.am lustre-1.8.3/lustre/utils/Makefile.am ---- lustre-1.8.3~/lustre/utils/Makefile.am 2010-04-09 20:28:57.000000000 -0400 -+++ lustre-1.8.3/lustre/utils/Makefile.am 2011-09-12 21:33:40.000000000 -0400 -@@ -36,7 +36,7 @@ - lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a - - loadgen_SOURCES = loadgen.c lustre_cfg.c obd.c --loadgen_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS) -+loadgen_LDADD := liblustreapi.a $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS) - loadgen_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a - - lshowmount_SOURCES = lshowmount.c nidlist.c nidlist.h diff -Nru lustre-1.8.3/debian/patches/ldadd_for_loadgen.patch lustre-1.8.5+dfsg/debian/patches/ldadd_for_loadgen.patch --- lustre-1.8.3/debian/patches/ldadd_for_loadgen.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/ldadd_for_loadgen.patch 2012-01-08 20:56:03.000000000 +0100 @@ -0,0 +1,17 @@ +Description: Fix FTBFS with gcc-4.6 ld-as-needed +Author: Daniel T Chen +--- + lustre/utils/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- lustre-1.8.5+dfsg.orig/lustre/utils/Makefile.am ++++ lustre-1.8.5+dfsg/lustre/utils/Makefile.am +@@ -36,7 +36,7 @@ lfs_LDADD := $(LIBREADLINE) liblustreapi + lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a + + loadgen_SOURCES = loadgen.c lustre_cfg.c obd.c +-loadgen_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS) ++loadgen_LDADD := liblustreapi.a $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS) + loadgen_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a + + lshowmount_SOURCES = lshowmount.c nidlist.c nidlist.h diff -Nru lustre-1.8.3/debian/patches/ldiskfs-detect-2.6.20-2.6.22.dpatch lustre-1.8.5+dfsg/debian/patches/ldiskfs-detect-2.6.20-2.6.22.dpatch --- lustre-1.8.3/debian/patches/ldiskfs-detect-2.6.20-2.6.22.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/ldiskfs-detect-2.6.20-2.6.22.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,28 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## ldiskfs-detect-2.6.20-2.6.22.dpatch by Goswin von Brederlow -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Patch from Q-Leap Networks modified by Patrick winnertz - -@DPATCH@ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/ldiskfs/configure.ac lustre/ldiskfs/configure.ac ---- lustre~/ldiskfs/configure.ac 2010-03-03 17:25:38.000000000 +0100 -+++ lustre/ldiskfs/configure.ac 2010-03-04 14:53:13.608332585 +0100 -@@ -112,11 +112,16 @@ - else - LDISKFS_SERIES="2.6-rhel5.series" - fi -- else -+ else -+ if test -e $LINUX_OBJ/version.Debian; then -+ LDISKFS_SERIES="2.6.18-debian.series" -+ else - LDISKFS_SERIES="2.6.18-vanilla.series" -+ fi - fi - ;; - 2.6.22*) LDISKFS_SERIES="2.6.22-vanilla.series";; -+2.6.26*) LDISKFS_SERIES="2.6.26-vanilla.series";; - 2.6.27*) LDISKFS_SERIES="2.6-sles11.series";; - *) AC_MSG_WARN([Unknown kernel version $LINUXRELEASE, fix ldiskfs/configure.ac]) - esac diff -Nru lustre-1.8.3/debian/patches/ldiskfs-detect-2.6.20-2.6.22.patch lustre-1.8.5+dfsg/debian/patches/ldiskfs-detect-2.6.20-2.6.22.patch --- lustre-1.8.3/debian/patches/ldiskfs-detect-2.6.20-2.6.22.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/ldiskfs-detect-2.6.20-2.6.22.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,28 @@ +## ldiskfs-detect-2.6.20-2.6.22.dpatch by Goswin von Brederlow +## DP: Patch from Q-Leap Networks modified by Patrick winnertz + +Index: lustre/ldiskfs/configure.ac +=================================================================== +--- lustre.orig/ldiskfs/configure.ac 2011-08-05 11:10:05.195251849 +0200 ++++ lustre/ldiskfs/configure.ac 2011-08-05 11:11:19.987622721 +0200 +@@ -114,13 +114,18 @@ + else + LDISKFS_SERIES="2.6-rhel5.series" + fi +- else ++ else ++ if test -e $LINUX_OBJ/version.Debian; then ++ LDISKFS_SERIES="2.6.18-debian.series" ++ else + LDISKFS_SERIES="2.6.18-vanilla.series" ++ fi + fi + ;; + 2.6.22*) LDISKFS_SERIES="2.6.22-vanilla.series";; ++2.6.26*) LDISKFS_SERIES="2.6.26-vanilla.series";; + 2.6.27*) LDISKFS_SERIES="2.6-sles11.series";; +-2.6.32.*) LDISKFS_SERIES="2.6-sles11.series";; ++2.6.32*) LDISKFS_SERIES="2.6-sles11.series";; + *) AC_MSG_WARN([Unknown kernel version $LINUXRELEASE, fix ldiskfs/configure.ac]) + esac + AC_MSG_RESULT([$LDISKFS_SERIES]) diff -Nru lustre-1.8.3/debian/patches/libsysio.dpatch lustre-1.8.5+dfsg/debian/patches/libsysio.dpatch --- lustre-1.8.3/debian/patches/libsysio.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/libsysio.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## libsysio.dpatch by Goswin von Brederlow -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Use path relative to $srcdir instead of PWD to allow using a builddir - -@DPATCH@ ---- lustre-1.6.0.1/lustre/liblustre/Makefile.am~ 2004-12-20 00:06:24.000000000 +0100 -+++ lustre-1.6.0.1/lustre/liblustre/Makefile.am 2007-07-20 12:33:52.000000000 +0200 -@@ -1,7 +1,7 @@ - ## Liblustre excecutables & libraries Makefile - SUBDIRS = . tests - --AM_CPPFLAGS = $(HAVE_EFENCE) -I$(SYSIO)/include -D_LARGEFILE64_SOURCE=1 \ -+AM_CPPFLAGS = $(HAVE_EFENCE) -I$(top_srcdir)/libsysio/include -D_LARGEFILE64_SOURCE=1 \ - $(LLCPPFLAGS) -I$(top_srcdir)/lnet/ulnds - AM_CFLAGS = $(LLCFLAGS) - diff -Nru lustre-1.8.3/debian/patches/libsysio.patch lustre-1.8.5+dfsg/debian/patches/libsysio.patch --- lustre-1.8.3/debian/patches/libsysio.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/libsysio.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,16 @@ +## libsysio.dpatch by Goswin von Brederlow +## DP: Use path relative to $srcdir instead of PWD to allow using a builddir + +Index: lustre/lustre/liblustre/Makefile.am +=================================================================== +--- lustre.orig/lustre/liblustre/Makefile.am 2010-12-07 16:54:32.881545003 +0100 ++++ lustre/lustre/liblustre/Makefile.am 2010-12-07 17:00:11.837545002 +0100 +@@ -1,7 +1,7 @@ + ## Liblustre excecutables & libraries Makefile + SUBDIRS = . tests + +-AM_CPPFLAGS = $(HAVE_EFENCE) -I$(SYSIO)/include -D_LARGEFILE64_SOURCE=1 \ ++AM_CPPFLAGS = $(HAVE_EFENCE) -I$(top_srcdir)/libsysio/include -D_LARGEFILE64_SOURCE=1 \ + $(LLCPPFLAGS) -I$(top_srcdir)/lnet/ulnds + AM_CFLAGS = $(LLCFLAGS) + diff -Nru lustre-1.8.3/debian/patches/lustre_config.dpatch lustre-1.8.5+dfsg/debian/patches/lustre_config.dpatch --- lustre-1.8.3/debian/patches/lustre_config.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/lustre_config.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,103 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## lustre_config.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Hard coded path to lc_common... not the best solution, but a solution - -@DPATCH@ -diff -urNad lustre-1.6.4.1~/lustre/scripts/lc_cluman.in lustre-1.6.4.1/lustre/scripts/lc_cluman.in ---- lustre-1.6.4.1~/lustre/scripts/lc_cluman.in 2007-03-23 03:31:10.000000000 +0100 -+++ lustre-1.6.4.1/lustre/scripts/lc_cluman.in 2007-12-21 12:04:45.000000000 +0100 -@@ -38,7 +38,7 @@ - } - - # Get the library of functions --. @scriptlibdir@/lc_common -+. /usr/share/lustre/lc_common - - #****************************** Global variables ******************************# - TMP_DIR=${CLUMGR_TMP_DIR} # Temporary directory -diff -urNad lustre-1.6.4.1~/lustre/scripts/lc_hb.in lustre-1.6.4.1/lustre/scripts/lc_hb.in ---- lustre-1.6.4.1~/lustre/scripts/lc_hb.in 2007-03-23 03:31:10.000000000 +0100 -+++ lustre-1.6.4.1/lustre/scripts/lc_hb.in 2007-12-21 12:04:58.000000000 +0100 -@@ -31,7 +31,7 @@ - } - - # Get the library of functions --. @scriptlibdir@/lc_common -+. /usr/share/lustre/lc_common - - #****************************** Global variables ******************************# - # Heartbeat tools -diff -urNad lustre-1.6.4.1~/lustre/scripts/lc_lvm.in lustre-1.6.4.1/lustre/scripts/lc_lvm.in ---- lustre-1.6.4.1~/lustre/scripts/lc_lvm.in 2007-03-23 03:31:10.000000000 +0100 -+++ lustre-1.6.4.1/lustre/scripts/lc_lvm.in 2007-12-21 12:05:15.000000000 +0100 -@@ -118,7 +118,7 @@ - } - - # Get the library of functions --. @scriptlibdir@/lc_common -+. /usr/share/lustre/lc_common - - #***************************** Global variables *****************************# - # All the LVM device items in the csv file -diff -urNad lustre-1.6.4.1~/lustre/scripts/lc_md.in lustre-1.6.4.1/lustre/scripts/lc_md.in ---- lustre-1.6.4.1~/lustre/scripts/lc_md.in 2007-06-09 09:09:09.000000000 +0200 -+++ lustre-1.6.4.1/lustre/scripts/lc_md.in 2007-12-21 12:05:31.000000000 +0100 -@@ -70,7 +70,7 @@ - } - - # Get the library of functions --. @scriptlibdir@/lc_common -+. /usr/share/lustre/lc_common - - #***************************** Global variables *****************************# - # All the MD device items in the csv file -diff -urNad lustre-1.6.4.1~/lustre/scripts/lc_modprobe.in lustre-1.6.4.1/lustre/scripts/lc_modprobe.in ---- lustre-1.6.4.1~/lustre/scripts/lc_modprobe.in 2007-03-23 03:31:10.000000000 +0100 -+++ lustre-1.6.4.1/lustre/scripts/lc_modprobe.in 2007-12-21 12:05:50.000000000 +0100 -@@ -6,7 +6,7 @@ - ################################################################################# - - # Get the library of functions --. @scriptlibdir@/lc_common -+. /usr/share/lustre/lc_common - - # Check the kernel version - KERNEL_VERSION=`uname -r` -diff -urNad lustre-1.6.4.1~/lustre/scripts/lc_net.in lustre-1.6.4.1/lustre/scripts/lc_net.in ---- lustre-1.6.4.1~/lustre/scripts/lc_net.in 2007-03-23 03:31:10.000000000 +0100 -+++ lustre-1.6.4.1/lustre/scripts/lc_net.in 2007-12-21 12:06:06.000000000 +0100 -@@ -27,7 +27,7 @@ - } - - # Get the library of functions --. @scriptlibdir@/lc_common -+. /usr/share/lustre/lc_common - - VERBOSE_OUTPUT=false - # Get and check the positional parameters -diff -urNad lustre-1.6.4.1~/lustre/scripts/lustre_config.in lustre-1.6.4.1/lustre/scripts/lustre_config.in ---- lustre-1.6.4.1~/lustre/scripts/lustre_config.in 2007-10-14 06:33:14.000000000 +0200 -+++ lustre-1.6.4.1/lustre/scripts/lustre_config.in 2007-12-21 12:04:25.000000000 +0100 -@@ -230,7 +230,7 @@ - } - - # Get the library of functions --. @scriptlibdir@/lc_common -+. /usr/share/lustre/lc_common - - #***************************** Global variables *****************************# - declare -a MGS_NODENAME # node names of the MGS servers -diff -urNad lustre-1.6.4.1~/lustre/scripts/lustre_createcsv.in lustre-1.6.4.1/lustre/scripts/lustre_createcsv.in ---- lustre-1.6.4.1~/lustre/scripts/lustre_createcsv.in 2007-10-14 06:33:14.000000000 +0200 -+++ lustre-1.6.4.1/lustre/scripts/lustre_createcsv.in 2007-12-21 12:06:43.000000000 +0100 -@@ -37,7 +37,7 @@ - } - - # Get the library of functions --. @scriptlibdir@/lc_common -+. /usr/share/lustre/lc_common - - #**************************** Global variables ****************************# - # csv file diff -Nru lustre-1.8.3/debian/patches/lustre_config.patch lustre-1.8.5+dfsg/debian/patches/lustre_config.patch --- lustre-1.8.3/debian/patches/lustre_config.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/lustre_config.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,107 @@ +## lustre_config.dpatch by Patrick Winnertz +## DP: Hard coded path to lc_common... not the best solution, but a solution + +Index: lustre/lustre/scripts/lc_cluman.in +=================================================================== +--- lustre.orig/lustre/scripts/lc_cluman.in 2010-12-07 16:54:32.657545003 +0100 ++++ lustre/lustre/scripts/lc_cluman.in 2010-12-07 17:00:29.205545002 +0100 +@@ -38,7 +38,7 @@ + } + + # Get the library of functions +-. @scriptlibdir@/lc_common ++. /usr/share/lustre/lc_common + + #****************************** Global variables ******************************# + TMP_DIR=${CLUMGR_TMP_DIR} # Temporary directory +Index: lustre/lustre/scripts/lc_hb.in +=================================================================== +--- lustre.orig/lustre/scripts/lc_hb.in 2010-12-07 16:54:32.649545003 +0100 ++++ lustre/lustre/scripts/lc_hb.in 2010-12-07 17:00:29.205545002 +0100 +@@ -34,7 +34,7 @@ + } + + # Get the library of functions +-. @scriptlibdir@/lc_common ++. /usr/share/lustre/lc_common + + #****************************** Global variables ******************************# + # Heartbeat tools +Index: lustre/lustre/scripts/lc_lvm.in +=================================================================== +--- lustre.orig/lustre/scripts/lc_lvm.in 2010-12-07 16:54:32.673545003 +0100 ++++ lustre/lustre/scripts/lc_lvm.in 2010-12-07 17:00:29.205545002 +0100 +@@ -118,7 +118,7 @@ + } + + # Get the library of functions +-. @scriptlibdir@/lc_common ++. /usr/share/lustre/lc_common + + #***************************** Global variables *****************************# + # All the LVM device items in the csv file +Index: lustre/lustre/scripts/lc_md.in +=================================================================== +--- lustre.orig/lustre/scripts/lc_md.in 2010-12-07 16:54:32.685545003 +0100 ++++ lustre/lustre/scripts/lc_md.in 2010-12-07 17:00:29.205545002 +0100 +@@ -70,7 +70,7 @@ + } + + # Get the library of functions +-. @scriptlibdir@/lc_common ++. /usr/share/lustre/lc_common + + #***************************** Global variables *****************************# + # All the MD device items in the csv file +Index: lustre/lustre/scripts/lc_modprobe.in +=================================================================== +--- lustre.orig/lustre/scripts/lc_modprobe.in 2010-12-07 16:54:32.629545003 +0100 ++++ lustre/lustre/scripts/lc_modprobe.in 2010-12-07 17:00:29.205545002 +0100 +@@ -6,7 +6,7 @@ + ################################################################################# + + # Get the library of functions +-. @scriptlibdir@/lc_common ++. /usr/share/lustre/lc_common + + # Check the kernel version + KERNEL_VERSION=`uname -r` +Index: lustre/lustre/scripts/lc_net.in +=================================================================== +--- lustre.orig/lustre/scripts/lc_net.in 2010-12-07 16:54:32.665545003 +0100 ++++ lustre/lustre/scripts/lc_net.in 2010-12-07 17:00:29.209545002 +0100 +@@ -30,7 +30,7 @@ + } + + # Get the library of functions +-. @scriptlibdir@/lc_common ++. /usr/share/lustre/lc_common + + VERBOSE_OUTPUT=false + # Get and check the positional parameters +Index: lustre/lustre/scripts/lustre_config.in +=================================================================== +--- lustre.orig/lustre/scripts/lustre_config.in 2010-12-07 16:54:32.621545003 +0100 ++++ lustre/lustre/scripts/lustre_config.in 2010-12-07 17:00:29.209545002 +0100 +@@ -233,7 +233,7 @@ + } + + # Get the library of functions +-. @scriptlibdir@/lc_common ++. /usr/share/lustre/lc_common + + #***************************** Global variables *****************************# + declare -a NODE_NAMES # node names in the failover group +Index: lustre/lustre/scripts/lustre_createcsv.in +=================================================================== +--- lustre.orig/lustre/scripts/lustre_createcsv.in 2010-12-07 16:54:32.637545003 +0100 ++++ lustre/lustre/scripts/lustre_createcsv.in 2010-12-07 17:00:29.209545002 +0100 +@@ -39,7 +39,7 @@ + } + + # Get the library of functions +-. @scriptlibdir@/lc_common ++. /usr/share/lustre/lc_common + + #**************************** Global variables ****************************# + # csv file diff -Nru lustre-1.8.3/debian/patches/lustre_manpage.dpatch lustre-1.8.5+dfsg/debian/patches/lustre_manpage.dpatch --- lustre-1.8.3/debian/patches/lustre_manpage.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/lustre_manpage.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,17 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## lustre_manpatch.dpatch by Patrick Winnert -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: registred symbol not allowed. - ---- lustre-1.6.0.1/lustre/doc/lustre.7 2007-07-20 14:27:09.000000000 +0200 -+++ lustre-1.6.0.1/lustre/doc/lustre.7 2007-07-20 14:29:35.000000000 +0200 -@@ -8,7 +8,7 @@ - .SH SYNOPSIS - A high-performance file system designed for clusters. - .SH DESCRIPTION --.B Lustre® -+.B Lustre\[rg] - is a high-performance, massively-scalable, POSIX-compliant network file system - designed for the world's largest high-performance compute clusters. Lustre - is under active development from Cluster FileSystems (http://clusterfs.com). diff -Nru lustre-1.8.3/debian/patches/lustre_manpage.patch lustre-1.8.5+dfsg/debian/patches/lustre_manpage.patch --- lustre-1.8.3/debian/patches/lustre_manpage.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/lustre_manpage.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,74 @@ +## lustre_manpatch.dpatch by Patrick Winnert +## DP: registred symbol not allowed. + +Index: lustre/lustre/doc/lustre.7 +=================================================================== +--- lustre.orig/lustre/doc/lustre.7 2010-12-10 10:52:37.345194002 +0100 ++++ lustre/lustre/doc/lustre.7 2010-12-10 13:04:48.782428000 +0100 +@@ -2,13 +2,13 @@ + .\" Copyright 2008 by Sun Microsystems, Inc. All Rights Reserved. + .\" This file may be copied under the terms of the GNU Public License. + .\" +-.TH Lustre 7 "2006 Jun 15" Lustre "A high-performance cluster file system" ++.TH Lustre 7 + .SH NAME +-Lustre ++Lustre - a high-performance cluster file system + .SH SYNOPSIS + A high-performance file system designed for clusters. + .SH DESCRIPTION +-.B Lustre® ++.B Lustre\[rg] + is a high-performance, massively-scalable, POSIX-compliant network file system + designed for the world's largest high-performance compute clusters. Lustre + is under active development from Sun Microsystems (http://www.lustre.org). +Index: lustre/lustre/doc/lctl.8 +=================================================================== +--- lustre.orig/lustre/doc/lctl.8 2010-12-10 10:52:37.353194002 +0100 ++++ lustre/lustre/doc/lctl.8 2010-12-10 13:04:48.782428000 +0100 +@@ -35,8 +35,8 @@ + at the lctl prompt. To get basic help on the meaning and syntax of a + command, type + .B help +-.I command +-. Command completion is activated with the TAB key, and command history is available via the up- and down-arrow keys. ++.I command. ++Command completion is activated with the TAB key, and command history is available via the up- and down-arrow keys. + + For non-interactive use, one uses the second invocation, which runs command after connecting to the device. + +Index: lustre/lustre/doc/lfs.1 +=================================================================== +--- lustre.orig/lustre/doc/lfs.1 2010-12-10 13:05:14.270428000 +0100 ++++ lustre/lustre/doc/lfs.1 2010-12-10 13:10:11.150428001 +0100 +@@ -71,7 +71,7 @@ + .B lfs help + .SH DESCRIPTION + .B lfs +-can be used to create a new file with a specific striping pattern, determine the default striping pattern, gather the extended attributes (object numbers and location) for a specific file, find files with specific attributes, list OST information, or set quota limits. It can be invoked interactively without any arguments or in a non-interactive mode with one of the arguements supported. ++can be used to create a new file with a specific striping pattern, determine the default striping pattern, gather the extended attributes (object numbers and location) for a specific file, find files with specific attributes, list OST information, or set quota limits. It can be invoked interactively without any arguments or in a non-interactive mode with one of the arguments supported. + .SH OPTIONS + The various options supported by lctl are listed and explained below: + .TP +@@ -223,7 +223,7 @@ + .TP + .B $ lfs find --obd OST2-UUID /mnt/lustre/ + Recursively list all files in a given directory that have objects on OST2-UUID. +-.tP ++.TP + .B $ lfs check servers + Check the status of all servers (MDT, OST) + .TP +Index: lustre/lustre/doc/llobdstat.8 +=================================================================== +--- lustre.orig/lustre/doc/llobdstat.8 2010-12-10 13:08:15.510428000 +0100 ++++ lustre/lustre/doc/llobdstat.8 2010-12-10 13:08:22.162428000 +0100 +@@ -29,7 +29,7 @@ + 1217026057 0.00MB 0.00MB/s 0.00MB 0.00MB/s + 1217026058 0.00MB 0.00MB/s 0.00MB 0.00MB/s + 1217026059 0.00MB 0.00MB/s 0.00MB 0.00MB/s st:1 +-... ++ + .fi + .SH FILES + /proc/fs/lustre/obdfilter//stats. diff -Nru lustre-1.8.3/debian/patches/modified-debian-specific-stuff.patch lustre-1.8.5+dfsg/debian/patches/modified-debian-specific-stuff.patch --- lustre-1.8.3/debian/patches/modified-debian-specific-stuff.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/modified-debian-specific-stuff.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,4373 @@ +Description: everything which was incorporated into the .diff.gz over time + This patch contains every modification which was done directly in .diff.gz + over the time. Cleanup is required here in near future. + . + lustre (1.8.5+dfsg-3) unstable; urgency=low + . + * [9194f2d] Build ldiskfs kernel module also on plain + debian kernel (2.6.32) +Author: Patrick Winnertz + +--- +The information above should follow the Patch Tagging Guidelines, please +checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here +are templates for supplementary fields that you might want to add: + +Origin: , +Bug: +Bug-Debian: http://bugs.debian.org/ +Bug-Ubuntu: https://launchpad.net/bugs/ +Forwarded: +Reviewed-By: +Last-Update: + +--- /dev/null ++++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-debian.series +@@ -0,0 +1,20 @@ ++ext3-wantedi-2.6-rhel4.patch ++iopen-2.6-fc5.patch ++ext3-map_inode_page-2.6.18.patch ++export-ext3-2.6-rhel4.patch ++ext3-include-fixes-2.6-rhel4.patch ++ext3-extents-2.6.18-vanilla.patch ++ext3-mballoc3-core.patch ++ext3-mballoc3-2.6.18.patch ++ext3-nlinks-2.6.9.patch ++ext3-ialloc-2.6.patch ++ext3-remove-cond_resched-calls-2.6.12.patch ++ext3-filterdata-sles10.patch ++ext3-16tb-overflow-fixes.patch ++ext3-uninit-2.6.18.patch ++ext3-nanosecond-2.6.18-vanilla.patch ++ext3-inode-version-2.6.18-vanilla.patch ++ext3-ea-expand-lose-block.patch ++ext3-mmp-2.6.18-vanilla.patch ++ext3-fiemap-2.6.18-vanilla.patch ++ext3-lookup-dotdot-2.6.9.patch +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6.27-vanilla.series +@@ -0,0 +1,15 @@ ++lustre_version.patch ++vfs_races-2.6.22-vanilla.patch ++iopen-misc-2.6.22-vanilla.patch ++export-truncate-2.6.18-vanilla.patch ++export_symbols-2.6.22-vanilla.patch ++dev_read_only-2.6.27-vanilla.patch ++export-2.6.27-vanilla.patch ++export-show_task-2.6.27-vanilla.patch ++sd_iostats-2.6.27-vanilla.patch ++md-mmp-unplug-dev-2.6.27-vanilla.patch ++quota-Split-off-quota-tree-handling-into-a-separate.patch ++quota-Increase-size-of-variables-for-limits-and-ino.patch ++quota-support-64-bit-quota-format-2.6.27-vanilla.patch ++jbd2-jcberr-2.6-sles11.patch ++jbd2-commit-timer-no-jiffies-rounding.diff +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6.26-vanilla.series +@@ -0,0 +1,2 @@ ++lustre_version.patch ++debian-2.6.26.diff +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-Increase-size-of-variables-for-limits-and-ino.patch +@@ -0,0 +1,359 @@ ++From: Jan Kara ++References: fate#302681 ++Subject: [PATCH 02/28] quota: Increase size of variables for limits and inode usage ++Patch-mainline: 2.6.29? ++ ++So far quota was fine with quota block limits and inode limits/numbers in ++a 32-bit type. Now with rapid increase in storage sizes there are coming ++requests to be able to handle quota limits above 4TB / more that 2^32 inodes. ++So bump up sizes of types in mem_dqblk structure to 64-bits to be able to ++handle this. Also update inode allocation / checking functions to use qsize_t ++and make global structure keep quota limits in bytes so that things are ++consistent. ++ ++Signed-off-by: Jan Kara ++--- ++ fs/dquot.c | 50 ++++++++++++++++++++++++++------------------- ++ fs/quota_v1.c | 25 +++++++++++++++++----- ++ fs/quota_v2.c | 21 +++++++++++++++--- ++ include/linux/quota.h | 28 +++++++++++-------------- ++ include/linux/quotaops.h | 4 +- ++ 5 files changed, 79 insertions(+), 49 deletions(-) ++ ++diff --git a/fs/dquot.c b/fs/dquot.c ++index e1dac3e..758bf4a 100644 ++--- a/fs/dquot.c +++++ b/fs/dquot.c ++@@ -833,7 +833,7 @@ static void drop_dquot_ref(struct super_block *sb, int type) ++ } ++ } ++ ++-static inline void dquot_incr_inodes(struct dquot *dquot, unsigned long number) +++static inline void dquot_incr_inodes(struct dquot *dquot, qsize_t number) ++ { ++ dquot->dq_dqb.dqb_curinodes += number; ++ } ++@@ -843,7 +843,7 @@ static inline void dquot_incr_space(struct dquot *dquot, qsize_t number) ++ dquot->dq_dqb.dqb_curspace += number; ++ } ++ ++-static inline void dquot_decr_inodes(struct dquot *dquot, unsigned long number) +++static inline void dquot_decr_inodes(struct dquot *dquot, qsize_t number) ++ { ++ if (dquot->dq_dqb.dqb_curinodes > number) ++ dquot->dq_dqb.dqb_curinodes -= number; ++@@ -860,7 +860,7 @@ static inline void dquot_decr_space(struct dquot *dquot, qsize_t number) ++ dquot->dq_dqb.dqb_curspace -= number; ++ else ++ dquot->dq_dqb.dqb_curspace = 0; ++- if (toqb(dquot->dq_dqb.dqb_curspace) <= dquot->dq_dqb.dqb_bsoftlimit) +++ if (dquot->dq_dqb.dqb_curspace <= dquot->dq_dqb.dqb_bsoftlimit) ++ dquot->dq_dqb.dqb_btime = (time_t) 0; ++ clear_bit(DQ_BLKS_B, &dquot->dq_flags); ++ } ++@@ -1038,7 +1038,7 @@ static inline char ignore_hardlimit(struct dquot *dquot) ++ } ++ ++ /* needs dq_data_lock */ ++-static int check_idq(struct dquot *dquot, ulong inodes, char *warntype) +++static int check_idq(struct dquot *dquot, qsize_t inodes, char *warntype) ++ { ++ *warntype = QUOTA_NL_NOWARN; ++ if (inodes <= 0 || test_bit(DQ_FAKE_B, &dquot->dq_flags)) ++@@ -1077,7 +1077,7 @@ static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, char *war ++ return QUOTA_OK; ++ ++ if (dquot->dq_dqb.dqb_bhardlimit && ++- toqb(dquot->dq_dqb.dqb_curspace + space) > dquot->dq_dqb.dqb_bhardlimit && +++ dquot->dq_dqb.dqb_curspace + space > dquot->dq_dqb.dqb_bhardlimit && ++ !ignore_hardlimit(dquot)) { ++ if (!prealloc) ++ *warntype = QUOTA_NL_BHARDWARN; ++@@ -1085,7 +1085,7 @@ static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, char *war ++ } ++ ++ if (dquot->dq_dqb.dqb_bsoftlimit && ++- toqb(dquot->dq_dqb.dqb_curspace + space) > dquot->dq_dqb.dqb_bsoftlimit && +++ dquot->dq_dqb.dqb_curspace + space > dquot->dq_dqb.dqb_bsoftlimit && ++ dquot->dq_dqb.dqb_btime && get_seconds() >= dquot->dq_dqb.dqb_btime && ++ !ignore_hardlimit(dquot)) { ++ if (!prealloc) ++@@ -1094,7 +1094,7 @@ static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, char *war ++ } ++ ++ if (dquot->dq_dqb.dqb_bsoftlimit && ++- toqb(dquot->dq_dqb.dqb_curspace + space) > dquot->dq_dqb.dqb_bsoftlimit && +++ dquot->dq_dqb.dqb_curspace + space > dquot->dq_dqb.dqb_bsoftlimit && ++ dquot->dq_dqb.dqb_btime == 0) { ++ if (!prealloc) { ++ *warntype = QUOTA_NL_BSOFTWARN; ++@@ -1111,7 +1111,7 @@ static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, char *war ++ return QUOTA_OK; ++ } ++ ++-static int info_idq_free(struct dquot *dquot, ulong inodes) +++static int info_idq_free(struct dquot *dquot, qsize_t inodes) ++ { ++ if (test_bit(DQ_FAKE_B, &dquot->dq_flags) || ++ dquot->dq_dqb.dqb_curinodes <= dquot->dq_dqb.dqb_isoftlimit) ++@@ -1128,15 +1128,13 @@ static int info_idq_free(struct dquot *dquot, ulong inodes) ++ static int info_bdq_free(struct dquot *dquot, qsize_t space) ++ { ++ if (test_bit(DQ_FAKE_B, &dquot->dq_flags) || ++- toqb(dquot->dq_dqb.dqb_curspace) <= dquot->dq_dqb.dqb_bsoftlimit) +++ dquot->dq_dqb.dqb_curspace <= dquot->dq_dqb.dqb_bsoftlimit) ++ return QUOTA_NL_NOWARN; ++ ++- if (toqb(dquot->dq_dqb.dqb_curspace - space) <= ++- dquot->dq_dqb.dqb_bsoftlimit) +++ if (dquot->dq_dqb.dqb_curspace - space <= dquot->dq_dqb.dqb_bsoftlimit) ++ return QUOTA_NL_BSOFTBELOW; ++- if (toqb(dquot->dq_dqb.dqb_curspace) >= dquot->dq_dqb.dqb_bhardlimit && ++- toqb(dquot->dq_dqb.dqb_curspace - space) < ++- dquot->dq_dqb.dqb_bhardlimit) +++ if (dquot->dq_dqb.dqb_curspace >= dquot->dq_dqb.dqb_bhardlimit && +++ dquot->dq_dqb.dqb_curspace - space < dquot->dq_dqb.dqb_bhardlimit) ++ return QUOTA_NL_BHARDBELOW; ++ return QUOTA_NL_NOWARN; ++ } ++@@ -1279,7 +1277,7 @@ warn_put_all: ++ /* ++ * This operation can block, but only after everything is updated ++ */ ++-int dquot_alloc_inode(const struct inode *inode, unsigned long number) +++int dquot_alloc_inode(const struct inode *inode, qsize_t number) ++ { ++ int cnt, ret = NO_QUOTA; ++ char warntype[MAXQUOTAS]; ++@@ -1364,7 +1362,7 @@ out_sub: ++ /* ++ * This operation can block, but only after everything is updated ++ */ ++-int dquot_free_inode(const struct inode *inode, unsigned long number) +++int dquot_free_inode(const struct inode *inode, qsize_t number) ++ { ++ unsigned int cnt; ++ char warntype[MAXQUOTAS]; ++@@ -1881,14 +1879,24 @@ int vfs_dq_quota_on_remount(struct super_block *sb) ++ return ret; ++ } ++ +++static inline qsize_t qbtos(qsize_t blocks) +++{ +++ return blocks << QIF_DQBLKSIZE_BITS; +++} +++ +++static inline qsize_t stoqb(qsize_t space) +++{ +++ return (space + QIF_DQBLKSIZE - 1) >> QIF_DQBLKSIZE_BITS; +++} +++ ++ /* Generic routine for getting common part of quota structure */ ++ static void do_get_dqblk(struct dquot *dquot, struct if_dqblk *di) ++ { ++ struct mem_dqblk *dm = &dquot->dq_dqb; ++ ++ spin_lock(&dq_data_lock); ++- di->dqb_bhardlimit = dm->dqb_bhardlimit; ++- di->dqb_bsoftlimit = dm->dqb_bsoftlimit; +++ di->dqb_bhardlimit = stoqb(dm->dqb_bhardlimit); +++ di->dqb_bsoftlimit = stoqb(dm->dqb_bsoftlimit); ++ di->dqb_curspace = dm->dqb_curspace; ++ di->dqb_ihardlimit = dm->dqb_ihardlimit; ++ di->dqb_isoftlimit = dm->dqb_isoftlimit; ++@@ -1935,8 +1943,8 @@ static int do_set_dqblk(struct dquot *dquot, struct if_dqblk *di) ++ check_blim = 1; ++ } ++ if (di->dqb_valid & QIF_BLIMITS) { ++- dm->dqb_bsoftlimit = di->dqb_bsoftlimit; ++- dm->dqb_bhardlimit = di->dqb_bhardlimit; +++ dm->dqb_bsoftlimit = qbtos(di->dqb_bsoftlimit); +++ dm->dqb_bhardlimit = qbtos(di->dqb_bhardlimit); ++ check_blim = 1; ++ } ++ if (di->dqb_valid & QIF_INODES) { ++@@ -1954,7 +1962,7 @@ static int do_set_dqblk(struct dquot *dquot, struct if_dqblk *di) ++ dm->dqb_itime = di->dqb_itime; ++ ++ if (check_blim) { ++- if (!dm->dqb_bsoftlimit || toqb(dm->dqb_curspace) < dm->dqb_bsoftlimit) { +++ if (!dm->dqb_bsoftlimit || dm->dqb_curspace < dm->dqb_bsoftlimit) { ++ dm->dqb_btime = 0; ++ clear_bit(DQ_BLKS_B, &dquot->dq_flags); ++ } ++diff --git a/fs/quota_v1.c b/fs/quota_v1.c ++index 5ae15b1..3e078ee 100644 ++--- a/fs/quota_v1.c +++++ b/fs/quota_v1.c ++@@ -14,14 +14,27 @@ MODULE_AUTHOR("Jan Kara"); ++ MODULE_DESCRIPTION("Old quota format support"); ++ MODULE_LICENSE("GPL"); ++ +++#define QUOTABLOCK_BITS 10 +++#define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS) +++ +++static inline qsize_t v1_stoqb(qsize_t space) +++{ +++ return (space + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS; +++} +++ +++static inline qsize_t v1_qbtos(qsize_t blocks) +++{ +++ return blocks << QUOTABLOCK_BITS; +++} +++ ++ static void v1_disk2mem_dqblk(struct mem_dqblk *m, struct v1_disk_dqblk *d) ++ { ++ m->dqb_ihardlimit = d->dqb_ihardlimit; ++ m->dqb_isoftlimit = d->dqb_isoftlimit; ++ m->dqb_curinodes = d->dqb_curinodes; ++- m->dqb_bhardlimit = d->dqb_bhardlimit; ++- m->dqb_bsoftlimit = d->dqb_bsoftlimit; ++- m->dqb_curspace = ((qsize_t)d->dqb_curblocks) << QUOTABLOCK_BITS; +++ m->dqb_bhardlimit = v1_qbtos(d->dqb_bhardlimit); +++ m->dqb_bsoftlimit = v1_qbtos(d->dqb_bsoftlimit); +++ m->dqb_curspace = v1_qbtos(d->dqb_curblocks); ++ m->dqb_itime = d->dqb_itime; ++ m->dqb_btime = d->dqb_btime; ++ } ++@@ -31,9 +44,9 @@ static void v1_mem2disk_dqblk(struct v1_disk_dqblk *d, struct mem_dqblk *m) ++ d->dqb_ihardlimit = m->dqb_ihardlimit; ++ d->dqb_isoftlimit = m->dqb_isoftlimit; ++ d->dqb_curinodes = m->dqb_curinodes; ++- d->dqb_bhardlimit = m->dqb_bhardlimit; ++- d->dqb_bsoftlimit = m->dqb_bsoftlimit; ++- d->dqb_curblocks = toqb(m->dqb_curspace); +++ d->dqb_bhardlimit = v1_stoqb(m->dqb_bhardlimit); +++ d->dqb_bsoftlimit = v1_stoqb(m->dqb_bsoftlimit); +++ d->dqb_curblocks = v1_stoqb(m->dqb_curspace); ++ d->dqb_itime = m->dqb_itime; ++ d->dqb_btime = m->dqb_btime; ++ } ++diff --git a/fs/quota_v2.c b/fs/quota_v2.c ++index b53827d..51c4717 100644 ++--- a/fs/quota_v2.c +++++ b/fs/quota_v2.c ++@@ -26,6 +26,19 @@ typedef char *dqbuf_t; ++ #define GETIDINDEX(id, depth) (((id) >> ((V2_DQTREEDEPTH-(depth)-1)*8)) & 0xff) ++ #define GETENTRIES(buf) ((struct v2_disk_dqblk *)(((char *)buf)+sizeof(struct v2_disk_dqdbheader))) ++ +++#define QUOTABLOCK_BITS 10 +++#define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS) +++ +++static inline qsize_t v2_stoqb(qsize_t space) +++{ +++ return (space + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS; +++} +++ +++static inline qsize_t v2_qbtos(qsize_t blocks) +++{ +++ return blocks << QUOTABLOCK_BITS; +++} +++ ++ /* Check whether given file is really vfsv0 quotafile */ ++ static int v2_check_quota_file(struct super_block *sb, int type) ++ { ++@@ -104,8 +117,8 @@ static void disk2memdqb(struct mem_dqblk *m, struct v2_disk_dqblk *d) ++ m->dqb_isoftlimit = le32_to_cpu(d->dqb_isoftlimit); ++ m->dqb_curinodes = le32_to_cpu(d->dqb_curinodes); ++ m->dqb_itime = le64_to_cpu(d->dqb_itime); ++- m->dqb_bhardlimit = le32_to_cpu(d->dqb_bhardlimit); ++- m->dqb_bsoftlimit = le32_to_cpu(d->dqb_bsoftlimit); +++ m->dqb_bhardlimit = v2_qbtos(le32_to_cpu(d->dqb_bhardlimit)); +++ m->dqb_bsoftlimit = v2_qbtos(le32_to_cpu(d->dqb_bsoftlimit)); ++ m->dqb_curspace = le64_to_cpu(d->dqb_curspace); ++ m->dqb_btime = le64_to_cpu(d->dqb_btime); ++ } ++@@ -116,8 +129,8 @@ static void mem2diskdqb(struct v2_disk_dqblk *d, struct mem_dqblk *m, qid_t id) ++ d->dqb_isoftlimit = cpu_to_le32(m->dqb_isoftlimit); ++ d->dqb_curinodes = cpu_to_le32(m->dqb_curinodes); ++ d->dqb_itime = cpu_to_le64(m->dqb_itime); ++- d->dqb_bhardlimit = cpu_to_le32(m->dqb_bhardlimit); ++- d->dqb_bsoftlimit = cpu_to_le32(m->dqb_bsoftlimit); +++ d->dqb_bhardlimit = cpu_to_le32(v2_qbtos(m->dqb_bhardlimit)); +++ d->dqb_bsoftlimit = cpu_to_le32(v2_qbtos(m->dqb_bsoftlimit)); ++ d->dqb_curspace = cpu_to_le64(m->dqb_curspace); ++ d->dqb_btime = cpu_to_le64(m->dqb_btime); ++ d->dqb_id = cpu_to_le32(id); ++diff --git a/include/linux/quota.h b/include/linux/quota.h ++index eeae7a9..5167786 100644 ++--- a/include/linux/quota.h +++++ b/include/linux/quota.h ++@@ -41,15 +41,6 @@ ++ #define __DQUOT_VERSION__ "dquot_6.5.1" ++ #define __DQUOT_NUM_VERSION__ 6*10000+5*100+1 ++ ++-/* Size of blocks in which are counted size limits */ ++-#define QUOTABLOCK_BITS 10 ++-#define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS) ++- ++-/* Conversion routines from and to quota blocks */ ++-#define qb2kb(x) ((x) << (QUOTABLOCK_BITS-10)) ++-#define kb2qb(x) ((x) >> (QUOTABLOCK_BITS-10)) ++-#define toqb(x) (((x) + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS) ++- ++ #define MAXQUOTAS 2 ++ #define USRQUOTA 0 /* element used for user quotas */ ++ #define GRPQUOTA 1 /* element used for group quotas */ ++@@ -82,6 +73,11 @@ ++ #define Q_GETQUOTA 0x800007 /* get user quota structure */ ++ #define Q_SETQUOTA 0x800008 /* set user quota structure */ ++ +++/* Size of block in which space limits are passed through the quota +++ * interface */ +++#define QIF_DQBLKSIZE_BITS 10 +++#define QIF_DQBLKSIZE (1 << QIF_DQBLKSIZE_BITS) +++ ++ /* ++ * Quota structure used for communication with userspace via quotactl ++ * Following flags are used to specify which fields are valid ++@@ -189,12 +185,12 @@ extern spinlock_t dq_data_lock; ++ * Data for one user/group kept in memory ++ */ ++ struct mem_dqblk { ++- __u32 dqb_bhardlimit; /* absolute limit on disk blks alloc */ ++- __u32 dqb_bsoftlimit; /* preferred limit on disk blks */ +++ qsize_t dqb_bhardlimit; /* absolute limit on disk blks alloc */ +++ qsize_t dqb_bsoftlimit; /* preferred limit on disk blks */ ++ qsize_t dqb_curspace; /* current used space */ ++- __u32 dqb_ihardlimit; /* absolute limit on allocated inodes */ ++- __u32 dqb_isoftlimit; /* preferred inode limit */ ++- __u32 dqb_curinodes; /* current # allocated inodes */ +++ qsize_t dqb_ihardlimit; /* absolute limit on allocated inodes */ +++ qsize_t dqb_isoftlimit; /* preferred inode limit */ +++ qsize_t dqb_curinodes; /* current # allocated inodes */ ++ time_t dqb_btime; /* time limit for excessive disk use */ ++ time_t dqb_itime; /* time limit for excessive inode use */ ++ }; ++@@ -289,9 +285,9 @@ struct dquot_operations { ++ int (*initialize) (struct inode *, int); ++ int (*drop) (struct inode *); ++ int (*alloc_space) (struct inode *, qsize_t, int); ++- int (*alloc_inode) (const struct inode *, unsigned long); +++ int (*alloc_inode) (const struct inode *, qsize_t); ++ int (*free_space) (struct inode *, qsize_t); ++- int (*free_inode) (const struct inode *, unsigned long); +++ int (*free_inode) (const struct inode *, qsize_t); ++ int (*transfer) (struct inode *, struct iattr *); ++ int (*write_dquot) (struct dquot *); /* Ordinary dquot write */ ++ struct dquot *(*alloc_dquot)(struct super_block *, int); /* Allocate memory for new dquot (can be NULL if no special entries dquot are needed) */ ++diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h ++index ca6b9b5..9e7bc4b 100644 ++--- a/include/linux/quotaops.h +++++ b/include/linux/quotaops.h ++@@ -29,10 +29,10 @@ int dquot_initialize(struct inode *inode, int type); ++ int dquot_drop(struct inode *inode); ++ ++ int dquot_alloc_space(struct inode *inode, qsize_t number, int prealloc); ++-int dquot_alloc_inode(const struct inode *inode, unsigned long number); +++int dquot_alloc_inode(const struct inode *inode, qsize_t number); ++ ++ int dquot_free_space(struct inode *inode, qsize_t number); ++-int dquot_free_inode(const struct inode *inode, unsigned long number); +++int dquot_free_inode(const struct inode *inode, qsize_t number); ++ ++ int dquot_transfer(struct inode *inode, struct iattr *iattr); ++ int dquot_commit(struct dquot *dquot); ++-- ++1.5.2.4 ++ +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/export-2.6.26-vanilla.patch +@@ -0,0 +1,24 @@ ++Index: linux-source-2.6.26/fs/jbd2/journal.c ++=================================================================== ++--- linux-source-2.6.26.orig/fs/jbd2/journal.c 2009-10-09 13:49:43.000000000 +0200 +++++ linux-source-2.6.26/fs/jbd2/journal.c 2009-10-09 13:49:50.000000000 +0200 ++@@ -460,6 +460,7 @@ ++ spin_unlock(&journal->j_state_lock); ++ return ret; ++ } +++EXPORT_SYMBOL(jbd2_log_start_commit); ++ ++ /* ++ * Force and wait upon a commit if the calling process is not within ++Index: linux-source-2.6.26/security/security.c ++=================================================================== ++--- linux-source-2.6.26.orig/security/security.c 2009-10-09 13:49:43.000000000 +0200 +++++ linux-source-2.6.26/security/security.c 2009-10-09 13:49:50.000000000 +0200 ++@@ -68,6 +68,7 @@ ++ ++ return 0; ++ } +++EXPORT_SYMBOL(security_inode_unlink); ++ ++ /* Save user chosen LSM */ ++ static int __init choose_lsm(char *str) +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-support-64-bit-quota-format-2.6.27-vanilla.patch +@@ -0,0 +1,282 @@ ++From: Jan Kara ++ ++Implement conversion functions for new version (version 1) of quota format ++which supports 64-bit block and inode limits and 64-bit inode usage. The ++original implementation has been written by Andrew Perepechko. ++ ++Signed-off-by: Andrew Perepechko ++Signed-off-by: Jan Kara ++Signed-off-by: Andrew Morton ++--- ++ ++ fs/quota_v2.c | 140 ++++++++++++++++++++++++++++++++++++---------- ++ fs/quotaio_v2.h | 26 ++++++-- ++ 2 files changed, 132 insertions(+), 34 deletions(-) ++ ++Index: linux-2.6.27.36/fs/quota_v2.c ++=================================================================== ++--- linux-2.6.27.36.orig/fs/quota_v2.c 2009-10-09 17:00:48.000000000 +0200 +++++ linux-2.6.27.36/fs/quota_v2.c 2009-10-09 17:03:35.000000000 +0200 ++@@ -23,14 +23,24 @@ ++ ++ #define __QUOTA_V2_PARANOIA ++ ++-static void v2_mem2diskdqb(void *dp, struct dquot *dquot); ++-static void v2_disk2memdqb(struct dquot *dquot, void *dp); ++-static int v2_is_id(void *dp, struct dquot *dquot); ++- ++-static struct qtree_fmt_operations v2_qtree_ops = { ++- .mem2disk_dqblk = v2_mem2diskdqb, ++- .disk2mem_dqblk = v2_disk2memdqb, ++- .is_id = v2_is_id, +++static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot); +++static void v2r0_disk2memdqb(struct dquot *dquot, void *dp); +++static int v2r0_is_id(void *dp, struct dquot *dquot); +++ +++static struct qtree_fmt_operations v2r0_qtree_ops = { +++ .mem2disk_dqblk = v2r0_mem2diskdqb, +++ .disk2mem_dqblk = v2r0_disk2memdqb, +++ .is_id = v2r0_is_id, +++}; +++ +++static void v2r1_mem2diskdqb(void *dp, struct dquot *dquot); +++static void v2r1_disk2memdqb(struct dquot *dquot, void *dp); +++static int v2r1_is_id(void *dp, struct dquot *dquot); +++ +++static struct qtree_fmt_operations v2r1_qtree_ops = { +++ .mem2disk_dqblk = v2r1_mem2diskdqb, +++ .disk2mem_dqblk = v2r1_disk2memdqb, +++ .is_id = v2r1_is_id, ++ }; ++ ++ #define QUOTABLOCK_BITS 10 ++@@ -46,8 +56,7 @@ ++ return blocks << QUOTABLOCK_BITS; ++ } ++ ++-/* Check whether given file is really vfsv0 quotafile */ ++-static int v2_check_quota_file(struct super_block *sb, int type) +++static int v2_check_quota_file_header(struct super_block *sb, int type) ++ { ++ struct v2_disk_dqheader dqhead; ++ ssize_t size; ++@@ -58,12 +67,20 @@ ++ if (size != sizeof(struct v2_disk_dqheader)) { ++ printk("quota_v2: failed read expected=%zd got=%zd\n", ++ sizeof(struct v2_disk_dqheader), size); ++- return 0; +++ return -EIO; ++ } ++- if (le32_to_cpu(dqhead.dqh_magic) != quota_magics[type] || ++- le32_to_cpu(dqhead.dqh_version) != quota_versions[type]) ++- return 0; ++- return 1; +++ if (le32_to_cpu(dqhead.dqh_magic) != quota_magics[type]) +++ return -ENOENT; +++ if (le32_to_cpu(dqhead.dqh_version) > quota_versions[type]) +++ return -EOPNOTSUPP; +++ return le32_to_cpu(dqhead.dqh_version); +++} +++ +++ +++/* Check whether given file is really vfsv0 quotafile */ +++static int v2_check_quota_file(struct super_block *sb, int type) +++{ +++ return v2_check_quota_file_header(sb, type) >= 0; ++ } ++ ++ /* Read information header from quota file */ ++@@ -72,7 +89,13 @@ ++ struct v2_disk_dqinfo dinfo; ++ struct mem_dqinfo *info = sb_dqinfo(sb, type); ++ ssize_t size; +++ int version = v2_check_quota_file_header(sb, type); ++ +++ if (version < 0) { +++ printk(KERN_WARNING "Cannot identify quota file version on " +++ "device %s: %d\n", sb->s_id, version); +++ return -1; +++ } ++ size = sb->s_op->quota_read(sb, type, (char *)&dinfo, ++ sizeof(struct v2_disk_dqinfo), V2_DQINFOOFF); ++ if (size != sizeof(struct v2_disk_dqinfo)) { ++@@ -81,8 +104,14 @@ ++ return -1; ++ } ++ /* limits are stored as unsigned 32-bit data */ ++- info->dqi_maxblimit = 0xffffffff; ++- info->dqi_maxilimit = 0xffffffff; +++ if (version == 0) { +++ /* limits are stored as unsigned 32-bit data */ +++ info->dqi_maxblimit = 0xffffffff; +++ info->dqi_maxilimit = 0xffffffff; +++ } else { +++ info->dqi_maxblimit = 0x7fffffffffffffffULL; +++ info->dqi_maxilimit = 0x7fffffffffffffffULL; +++ } ++ info->dqi_bgrace = le32_to_cpu(dinfo.dqi_bgrace); ++ info->dqi_igrace = le32_to_cpu(dinfo.dqi_igrace); ++ info->dqi_flags = le32_to_cpu(dinfo.dqi_flags); ++@@ -94,8 +123,13 @@ ++ info->u.v2_i.i.dqi_blocksize_bits = V2_DQBLKSIZE_BITS; ++ info->u.v2_i.i.dqi_usable_bs = 1 << V2_DQBLKSIZE_BITS; ++ info->u.v2_i.i.dqi_qtree_depth = qtree_depth(&info->u.v2_i.i); ++- info->u.v2_i.i.dqi_entry_size = sizeof(struct v2_disk_dqblk); ++- info->u.v2_i.i.dqi_ops = &v2_qtree_ops; +++ if (version == 0) { +++ qinfo->dqi_entry_size = sizeof(struct v2r0_disk_dqblk); +++ qinfo->dqi_ops = &v2r0_qtree_ops; +++ } else { +++ qinfo->dqi_entry_size = sizeof(struct v2r1_disk_dqblk); +++ qinfo->dqi_ops = &v2r1_qtree_ops; +++ } ++ return 0; ++ } ++ ++@@ -125,9 +159,9 @@ ++ return 0; ++ } ++ ++-static void v2_disk2memdqb(struct dquot *dquot, void *dp) +++static void v2r0_disk2memdqb(struct dquot *dquot, void *dp) ++ { ++- struct v2_disk_dqblk *d = dp, empty; +++ struct v2r0_disk_dqblk *d = dp, empty; ++ struct mem_dqblk *m = &dquot->dq_dqb; ++ ++ m->dqb_ihardlimit = le32_to_cpu(d->dqb_ihardlimit); ++@@ -139,15 +173,15 @@ ++ m->dqb_curspace = le64_to_cpu(d->dqb_curspace); ++ m->dqb_btime = le64_to_cpu(d->dqb_btime); ++ /* We need to escape back all-zero structure */ ++- memset(&empty, 0, sizeof(struct v2_disk_dqblk)); +++ memset(&empty, 0, sizeof(struct v2r0_disk_dqblk)); ++ empty.dqb_itime = cpu_to_le64(1); ++- if (!memcmp(&empty, dp, sizeof(struct v2_disk_dqblk))) +++ if (!memcmp(&empty, dp, sizeof(struct v2r0_disk_dqblk))) ++ m->dqb_itime = 0; ++ } ++ ++-static void v2_mem2diskdqb(void *dp, struct dquot *dquot) +++static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot) ++ { ++- struct v2_disk_dqblk *d = dp; +++ struct v2r0_disk_dqblk *d = dp; ++ struct mem_dqblk *m = &dquot->dq_dqb; ++ struct qtree_mem_dqinfo *info = ++ &sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i; ++@@ -165,9 +199,60 @@ ++ d->dqb_itime = cpu_to_le64(1); ++ } ++ ++-static int v2_is_id(void *dp, struct dquot *dquot) +++static int v2r0_is_id(void *dp, struct dquot *dquot) +++{ +++ struct v2r0_disk_dqblk *d = dp; +++ struct qtree_mem_dqinfo *info = +++ sb_dqinfo(dquot->dq_sb, dquot->dq_type)->dqi_priv; +++ +++ if (qtree_entry_unused(info, dp)) +++ return 0; +++ return le32_to_cpu(d->dqb_id) == dquot->dq_id; +++} +++ +++static void v2r1_disk2memdqb(struct dquot *dquot, void *dp) +++{ +++ struct v2r1_disk_dqblk *d = dp, empty; +++ struct mem_dqblk *m = &dquot->dq_dqb; +++ +++ m->dqb_ihardlimit = le64_to_cpu(d->dqb_ihardlimit); +++ m->dqb_isoftlimit = le64_to_cpu(d->dqb_isoftlimit); +++ m->dqb_curinodes = le64_to_cpu(d->dqb_curinodes); +++ m->dqb_itime = le64_to_cpu(d->dqb_itime); +++ m->dqb_bhardlimit = v2_qbtos(le64_to_cpu(d->dqb_bhardlimit)); +++ m->dqb_bsoftlimit = v2_qbtos(le64_to_cpu(d->dqb_bsoftlimit)); +++ m->dqb_curspace = le64_to_cpu(d->dqb_curspace); +++ m->dqb_btime = le64_to_cpu(d->dqb_btime); +++ /* We need to escape back all-zero structure */ +++ memset(&empty, 0, sizeof(struct v2r1_disk_dqblk)); +++ empty.dqb_itime = cpu_to_le64(1); +++ if (!memcmp(&empty, dp, sizeof(struct v2r1_disk_dqblk))) +++ m->dqb_itime = 0; +++} +++ +++static void v2r1_mem2diskdqb(void *dp, struct dquot *dquot) +++{ +++ struct v2r1_disk_dqblk *d = dp; +++ struct mem_dqblk *m = &dquot->dq_dqb; +++ struct qtree_mem_dqinfo *info = +++ sb_dqinfo(dquot->dq_sb, dquot->dq_type)->dqi_priv; +++ +++ d->dqb_ihardlimit = cpu_to_le64(m->dqb_ihardlimit); +++ d->dqb_isoftlimit = cpu_to_le64(m->dqb_isoftlimit); +++ d->dqb_curinodes = cpu_to_le64(m->dqb_curinodes); +++ d->dqb_itime = cpu_to_le64(m->dqb_itime); +++ d->dqb_bhardlimit = cpu_to_le64(v2_stoqb(m->dqb_bhardlimit)); +++ d->dqb_bsoftlimit = cpu_to_le64(v2_stoqb(m->dqb_bsoftlimit)); +++ d->dqb_curspace = cpu_to_le64(m->dqb_curspace); +++ d->dqb_btime = cpu_to_le64(m->dqb_btime); +++ d->dqb_id = cpu_to_le32(dquot->dq_id); +++ if (qtree_entry_unused(info, dp)) +++ d->dqb_itime = cpu_to_le64(1); +++} +++ +++static int v2r1_is_id(void *dp, struct dquot *dquot) ++ { ++- struct v2_disk_dqblk *d = dp; +++ struct v2r1_disk_dqblk *d = dp; ++ struct qtree_mem_dqinfo *info = ++ &sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i; ++ ++Index: linux-2.6.27.36/include/linux/quotaio_v2.h ++=================================================================== ++--- linux-2.6.27.36.orig/include/linux/quotaio_v2.h 2009-10-09 17:00:48.000000000 +0200 +++++ linux-2.6.27.36/include/linux/quotaio_v2.h 2009-10-09 17:00:56.000000000 +0200 ++@@ -17,8 +17,8 @@ ++ } ++ ++ #define V2_INITQVERSIONS {\ ++- 0, /* USRQUOTA */\ ++- 0 /* GRPQUOTA */\ +++ 1, /* USRQUOTA */\ +++ 1 /* GRPQUOTA */\ ++ } ++ ++ /* First generic header */ ++@@ -28,11 +28,11 @@ ++ }; ++ ++ /* ++- * The following structure defines the format of the disk quota file ++- * (as it appears on disk) - the file is a radix tree whose leaves point ++- * to blocks of these structures. +++ * The following structure defines the format of the disk quota file in version +++ * 0 - the file is a radix tree whose leaves point to blocks of these +++ * structures. ++ */ ++-struct v2_disk_dqblk { +++struct v2r0_disk_dqblk { ++ __le32 dqb_id; /* id this quota applies to */ ++ __le32 dqb_ihardlimit; /* absolute limit on allocated inodes */ ++ __le32 dqb_isoftlimit; /* preferred inode limit */ ++@@ -44,6 +44,20 @@ ++ __le64 dqb_itime; /* time limit for excessive inode use */ ++ }; ++ +++/* The same structure in quota file version 1 */ +++struct v2r1_disk_dqblk { +++ __le32 dqb_id; /* id this quota applies to */ +++ __le32 dqb_padding; /* padding field */ +++ __le64 dqb_ihardlimit; /* absolute limit on allocated inodes */ +++ __le64 dqb_isoftlimit; /* preferred inode limit */ +++ __le64 dqb_curinodes; /* current # allocated inodes */ +++ __le64 dqb_bhardlimit; /* absolute limit on disk space */ +++ __le64 dqb_bsoftlimit; /* preferred limit on disk space */ +++ __le64 dqb_curspace; /* current space occupied (in bytes) */ +++ __le64 dqb_btime; /* time limit for excessive disk use */ +++ __le64 dqb_itime; /* time limit for excessive inode use */ +++}; +++ ++ /* Header with type and version specific information */ ++ struct v2_disk_dqinfo { ++ __le32 dqi_bgrace; /* Time before block soft limit becomes hard limit */ +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/sd_iostats-2.6.26-vanilla.patch +@@ -0,0 +1,579 @@ ++Index: linux-source-2.6.26/drivers/scsi/Kconfig ++=================================================================== ++--- linux-source-2.6.26.orig/drivers/scsi/Kconfig 2009-10-09 13:33:25.000000000 +0200 +++++ linux-source-2.6.26/drivers/scsi/Kconfig 2009-10-09 13:39:06.000000000 +0200 ++@@ -81,6 +81,14 @@ ++ In this case, do not compile the driver for your SCSI host adapter ++ (below) as a module either. ++ +++config SD_IOSTATS +++ bool "Enable SCSI disk I/O stats" +++ depends on BLK_DEV_SD +++ default y +++ ---help--- +++ This enables SCSI disk I/O stats collection. You must also enable +++ /proc file system support if you want this feature. +++ ++ config CHR_DEV_ST ++ tristate "SCSI tape support" ++ depends on SCSI ++Index: linux-source-2.6.26/drivers/scsi/scsi_proc.c ++=================================================================== ++--- linux-source-2.6.26.orig/drivers/scsi/scsi_proc.c 2009-10-09 13:33:25.000000000 +0200 +++++ linux-source-2.6.26/drivers/scsi/scsi_proc.c 2009-10-09 13:39:06.000000000 +0200 ++@@ -40,7 +40,8 @@ ++ /* 4K page size, but our output routines, use some slack for overruns */ ++ #define PROC_BLOCK_SIZE (3*1024) ++ ++-static struct proc_dir_entry *proc_scsi; +++struct proc_dir_entry *proc_scsi; +++EXPORT_SYMBOL(proc_scsi); ++ ++ /* Protect sht->present and sht->proc_dir */ ++ static DEFINE_MUTEX(global_host_template_mutex); ++Index: linux-source-2.6.26/drivers/scsi/sd.c ++=================================================================== ++--- linux-source-2.6.26.orig/drivers/scsi/sd.c 2009-10-09 13:33:25.000000000 +0200 +++++ linux-source-2.6.26/drivers/scsi/sd.c 2009-10-09 13:39:50.000000000 +0200 ++@@ -107,6 +107,24 @@ ++ * object after last put) */ ++ static DEFINE_MUTEX(sd_ref_mutex); ++ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++# include +++# include +++struct proc_dir_entry *sd_iostats_procdir = NULL; +++char sd_iostats_procdir_name[] = "sd_iostats"; +++static struct file_operations sd_iostats_proc_fops; +++ +++extern void sd_iostats_init(void); +++extern void sd_iostats_fini(void); +++void sd_iostats_start_req(struct scsi_cmnd *SCpnt); +++void sd_iostats_finish_req(struct scsi_cmnd *SCpnt); +++#else +++static inline void sd_iostats_init(void) {} +++static inline void sd_iostats_fini(void) {} +++static inline void sd_iostats_start_req(struct scsi_cmnd *SCpnt) {} +++static inline void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) {} +++#endif +++ ++ static const char *sd_cache_types[] = { ++ "write through", "none", "write back", ++ "write back, no read (daft)" ++@@ -578,6 +596,8 @@ ++ ++ sdev = sdkp->device; ++ +++ sd_iostats_start_req(SCpnt); +++ ++ /* ++ * If the device is in error recovery, wait until it is done. ++ * If the device is offline, then disallow any access to it. ++@@ -1023,6 +1043,7 @@ ++ break; ++ } ++ out: +++ sd_iostats_finish_req(SCpnt); ++ return good_bytes; ++ } ++ ++@@ -1712,6 +1733,36 @@ ++ if (sdp->removable) ++ gd->flags |= GENHD_FL_REMOVABLE; ++ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++ sdkp->stats = kzalloc(sizeof(iostat_stats_t), GFP_KERNEL); +++ if (!sdkp->stats) { +++ printk(KERN_WARNING "cannot allocate iostat structure for" +++ "%s\n", gd->disk_name); +++ } else { +++ do_gettimeofday(&sdkp->stats->iostat_timeval); +++ sdkp->stats->iostat_queue_stamp = jiffies; +++ spin_lock_init(&sdkp->stats->iostat_lock); +++ if (sd_iostats_procdir) { +++ struct proc_dir_entry *pde; +++ pde = create_proc_entry(gd->disk_name, S_IRUGO | S_IWUSR, +++ sd_iostats_procdir); +++ if (!pde) { +++ printk(KERN_WARNING "Can't create /proc/scsi/" +++ "%s/%s\n", +++ sd_iostats_procdir_name, +++ gd->disk_name); +++ kfree(sdkp->stats); +++ sdkp->stats = NULL; +++ } else { +++ pde->proc_fops = &sd_iostats_proc_fops; +++ pde->data = gd; +++ } +++ } else { +++ kfree(sdkp->stats); +++ sdkp->stats = NULL; +++ } +++ } +++#endif ++ dev_set_drvdata(dev, sdkp); ++ add_disk(gd); ++ ++@@ -1755,6 +1806,366 @@ ++ return 0; ++ } ++ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++static int +++sd_iostats_seq_show(struct seq_file *seq, void *v) +++{ +++ struct timeval now; +++ struct gendisk *disk = seq->private; +++ iostat_stats_t *stats; +++ unsigned long long read_len; +++ unsigned long long read_len_tot; +++ unsigned long read_num; +++ unsigned long read_num_tot; +++ unsigned long long write_len; +++ unsigned long long write_len_tot; +++ unsigned long write_num; +++ unsigned long write_num_tot; +++ int i; +++ int maxi; +++ +++ stats = scsi_disk(disk)->stats; +++ if (stats == NULL) { +++ printk(KERN_ERR "sd_iostats_seq_show: NULL stats entry\n"); +++ BUG(); +++ } +++ +++ do_gettimeofday(&now); +++ now.tv_sec -= stats->iostat_timeval.tv_sec; +++ now.tv_usec -= stats->iostat_timeval.tv_usec; +++ if (now.tv_usec < 0) { +++ now.tv_usec += 1000000; +++ now.tv_sec--; +++ } +++ +++ /* this sampling races with updates */ +++ seq_printf(seq, "index: %lu snapshot_time: %lu.%06lu\n", +++ (unsigned long) scsi_disk(disk)->index, +++ now.tv_sec, now.tv_usec); +++ +++ for (i = IOSTAT_NCOUNTERS - 1; i > 0; i--) +++ if (stats->iostat_read_histogram[i].iostat_count != 0 || +++ stats->iostat_write_histogram[i].iostat_count != 0) +++ break; +++ maxi = i; +++ +++ seq_printf(seq, "%8s %8s %12s %8s %12s\n", "size", +++ "reads", "total", "writes", "total"); +++ +++ read_len_tot = write_len_tot = 0; +++ read_num_tot = write_num_tot = 0; +++ for (i = 0; i <= maxi; i++) { +++ read_len = stats->iostat_read_histogram[i].iostat_size; +++ read_len_tot += read_len; +++ read_num = stats->iostat_read_histogram[i].iostat_count; +++ read_num_tot += read_num; +++ +++ write_len = stats->iostat_write_histogram[i].iostat_size; +++ write_len_tot += write_len; +++ write_num = stats->iostat_write_histogram[i].iostat_count; +++ write_num_tot += write_num; +++ +++ seq_printf (seq, "%8d %8lu %12llu %8lu %12llu\n", +++ 512<iostat_queue_ticks[i]; +++ if (ticks == 0) +++ continue; +++ percent = stats->iostat_queue_ticks[i] * 100; +++ do_div(percent, stats->iostat_queue_ticks_sum); +++ seq_printf(seq, "%8d %8llu %8llu\n", i, ticks, percent); +++ } +++ +++ if (stats->iostat_reqs != 0) { +++ unsigned long long aveseek = 0, percent = 0; +++ +++ if (stats->iostat_seeks) { +++ aveseek = stats->iostat_seek_sectors; +++ do_div(aveseek, stats->iostat_seeks); +++ percent = stats->iostat_seeks * 100; +++ do_div(percent, stats->iostat_reqs); +++ } +++ +++ seq_printf(seq, "\n%llu sectors in %llu reqs: %llu seek(s) over " +++ "%llu sectors in ave, %llu%% of all reqs\n", +++ stats->iostat_sectors, stats->iostat_reqs, +++ stats->iostat_seeks, aveseek, percent); +++ } +++ +++ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "process time", "reads", +++ "%%", "writes", "%%"); +++ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { +++ unsigned long read_percent = 0, write_percent = 0; +++ if (stats->iostat_wtime[i] == 0 && +++ stats->iostat_rtime[i] == 0) +++ continue; +++ if (stats->iostat_read_reqs) +++ read_percent = stats->iostat_rtime[i] * 100 / +++ stats->iostat_read_reqs; +++ if (stats->iostat_write_reqs) +++ write_percent = stats->iostat_wtime[i] * 100 / +++ stats->iostat_write_reqs; +++ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", +++ jiffies_to_msecs(((1UL << i) >> 1) << 1), +++ stats->iostat_rtime[i], read_percent, +++ stats->iostat_wtime[i], write_percent); +++ } +++ +++ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "time in queue", "reads", +++ "%%", "writes", "%%"); +++ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { +++ unsigned long read_percent = 0, write_percent = 0; +++ if (stats->iostat_wtime_in_queue[i] == 0 && +++ stats->iostat_rtime_in_queue[i] == 0) +++ continue; +++ if (stats->iostat_read_reqs) +++ read_percent = stats->iostat_rtime_in_queue[i] * 100 / +++ stats->iostat_read_reqs; +++ if (stats->iostat_write_reqs) +++ write_percent = stats->iostat_wtime_in_queue[i] * 100 / +++ stats->iostat_write_reqs; +++ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", +++ jiffies_to_msecs(((1UL << i) >> 1) << 1), +++ stats->iostat_rtime_in_queue[i], +++ read_percent, +++ stats->iostat_wtime_in_queue[i], +++ write_percent); +++ } +++ +++ return 0; +++} +++ +++static void * +++sd_iostats_seq_start(struct seq_file *p, loff_t *pos) +++{ +++ return (*pos == 0) ? (void *)1 : NULL; +++} +++ +++static void * +++sd_iostats_seq_next(struct seq_file *p, void *v, loff_t *pos) +++{ +++ ++*pos; +++ return NULL; +++} +++ +++static void +++sd_iostats_seq_stop(struct seq_file *p, void *v) +++{ +++} +++ +++static struct seq_operations sd_iostats_seqops = { +++ .start = sd_iostats_seq_start, +++ .stop = sd_iostats_seq_stop, +++ .next = sd_iostats_seq_next, +++ .show = sd_iostats_seq_show, +++}; +++ +++static int +++sd_iostats_seq_open (struct inode *inode, struct file *file) +++{ +++ int rc; +++ +++ rc = seq_open(file, &sd_iostats_seqops); +++ if (rc != 0) +++ return rc; +++ +++ ((struct seq_file *)file->private_data)->private = PDE(inode)->data; +++ return 0; +++} +++ +++static ssize_t +++sd_iostats_seq_write(struct file *file, const char *buffer, +++ size_t len, loff_t *off) +++{ +++ struct seq_file *seq = file->private_data; +++ struct gendisk *disk = seq->private; +++ iostat_stats_t *stats = scsi_disk(disk)->stats; +++ unsigned long flags; +++ unsigned long qdepth; +++ +++ +++ spin_lock_irqsave (&stats->iostat_lock, flags); +++ qdepth = stats->iostat_queue_depth; +++ memset (stats, 0, offsetof(iostat_stats_t, iostat_lock)); +++ do_gettimeofday(&stats->iostat_timeval); +++ stats->iostat_queue_stamp = jiffies; +++ stats->iostat_queue_depth = qdepth; +++ spin_unlock_irqrestore (&stats->iostat_lock, flags); +++ +++ return len; +++} +++ +++static struct file_operations sd_iostats_proc_fops = { +++ .owner = THIS_MODULE, +++ .open = sd_iostats_seq_open, +++ .read = seq_read, +++ .write = sd_iostats_seq_write, +++ .llseek = seq_lseek, +++ .release = seq_release, +++}; +++ +++extern struct proc_dir_entry *proc_scsi; +++ +++void +++sd_iostats_init(void) +++{ +++ if (proc_scsi == NULL) { +++ printk(KERN_WARNING "No access to sd iostats: " +++ "proc_scsi is NULL\n"); +++ return; +++ } +++ +++ sd_iostats_procdir = create_proc_entry(sd_iostats_procdir_name, +++ S_IFDIR | S_IRUGO | S_IXUGO, +++ proc_scsi); +++ if (sd_iostats_procdir == NULL) { +++ printk(KERN_WARNING "No access to sd iostats: " +++ "can't create /proc/scsi/%s\n", sd_iostats_procdir_name); +++ return; +++ } +++} +++ +++void sd_iostats_fini(void) +++{ +++ if (proc_scsi != NULL && sd_iostats_procdir != NULL) +++ remove_proc_entry(sd_iostats_procdir_name, proc_scsi); +++ +++ sd_iostats_procdir = NULL; +++} +++ +++void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) +++{ +++ struct request *rq = SCpnt->request; +++ iostat_stats_t *stats; +++ unsigned long *tcounter; +++ int tbucket; +++ int tmp; +++ unsigned long irqflags; +++ unsigned long i; +++ +++ stats = scsi_disk(rq->rq_disk)->stats; +++ if (stats == NULL) +++ return; +++ +++ tmp = jiffies - rq->start_time; +++ for (tbucket = 0; tmp > 1; tbucket++) +++ tmp >>= 1; +++ if (tbucket >= IOSTAT_NCOUNTERS) +++ tbucket = IOSTAT_NCOUNTERS - 1; +++ //printk("%u ticks in D to %u\n", jiffies - rq->start_time, tbucket); +++ +++ tcounter = rq_data_dir(rq) == WRITE ? +++ &stats->iostat_wtime[tbucket] : &stats->iostat_rtime[tbucket]; +++ +++ spin_lock_irqsave(&stats->iostat_lock, irqflags); +++ +++ /* update delay stats */ +++ (*tcounter)++; +++ +++ /* update queue depth stats */ +++ i = stats->iostat_queue_depth; +++ if (i >= IOSTAT_NCOUNTERS) +++ i = IOSTAT_NCOUNTERS - 1; +++ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; +++ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; +++ BUG_ON(stats->iostat_queue_depth == 0); +++ stats->iostat_queue_depth--; +++ +++ /* update seek stats. XXX: not sure about nr_sectors */ +++ stats->iostat_sectors += rq->nr_sectors; +++ stats->iostat_reqs++; +++ if (rq->sector != stats->iostat_next_sector) { +++ stats->iostat_seek_sectors += +++ rq->sector > stats->iostat_next_sector ? +++ rq->sector - stats->iostat_next_sector : +++ stats->iostat_next_sector - rq->sector; +++ stats->iostat_seeks++; +++ } +++ stats->iostat_next_sector = rq->sector + rq->nr_sectors; +++ +++ stats->iostat_queue_stamp = jiffies; +++ +++ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); +++} +++ +++void sd_iostats_start_req(struct scsi_cmnd *SCpnt) +++{ +++ struct request *rq = SCpnt->request; +++ iostat_stats_t *stats; +++ iostat_counter_t *counter; +++ int bucket; +++ int tbucket; +++ int tmp; +++ unsigned long irqflags; +++ unsigned long i; +++ int nsect; +++ +++ stats = scsi_disk(rq->rq_disk)->stats; +++ if (stats == NULL) +++ return; +++ +++ nsect = scsi_bufflen(SCpnt) >> 9; +++ for (bucket = 0, tmp = nsect; tmp > 1; bucket++) +++ tmp >>= 1; +++ +++ if (bucket >= IOSTAT_NCOUNTERS) { +++ printk (KERN_ERR "sd_iostats_bump: nsect %d too big\n", nsect); +++ BUG(); +++ } +++ +++ counter = rq_data_dir(rq) == WRITE ? +++ &stats->iostat_write_histogram[bucket] : +++ &stats->iostat_read_histogram[bucket]; +++ +++ tmp = jiffies - rq->start_time; +++ for (tbucket = 0; tmp > 1; tbucket++) +++ tmp >>= 1; +++ if (tbucket >= IOSTAT_NCOUNTERS) +++ tbucket = IOSTAT_NCOUNTERS - 1; +++ //printk("%u ticks in Q to %u\n", jiffies - rq->start_time, tbucket); +++ +++ /* an ugly hack to know exact processing time. the right +++ * solution is to add one more field to struct request +++ * hopefully it will break nothing ... */ +++ rq->start_time = jiffies; +++ +++ spin_lock_irqsave(&stats->iostat_lock, irqflags); +++ +++ /* update queue depth stats */ +++ i = stats->iostat_queue_depth; +++ if (i >= IOSTAT_NCOUNTERS) +++ i = IOSTAT_NCOUNTERS - 1; +++ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; +++ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; +++ stats->iostat_queue_depth++; +++ +++ /* update delay stats */ +++ if (rq_data_dir(rq) == WRITE) { +++ stats->iostat_wtime_in_queue[tbucket]++; +++ stats->iostat_write_reqs++; +++ } else { +++ stats->iostat_rtime_in_queue[tbucket]++; +++ stats->iostat_read_reqs++; +++ } +++ +++ /* update size stats */ +++ counter->iostat_size += nsect; +++ counter->iostat_count++; +++ +++ stats->iostat_queue_stamp = jiffies; +++ +++ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); +++} +++#endif +++ ++ /** ++ * scsi_disk_release - Called to free the scsi_disk structure ++ * @dev: pointer to embedded class device ++@@ -1773,10 +2184,16 @@ ++ idr_remove(&sd_index_idr, sdkp->index); ++ spin_unlock(&sd_index_lock); ++ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++ if (sdkp->stats) { +++ remove_proc_entry(disk->disk_name, sd_iostats_procdir); +++ kfree(sdkp->stats); +++ sdkp->stats = NULL; +++ } +++#endif ++ disk->private_data = NULL; ++ put_disk(disk); ++ put_device(&sdkp->device->sdev_gendev); ++- ++ kfree(sdkp); ++ } ++ ++@@ -1890,6 +2307,8 @@ ++ if (!majors) ++ return -ENODEV; ++ +++ sd_iostats_init(); +++ ++ err = class_register(&sd_disk_class); ++ if (err) ++ goto err_out; ++@@ -1905,6 +2324,7 @@ ++ err_out: ++ for (i = 0; i < SD_MAJORS; i++) ++ unregister_blkdev(sd_major(i), "sd"); +++ sd_iostats_fini(); ++ return err; ++ } ++ ++Index: linux-source-2.6.26/include/scsi/sd.h ++=================================================================== ++--- linux-source-2.6.26.orig/include/scsi/sd.h 2009-10-09 13:33:25.000000000 +0200 +++++ linux-source-2.6.26/include/scsi/sd.h 2009-10-09 13:39:06.000000000 +0200 ++@@ -31,6 +31,46 @@ ++ */ ++ #define SD_BUF_SIZE 512 ++ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++typedef struct { +++ unsigned long long iostat_size; +++ unsigned long long iostat_count; +++} iostat_counter_t; +++ +++#define IOSTAT_NCOUNTERS 16 +++typedef struct { +++ iostat_counter_t iostat_read_histogram[IOSTAT_NCOUNTERS]; +++ iostat_counter_t iostat_write_histogram[IOSTAT_NCOUNTERS]; +++ struct timeval iostat_timeval; +++ +++ /* queue depth: how well the pipe is filled up */ +++ unsigned long long iostat_queue_ticks[IOSTAT_NCOUNTERS]; +++ unsigned long long iostat_queue_ticks_sum; +++ unsigned long iostat_queue_depth; +++ unsigned long iostat_queue_stamp; +++ +++ /* seeks: how linear the traffic is */ +++ unsigned long long iostat_next_sector; +++ unsigned long long iostat_seek_sectors; +++ unsigned long long iostat_seeks; +++ unsigned long long iostat_sectors; +++ unsigned long long iostat_reqs; +++ unsigned long iostat_read_reqs; +++ unsigned long iostat_write_reqs; +++ +++ /* process time: how long it takes to process requests */ +++ unsigned long iostat_rtime[IOSTAT_NCOUNTERS]; +++ unsigned long iostat_wtime[IOSTAT_NCOUNTERS]; +++ +++ /* queue time: how long process spent in elevator's queue */ +++ unsigned long iostat_rtime_in_queue[IOSTAT_NCOUNTERS]; +++ unsigned long iostat_wtime_in_queue[IOSTAT_NCOUNTERS]; +++ +++ /* must be the last field, as it's used to know size to be memset'ed */ +++ spinlock_t iostat_lock; +++} ____cacheline_aligned_in_smp iostat_stats_t; +++#endif +++ ++ struct scsi_disk { ++ struct scsi_driver *driver; /* always &sd_template */ ++ struct scsi_device *device; ++@@ -45,6 +85,9 @@ ++ unsigned WCE : 1; /* state of disk WCE bit */ ++ unsigned RCD : 1; /* state of disk RCD bit, unused */ ++ unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++ iostat_stats_t *stats; /* scsi disk statistics */ +++#endif ++ }; ++ #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,dev) ++ +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-Split-off-quota-tree-handling-into-a-separate.patch +@@ -0,0 +1,1593 @@ ++From: Jan Kara ++References: fate#302681 ++Subject: [PATCH 12/28] quota: Split off quota tree handling into a separate file ++Patch-mainline: 2.6.29? ++ ++There is going to be a new version of quota format having 64-bit ++quota limits and a new quota format for OCFS2. They are both ++going to use the same tree structure as VFSv0 quota format. So ++split out tree handling into a separate file and make size of ++leaf blocks, amount of space usable in each block (needed for ++checksumming) and structures contained in them configurable ++so that the code can be shared. ++ ++Signed-off-by: Jan Kara ++--- ++ fs/Kconfig | 5 ++ fs/Makefile | 1 ++ fs/quota_tree.c | 645 ++++++++++++++++++++++++++++++++++++++++++++ ++ fs/quota_tree.h | 25 + ++ fs/quota_v2.c | 598 +++------------------------------------- ++ fs/quotaio_v2.h | 33 -- ++ include/linux/dqblk_qtree.h | 56 +++ ++ include/linux/dqblk_v2.h | 19 - ++ 8 files changed, 800 insertions(+), 582 deletions(-) ++ create mode 100644 fs/quota_tree.c ++ create mode 100644 fs/quota_tree.h ++ create mode 100644 include/linux/dqblk_qtree.h ++ ++Index: linux-2.6.27.36/fs/Kconfig ++=================================================================== ++--- linux-2.6.27.36.orig/fs/Kconfig 2009-10-05 17:19:01.000000000 +0200 +++++ linux-2.6.27.36/fs/Kconfig 2009-10-08 16:32:48.000000000 +0200 ++@@ -569,6 +569,10 @@ ++ Note that this behavior is currently deprecated and may go away in ++ future. Please use notification via netlink socket instead. ++ +++# Generic support for tree structured quota files. Seleted when needed. +++config QUOTA_TREE +++ tristate +++ ++ config QFMT_V1 ++ tristate "Old quota format support" ++ depends on QUOTA ++@@ -580,6 +584,7 @@ ++ config QFMT_V2 ++ tristate "Quota format v2 support" ++ depends on QUOTA +++ select QUOTA_TREE ++ help ++ This quota format allows using quotas with 32-bit UIDs/GIDs. If you ++ need this functionality say Y here. ++Index: linux-2.6.27.36/fs/Makefile ++=================================================================== ++--- linux-2.6.27.36.orig/fs/Makefile 2009-10-05 17:19:01.000000000 +0200 +++++ linux-2.6.27.36/fs/Makefile 2009-10-08 16:32:48.000000000 +0200 ++@@ -53,6 +53,7 @@ ++ obj-$(CONFIG_QUOTA) += dquot.o ++ obj-$(CONFIG_QFMT_V1) += quota_v1.o ++ obj-$(CONFIG_QFMT_V2) += quota_v2.o +++obj-$(CONFIG_QUOTA_TREE) += quota_tree.o ++ obj-$(CONFIG_QUOTACTL) += quota.o ++ ++ obj-$(CONFIG_DNOTIFY) += dnotify.o ++Index: linux-2.6.27.36/include/linux/quotaio_v2.h ++=================================================================== ++--- linux-2.6.27.36.orig/include/linux/quotaio_v2.h 2009-10-05 17:19:01.000000000 +0200 +++++ linux-2.6.27.36/include/linux/quotaio_v2.h 2009-10-08 16:32:48.000000000 +0200 ++@@ -21,6 +21,12 @@ ++ 0 /* GRPQUOTA */\ ++ } ++ +++/* First generic header */ +++struct v2_disk_dqheader { +++ __le32 dqh_magic; /* Magic number identifying file */ +++ __le32 dqh_version; /* File version */ +++}; +++ ++ /* ++ * The following structure defines the format of the disk quota file ++ * (as it appears on disk) - the file is a radix tree whose leaves point ++@@ -38,15 +44,6 @@ ++ __le64 dqb_itime; /* time limit for excessive inode use */ ++ }; ++ ++-/* ++- * Here are header structures as written on disk and their in-memory copies ++- */ ++-/* First generic header */ ++-struct v2_disk_dqheader { ++- __le32 dqh_magic; /* Magic number identifying file */ ++- __le32 dqh_version; /* File version */ ++-}; ++- ++ /* Header with type and version specific information */ ++ struct v2_disk_dqinfo { ++ __le32 dqi_bgrace; /* Time before block soft limit becomes hard limit */ ++@@ -57,23 +54,7 @@ ++ __le32 dqi_free_entry; /* Number of block with at least one free entry */ ++ }; ++ ++-/* ++- * Structure of header of block with quota structures. It is padded to 16 bytes so ++- * there will be space for exactly 21 quota-entries in a block ++- */ ++-struct v2_disk_dqdbheader { ++- __le32 dqdh_next_free; /* Number of next block with free entry */ ++- __le32 dqdh_prev_free; /* Number of previous block with free entry */ ++- __le16 dqdh_entries; /* Number of valid entries in block */ ++- __le16 dqdh_pad1; ++- __le32 dqdh_pad2; ++-}; ++- ++ #define V2_DQINFOOFF sizeof(struct v2_disk_dqheader) /* Offset of info header in file */ ++-#define V2_DQBLKSIZE_BITS 10 ++-#define V2_DQBLKSIZE (1 << V2_DQBLKSIZE_BITS) /* Size of block with quota structures */ ++-#define V2_DQTREEOFF 1 /* Offset of tree in file in blocks */ ++-#define V2_DQTREEDEPTH 4 /* Depth of quota tree */ ++-#define V2_DQSTRINBLK ((V2_DQBLKSIZE - sizeof(struct v2_disk_dqdbheader)) / sizeof(struct v2_disk_dqblk)) /* Number of entries in one blocks */ +++#define V2_DQBLKSIZE_BITS 10 /* Size of leaf block in tree */ ++ ++ #endif /* _LINUX_QUOTAIO_V2_H */ ++Index: linux-2.6.27.36/fs/quota_tree.c ++=================================================================== ++--- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++++ linux-2.6.27.36/fs/quota_tree.c 2009-10-08 16:32:48.000000000 +0200 ++@@ -0,0 +1,645 @@ +++/* +++ * vfsv0 quota IO operations on file +++ */ +++ +++#include +++#include +++#include +++#include +++#include +++#include +++#include +++#include +++#include +++ +++#include +++ +++#include "quota_tree.h" +++ +++MODULE_AUTHOR("Jan Kara"); +++MODULE_DESCRIPTION("Quota trie support"); +++MODULE_LICENSE("GPL"); +++ +++#define __QUOTA_QT_PARANOIA +++ +++typedef char *dqbuf_t; +++ +++static int get_index(struct qtree_mem_dqinfo *info, qid_t id, int depth) +++{ +++ unsigned int epb = info->dqi_usable_bs >> 2; +++ +++ depth = info->dqi_qtree_depth - depth - 1; +++ while (depth--) +++ id /= epb; +++ return id % epb; +++} +++ +++/* Number of entries in one blocks */ +++static inline int qtree_dqstr_in_blk(struct qtree_mem_dqinfo *info) +++{ +++ return (info->dqi_usable_bs - sizeof(struct qt_disk_dqdbheader)) +++ / info->dqi_entry_size; +++} +++ +++static dqbuf_t getdqbuf(size_t size) +++{ +++ dqbuf_t buf = kmalloc(size, GFP_NOFS); +++ if (!buf) +++ printk(KERN_WARNING "VFS: Not enough memory for quota buffers.\n"); +++ return buf; +++} +++ +++static inline void freedqbuf(dqbuf_t buf) +++{ +++ kfree(buf); +++} +++ +++static inline ssize_t read_blk(struct qtree_mem_dqinfo *info, uint blk, dqbuf_t buf) +++{ +++ struct super_block *sb = info->dqi_sb; +++ +++ memset(buf, 0, info->dqi_usable_bs); +++ return sb->s_op->quota_read(sb, info->dqi_type, (char *)buf, +++ info->dqi_usable_bs, blk << info->dqi_blocksize_bits); +++} +++ +++static inline ssize_t write_blk(struct qtree_mem_dqinfo *info, uint blk, dqbuf_t buf) +++{ +++ struct super_block *sb = info->dqi_sb; +++ +++ return sb->s_op->quota_write(sb, info->dqi_type, (char *)buf, +++ info->dqi_usable_bs, blk << info->dqi_blocksize_bits); +++} +++ +++/* Remove empty block from list and return it */ +++static int get_free_dqblk(struct qtree_mem_dqinfo *info) +++{ +++ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); +++ struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf; +++ int ret, blk; +++ +++ if (!buf) +++ return -ENOMEM; +++ if (info->dqi_free_blk) { +++ blk = info->dqi_free_blk; +++ ret = read_blk(info, blk, buf); +++ if (ret < 0) +++ goto out_buf; +++ info->dqi_free_blk = le32_to_cpu(dh->dqdh_next_free); +++ } +++ else { +++ memset(buf, 0, info->dqi_usable_bs); +++ /* Assure block allocation... */ +++ ret = write_blk(info, info->dqi_blocks, buf); +++ if (ret < 0) +++ goto out_buf; +++ blk = info->dqi_blocks++; +++ } +++ mark_info_dirty(info->dqi_sb, info->dqi_type); +++ ret = blk; +++out_buf: +++ freedqbuf(buf); +++ return ret; +++} +++ +++/* Insert empty block to the list */ +++static int put_free_dqblk(struct qtree_mem_dqinfo *info, dqbuf_t buf, uint blk) +++{ +++ struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf; +++ int err; +++ +++ dh->dqdh_next_free = cpu_to_le32(info->dqi_free_blk); +++ dh->dqdh_prev_free = cpu_to_le32(0); +++ dh->dqdh_entries = cpu_to_le16(0); +++ err = write_blk(info, blk, buf); +++ if (err < 0) +++ return err; +++ info->dqi_free_blk = blk; +++ mark_info_dirty(info->dqi_sb, info->dqi_type); +++ return 0; +++} +++ +++/* Remove given block from the list of blocks with free entries */ +++static int remove_free_dqentry(struct qtree_mem_dqinfo *info, dqbuf_t buf, uint blk) +++{ +++ dqbuf_t tmpbuf = getdqbuf(info->dqi_usable_bs); +++ struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf; +++ uint nextblk = le32_to_cpu(dh->dqdh_next_free); +++ uint prevblk = le32_to_cpu(dh->dqdh_prev_free); +++ int err; +++ +++ if (!tmpbuf) +++ return -ENOMEM; +++ if (nextblk) { +++ err = read_blk(info, nextblk, tmpbuf); +++ if (err < 0) +++ goto out_buf; +++ ((struct qt_disk_dqdbheader *)tmpbuf)->dqdh_prev_free = +++ dh->dqdh_prev_free; +++ err = write_blk(info, nextblk, tmpbuf); +++ if (err < 0) +++ goto out_buf; +++ } +++ if (prevblk) { +++ err = read_blk(info, prevblk, tmpbuf); +++ if (err < 0) +++ goto out_buf; +++ ((struct qt_disk_dqdbheader *)tmpbuf)->dqdh_next_free = +++ dh->dqdh_next_free; +++ err = write_blk(info, prevblk, tmpbuf); +++ if (err < 0) +++ goto out_buf; +++ } else { +++ info->dqi_free_entry = nextblk; +++ mark_info_dirty(info->dqi_sb, info->dqi_type); +++ } +++ freedqbuf(tmpbuf); +++ dh->dqdh_next_free = dh->dqdh_prev_free = cpu_to_le32(0); +++ /* No matter whether write succeeds block is out of list */ +++ if (write_blk(info, blk, buf) < 0) +++ printk(KERN_ERR "VFS: Can't write block (%u) with free entries.\n", blk); +++ return 0; +++out_buf: +++ freedqbuf(tmpbuf); +++ return err; +++} +++ +++/* Insert given block to the beginning of list with free entries */ +++static int insert_free_dqentry(struct qtree_mem_dqinfo *info, dqbuf_t buf, uint blk) +++{ +++ dqbuf_t tmpbuf = getdqbuf(info->dqi_usable_bs); +++ struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf; +++ int err; +++ +++ if (!tmpbuf) +++ return -ENOMEM; +++ dh->dqdh_next_free = cpu_to_le32(info->dqi_free_entry); +++ dh->dqdh_prev_free = cpu_to_le32(0); +++ err = write_blk(info, blk, buf); +++ if (err < 0) +++ goto out_buf; +++ if (info->dqi_free_entry) { +++ err = read_blk(info, info->dqi_free_entry, tmpbuf); +++ if (err < 0) +++ goto out_buf; +++ ((struct qt_disk_dqdbheader *)tmpbuf)->dqdh_prev_free = +++ cpu_to_le32(blk); +++ err = write_blk(info, info->dqi_free_entry, tmpbuf); +++ if (err < 0) +++ goto out_buf; +++ } +++ freedqbuf(tmpbuf); +++ info->dqi_free_entry = blk; +++ mark_info_dirty(info->dqi_sb, info->dqi_type); +++ return 0; +++out_buf: +++ freedqbuf(tmpbuf); +++ return err; +++} +++ +++/* Is the entry in the block free? */ +++int qtree_entry_unused(struct qtree_mem_dqinfo *info, char *disk) +++{ +++ int i; +++ +++ for (i = 0; i < info->dqi_entry_size; i++) +++ if (disk[i]) +++ return 0; +++ return 1; +++} +++EXPORT_SYMBOL(qtree_entry_unused); +++ +++/* Find space for dquot */ +++static uint find_free_dqentry(struct qtree_mem_dqinfo *info, +++ struct dquot *dquot, int *err) +++{ +++ uint blk, i; +++ struct qt_disk_dqdbheader *dh; +++ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); +++ char *ddquot; +++ +++ *err = 0; +++ if (!buf) { +++ *err = -ENOMEM; +++ return 0; +++ } +++ dh = (struct qt_disk_dqdbheader *)buf; +++ if (info->dqi_free_entry) { +++ blk = info->dqi_free_entry; +++ *err = read_blk(info, blk, buf); +++ if (*err < 0) +++ goto out_buf; +++ } else { +++ blk = get_free_dqblk(info); +++ if ((int)blk < 0) { +++ *err = blk; +++ freedqbuf(buf); +++ return 0; +++ } +++ memset(buf, 0, info->dqi_usable_bs); +++ /* This is enough as block is already zeroed and entry list is empty... */ +++ info->dqi_free_entry = blk; +++ mark_info_dirty(dquot->dq_sb, dquot->dq_type); +++ } +++ /* Block will be full? */ +++ if (le16_to_cpu(dh->dqdh_entries) + 1 >= qtree_dqstr_in_blk(info)) { +++ *err = remove_free_dqentry(info, buf, blk); +++ if (*err < 0) { +++ printk(KERN_ERR "VFS: find_free_dqentry(): Can't " +++ "remove block (%u) from entry free list.\n", +++ blk); +++ goto out_buf; +++ } +++ } +++ le16_add_cpu(&dh->dqdh_entries, 1); +++ /* Find free structure in block */ +++ for (i = 0, ddquot = ((char *)buf) + sizeof(struct qt_disk_dqdbheader); +++ i < qtree_dqstr_in_blk(info) && !qtree_entry_unused(info, ddquot); +++ i++, ddquot += info->dqi_entry_size); +++#ifdef __QUOTA_QT_PARANOIA +++ if (i == qtree_dqstr_in_blk(info)) { +++ printk(KERN_ERR "VFS: find_free_dqentry(): Data block full " +++ "but it shouldn't.\n"); +++ *err = -EIO; +++ goto out_buf; +++ } +++#endif +++ *err = write_blk(info, blk, buf); +++ if (*err < 0) { +++ printk(KERN_ERR "VFS: find_free_dqentry(): Can't write quota " +++ "data block %u.\n", blk); +++ goto out_buf; +++ } +++ dquot->dq_off = (blk << info->dqi_blocksize_bits) + +++ sizeof(struct qt_disk_dqdbheader) + +++ i * info->dqi_entry_size; +++ freedqbuf(buf); +++ return blk; +++out_buf: +++ freedqbuf(buf); +++ return 0; +++} +++ +++/* Insert reference to structure into the trie */ +++static int do_insert_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot, +++ uint *treeblk, int depth) +++{ +++ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); +++ int ret = 0, newson = 0, newact = 0; +++ __le32 *ref; +++ uint newblk; +++ +++ if (!buf) +++ return -ENOMEM; +++ if (!*treeblk) { +++ ret = get_free_dqblk(info); +++ if (ret < 0) +++ goto out_buf; +++ *treeblk = ret; +++ memset(buf, 0, info->dqi_usable_bs); +++ newact = 1; +++ } else { +++ ret = read_blk(info, *treeblk, buf); +++ if (ret < 0) { +++ printk(KERN_ERR "VFS: Can't read tree quota block " +++ "%u.\n", *treeblk); +++ goto out_buf; +++ } +++ } +++ ref = (__le32 *)buf; +++ newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); +++ if (!newblk) +++ newson = 1; +++ if (depth == info->dqi_qtree_depth - 1) { +++#ifdef __QUOTA_QT_PARANOIA +++ if (newblk) { +++ printk(KERN_ERR "VFS: Inserting already present quota " +++ "entry (block %u).\n", +++ le32_to_cpu(ref[get_index(info, +++ dquot->dq_id, depth)])); +++ ret = -EIO; +++ goto out_buf; +++ } +++#endif +++ newblk = find_free_dqentry(info, dquot, &ret); +++ } else { +++ ret = do_insert_tree(info, dquot, &newblk, depth+1); +++ } +++ if (newson && ret >= 0) { +++ ref[get_index(info, dquot->dq_id, depth)] = +++ cpu_to_le32(newblk); +++ ret = write_blk(info, *treeblk, buf); +++ } else if (newact && ret < 0) { +++ put_free_dqblk(info, buf, *treeblk); +++ } +++out_buf: +++ freedqbuf(buf); +++ return ret; +++} +++ +++/* Wrapper for inserting quota structure into tree */ +++static inline int dq_insert_tree(struct qtree_mem_dqinfo *info, +++ struct dquot *dquot) +++{ +++ int tmp = QT_TREEOFF; +++ return do_insert_tree(info, dquot, &tmp, 0); +++} +++ +++/* +++ * We don't have to be afraid of deadlocks as we never have quotas on quota files... +++ */ +++int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) +++{ +++ int type = dquot->dq_type; +++ struct super_block *sb = dquot->dq_sb; +++ ssize_t ret; +++ dqbuf_t ddquot = getdqbuf(info->dqi_entry_size); +++ +++ if (!ddquot) +++ return -ENOMEM; +++ +++ /* dq_off is guarded by dqio_mutex */ +++ if (!dquot->dq_off) { +++ ret = dq_insert_tree(info, dquot); +++ if (ret < 0) { +++ printk(KERN_ERR "VFS: Error %zd occurred while " +++ "creating quota.\n", ret); +++ freedqbuf(ddquot); +++ return ret; +++ } +++ } +++ spin_lock(&dq_data_lock); +++ info->dqi_ops->mem2disk_dqblk(ddquot, dquot); +++ spin_unlock(&dq_data_lock); +++ ret = sb->s_op->quota_write(sb, type, (char *)ddquot, +++ info->dqi_entry_size, dquot->dq_off); +++ if (ret != info->dqi_entry_size) { +++ printk(KERN_WARNING "VFS: dquota write failed on dev %s\n", +++ sb->s_id); +++ if (ret >= 0) +++ ret = -ENOSPC; +++ } else { +++ ret = 0; +++ } +++ dqstats.writes++; +++ freedqbuf(ddquot); +++ +++ return ret; +++} +++EXPORT_SYMBOL(qtree_write_dquot); +++ +++/* Free dquot entry in data block */ +++static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot, +++ uint blk) +++{ +++ struct qt_disk_dqdbheader *dh; +++ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); +++ int ret = 0; +++ +++ if (!buf) +++ return -ENOMEM; +++ if (dquot->dq_off >> info->dqi_blocksize_bits != blk) { +++ printk(KERN_ERR "VFS: Quota structure has offset to other " +++ "block (%u) than it should (%u).\n", blk, +++ (uint)(dquot->dq_off >> info->dqi_blocksize_bits)); +++ goto out_buf; +++ } +++ ret = read_blk(info, blk, buf); +++ if (ret < 0) { +++ printk(KERN_ERR "VFS: Can't read quota data block %u\n", blk); +++ goto out_buf; +++ } +++ dh = (struct qt_disk_dqdbheader *)buf; +++ le16_add_cpu(&dh->dqdh_entries, -1); +++ if (!le16_to_cpu(dh->dqdh_entries)) { /* Block got free? */ +++ ret = remove_free_dqentry(info, buf, blk); +++ if (ret >= 0) +++ ret = put_free_dqblk(info, buf, blk); +++ if (ret < 0) { +++ printk(KERN_ERR "VFS: Can't move quota data block (%u) " +++ "to free list.\n", blk); +++ goto out_buf; +++ } +++ } else { +++ memset(buf + +++ (dquot->dq_off & ((1 << info->dqi_blocksize_bits) - 1)), +++ 0, info->dqi_entry_size); +++ if (le16_to_cpu(dh->dqdh_entries) == +++ qtree_dqstr_in_blk(info) - 1) { +++ /* Insert will write block itself */ +++ ret = insert_free_dqentry(info, buf, blk); +++ if (ret < 0) { +++ printk(KERN_ERR "VFS: Can't insert quota data " +++ "block (%u) to free entry list.\n", blk); +++ goto out_buf; +++ } +++ } else { +++ ret = write_blk(info, blk, buf); +++ if (ret < 0) { +++ printk(KERN_ERR "VFS: Can't write quota data " +++ "block %u\n", blk); +++ goto out_buf; +++ } +++ } +++ } +++ dquot->dq_off = 0; /* Quota is now unattached */ +++out_buf: +++ freedqbuf(buf); +++ return ret; +++} +++ +++/* Remove reference to dquot from tree */ +++static int remove_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot, +++ uint *blk, int depth) +++{ +++ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); +++ int ret = 0; +++ uint newblk; +++ __le32 *ref = (__le32 *)buf; +++ +++ if (!buf) +++ return -ENOMEM; +++ ret = read_blk(info, *blk, buf); +++ if (ret < 0) { +++ printk(KERN_ERR "VFS: Can't read quota data block %u\n", *blk); +++ goto out_buf; +++ } +++ newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); +++ if (depth == info->dqi_qtree_depth - 1) { +++ ret = free_dqentry(info, dquot, newblk); +++ newblk = 0; +++ } else { +++ ret = remove_tree(info, dquot, &newblk, depth+1); +++ } +++ if (ret >= 0 && !newblk) { +++ int i; +++ ref[get_index(info, dquot->dq_id, depth)] = cpu_to_le32(0); +++ /* Block got empty? */ +++ for (i = 0; +++ i < (info->dqi_usable_bs >> 2) && !ref[i]; +++ i++); +++ /* Don't put the root block into the free block list */ +++ if (i == (info->dqi_usable_bs >> 2) +++ && *blk != QT_TREEOFF) { +++ put_free_dqblk(info, buf, *blk); +++ *blk = 0; +++ } else { +++ ret = write_blk(info, *blk, buf); +++ if (ret < 0) +++ printk(KERN_ERR "VFS: Can't write quota tree " +++ "block %u.\n", *blk); +++ } +++ } +++out_buf: +++ freedqbuf(buf); +++ return ret; +++} +++ +++/* Delete dquot from tree */ +++int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) +++{ +++ uint tmp = QT_TREEOFF; +++ +++ if (!dquot->dq_off) /* Even not allocated? */ +++ return 0; +++ return remove_tree(info, dquot, &tmp, 0); +++} +++EXPORT_SYMBOL(qtree_delete_dquot); +++ +++/* Find entry in block */ +++static loff_t find_block_dqentry(struct qtree_mem_dqinfo *info, +++ struct dquot *dquot, uint blk) +++{ +++ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); +++ loff_t ret = 0; +++ int i; +++ char *ddquot; +++ +++ if (!buf) +++ return -ENOMEM; +++ ret = read_blk(info, blk, buf); +++ if (ret < 0) { +++ printk(KERN_ERR "VFS: Can't read quota tree block %u.\n", blk); +++ goto out_buf; +++ } +++ for (i = 0, ddquot = ((char *)buf) + sizeof(struct qt_disk_dqdbheader); +++ i < qtree_dqstr_in_blk(info) && !info->dqi_ops->is_id(ddquot, dquot); +++ i++, ddquot += info->dqi_entry_size); +++ if (i == qtree_dqstr_in_blk(info)) { +++ printk(KERN_ERR "VFS: Quota for id %u referenced " +++ "but not present.\n", dquot->dq_id); +++ ret = -EIO; +++ goto out_buf; +++ } else { +++ ret = (blk << info->dqi_blocksize_bits) + sizeof(struct +++ qt_disk_dqdbheader) + i * info->dqi_entry_size; +++ } +++out_buf: +++ freedqbuf(buf); +++ return ret; +++} +++ +++/* Find entry for given id in the tree */ +++static loff_t find_tree_dqentry(struct qtree_mem_dqinfo *info, +++ struct dquot *dquot, uint blk, int depth) +++{ +++ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); +++ loff_t ret = 0; +++ __le32 *ref = (__le32 *)buf; +++ +++ if (!buf) +++ return -ENOMEM; +++ ret = read_blk(info, blk, buf); +++ if (ret < 0) { +++ printk(KERN_ERR "VFS: Can't read quota tree block %u.\n", blk); +++ goto out_buf; +++ } +++ ret = 0; +++ blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); +++ if (!blk) /* No reference? */ +++ goto out_buf; +++ if (depth < info->dqi_qtree_depth - 1) +++ ret = find_tree_dqentry(info, dquot, blk, depth+1); +++ else +++ ret = find_block_dqentry(info, dquot, blk); +++out_buf: +++ freedqbuf(buf); +++ return ret; +++} +++ +++/* Find entry for given id in the tree - wrapper function */ +++static inline loff_t find_dqentry(struct qtree_mem_dqinfo *info, +++ struct dquot *dquot) +++{ +++ return find_tree_dqentry(info, dquot, QT_TREEOFF, 0); +++} +++ +++int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) +++{ +++ int type = dquot->dq_type; +++ struct super_block *sb = dquot->dq_sb; +++ loff_t offset; +++ dqbuf_t ddquot; +++ int ret = 0; +++ +++#ifdef __QUOTA_QT_PARANOIA +++ /* Invalidated quota? */ +++ if (!sb_dqopt(dquot->dq_sb)->files[type]) { +++ printk(KERN_ERR "VFS: Quota invalidated while reading!\n"); +++ return -EIO; +++ } +++#endif +++ /* Do we know offset of the dquot entry in the quota file? */ +++ if (!dquot->dq_off) { +++ offset = find_dqentry(info, dquot); +++ if (offset <= 0) { /* Entry not present? */ +++ if (offset < 0) +++ printk(KERN_ERR "VFS: Can't read quota " +++ "structure for id %u.\n", dquot->dq_id); +++ dquot->dq_off = 0; +++ set_bit(DQ_FAKE_B, &dquot->dq_flags); +++ memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk)); +++ ret = offset; +++ goto out; +++ } +++ dquot->dq_off = offset; +++ } +++ ddquot = getdqbuf(info->dqi_entry_size); +++ if (!ddquot) +++ return -ENOMEM; +++ ret = sb->s_op->quota_read(sb, type, (char *)ddquot, +++ info->dqi_entry_size, dquot->dq_off); +++ if (ret != info->dqi_entry_size) { +++ if (ret >= 0) +++ ret = -EIO; +++ printk(KERN_ERR "VFS: Error while reading quota " +++ "structure for id %u.\n", dquot->dq_id); +++ set_bit(DQ_FAKE_B, &dquot->dq_flags); +++ memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk)); +++ freedqbuf(ddquot); +++ goto out; +++ } +++ spin_lock(&dq_data_lock); +++ info->dqi_ops->disk2mem_dqblk(dquot, ddquot); +++ if (!dquot->dq_dqb.dqb_bhardlimit && +++ !dquot->dq_dqb.dqb_bsoftlimit && +++ !dquot->dq_dqb.dqb_ihardlimit && +++ !dquot->dq_dqb.dqb_isoftlimit) +++ set_bit(DQ_FAKE_B, &dquot->dq_flags); +++ spin_unlock(&dq_data_lock); +++ freedqbuf(ddquot); +++out: +++ dqstats.reads++; +++ return ret; +++} +++EXPORT_SYMBOL(qtree_read_dquot); +++ +++/* Check whether dquot should not be deleted. We know we are +++ * the only one operating on dquot (thanks to dq_lock) */ +++int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) +++{ +++ if (test_bit(DQ_FAKE_B, &dquot->dq_flags) && !(dquot->dq_dqb.dqb_curinodes | dquot->dq_dqb.dqb_curspace)) +++ return qtree_delete_dquot(info, dquot); +++ return 0; +++} +++EXPORT_SYMBOL(qtree_release_dquot); ++Index: linux-2.6.27.36/fs/quota_tree.h ++=================================================================== ++--- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++++ linux-2.6.27.36/fs/quota_tree.h 2009-10-08 16:32:48.000000000 +0200 ++@@ -0,0 +1,25 @@ +++/* +++ * Definitions of structures for vfsv0 quota format +++ */ +++ +++#ifndef _LINUX_QUOTA_TREE_H +++#define _LINUX_QUOTA_TREE_H +++ +++#include +++#include +++ +++/* +++ * Structure of header of block with quota structures. It is padded to 16 bytes so +++ * there will be space for exactly 21 quota-entries in a block +++ */ +++struct qt_disk_dqdbheader { +++ __le32 dqdh_next_free; /* Number of next block with free entry */ +++ __le32 dqdh_prev_free; /* Number of previous block with free entry */ +++ __le16 dqdh_entries; /* Number of valid entries in block */ +++ __le16 dqdh_pad1; +++ __le32 dqdh_pad2; +++}; +++ +++#define QT_TREEOFF 1 /* Offset of tree in file in blocks */ +++ +++#endif /* _LINUX_QUOTAIO_TREE_H */ ++Index: linux-2.6.27.36/fs/quota_v2.c ++=================================================================== ++--- linux-2.6.27.36.orig/fs/quota_v2.c 2009-10-05 17:19:01.000000000 +0200 +++++ linux-2.6.27.36/fs/quota_v2.c 2009-10-08 16:34:36.000000000 +0200 ++@@ -6,6 +6,7 @@ ++ #include ++ #include ++ #include +++#include "quota_tree.h" ++ #include ++ #include ++ #include ++@@ -15,16 +16,22 @@ ++ ++ #include ++ +++ ++ MODULE_AUTHOR("Jan Kara"); ++ MODULE_DESCRIPTION("Quota format v2 support"); ++ MODULE_LICENSE("GPL"); ++ ++ #define __QUOTA_V2_PARANOIA ++ ++-typedef char *dqbuf_t; ++- ++-#define GETIDINDEX(id, depth) (((id) >> ((V2_DQTREEDEPTH-(depth)-1)*8)) & 0xff) ++-#define GETENTRIES(buf) ((struct v2_disk_dqblk *)(((char *)buf)+sizeof(struct v2_disk_dqdbheader))) +++static void v2_mem2diskdqb(void *dp, struct dquot *dquot); +++static void v2_disk2memdqb(struct dquot *dquot, void *dp); +++static int v2_is_id(void *dp, struct dquot *dquot); +++ +++static struct qtree_fmt_operations v2_qtree_ops = { +++ .mem2disk_dqblk = v2_mem2diskdqb, +++ .disk2mem_dqblk = v2_disk2memdqb, +++ .is_id = v2_is_id, +++}; ++ ++ /* Check whether given file is really vfsv0 quotafile */ ++ static int v2_check_quota_file(struct super_block *sb, int type) ++@@ -50,7 +57,7 @@ ++ static int v2_read_file_info(struct super_block *sb, int type) ++ { ++ struct v2_disk_dqinfo dinfo; ++- struct mem_dqinfo *info = sb_dqopt(sb)->info+type; +++ struct mem_dqinfo *info = sb_dqinfo(sb, type); ++ ssize_t size; ++ ++ size = sb->s_op->quota_read(sb, type, (char *)&dinfo, ++@@ -66,9 +73,16 @@ ++ info->dqi_bgrace = le32_to_cpu(dinfo.dqi_bgrace); ++ info->dqi_igrace = le32_to_cpu(dinfo.dqi_igrace); ++ info->dqi_flags = le32_to_cpu(dinfo.dqi_flags); ++- info->u.v2_i.dqi_blocks = le32_to_cpu(dinfo.dqi_blocks); ++- info->u.v2_i.dqi_free_blk = le32_to_cpu(dinfo.dqi_free_blk); ++- info->u.v2_i.dqi_free_entry = le32_to_cpu(dinfo.dqi_free_entry); +++ info->u.v2_i.i.dqi_sb = sb; +++ info->u.v2_i.i.dqi_type = type; +++ info->u.v2_i.i.dqi_blocks = le32_to_cpu(dinfo.dqi_blocks); +++ info->u.v2_i.i.dqi_free_blk = le32_to_cpu(dinfo.dqi_free_blk); +++ info->u.v2_i.i.dqi_free_entry = le32_to_cpu(dinfo.dqi_free_entry); +++ info->u.v2_i.i.dqi_blocksize_bits = V2_DQBLKSIZE_BITS; +++ info->u.v2_i.i.dqi_usable_bs = 1 << V2_DQBLKSIZE_BITS; +++ info->u.v2_i.i.dqi_qtree_depth = qtree_depth(&info->u.v2_i.i); +++ info->u.v2_i.i.dqi_entry_size = sizeof(struct v2_disk_dqblk); +++ info->u.v2_i.i.dqi_ops = &v2_qtree_ops; ++ return 0; ++ } ++ ++@@ -76,7 +90,7 @@ ++ static int v2_write_file_info(struct super_block *sb, int type) ++ { ++ struct v2_disk_dqinfo dinfo; ++- struct mem_dqinfo *info = sb_dqopt(sb)->info+type; +++ struct mem_dqinfo *info = sb_dqinfo(sb, type); ++ ssize_t size; ++ ++ spin_lock(&dq_data_lock); ++@@ -85,9 +99,9 @@ ++ dinfo.dqi_igrace = cpu_to_le32(info->dqi_igrace); ++ dinfo.dqi_flags = cpu_to_le32(info->dqi_flags & DQF_MASK); ++ spin_unlock(&dq_data_lock); ++- dinfo.dqi_blocks = cpu_to_le32(info->u.v2_i.dqi_blocks); ++- dinfo.dqi_free_blk = cpu_to_le32(info->u.v2_i.dqi_free_blk); ++- dinfo.dqi_free_entry = cpu_to_le32(info->u.v2_i.dqi_free_entry); +++ dinfo.dqi_blocks = cpu_to_le32(info->u.v2_i.i.dqi_blocks); +++ dinfo.dqi_free_blk = cpu_to_le32(info->u.v2_i.i.dqi_free_blk); +++ dinfo.dqi_free_entry = cpu_to_le32(info->u.v2_i.i.dqi_free_entry); ++ size = sb->s_op->quota_write(sb, type, (char *)&dinfo, ++ sizeof(struct v2_disk_dqinfo), V2_DQINFOOFF); ++ if (size != sizeof(struct v2_disk_dqinfo)) { ++@@ -98,8 +112,11 @@ ++ return 0; ++ } ++ ++-static void disk2memdqb(struct mem_dqblk *m, struct v2_disk_dqblk *d) +++static void v2_disk2memdqb(struct dquot *dquot, void *dp) ++ { +++ struct v2_disk_dqblk *d = dp, empty; +++ struct mem_dqblk *m = &dquot->dq_dqb; +++ ++ m->dqb_ihardlimit = le32_to_cpu(d->dqb_ihardlimit); ++ m->dqb_isoftlimit = le32_to_cpu(d->dqb_isoftlimit); ++ m->dqb_curinodes = le32_to_cpu(d->dqb_curinodes); ++@@ -108,10 +125,20 @@ ++ m->dqb_bsoftlimit = le32_to_cpu(d->dqb_bsoftlimit); ++ m->dqb_curspace = le64_to_cpu(d->dqb_curspace); ++ m->dqb_btime = le64_to_cpu(d->dqb_btime); +++ /* We need to escape back all-zero structure */ +++ memset(&empty, 0, sizeof(struct v2_disk_dqblk)); +++ empty.dqb_itime = cpu_to_le64(1); +++ if (!memcmp(&empty, dp, sizeof(struct v2_disk_dqblk))) +++ m->dqb_itime = 0; ++ } ++ ++-static void mem2diskdqb(struct v2_disk_dqblk *d, struct mem_dqblk *m, qid_t id) +++static void v2_mem2diskdqb(void *dp, struct dquot *dquot) ++ { +++ struct v2_disk_dqblk *d = dp; +++ struct mem_dqblk *m = &dquot->dq_dqb; +++ struct qtree_mem_dqinfo *info = +++ &sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i; +++ ++ d->dqb_ihardlimit = cpu_to_le32(m->dqb_ihardlimit); ++ d->dqb_isoftlimit = cpu_to_le32(m->dqb_isoftlimit); ++ d->dqb_curinodes = cpu_to_le32(m->dqb_curinodes); ++@@ -120,553 +147,35 @@ ++ d->dqb_bsoftlimit = cpu_to_le32(m->dqb_bsoftlimit); ++ d->dqb_curspace = cpu_to_le64(m->dqb_curspace); ++ d->dqb_btime = cpu_to_le64(m->dqb_btime); ++- d->dqb_id = cpu_to_le32(id); ++-} ++- ++-static dqbuf_t getdqbuf(void) ++-{ ++- dqbuf_t buf = kmalloc(V2_DQBLKSIZE, GFP_NOFS); ++- if (!buf) ++- printk(KERN_WARNING "VFS: Not enough memory for quota buffers.\n"); ++- return buf; ++-} ++- ++-static inline void freedqbuf(dqbuf_t buf) ++-{ ++- kfree(buf); ++-} ++- ++-static inline ssize_t read_blk(struct super_block *sb, int type, uint blk, dqbuf_t buf) ++-{ ++- memset(buf, 0, V2_DQBLKSIZE); ++- return sb->s_op->quota_read(sb, type, (char *)buf, ++- V2_DQBLKSIZE, blk << V2_DQBLKSIZE_BITS); ++-} ++- ++-static inline ssize_t write_blk(struct super_block *sb, int type, uint blk, dqbuf_t buf) ++-{ ++- return sb->s_op->quota_write(sb, type, (char *)buf, ++- V2_DQBLKSIZE, blk << V2_DQBLKSIZE_BITS); +++ d->dqb_id = cpu_to_le32(dquot->dq_id); +++ if (qtree_entry_unused(info, dp)) +++ d->dqb_itime = cpu_to_le64(1); ++ } ++ ++-/* Remove empty block from list and return it */ ++-static int get_free_dqblk(struct super_block *sb, int type) +++static int v2_is_id(void *dp, struct dquot *dquot) ++ { ++- dqbuf_t buf = getdqbuf(); ++- struct mem_dqinfo *info = sb_dqinfo(sb, type); ++- struct v2_disk_dqdbheader *dh = (struct v2_disk_dqdbheader *)buf; ++- int ret, blk; +++ struct v2_disk_dqblk *d = dp; +++ struct qtree_mem_dqinfo *info = +++ &sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i; ++ ++- if (!buf) ++- return -ENOMEM; ++- if (info->u.v2_i.dqi_free_blk) { ++- blk = info->u.v2_i.dqi_free_blk; ++- if ((ret = read_blk(sb, type, blk, buf)) < 0) ++- goto out_buf; ++- info->u.v2_i.dqi_free_blk = le32_to_cpu(dh->dqdh_next_free); ++- } ++- else { ++- memset(buf, 0, V2_DQBLKSIZE); ++- /* Assure block allocation... */ ++- if ((ret = write_blk(sb, type, info->u.v2_i.dqi_blocks, buf)) < 0) ++- goto out_buf; ++- blk = info->u.v2_i.dqi_blocks++; ++- } ++- mark_info_dirty(sb, type); ++- ret = blk; ++-out_buf: ++- freedqbuf(buf); ++- return ret; ++-} ++- ++-/* Insert empty block to the list */ ++-static int put_free_dqblk(struct super_block *sb, int type, dqbuf_t buf, uint blk) ++-{ ++- struct mem_dqinfo *info = sb_dqinfo(sb, type); ++- struct v2_disk_dqdbheader *dh = (struct v2_disk_dqdbheader *)buf; ++- int err; ++- ++- dh->dqdh_next_free = cpu_to_le32(info->u.v2_i.dqi_free_blk); ++- dh->dqdh_prev_free = cpu_to_le32(0); ++- dh->dqdh_entries = cpu_to_le16(0); ++- info->u.v2_i.dqi_free_blk = blk; ++- mark_info_dirty(sb, type); ++- /* Some strange block. We had better leave it... */ ++- if ((err = write_blk(sb, type, blk, buf)) < 0) ++- return err; ++- return 0; ++-} ++- ++-/* Remove given block from the list of blocks with free entries */ ++-static int remove_free_dqentry(struct super_block *sb, int type, dqbuf_t buf, uint blk) ++-{ ++- dqbuf_t tmpbuf = getdqbuf(); ++- struct mem_dqinfo *info = sb_dqinfo(sb, type); ++- struct v2_disk_dqdbheader *dh = (struct v2_disk_dqdbheader *)buf; ++- uint nextblk = le32_to_cpu(dh->dqdh_next_free), prevblk = le32_to_cpu(dh->dqdh_prev_free); ++- int err; ++- ++- if (!tmpbuf) ++- return -ENOMEM; ++- if (nextblk) { ++- if ((err = read_blk(sb, type, nextblk, tmpbuf)) < 0) ++- goto out_buf; ++- ((struct v2_disk_dqdbheader *)tmpbuf)->dqdh_prev_free = dh->dqdh_prev_free; ++- if ((err = write_blk(sb, type, nextblk, tmpbuf)) < 0) ++- goto out_buf; ++- } ++- if (prevblk) { ++- if ((err = read_blk(sb, type, prevblk, tmpbuf)) < 0) ++- goto out_buf; ++- ((struct v2_disk_dqdbheader *)tmpbuf)->dqdh_next_free = dh->dqdh_next_free; ++- if ((err = write_blk(sb, type, prevblk, tmpbuf)) < 0) ++- goto out_buf; ++- } ++- else { ++- info->u.v2_i.dqi_free_entry = nextblk; ++- mark_info_dirty(sb, type); ++- } ++- freedqbuf(tmpbuf); ++- dh->dqdh_next_free = dh->dqdh_prev_free = cpu_to_le32(0); ++- /* No matter whether write succeeds block is out of list */ ++- if (write_blk(sb, type, blk, buf) < 0) ++- printk(KERN_ERR "VFS: Can't write block (%u) with free entries.\n", blk); ++- return 0; ++-out_buf: ++- freedqbuf(tmpbuf); ++- return err; ++-} ++- ++-/* Insert given block to the beginning of list with free entries */ ++-static int insert_free_dqentry(struct super_block *sb, int type, dqbuf_t buf, uint blk) ++-{ ++- dqbuf_t tmpbuf = getdqbuf(); ++- struct mem_dqinfo *info = sb_dqinfo(sb, type); ++- struct v2_disk_dqdbheader *dh = (struct v2_disk_dqdbheader *)buf; ++- int err; ++- ++- if (!tmpbuf) ++- return -ENOMEM; ++- dh->dqdh_next_free = cpu_to_le32(info->u.v2_i.dqi_free_entry); ++- dh->dqdh_prev_free = cpu_to_le32(0); ++- if ((err = write_blk(sb, type, blk, buf)) < 0) ++- goto out_buf; ++- if (info->u.v2_i.dqi_free_entry) { ++- if ((err = read_blk(sb, type, info->u.v2_i.dqi_free_entry, tmpbuf)) < 0) ++- goto out_buf; ++- ((struct v2_disk_dqdbheader *)tmpbuf)->dqdh_prev_free = cpu_to_le32(blk); ++- if ((err = write_blk(sb, type, info->u.v2_i.dqi_free_entry, tmpbuf)) < 0) ++- goto out_buf; ++- } ++- freedqbuf(tmpbuf); ++- info->u.v2_i.dqi_free_entry = blk; ++- mark_info_dirty(sb, type); ++- return 0; ++-out_buf: ++- freedqbuf(tmpbuf); ++- return err; ++-} ++- ++-/* Find space for dquot */ ++-static uint find_free_dqentry(struct dquot *dquot, int *err) ++-{ ++- struct super_block *sb = dquot->dq_sb; ++- struct mem_dqinfo *info = sb_dqopt(sb)->info+dquot->dq_type; ++- uint blk, i; ++- struct v2_disk_dqdbheader *dh; ++- struct v2_disk_dqblk *ddquot; ++- struct v2_disk_dqblk fakedquot; ++- dqbuf_t buf; ++- ++- *err = 0; ++- if (!(buf = getdqbuf())) { ++- *err = -ENOMEM; +++ if (qtree_entry_unused(info, dp)) ++ return 0; ++- } ++- dh = (struct v2_disk_dqdbheader *)buf; ++- ddquot = GETENTRIES(buf); ++- if (info->u.v2_i.dqi_free_entry) { ++- blk = info->u.v2_i.dqi_free_entry; ++- if ((*err = read_blk(sb, dquot->dq_type, blk, buf)) < 0) ++- goto out_buf; ++- } ++- else { ++- blk = get_free_dqblk(sb, dquot->dq_type); ++- if ((int)blk < 0) { ++- *err = blk; ++- freedqbuf(buf); ++- return 0; ++- } ++- memset(buf, 0, V2_DQBLKSIZE); ++- /* This is enough as block is already zeroed and entry list is empty... */ ++- info->u.v2_i.dqi_free_entry = blk; ++- mark_info_dirty(sb, dquot->dq_type); ++- } ++- if (le16_to_cpu(dh->dqdh_entries)+1 >= V2_DQSTRINBLK) /* Block will be full? */ ++- if ((*err = remove_free_dqentry(sb, dquot->dq_type, buf, blk)) < 0) { ++- printk(KERN_ERR "VFS: find_free_dqentry(): Can't remove block (%u) from entry free list.\n", blk); ++- goto out_buf; ++- } ++- le16_add_cpu(&dh->dqdh_entries, 1); ++- memset(&fakedquot, 0, sizeof(struct v2_disk_dqblk)); ++- /* Find free structure in block */ ++- for (i = 0; i < V2_DQSTRINBLK && memcmp(&fakedquot, ddquot+i, sizeof(struct v2_disk_dqblk)); i++); ++-#ifdef __QUOTA_V2_PARANOIA ++- if (i == V2_DQSTRINBLK) { ++- printk(KERN_ERR "VFS: find_free_dqentry(): Data block full but it shouldn't.\n"); ++- *err = -EIO; ++- goto out_buf; ++- } ++-#endif ++- if ((*err = write_blk(sb, dquot->dq_type, blk, buf)) < 0) { ++- printk(KERN_ERR "VFS: find_free_dqentry(): Can't write quota data block %u.\n", blk); ++- goto out_buf; ++- } ++- dquot->dq_off = (blk<dq_sb; ++- dqbuf_t buf; ++- int ret = 0, newson = 0, newact = 0; ++- __le32 *ref; ++- uint newblk; ++- ++- if (!(buf = getdqbuf())) ++- return -ENOMEM; ++- if (!*treeblk) { ++- ret = get_free_dqblk(sb, dquot->dq_type); ++- if (ret < 0) ++- goto out_buf; ++- *treeblk = ret; ++- memset(buf, 0, V2_DQBLKSIZE); ++- newact = 1; ++- } ++- else { ++- if ((ret = read_blk(sb, dquot->dq_type, *treeblk, buf)) < 0) { ++- printk(KERN_ERR "VFS: Can't read tree quota block %u.\n", *treeblk); ++- goto out_buf; ++- } ++- } ++- ref = (__le32 *)buf; ++- newblk = le32_to_cpu(ref[GETIDINDEX(dquot->dq_id, depth)]); ++- if (!newblk) ++- newson = 1; ++- if (depth == V2_DQTREEDEPTH-1) { ++-#ifdef __QUOTA_V2_PARANOIA ++- if (newblk) { ++- printk(KERN_ERR "VFS: Inserting already present quota entry (block %u).\n", le32_to_cpu(ref[GETIDINDEX(dquot->dq_id, depth)])); ++- ret = -EIO; ++- goto out_buf; ++- } ++-#endif ++- newblk = find_free_dqentry(dquot, &ret); ++- } ++- else ++- ret = do_insert_tree(dquot, &newblk, depth+1); ++- if (newson && ret >= 0) { ++- ref[GETIDINDEX(dquot->dq_id, depth)] = cpu_to_le32(newblk); ++- ret = write_blk(sb, dquot->dq_type, *treeblk, buf); ++- } ++- else if (newact && ret < 0) ++- put_free_dqblk(sb, dquot->dq_type, buf, *treeblk); ++-out_buf: ++- freedqbuf(buf); ++- return ret; +++ return le32_to_cpu(d->dqb_id) == dquot->dq_id; ++ } ++ ++-/* Wrapper for inserting quota structure into tree */ ++-static inline int dq_insert_tree(struct dquot *dquot) +++static int v2_read_dquot(struct dquot *dquot) ++ { ++- int tmp = V2_DQTREEOFF; ++- return do_insert_tree(dquot, &tmp, 0); +++ return qtree_read_dquot(&sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i, dquot); ++ } ++ ++-/* ++- * We don't have to be afraid of deadlocks as we never have quotas on quota files... ++- */ ++ static int v2_write_dquot(struct dquot *dquot) ++ { ++- int type = dquot->dq_type; ++- ssize_t ret; ++- struct v2_disk_dqblk ddquot, empty; ++- ++- /* dq_off is guarded by dqio_mutex */ ++- if (!dquot->dq_off) ++- if ((ret = dq_insert_tree(dquot)) < 0) { ++- printk(KERN_ERR "VFS: Error %zd occurred while creating quota.\n", ret); ++- return ret; ++- } ++- spin_lock(&dq_data_lock); ++- mem2diskdqb(&ddquot, &dquot->dq_dqb, dquot->dq_id); ++- /* Argh... We may need to write structure full of zeroes but that would be ++- * treated as an empty place by the rest of the code. Format change would ++- * be definitely cleaner but the problems probably are not worth it */ ++- memset(&empty, 0, sizeof(struct v2_disk_dqblk)); ++- if (!memcmp(&empty, &ddquot, sizeof(struct v2_disk_dqblk))) ++- ddquot.dqb_itime = cpu_to_le64(1); ++- spin_unlock(&dq_data_lock); ++- ret = dquot->dq_sb->s_op->quota_write(dquot->dq_sb, type, ++- (char *)&ddquot, sizeof(struct v2_disk_dqblk), dquot->dq_off); ++- if (ret != sizeof(struct v2_disk_dqblk)) { ++- printk(KERN_WARNING "VFS: dquota write failed on dev %s\n", dquot->dq_sb->s_id); ++- if (ret >= 0) ++- ret = -ENOSPC; ++- } ++- else ++- ret = 0; ++- dqstats.writes++; ++- ++- return ret; ++-} ++- ++-/* Free dquot entry in data block */ ++-static int free_dqentry(struct dquot *dquot, uint blk) ++-{ ++- struct super_block *sb = dquot->dq_sb; ++- int type = dquot->dq_type; ++- struct v2_disk_dqdbheader *dh; ++- dqbuf_t buf = getdqbuf(); ++- int ret = 0; ++- ++- if (!buf) ++- return -ENOMEM; ++- if (dquot->dq_off >> V2_DQBLKSIZE_BITS != blk) { ++- printk(KERN_ERR "VFS: Quota structure has offset to other " ++- "block (%u) than it should (%u).\n", blk, ++- (uint)(dquot->dq_off >> V2_DQBLKSIZE_BITS)); ++- goto out_buf; ++- } ++- if ((ret = read_blk(sb, type, blk, buf)) < 0) { ++- printk(KERN_ERR "VFS: Can't read quota data block %u\n", blk); ++- goto out_buf; ++- } ++- dh = (struct v2_disk_dqdbheader *)buf; ++- le16_add_cpu(&dh->dqdh_entries, -1); ++- if (!le16_to_cpu(dh->dqdh_entries)) { /* Block got free? */ ++- if ((ret = remove_free_dqentry(sb, type, buf, blk)) < 0 || ++- (ret = put_free_dqblk(sb, type, buf, blk)) < 0) { ++- printk(KERN_ERR "VFS: Can't move quota data block (%u) " ++- "to free list.\n", blk); ++- goto out_buf; ++- } ++- } ++- else { ++- memset(buf+(dquot->dq_off & ((1 << V2_DQBLKSIZE_BITS)-1)), 0, ++- sizeof(struct v2_disk_dqblk)); ++- if (le16_to_cpu(dh->dqdh_entries) == V2_DQSTRINBLK-1) { ++- /* Insert will write block itself */ ++- if ((ret = insert_free_dqentry(sb, type, buf, blk)) < 0) { ++- printk(KERN_ERR "VFS: Can't insert quota data block (%u) to free entry list.\n", blk); ++- goto out_buf; ++- } ++- } ++- else ++- if ((ret = write_blk(sb, type, blk, buf)) < 0) { ++- printk(KERN_ERR "VFS: Can't write quota data " ++- "block %u\n", blk); ++- goto out_buf; ++- } ++- } ++- dquot->dq_off = 0; /* Quota is now unattached */ ++-out_buf: ++- freedqbuf(buf); ++- return ret; ++-} ++- ++-/* Remove reference to dquot from tree */ ++-static int remove_tree(struct dquot *dquot, uint *blk, int depth) ++-{ ++- struct super_block *sb = dquot->dq_sb; ++- int type = dquot->dq_type; ++- dqbuf_t buf = getdqbuf(); ++- int ret = 0; ++- uint newblk; ++- __le32 *ref = (__le32 *)buf; ++- ++- if (!buf) ++- return -ENOMEM; ++- if ((ret = read_blk(sb, type, *blk, buf)) < 0) { ++- printk(KERN_ERR "VFS: Can't read quota data block %u\n", *blk); ++- goto out_buf; ++- } ++- newblk = le32_to_cpu(ref[GETIDINDEX(dquot->dq_id, depth)]); ++- if (depth == V2_DQTREEDEPTH-1) { ++- ret = free_dqentry(dquot, newblk); ++- newblk = 0; ++- } ++- else ++- ret = remove_tree(dquot, &newblk, depth+1); ++- if (ret >= 0 && !newblk) { ++- int i; ++- ref[GETIDINDEX(dquot->dq_id, depth)] = cpu_to_le32(0); ++- for (i = 0; i < V2_DQBLKSIZE && !buf[i]; i++); /* Block got empty? */ ++- /* Don't put the root block into the free block list */ ++- if (i == V2_DQBLKSIZE && *blk != V2_DQTREEOFF) { ++- put_free_dqblk(sb, type, buf, *blk); ++- *blk = 0; ++- } ++- else ++- if ((ret = write_blk(sb, type, *blk, buf)) < 0) ++- printk(KERN_ERR "VFS: Can't write quota tree " ++- "block %u.\n", *blk); ++- } ++-out_buf: ++- freedqbuf(buf); ++- return ret; ++-} ++- ++-/* Delete dquot from tree */ ++-static int v2_delete_dquot(struct dquot *dquot) ++-{ ++- uint tmp = V2_DQTREEOFF; ++- ++- if (!dquot->dq_off) /* Even not allocated? */ ++- return 0; ++- return remove_tree(dquot, &tmp, 0); ++-} ++- ++-/* Find entry in block */ ++-static loff_t find_block_dqentry(struct dquot *dquot, uint blk) ++-{ ++- dqbuf_t buf = getdqbuf(); ++- loff_t ret = 0; ++- int i; ++- struct v2_disk_dqblk *ddquot = GETENTRIES(buf); ++- ++- if (!buf) ++- return -ENOMEM; ++- if ((ret = read_blk(dquot->dq_sb, dquot->dq_type, blk, buf)) < 0) { ++- printk(KERN_ERR "VFS: Can't read quota tree block %u.\n", blk); ++- goto out_buf; ++- } ++- if (dquot->dq_id) ++- for (i = 0; i < V2_DQSTRINBLK && ++- le32_to_cpu(ddquot[i].dqb_id) != dquot->dq_id; i++); ++- else { /* ID 0 as a bit more complicated searching... */ ++- struct v2_disk_dqblk fakedquot; ++- ++- memset(&fakedquot, 0, sizeof(struct v2_disk_dqblk)); ++- for (i = 0; i < V2_DQSTRINBLK; i++) ++- if (!le32_to_cpu(ddquot[i].dqb_id) && ++- memcmp(&fakedquot, ddquot+i, sizeof(struct v2_disk_dqblk))) ++- break; ++- } ++- if (i == V2_DQSTRINBLK) { ++- printk(KERN_ERR "VFS: Quota for id %u referenced " ++- "but not present.\n", dquot->dq_id); ++- ret = -EIO; ++- goto out_buf; ++- } ++- else ++- ret = (blk << V2_DQBLKSIZE_BITS) + sizeof(struct ++- v2_disk_dqdbheader) + i * sizeof(struct v2_disk_dqblk); ++-out_buf: ++- freedqbuf(buf); ++- return ret; ++-} ++- ++-/* Find entry for given id in the tree */ ++-static loff_t find_tree_dqentry(struct dquot *dquot, uint blk, int depth) ++-{ ++- dqbuf_t buf = getdqbuf(); ++- loff_t ret = 0; ++- __le32 *ref = (__le32 *)buf; ++- ++- if (!buf) ++- return -ENOMEM; ++- if ((ret = read_blk(dquot->dq_sb, dquot->dq_type, blk, buf)) < 0) { ++- printk(KERN_ERR "VFS: Can't read quota tree block %u.\n", blk); ++- goto out_buf; ++- } ++- ret = 0; ++- blk = le32_to_cpu(ref[GETIDINDEX(dquot->dq_id, depth)]); ++- if (!blk) /* No reference? */ ++- goto out_buf; ++- if (depth < V2_DQTREEDEPTH-1) ++- ret = find_tree_dqentry(dquot, blk, depth+1); ++- else ++- ret = find_block_dqentry(dquot, blk); ++-out_buf: ++- freedqbuf(buf); ++- return ret; +++ return qtree_write_dquot(&sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i, dquot); ++ } ++ ++-/* Find entry for given id in the tree - wrapper function */ ++-static inline loff_t find_dqentry(struct dquot *dquot) ++-{ ++- return find_tree_dqentry(dquot, V2_DQTREEOFF, 0); ++-} ++- ++-static int v2_read_dquot(struct dquot *dquot) ++-{ ++- int type = dquot->dq_type; ++- loff_t offset; ++- struct v2_disk_dqblk ddquot, empty; ++- int ret = 0; ++- ++-#ifdef __QUOTA_V2_PARANOIA ++- /* Invalidated quota? */ ++- if (!dquot->dq_sb || !sb_dqopt(dquot->dq_sb)->files[type]) { ++- printk(KERN_ERR "VFS: Quota invalidated while reading!\n"); ++- return -EIO; ++- } ++-#endif ++- offset = find_dqentry(dquot); ++- if (offset <= 0) { /* Entry not present? */ ++- if (offset < 0) ++- printk(KERN_ERR "VFS: Can't read quota " ++- "structure for id %u.\n", dquot->dq_id); ++- dquot->dq_off = 0; ++- set_bit(DQ_FAKE_B, &dquot->dq_flags); ++- memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk)); ++- ret = offset; ++- } ++- else { ++- dquot->dq_off = offset; ++- if ((ret = dquot->dq_sb->s_op->quota_read(dquot->dq_sb, type, ++- (char *)&ddquot, sizeof(struct v2_disk_dqblk), offset)) ++- != sizeof(struct v2_disk_dqblk)) { ++- if (ret >= 0) ++- ret = -EIO; ++- printk(KERN_ERR "VFS: Error while reading quota " ++- "structure for id %u.\n", dquot->dq_id); ++- memset(&ddquot, 0, sizeof(struct v2_disk_dqblk)); ++- } ++- else { ++- ret = 0; ++- /* We need to escape back all-zero structure */ ++- memset(&empty, 0, sizeof(struct v2_disk_dqblk)); ++- empty.dqb_itime = cpu_to_le64(1); ++- if (!memcmp(&empty, &ddquot, sizeof(struct v2_disk_dqblk))) ++- ddquot.dqb_itime = 0; ++- } ++- disk2memdqb(&dquot->dq_dqb, &ddquot); ++- if (!dquot->dq_dqb.dqb_bhardlimit && ++- !dquot->dq_dqb.dqb_bsoftlimit && ++- !dquot->dq_dqb.dqb_ihardlimit && ++- !dquot->dq_dqb.dqb_isoftlimit) ++- set_bit(DQ_FAKE_B, &dquot->dq_flags); ++- } ++- dqstats.reads++; ++- ++- return ret; ++-} ++- ++-/* Check whether dquot should not be deleted. We know we are ++- * the only one operating on dquot (thanks to dq_lock) */ ++ static int v2_release_dquot(struct dquot *dquot) ++ { ++- if (test_bit(DQ_FAKE_B, &dquot->dq_flags) && !(dquot->dq_dqb.dqb_curinodes | dquot->dq_dqb.dqb_curspace)) ++- return v2_delete_dquot(dquot); ++- return 0; +++ return qtree_release_dquot(&sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i, dquot); ++ } ++ ++ static struct quota_format_ops v2_format_ops = { ++Index: linux-2.6.27.36/include/linux/dqblk_qtree.h ++=================================================================== ++--- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++++ linux-2.6.27.36/include/linux/dqblk_qtree.h 2009-10-08 16:32:48.000000000 +0200 ++@@ -0,0 +1,56 @@ +++/* +++ * Definitions of structures and functions for quota formats using trie +++ */ +++ +++#ifndef _LINUX_DQBLK_QTREE_H +++#define _LINUX_DQBLK_QTREE_H +++ +++#include +++ +++/* Numbers of blocks needed for updates - we count with the smallest +++ * possible block size (1024) */ +++#define QTREE_INIT_ALLOC 4 +++#define QTREE_INIT_REWRITE 2 +++#define QTREE_DEL_ALLOC 0 +++#define QTREE_DEL_REWRITE 6 +++ +++struct dquot; +++ +++/* Operations */ +++struct qtree_fmt_operations { +++ void (*mem2disk_dqblk)(void *disk, struct dquot *dquot); /* Convert given entry from in memory format to disk one */ +++ void (*disk2mem_dqblk)(struct dquot *dquot, void *disk); /* Convert given entry from disk format to in memory one */ +++ int (*is_id)(void *disk, struct dquot *dquot); /* Is this structure for given id? */ +++}; +++ +++/* Inmemory copy of version specific information */ +++struct qtree_mem_dqinfo { +++ struct super_block *dqi_sb; /* Sb quota is on */ +++ int dqi_type; /* Quota type */ +++ unsigned int dqi_blocks; /* # of blocks in quota file */ +++ unsigned int dqi_free_blk; /* First block in list of free blocks */ +++ unsigned int dqi_free_entry; /* First block with free entry */ +++ unsigned int dqi_blocksize_bits; /* Block size of quota file */ +++ unsigned int dqi_entry_size; /* Size of quota entry in quota file */ +++ unsigned int dqi_usable_bs; /* Space usable in block for quota data */ +++ unsigned int dqi_qtree_depth; /* Precomputed depth of quota tree */ +++ struct qtree_fmt_operations *dqi_ops; /* Operations for entry manipulation */ +++}; +++ +++int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); +++int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); +++int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); +++int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); +++int qtree_entry_unused(struct qtree_mem_dqinfo *info, char *disk); +++static inline int qtree_depth(struct qtree_mem_dqinfo *info) +++{ +++ unsigned int epb = info->dqi_usable_bs >> 2; +++ unsigned long long entries = epb; +++ int i; +++ +++ for (i = 1; entries < (1ULL << 32); i++) +++ entries *= epb; +++ return i; +++} +++ +++#endif /* _LINUX_DQBLK_QTREE_H */ ++Index: linux-2.6.27.36/include/linux/dqblk_v2.h ++=================================================================== ++--- linux-2.6.27.36.orig/include/linux/dqblk_v2.h 2009-10-05 17:19:01.000000000 +0200 +++++ linux-2.6.27.36/include/linux/dqblk_v2.h 2009-10-08 16:32:48.000000000 +0200 ++@@ -1,26 +1,23 @@ ++ /* ++- * Definitions of structures for vfsv0 quota format +++ * Definitions for vfsv0 quota format ++ */ ++ ++ #ifndef _LINUX_DQBLK_V2_H ++ #define _LINUX_DQBLK_V2_H ++ ++-#include +++#include ++ ++-/* id numbers of quota format */ +++/* Id number of quota format */ ++ #define QFMT_VFS_V0 2 ++ ++ /* Numbers of blocks needed for updates */ ++-#define V2_INIT_ALLOC 4 ++-#define V2_INIT_REWRITE 2 ++-#define V2_DEL_ALLOC 0 ++-#define V2_DEL_REWRITE 6 +++#define V2_INIT_ALLOC QTREE_INIT_ALLOC +++#define V2_INIT_REWRITE QTREE_INIT_REWRITE +++#define V2_DEL_ALLOC QTREE_DEL_ALLOC +++#define V2_DEL_REWRITE QTREE_DEL_REWRITE ++ ++-/* Inmemory copy of version specific information */ ++ struct v2_mem_dqinfo { ++- unsigned int dqi_blocks; ++- unsigned int dqi_free_blk; ++- unsigned int dqi_free_entry; +++ struct qtree_mem_dqinfo i; ++ }; ++ ++ #endif /* _LINUX_DQBLK_V2_H */ +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/debian-2.6.26.diff +@@ -0,0 +1,1210 @@ ++diff -u -r debian-2.6.26/Documentation/filesystems/ext2.txt debian-2.6.26_lustre.1.8.2/Documentation/filesystems/ext2.txt ++--- debian-2.6.26/Documentation/filesystems/ext2.txt 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/Documentation/filesystems/ext2.txt 2010-02-12 15:11:19.000000000 +0100 ++@@ -58,6 +58,22 @@ ++ ++ xip Use execute in place (no caching) if possible ++ +++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. ++ ++ ++diff -u -r debian-2.6.26/block/blk-core.c debian-2.6.26_lustre.1.8.2/block/blk-core.c ++--- debian-2.6.26/block/blk-core.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/block/blk-core.c 2010-02-12 15:14:32.000000000 +0100 ++@@ -1270,6 +1270,8 @@ ++ ++ #endif /* CONFIG_FAIL_MAKE_REQUEST */ ++ +++int dev_check_rdonly(struct block_device *bdev); +++ ++ /* ++ * Check whether this bio extends beyond the end of the device. ++ */ ++@@ -1371,6 +1373,12 @@ ++ ++ if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) ++ goto end_io; +++ /* this is cfs's dev_rdonly check */ +++ if (bio->bi_rw == WRITE && +++ dev_check_rdonly(bio->bi_bdev)) { +++ bio_endio(bio, 0); +++ break; +++ } ++ ++ if (should_fail_request(bio)) ++ goto end_io; ++@@ -2028,6 +2036,91 @@ ++ } ++ EXPORT_SYMBOL(kblockd_flush_work); ++ +++ /* +++ * Debug code for turning block devices "read-only" (will discard writes +++ * silently). This is for filesystem crash/recovery testing. +++ */ +++struct deventry { +++ dev_t dev; +++ struct deventry *next; +++}; +++ +++static struct deventry *devlist = NULL; +++static spinlock_t devlock = SPIN_LOCK_UNLOCKED; +++ +++int dev_check_rdonly(struct block_device *bdev) +++{ +++ struct deventry *cur; +++ if (!bdev) return 0; +++ spin_lock(&devlock); +++ cur = devlist; +++ while(cur) { +++ if (bdev->bd_dev == cur->dev) { +++ spin_unlock(&devlock); +++ return 1; +++ } +++ cur = cur->next; +++ } +++ spin_unlock(&devlock); +++ return 0; +++} +++ +++void dev_set_rdonly(struct block_device *bdev) +++{ +++ struct deventry *newdev, *cur; +++ +++ if (!bdev) +++ return; +++ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); +++ if (!newdev) +++ return; +++ +++ spin_lock(&devlock); +++ cur = devlist; +++ while(cur) { +++ if (bdev->bd_dev == cur->dev) { +++ spin_unlock(&devlock); +++ kfree(newdev); +++ return; +++ } +++ cur = cur->next; +++ } +++ newdev->dev = bdev->bd_dev; +++ newdev->next = devlist; +++ devlist = newdev; +++ spin_unlock(&devlock); +++ printk(KERN_WARNING "Turning device %s (%#x) read-only\n", +++ bdev->bd_disk ? bdev->bd_disk->disk_name : "", bdev->bd_dev); +++} +++ +++void dev_clear_rdonly(struct block_device *bdev) +++{ +++ struct deventry *cur, *last = NULL; +++ if (!bdev) return; +++ spin_lock(&devlock); +++ cur = devlist; +++ while(cur) { +++ if (bdev->bd_dev == cur->dev) { +++ if (last) +++ last->next = cur->next; +++ else +++ devlist = cur->next; +++ spin_unlock(&devlock); +++ kfree(cur); +++ printk(KERN_WARNING "Removing read-only on %s (%#x)\n", +++ bdev->bd_disk ? bdev->bd_disk->disk_name : +++ "unknown block", bdev->bd_dev); +++ return; +++ } +++ last = cur; +++ cur = cur->next; +++ } +++ spin_unlock(&devlock); +++} +++ +++EXPORT_SYMBOL(dev_set_rdonly); +++EXPORT_SYMBOL(dev_clear_rdonly); +++ ++ int __init blk_dev_init(void) ++ { ++ int i; ++diff -u -r debian-2.6.26/drivers/md/raid5.c debian-2.6.26_lustre.1.8.2/drivers/md/raid5.c ++--- debian-2.6.26/drivers/md/raid5.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/drivers/md/raid5.c 2010-02-12 15:19:25.000000000 +0100 ++@@ -1817,6 +1817,8 @@ ++ bi->bi_next = *bip; ++ *bip = bi; ++ bi->bi_phys_segments ++; +++ if (bio_sync(bi) && !forwrite) +++ clear_bit(R5_UPTODATE, &sh->dev[dd_idx].flags); /* force to read from disk. */ ++ spin_unlock_irq(&conf->device_lock); ++ spin_unlock(&sh->lock); ++ ++@@ -3699,6 +3701,8 @@ ++ test_bit(BIO_UPTODATE, &bi->bi_flags) ++ ? 0 : -EIO); ++ } +++ if (bio_sync(bi)) +++ raid5_unplug_device(q); ++ return 0; ++ } ++ ++diff -u -r debian-2.6.26/drivers/scsi/Kconfig debian-2.6.26_lustre.1.8.2/drivers/scsi/Kconfig ++--- debian-2.6.26/drivers/scsi/Kconfig 2009-12-26 09:14:53.000000000 +0100 +++++ debian-2.6.26_lustre.1.8.2/drivers/scsi/Kconfig 2010-02-12 15:20:02.000000000 +0100 ++@@ -81,6 +81,14 @@ ++ In this case, do not compile the driver for your SCSI host adapter ++ (below) as a module either. ++ +++config SD_IOSTATS +++ bool "Enable SCSI disk I/O stats" +++ depends on BLK_DEV_SD +++ default y +++ ---help--- +++ This enables SCSI disk I/O stats collection. You must also enable +++ /proc file system support if you want this feature. +++ ++ config CHR_DEV_ST ++ tristate "SCSI tape support" ++ depends on SCSI ++diff -u -r debian-2.6.26/drivers/scsi/scsi_proc.c debian-2.6.26_lustre.1.8.2/drivers/scsi/scsi_proc.c ++--- debian-2.6.26/drivers/scsi/scsi_proc.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/drivers/scsi/scsi_proc.c 2010-02-12 15:22:05.000000000 +0100 ++@@ -40,7 +40,8 @@ ++ /* 4K page size, but our output routines, use some slack for overruns */ ++ #define PROC_BLOCK_SIZE (3*1024) ++ ++-static struct proc_dir_entry *proc_scsi; +++struct proc_dir_entry *proc_scsi; +++EXPORT_SYMBOL(proc_scsi); ++ ++ /* Protect sht->present and sht->proc_dir */ ++ static DEFINE_MUTEX(global_host_template_mutex); ++diff -u -r debian-2.6.26/drivers/scsi/sd.c debian-2.6.26_lustre.1.8.2/drivers/scsi/sd.c ++--- debian-2.6.26/drivers/scsi/sd.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/drivers/scsi/sd.c 2010-02-17 14:13:32.000000000 +0100 ++@@ -107,6 +107,24 @@ ++ * object after last put) */ ++ static DEFINE_MUTEX(sd_ref_mutex); ++ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++# include +++# include +++struct proc_dir_entry *sd_iostats_procdir = NULL; +++char sd_iostats_procdir_name[] = "sd_iostats"; +++static struct file_operations sd_iostats_proc_fops; +++ +++extern void sd_iostats_init(void); +++extern void sd_iostats_fini(void); +++void sd_iostats_start_req(struct scsi_cmnd *SCpnt); +++void sd_iostats_finish_req(struct scsi_cmnd *SCpnt); +++#else +++static inline void sd_iostats_init(void) {} +++static inline void sd_iostats_fini(void) {} +++static inline void sd_iostats_start_req(struct scsi_cmnd *SCpnt) {} +++static inline void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) {} +++#endif +++ ++ static const char *sd_cache_types[] = { ++ "write through", "none", "write back", ++ "write back, no read (daft)" ++@@ -531,6 +549,8 @@ ++ } ++ SCpnt->sdb.length = this_count * sdp->sector_size; ++ +++ sd_iostats_start_req(SCpnt); +++ ++ /* ++ * We shouldn't disconnect in the middle of a sector, so with a dumb ++ * host adapter, it's safe to assume that we can at least transfer ++@@ -667,7 +687,7 @@ ++ int diskinfo[4]; ++ ++ /* default to most commonly used values */ ++- diskinfo[0] = 0x40; /* 1 << 6 */ +++ diskinfo[0] = 0x40; /* 1 << 6 */ ++ diskinfo[1] = 0x20; /* 1 << 5 */ ++ diskinfo[2] = sdkp->capacity >> 11; ++ ++@@ -1023,6 +1043,7 @@ ++ break; ++ } ++ out: +++ sd_iostats_finish_req(SCpnt); ++ return good_bytes; ++ } ++ ++@@ -1711,6 +1732,36 @@ ++ gd->flags = GENHD_FL_DRIVERFS; ++ if (sdp->removable) ++ gd->flags |= GENHD_FL_REMOVABLE; +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++ sdkp->stats = kzalloc(sizeof(iostat_stats_t), GFP_KERNEL); +++ if (!sdkp->stats) { +++ printk(KERN_WARNING "cannot allocate iostat structure for" +++ "%s\n", gd->disk_name); +++ } else { +++ do_gettimeofday(&sdkp->stats->iostat_timeval); +++ sdkp->stats->iostat_queue_stamp = jiffies; +++ spin_lock_init(&sdkp->stats->iostat_lock); +++ if (sd_iostats_procdir) { +++ struct proc_dir_entry *pde; +++ pde = create_proc_entry(gd->disk_name, S_IRUGO | S_IWUSR, +++ sd_iostats_procdir); +++ if (!pde) { +++ printk(KERN_WARNING "Can't create /proc/scsi/" +++ "%s/%s\n", +++ sd_iostats_procdir_name, +++ gd->disk_name); +++ kfree(sdkp->stats); +++ sdkp->stats = NULL; +++ } else { +++ pde->proc_fops = &sd_iostats_proc_fops; +++ pde->data = gd; +++ } +++ } else { +++ kfree(sdkp->stats); +++ sdkp->stats = NULL; +++ } +++ } +++#endif ++ ++ dev_set_drvdata(dev, sdkp); ++ add_disk(gd); ++@@ -1755,6 +1806,366 @@ ++ return 0; ++ } ++ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++static int +++ sd_iostats_seq_show(struct seq_file *seq, void *v) +++ { +++ struct timeval now; +++ struct gendisk *disk = seq->private; +++ iostat_stats_t *stats; +++ unsigned long long read_len; +++ unsigned long long read_len_tot; +++ unsigned long read_num; +++ unsigned long read_num_tot; +++ unsigned long long write_len; +++ unsigned long long write_len_tot; +++ unsigned long write_num; +++ unsigned long write_num_tot; +++ int i; +++ int maxi; +++ +++ stats = scsi_disk(disk)->stats; +++ if (stats == NULL) { +++ printk(KERN_ERR "sd_iostats_seq_show: NULL stats entry\n"); +++ BUG(); +++ } +++ +++ do_gettimeofday(&now); +++ now.tv_sec -= stats->iostat_timeval.tv_sec; +++ now.tv_usec -= stats->iostat_timeval.tv_usec; +++ if (now.tv_usec < 0) { +++ now.tv_usec += 1000000; +++ now.tv_sec--; +++ } +++ +++ /* this sampling races with updates */ +++ seq_printf(seq, "index: %lu snapshot_time: %lu.%06lu\n", +++ (unsigned long) scsi_disk(disk)->index, +++ now.tv_sec, now.tv_usec); +++ +++ for (i = IOSTAT_NCOUNTERS - 1; i > 0; i--) +++ if (stats->iostat_read_histogram[i].iostat_count != 0 || +++ stats->iostat_write_histogram[i].iostat_count != 0) +++ break; +++ maxi = i; +++ +++ seq_printf(seq, "%8s %8s %12s %8s %12s\n", "size", +++ "reads", "total", "writes", "total"); +++ +++ read_len_tot = write_len_tot = 0; +++ read_num_tot = write_num_tot = 0; +++ for (i = 0; i <= maxi; i++) { +++ read_len = stats->iostat_read_histogram[i].iostat_size; +++ read_len_tot += read_len; +++ read_num = stats->iostat_read_histogram[i].iostat_count; +++ read_num_tot += read_num; +++ +++ write_len = stats->iostat_write_histogram[i].iostat_size; +++ write_len_tot += write_len; +++ write_num = stats->iostat_write_histogram[i].iostat_count; +++ write_num_tot += write_num; +++ +++ seq_printf (seq, "%8d %8lu %12llu %8lu %12llu\n", +++ 512<iostat_queue_ticks[i]; +++ if (ticks == 0) +++ continue; +++ percent = stats->iostat_queue_ticks[i] * 100; +++ do_div(percent, stats->iostat_queue_ticks_sum); +++ seq_printf(seq, "%8d %8llu %8llu\n", i, ticks, percent); +++ } +++ +++ if (stats->iostat_reqs != 0) { +++ unsigned long long aveseek = 0, percent = 0; +++ +++ if (stats->iostat_seeks) { +++ aveseek = stats->iostat_seek_sectors; +++ do_div(aveseek, stats->iostat_seeks); +++ percent = stats->iostat_seeks * 100; +++ do_div(percent, stats->iostat_reqs); +++ } +++ +++ seq_printf(seq, "\n%llu sectors in %llu reqs: %llu seek(s) over " +++ "%llu sectors in ave, %llu%% of all reqs\n", +++ stats->iostat_sectors, stats->iostat_reqs, +++ stats->iostat_seeks, aveseek, percent); +++ } +++ +++ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "process time", "reads", +++ "%%", "writes", "%%"); +++ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { +++ unsigned long read_percent = 0, write_percent = 0; +++ if (stats->iostat_wtime[i] == 0 && +++ stats->iostat_rtime[i] == 0) +++ continue; +++ if (stats->iostat_read_reqs) +++ read_percent = stats->iostat_rtime[i] * 100 / +++ stats->iostat_read_reqs; +++ if (stats->iostat_write_reqs) +++ write_percent = stats->iostat_wtime[i] * 100 / +++ stats->iostat_write_reqs; +++ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", +++ jiffies_to_msecs(((1UL << i) >> 1) << 1), +++ stats->iostat_rtime[i], read_percent, +++ stats->iostat_wtime[i], write_percent); +++ } +++ +++ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "time in queue", "reads", +++ "%%", "writes", "%%"); +++ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { +++ unsigned long read_percent = 0, write_percent = 0; +++ if (stats->iostat_wtime_in_queue[i] == 0 && +++ stats->iostat_rtime_in_queue[i] == 0) +++ continue; +++ if (stats->iostat_read_reqs) +++ read_percent = stats->iostat_rtime_in_queue[i] * 100 / +++ stats->iostat_read_reqs; +++ if (stats->iostat_write_reqs) +++ write_percent = stats->iostat_wtime_in_queue[i] * 100 / +++ stats->iostat_write_reqs; +++ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", +++ jiffies_to_msecs(((1UL << i) >> 1) << 1), +++ stats->iostat_rtime_in_queue[i], +++ read_percent, +++ stats->iostat_wtime_in_queue[i], +++ write_percent); +++ } +++ +++ return 0; +++ } +++ +++ static void * +++ sd_iostats_seq_start(struct seq_file *p, loff_t *pos) +++ { +++ return (*pos == 0) ? (void *)1 : NULL; +++ } +++ +++ static void * +++ sd_iostats_seq_next(struct seq_file *p, void *v, loff_t *pos) +++ { +++ ++*pos; +++ return NULL; +++ } +++ +++ static void +++ sd_iostats_seq_stop(struct seq_file *p, void *v) +++ { +++ } +++ +++ static struct seq_operations sd_iostats_seqops = { +++ .start = sd_iostats_seq_start, +++ .stop = sd_iostats_seq_stop, +++ .next = sd_iostats_seq_next, +++ .show = sd_iostats_seq_show, +++ }; +++ +++ static int +++ sd_iostats_seq_open (struct inode *inode, struct file *file) +++ { +++ int rc; +++ +++ rc = seq_open(file, &sd_iostats_seqops); +++ if (rc != 0) +++ return rc; +++ +++ ((struct seq_file *)file->private_data)->private = PDE(inode)->data; +++ return 0; +++ } +++ +++ static ssize_t +++ sd_iostats_seq_write(struct file *file, const char *buffer, +++ size_t len, loff_t *off) +++ { +++ struct seq_file *seq = file->private_data; +++ struct gendisk *disk = seq->private; +++ iostat_stats_t *stats = scsi_disk(disk)->stats; +++ unsigned long flags; +++ unsigned long qdepth; +++ +++ +++ spin_lock_irqsave (&stats->iostat_lock, flags); +++ qdepth = stats->iostat_queue_depth; +++ memset (stats, 0, offsetof(iostat_stats_t, iostat_lock)); +++ do_gettimeofday(&stats->iostat_timeval); +++ stats->iostat_queue_stamp = jiffies; +++ stats->iostat_queue_depth = qdepth; +++ spin_unlock_irqrestore (&stats->iostat_lock, flags); +++ +++ return len; +++ } +++ +++ static struct file_operations sd_iostats_proc_fops = { +++ .owner = THIS_MODULE, +++ .open = sd_iostats_seq_open, +++ .read = seq_read, +++ .write = sd_iostats_seq_write, +++ .llseek = seq_lseek, +++ .release = seq_release, +++ }; +++ +++ extern struct proc_dir_entry *proc_scsi; +++ +++ void +++ sd_iostats_init(void) +++ { +++ if (proc_scsi == NULL) { +++ printk(KERN_WARNING "No access to sd iostats: " +++ "proc_scsi is NULL\n"); +++ return; +++ } +++ +++ sd_iostats_procdir = create_proc_entry(sd_iostats_procdir_name, +++ S_IFDIR | S_IRUGO | S_IXUGO, +++ proc_scsi); +++ if (sd_iostats_procdir == NULL) { +++ printk(KERN_WARNING "No access to sd iostats: " +++ "can't create /proc/scsi/%s\n", sd_iostats_procdir_name); +++ return; +++ } +++ } +++ +++ void sd_iostats_fini(void) +++ { +++ if (proc_scsi != NULL && sd_iostats_procdir != NULL) +++ remove_proc_entry(sd_iostats_procdir_name, proc_scsi); +++ +++ sd_iostats_procdir = NULL; +++ } +++ +++ void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) +++ { +++ struct request *rq = SCpnt->request; +++ iostat_stats_t *stats; +++ unsigned long *tcounter; +++ int tbucket; +++ int tmp; +++ unsigned long irqflags; +++ unsigned long i; +++ +++ stats = scsi_disk(rq->rq_disk)->stats; +++ if (stats == NULL) +++ return; +++ +++ tmp = jiffies - rq->start_time; +++ for (tbucket = 0; tmp > 1; tbucket++) +++ tmp >>= 1; +++ if (tbucket >= IOSTAT_NCOUNTERS) +++ tbucket = IOSTAT_NCOUNTERS - 1; +++ //printk("%u ticks in D to %u\n", jiffies - rq->start_time, tbucket); +++ +++ tcounter = rq_data_dir(rq) == WRITE ? +++ &stats->iostat_wtime[tbucket] : &stats->iostat_rtime[tbucket]; +++ +++ spin_lock_irqsave(&stats->iostat_lock, irqflags); +++ +++ /* update delay stats */ +++ (*tcounter)++; +++ +++ /* update queue depth stats */ +++ i = stats->iostat_queue_depth; +++ if (i >= IOSTAT_NCOUNTERS) +++ i = IOSTAT_NCOUNTERS - 1; +++ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; +++ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; +++ BUG_ON(stats->iostat_queue_depth == 0); +++ stats->iostat_queue_depth--; +++ +++ /* update seek stats. XXX: not sure about nr_sectors */ +++ stats->iostat_sectors += rq->nr_sectors; +++ stats->iostat_reqs++; +++ if (rq->sector != stats->iostat_next_sector) { +++ stats->iostat_seek_sectors += +++ rq->sector > stats->iostat_next_sector ? +++ rq->sector - stats->iostat_next_sector : +++ stats->iostat_next_sector - rq->sector; +++ stats->iostat_seeks++; +++ } +++ stats->iostat_next_sector = rq->sector + rq->nr_sectors; +++ +++ stats->iostat_queue_stamp = jiffies; +++ +++ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); +++ } +++ +++ void sd_iostats_start_req(struct scsi_cmnd *SCpnt) +++ { +++ struct request *rq = SCpnt->request; +++ iostat_stats_t *stats; +++ iostat_counter_t *counter; +++ int bucket; +++ int tbucket; +++ int tmp; +++ unsigned long irqflags; +++ unsigned long i; +++ int nsect; +++ +++ stats = scsi_disk(rq->rq_disk)->stats; +++ if (stats == NULL) +++ return; +++ +++ nsect = scsi_bufflen(SCpnt) >> 9; +++ for (bucket = 0, tmp = nsect; tmp > 1; bucket++) +++ tmp >>= 1; +++ +++ if (bucket >= IOSTAT_NCOUNTERS) { +++ printk (KERN_ERR "sd_iostats_bump: nsect %d too big\n", nsect); +++ BUG(); +++ } +++ +++ counter = rq_data_dir(rq) == WRITE ? +++ &stats->iostat_write_histogram[bucket] : +++ &stats->iostat_read_histogram[bucket]; +++ +++ tmp = jiffies - rq->start_time; +++ for (tbucket = 0; tmp > 1; tbucket++) +++ tmp >>= 1; +++ if (tbucket >= IOSTAT_NCOUNTERS) +++ tbucket = IOSTAT_NCOUNTERS - 1; +++ //printk("%u ticks in Q to %u\n", jiffies - rq->start_time, tbucket); +++ +++ /* an ugly hack to know exact processing time. the right +++ * solution is to add one more field to struct request +++ * hopefully it will break nothing ... */ +++ rq->start_time = jiffies; +++ +++ spin_lock_irqsave(&stats->iostat_lock, irqflags); +++ +++ /* update queue depth stats */ +++ i = stats->iostat_queue_depth; +++ if (i >= IOSTAT_NCOUNTERS) +++ i = IOSTAT_NCOUNTERS - 1; +++ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; +++ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; +++ stats->iostat_queue_depth++; +++ +++ /* update delay stats */ +++ if (rq_data_dir(rq) == WRITE) { +++ stats->iostat_wtime_in_queue[tbucket]++; +++ stats->iostat_write_reqs++; +++ } else { +++ stats->iostat_rtime_in_queue[tbucket]++; +++ stats->iostat_read_reqs++; +++ } +++ +++ /* update size stats */ +++ counter->iostat_size += nsect; +++ counter->iostat_count++; +++ +++ stats->iostat_queue_stamp = jiffies; +++ +++ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); +++} +++#endif +++ ++ /** ++ * scsi_disk_release - Called to free the scsi_disk structure ++ * @dev: pointer to embedded class device ++@@ -1773,6 +2184,13 @@ ++ idr_remove(&sd_index_idr, sdkp->index); ++ spin_unlock(&sd_index_lock); ++ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++ if (sdkp->stats) { +++ remove_proc_entry(disk->disk_name, sd_iostats_procdir); +++ kfree(sdkp->stats); +++ sdkp->stats = NULL; +++ } +++#endif ++ disk->private_data = NULL; ++ put_disk(disk); ++ put_device(&sdkp->device->sdev_gendev); ++@@ -1890,6 +2308,8 @@ ++ if (!majors) ++ return -ENODEV; ++ +++ sd_iostats_init(); +++ ++ err = class_register(&sd_disk_class); ++ if (err) ++ goto err_out; ++@@ -1905,6 +2325,7 @@ ++ err_out: ++ for (i = 0; i < SD_MAJORS; i++) ++ unregister_blkdev(sd_major(i), "sd"); +++ sd_iostats_fini(); ++ return err; ++ } ++ ++diff -u -r debian-2.6.26/fs/block_dev.c debian-2.6.26_lustre.1.8.2/fs/block_dev.c ++--- debian-2.6.26/fs/block_dev.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/fs/block_dev.c 2010-02-17 14:19:50.000000000 +0100 ++@@ -1125,6 +1125,7 @@ ++ if (bdev != bdev->bd_contains) ++ victim = bdev->bd_contains; ++ bdev->bd_contains = NULL; +++ dev_clear_rdonly(bdev); ++ } ++ unlock_kernel(); ++ mutex_unlock(&bdev->bd_mutex); ++diff -u -r debian-2.6.26/fs/dcache.c debian-2.6.26_lustre.1.8.2/fs/dcache.c ++--- debian-2.6.26/fs/dcache.c 2009-12-26 09:14:56.000000000 +0100 +++++ debian-2.6.26_lustre.1.8.2/fs/dcache.c 2010-02-17 14:24:24.000000000 +0100 ++@@ -250,6 +250,13 @@ ++ spin_unlock(&dcache_lock); ++ return 0; ++ } +++ +++ /* network invalidation by Lustre */ +++ if (dentry->d_flags & DCACHE_LUSTRE_INVALID) { +++ spin_unlock(&dcache_lock); +++ return 0; +++ } +++ ++ /* ++ * Check whether to do a partial shrink_dcache ++ * to get rid of unused child entries. ++@@ -1427,14 +1434,23 @@ ++ * ++ * Adds a dentry to the hash according to its name. ++ */ ++- +++ +++void d_rehash_cond(struct dentry * entry, int lock) +++{ +++ if (lock) +++ spin_lock(&dcache_lock); +++ spin_lock(&entry->d_lock); +++ _d_rehash(entry); +++ spin_unlock(&entry->d_lock); +++ if (lock) +++ spin_unlock(&dcache_lock); +++} +++ +++EXPORT_SYMBOL(d_rehash_cond); +++ ++ void d_rehash(struct dentry * entry) ++ { ++- spin_lock(&dcache_lock); ++- spin_lock(&entry->d_lock); ++- _d_rehash(entry); ++- spin_unlock(&entry->d_lock); ++- spin_unlock(&dcache_lock); +++ d_rehash_cond(entry, 1); ++ } ++ ++ #define do_switch(x,y) do { \ ++@@ -1510,7 +1526,7 @@ ++ * Update the dcache to reflect the move of a file name. Negative ++ * dcache entries should not be moved in this way. ++ */ ++-static void d_move_locked(struct dentry * dentry, struct dentry * target) +++void d_move_locked(struct dentry * dentry, struct dentry * target) ++ { ++ struct hlist_head *list; ++ ++@@ -1568,6 +1584,7 @@ ++ spin_unlock(&dentry->d_lock); ++ write_sequnlock(&rename_lock); ++ } +++EXPORT_SYMBOL(d_move_locked); ++ ++ /** ++ * d_move - move a dentry ++@@ -2051,6 +2068,7 @@ ++ ++ return result; ++ } +++EXPORT_SYMBOL(is_subdir); ++ ++ void d_genocide(struct dentry *root) ++ { ++diff -u -r debian-2.6.26/fs/filesystems.c debian-2.6.26_lustre.1.8.2/fs/filesystems.c ++--- debian-2.6.26/fs/filesystems.c 2009-12-26 09:14:56.000000000 +0100 +++++ debian-2.6.26_lustre.1.8.2/fs/filesystems.c 2010-02-17 14:26:59.000000000 +0100 ++@@ -28,7 +28,9 @@ ++ */ ++ ++ static struct file_system_type *file_systems; ++-static DEFINE_RWLOCK(file_systems_lock); +++DEFINE_RWLOCK(file_systems_lock); +++ +++EXPORT_SYMBOL(file_systems_lock); ++ ++ /* WARNING: This can be used only if we _already_ own a reference */ ++ void get_filesystem(struct file_system_type *fs) ++diff -u -r debian-2.6.26/fs/inode.c debian-2.6.26_lustre.1.8.2/fs/inode.c ++--- debian-2.6.26/fs/inode.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/fs/inode.c 2010-02-17 14:27:51.000000000 +0100 ++@@ -409,7 +409,9 @@ ++ int nr_scanned; ++ unsigned long reap = 0; ++ ++- mutex_lock(&iprune_mutex); +++ if (!mutex_trylock(&iprune_mutex)) +++ return; +++ ++ spin_lock(&inode_lock); ++ for (nr_scanned = 0; nr_scanned < nr_to_scan; nr_scanned++) { ++ struct inode *inode; ++diff -u -r debian-2.6.26/fs/jbd2/checkpoint.c debian-2.6.26_lustre.1.8.2/fs/jbd2/checkpoint.c ++--- debian-2.6.26/fs/jbd2/checkpoint.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/fs/jbd2/checkpoint.c 2010-02-17 14:28:49.000000000 +0100 ++@@ -696,6 +696,7 @@ ++ J_ASSERT(transaction->t_checkpoint_list == NULL); ++ J_ASSERT(transaction->t_checkpoint_io_list == NULL); ++ J_ASSERT(transaction->t_updates == 0); +++ J_ASSERT(list_empty(&transaction->t_jcb)); ++ J_ASSERT(journal->j_committing_transaction != transaction); ++ J_ASSERT(journal->j_running_transaction != transaction); ++ ++diff -u -r debian-2.6.26/fs/jbd2/commit.c debian-2.6.26_lustre.1.8.2/fs/jbd2/commit.c ++--- debian-2.6.26/fs/jbd2/commit.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/fs/jbd2/commit.c 2010-02-17 14:29:44.000000000 +0100 ++@@ -874,6 +874,30 @@ ++ transaction can be removed from any checkpoint list it was on ++ before. */ ++ +++ /* +++ * Call any callbacks that had been registered for handles in this +++ * transaction. It is up to the callback to free any allocated +++ * memory. +++ * +++ * The spinlocking (t_jcb_lock) here is surely unnecessary... +++ */ +++ spin_lock(&commit_transaction->t_jcb_lock); +++ if (!list_empty(&commit_transaction->t_jcb)) { +++ struct list_head *p, *n; +++ int error = is_journal_aborted(journal); +++ +++ list_for_each_safe(p, n, &commit_transaction->t_jcb) { +++ struct journal_callback *jcb; +++ +++ jcb = list_entry(p, struct journal_callback, jcb_list); +++ list_del(p); +++ spin_unlock(&commit_transaction->t_jcb_lock); +++ jcb->jcb_func(jcb, error); +++ spin_lock(&commit_transaction->t_jcb_lock); +++ } +++ } +++ spin_unlock(&commit_transaction->t_jcb_lock); +++ ++ jbd_debug(3, "JBD: commit phase 7\n"); ++ ++ J_ASSERT(commit_transaction->t_sync_datalist == NULL); ++diff -u -r debian-2.6.26/fs/jbd2/journal.c debian-2.6.26_lustre.1.8.2/fs/jbd2/journal.c ++--- debian-2.6.26/fs/jbd2/journal.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/fs/jbd2/journal.c 2010-02-17 14:38:15.000000000 +0100 ++@@ -82,6 +82,8 @@ ++ EXPORT_SYMBOL(jbd2_journal_invalidatepage); ++ EXPORT_SYMBOL(jbd2_journal_try_to_free_buffers); ++ EXPORT_SYMBOL(jbd2_journal_force_commit); +++EXPORT_SYMBOL(jbd2_journal_callback_set); +++EXPORT_SYMBOL(jbd2_journal_bmap); ++ ++ static int journal_convert_superblock_v1(journal_t *, journal_superblock_t *); ++ static void __journal_abort_soft (journal_t *journal, int errno); ++@@ -460,6 +462,7 @@ ++ spin_unlock(&journal->j_state_lock); ++ return ret; ++ } +++EXPORT_SYMBOL(jbd2_log_start_commit); ++ ++ /* ++ * Force and wait upon a commit if the calling process is not within ++diff -u -r debian-2.6.26/fs/jbd2/transaction.c debian-2.6.26_lustre.1.8.2/fs/jbd2/transaction.c ++--- debian-2.6.26/fs/jbd2/transaction.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/fs/jbd2/transaction.c 2010-02-17 14:42:20.000000000 +0100 ++@@ -51,10 +51,12 @@ ++ transaction->t_state = T_RUNNING; ++ transaction->t_tid = journal->j_transaction_sequence++; ++ transaction->t_expires = jiffies + journal->j_commit_interval; +++ INIT_LIST_HEAD(&transaction->t_jcb); ++ spin_lock_init(&transaction->t_handle_lock); +++ spin_lock_init(&transaction->t_jcb_lock); ++ ++ /* Set up the commit timer for the new transaction. */ ++- journal->j_commit_timer.expires = round_jiffies(transaction->t_expires); +++ journal->j_commit_timer.expires = transaction->t_expires; ++ add_timer(&journal->j_commit_timer); ++ ++ J_ASSERT(journal->j_running_transaction == NULL); ++@@ -252,6 +254,7 @@ ++ memset(handle, 0, sizeof(*handle)); ++ handle->h_buffer_credits = nblocks; ++ handle->h_ref = 1; +++ INIT_LIST_HEAD(&handle->h_jcb); ++ ++ lockdep_init_map(&handle->h_lockdep_map, "jbd2_handle", ++ &jbd2_handle_key, 0); ++@@ -1350,6 +1353,36 @@ ++ } ++ ++ /** +++ * void jbd2_journal_callback_set() - Register a callback function for this handle. +++ * @handle: handle to attach the callback to. +++ * @func: function to callback. +++ * @jcb: structure with additional information required by func() , and +++ * some space for jbd2 internal information. +++ * +++ * The function will be +++ * called when the transaction that this handle is part of has been +++ * committed to disk with the original callback data struct and the +++ * error status of the journal as parameters. There is no guarantee of +++ * ordering between handles within a single transaction, nor between +++ * callbacks registered on the same handle. +++ * +++ * The caller is responsible for allocating the journal_callback struct. +++ * This is to allow the caller to add as much extra data to the callback +++ * as needed, but reduce the overhead of multiple allocations. The caller +++ * allocated struct must start with a struct journal_callback at offset 0, +++ * and has the caller-specific data afterwards. +++ */ +++void jbd2_journal_callback_set(handle_t *handle, +++ void (*func)(struct journal_callback *jcb, int error), +++ struct journal_callback *jcb) +++{ +++ spin_lock(&handle->h_transaction->t_jcb_lock); +++ list_add_tail(&jcb->jcb_list, &handle->h_jcb); +++ spin_unlock(&handle->h_transaction->t_jcb_lock); +++ jcb->jcb_func = func; +++} +++ +++/** ++ * int jbd2_journal_stop() - complete a transaction ++ * @handle: tranaction to complete. ++ * ++@@ -1423,6 +1456,11 @@ ++ wake_up(&journal->j_wait_transaction_locked); ++ } ++ +++ /* Move callbacks from the handle to the transaction. */ +++ spin_lock(&transaction->t_jcb_lock); +++ list_splice(&handle->h_jcb, &transaction->t_jcb); +++ spin_unlock(&transaction->t_jcb_lock); +++ ++ /* ++ * If the handle is marked SYNC, we need to set another commit ++ * going! We also want to force a commit if the current ++diff -u -r debian-2.6.26/fs/namespace.c debian-2.6.26_lustre.1.8.2/fs/namespace.c ++--- debian-2.6.26/fs/namespace.c 2009-12-26 09:14:56.000000000 +0100 +++++ debian-2.6.26_lustre.1.8.2/fs/namespace.c 2010-02-17 14:43:07.000000000 +0100 ++@@ -1660,6 +1660,7 @@ ++ ++ return do_add_mount(mnt, nd, mnt_flags, NULL); ++ } +++EXPORT_SYMBOL(set_fs_pwd); ++ ++ /* ++ * add a mount into a namespace's mount tree ++diff -u -r debian-2.6.26/include/linux/blkdev.h debian-2.6.26_lustre.1.8.2/include/linux/blkdev.h ++--- debian-2.6.26/include/linux/blkdev.h 2009-12-26 09:14:55.000000000 +0100 +++++ debian-2.6.26_lustre.1.8.2/include/linux/blkdev.h 2010-02-18 07:44:31.000000000 +0100 ++@@ -806,7 +806,7 @@ ++ #define MAX_PHYS_SEGMENTS 128 ++ #define MAX_HW_SEGMENTS 128 ++ #define SAFE_MAX_SECTORS 255 ++-#define BLK_DEF_MAX_SECTORS 1024 +++#define BLK_DEF_MAX_SECTORS 2048 ++ ++ #define MAX_SEGMENT_SIZE 65536 ++ ++diff -u -r debian-2.6.26/include/linux/dcache.h debian-2.6.26_lustre.1.8.2/include/linux/dcache.h ++--- debian-2.6.26/include/linux/dcache.h 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/include/linux/dcache.h 2010-02-18 07:46:08.000000000 +0100 ++@@ -173,6 +173,7 @@ ++ ++ #define DCACHE_REFERENCED 0x0008 /* Recently used, don't discard. */ ++ #define DCACHE_UNHASHED 0x0010 +++#define DCACHE_LUSTRE_INVALID 0x0040 /* Lustre invalidated */ ++ ++ #define DCACHE_INOTIFY_PARENT_WATCHED 0x0020 /* Parent inode is watched */ ++ ++@@ -250,6 +251,7 @@ ++ * This adds the entry to the hash queues. ++ */ ++ extern void d_rehash(struct dentry *); +++extern void d_rehash_cond(struct dentry *, int lock); ++ ++ /** ++ * d_add - add dentry to hash queues ++@@ -285,6 +287,7 @@ ++ ++ /* used for rename() and baskets */ ++ extern void d_move(struct dentry *, struct dentry *); +++extern void d_move_locked(struct dentry *, struct dentry *); ++ ++ /* appendix may either be NULL or be used for transname suffixes */ ++ extern struct dentry * d_lookup(struct dentry *, struct qstr *); ++diff -u -r debian-2.6.26/include/linux/fs.h debian-2.6.26_lustre.1.8.2/include/linux/fs.h ++--- debian-2.6.26/include/linux/fs.h 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/include/linux/fs.h 2010-02-18 07:57:56.000000000 +0100 ++@@ -1832,6 +1832,10 @@ ++ extern void submit_bio(int, struct bio *); ++ extern int bdev_read_only(struct block_device *); ++ #endif +++#define HAVE_CLEAR_RDONLY_ON_PUT +++extern void dev_set_rdonly(struct block_device *bdev); +++extern int dev_check_rdonly(struct block_device *bdev); +++extern void dev_clear_rdonly(struct block_device *bdev); ++ extern int set_blocksize(struct block_device *, int); ++ extern int sb_set_blocksize(struct super_block *, int); ++ extern int sb_min_blocksize(struct super_block *, int); ++@@ -1930,6 +1934,7 @@ ++ ++ extern const struct file_operations generic_ro_fops; ++ +++extern rwlock_t file_systems_lock; ++ #define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m)) ++ ++ extern int vfs_readlink(struct dentry *, char __user *, int, const char *); ++diff -u -r debian-2.6.26/include/linux/jbd2.h debian-2.6.26_lustre.1.8.2/include/linux/jbd2.h ++--- debian-2.6.26/include/linux/jbd2.h 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/include/linux/jbd2.h 2010-02-18 08:08:30.000000000 +0100 ++@@ -379,6 +379,27 @@ ++ bit_spin_unlock(BH_JournalHead, &bh->b_state); ++ } ++ +++#define HAVE_JOURNAL_CALLBACK_STATUS +++/** +++ * struct journal_callback - Base structure for callback information. +++ * @jcb_list: list information for other callbacks attached to the same handle. +++ * @jcb_func: Function to call with this callback structure. +++ * +++ * This struct is a 'seed' structure for a using with your own callback +++ * structs. If you are using callbacks you must allocate one of these +++ * or another struct of your own definition which has this struct +++ * as it's first element and pass it to journal_callback_set(). +++ * +++ * This is used internally by jbd2 to maintain callback information. +++ * +++ * See journal_callback_set for more information. +++ **/ +++struct journal_callback { +++ struct list_head jcb_list; /* t_jcb_lock */ +++ void (*jcb_func)(struct journal_callback *jcb, int error); +++ /* user data goes here */ +++}; +++ ++ struct jbd2_revoke_table_s; ++ ++ /** ++@@ -387,6 +408,7 @@ ++ * @h_transaction: Which compound transaction is this update a part of? ++ * @h_buffer_credits: Number of remaining buffers we are allowed to dirty. ++ * @h_ref: Reference count on this handle +++ * @h_jcb: List of application registered callbacks for this handle. ++ * @h_err: Field for caller's use to track errors through large fs operations ++ * @h_sync: flag for sync-on-close ++ * @h_jdata: flag to force data journaling ++@@ -412,6 +434,13 @@ ++ /* operations */ ++ int h_err; ++ +++ /* +++ * List of application registered callbacks for this handle. The +++ * function(s) will be called after the transaction that this handle is +++ * part of has been committed to disk. [t_jcb_lock] +++ */ +++ struct list_head h_jcb; +++ ++ /* Flags [no locking] */ ++ unsigned int h_sync: 1; /* sync-on-close */ ++ unsigned int h_jdata: 1; /* force data journaling */ ++@@ -467,6 +496,9 @@ ++ * j_state_lock ++ * ->j_list_lock (journal_unmap_buffer) ++ * +++ * t_handle_lock +++ * ->t_jcb_lock +++ * ++ */ ++ ++ struct transaction_s ++@@ -613,6 +645,15 @@ ++ */ ++ int t_handle_count; ++ +++ /* +++ * Protects the callback list +++ */ +++ spinlock_t t_jcb_lock; +++ /* +++ * List of registered callback functions for this transaction. +++ * Called when the transaction is committed. [t_jcb_lock] +++ */ +++ struct list_head t_jcb; ++ }; ++ ++ struct transaction_run_stats_s { ++@@ -1016,6 +1057,9 @@ ++ extern int jbd2_journal_flush (journal_t *); ++ extern void jbd2_journal_lock_updates (journal_t *); ++ extern void jbd2_journal_unlock_updates (journal_t *); +++extern void jbd2_journal_callback_set(handle_t *handle, +++ void (*fn)(struct journal_callback *,int), +++ struct journal_callback *jcb); ++ ++ extern journal_t * jbd2_journal_init_dev(struct block_device *bdev, ++ struct block_device *fs_dev, ++diff -u -r debian-2.6.26/include/linux/mm.h debian-2.6.26_lustre.1.8.2/include/linux/mm.h ++--- debian-2.6.26/include/linux/mm.h 2009-12-26 09:14:57.000000000 +0100 +++++ debian-2.6.26_lustre.1.8.2/include/linux/mm.h 2010-02-18 08:10:11.000000000 +0100 ++@@ -564,6 +564,8 @@ ++ { ++ return __va(page_to_pfn(page) << PAGE_SHIFT); ++ } +++/* truncate.c */ +++extern void truncate_complete_page(struct address_space *mapping,struct page *); ++ ++ #if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL) ++ #define HASHED_PAGE_VIRTUAL ++diff -u -r debian-2.6.26/include/scsi/sd.h debian-2.6.26_lustre.1.8.2/include/scsi/sd.h ++--- debian-2.6.26/include/scsi/sd.h 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/include/scsi/sd.h 2010-02-17 14:18:52.000000000 +0100 ++@@ -31,6 +31,47 @@ ++ */ ++ #define SD_BUF_SIZE 512 ++ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++typedef struct { +++ unsigned long long iostat_size; +++ unsigned long long iostat_count; +++} iostat_counter_t; +++ +++#define IOSTAT_NCOUNTERS 16 +++typedef struct { +++ iostat_counter_t iostat_read_histogram[IOSTAT_NCOUNTERS]; +++ iostat_counter_t iostat_write_histogram[IOSTAT_NCOUNTERS]; +++ struct timeval iostat_timeval; +++ +++ /* queue depth: how well the pipe is filled up */ +++ unsigned long long iostat_queue_ticks[IOSTAT_NCOUNTERS]; +++ unsigned long long iostat_queue_ticks_sum; +++ unsigned long iostat_queue_depth; +++ unsigned long iostat_queue_stamp; +++ +++ /* seeks: how linear the traffic is */ +++ unsigned long long iostat_next_sector; +++ unsigned long long iostat_seek_sectors; +++ unsigned long long iostat_seeks; +++ unsigned long long iostat_sectors; +++ unsigned long long iostat_reqs; +++ unsigned long iostat_read_reqs; +++ unsigned long iostat_write_reqs; +++ +++ /* process time: how long it takes to process requests */ +++ unsigned long iostat_rtime[IOSTAT_NCOUNTERS]; +++ unsigned long iostat_wtime[IOSTAT_NCOUNTERS]; +++ +++ /* queue time: how long process spent in elevator's queue */ +++ unsigned long iostat_rtime_in_queue[IOSTAT_NCOUNTERS]; +++ unsigned long iostat_wtime_in_queue[IOSTAT_NCOUNTERS]; +++ +++ /* must be the last field, as it's used to know size to be memset'ed */ +++ spinlock_t iostat_lock; +++} ____cacheline_aligned_in_smp iostat_stats_t; +++#endif +++ +++ ++ struct scsi_disk { ++ struct scsi_driver *driver; /* always &sd_template */ ++ struct scsi_device *device; ++@@ -45,6 +86,9 @@ ++ unsigned WCE : 1; /* state of disk WCE bit */ ++ unsigned RCD : 1; /* state of disk RCD bit, unused */ ++ unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ +++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) +++ iostat_stats_t *stats; /* scsi disk statistics */ +++#endif ++ }; ++ #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,dev) ++ ++diff -u -r debian-2.6.26/kernel/sched.c debian-2.6.26_lustre.1.8.2/kernel/sched.c ++--- debian-2.6.26/kernel/sched.c 2009-12-26 09:14:56.000000000 +0100 +++++ debian-2.6.26_lustre.1.8.2/kernel/sched.c 2010-02-18 08:11:02.000000000 +0100 ++@@ -5477,6 +5477,7 @@ ++ ++ show_stack(p, NULL); ++ } +++EXPORT_SYMBOL(sched_show_task); ++ ++ void show_state_filter(unsigned long state_filter) ++ { ++diff -u -r debian-2.6.26/mm/truncate.c debian-2.6.26_lustre.1.8.2/mm/truncate.c ++--- debian-2.6.26/mm/truncate.c 2008-07-13 23:51:29.000000000 +0200 +++++ debian-2.6.26_lustre.1.8.2/mm/truncate.c 2010-02-18 08:12:58.000000000 +0100 ++@@ -92,7 +92,7 @@ ++ * its lock, b) when a concurrent invalidate_mapping_pages got there first and ++ * c) when tmpfs swizzles a page between a tmpfs inode and swapper_space. ++ */ ++-static void +++void ++ truncate_complete_page(struct address_space *mapping, struct page *page) ++ { ++ if (page->mapping != mapping) ++@@ -108,6 +108,7 @@ ++ ClearPageMappedToDisk(page); ++ page_cache_release(page); /* pagecache ref */ ++ } +++EXPORT_SYMBOL_GPL(truncate_complete_page); ++ ++ /* ++ * This is for invalidate_mapping_pages(). That function can be called at ++diff -u -r debian-2.6.26/security/security.c debian-2.6.26_lustre.1.8.2/security/security.c ++--- debian-2.6.26/security/security.c 2009-12-26 09:14:57.000000000 +0100 +++++ debian-2.6.26_lustre.1.8.2/security/security.c 2010-02-18 08:13:38.000000000 +0100 ++@@ -406,6 +406,7 @@ ++ return 0; ++ return security_ops->inode_unlink(dir, dentry); ++ } +++EXPORT_SYMBOL(security_inode_unlink); ++ ++ int security_inode_symlink(struct inode *dir, struct dentry *dentry, ++ const char *old_name) +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/md-mmp-unplug-dev-2.6.27-vanilla.patch +@@ -0,0 +1,22 @@ ++Index: linux-2.6.27.36/drivers/md/raid5.c ++=================================================================== ++--- linux-2.6.27.36.orig/drivers/md/raid5.c 2009-10-05 17:19:01.000000000 +0200 +++++ linux-2.6.27.36/drivers/md/raid5.c 2009-10-08 15:06:10.000000000 +0200 ++@@ -1726,6 +1726,8 @@ ++ bi->bi_next = *bip; ++ *bip = bi; ++ bi->bi_phys_segments ++; +++ if (bio_sync(bi) && !forwrite) +++ clear_bit(R5_UPTODATE, &sh->dev[dd_idx].flags); /* force to read from disk. */ ++ spin_unlock_irq(&conf->device_lock); ++ spin_unlock(&sh->lock); ++ ++@@ -3478,6 +3480,8 @@ ++ ++ bio_endio(bi, 0); ++ } +++ if (bio_sync(bi)) +++ raid5_unplug_device(q); ++ return 0; ++ } ++ +--- /dev/null ++++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd2-jcberr-2.6.26-vanilla.patch +@@ -0,0 +1,211 @@ ++Index: linux-source-2.6.26/include/linux/jbd2.h ++=================================================================== ++--- linux-source-2.6.26.orig/include/linux/jbd2.h 2008-07-13 23:51:29.000000000 +0200 +++++ linux-source-2.6.26/include/linux/jbd2.h 2009-10-09 13:42:21.000000000 +0200 ++@@ -379,6 +379,27 @@ ++ bit_spin_unlock(BH_JournalHead, &bh->b_state); ++ } ++ +++#define HAVE_JOURNAL_CALLBACK_STATUS +++/** +++ * struct journal_callback - Base structure for callback information. +++ * @jcb_list: list information for other callbacks attached to the same handle. +++ * @jcb_func: Function to call with this callback structure. +++ * +++ * This struct is a 'seed' structure for a using with your own callback +++ * structs. If you are using callbacks you must allocate one of these +++ * or another struct of your own definition which has this struct +++ * as it's first element and pass it to journal_callback_set(). +++ * +++ * This is used internally by jbd2 to maintain callback information. +++ * +++ * See journal_callback_set for more information. +++ **/ +++struct journal_callback { +++ struct list_head jcb_list; /* t_jcb_lock */ +++ void (*jcb_func)(struct journal_callback *jcb, int error); +++ /* user data goes here */ +++}; +++ ++ struct jbd2_revoke_table_s; ++ ++ /** ++@@ -387,6 +408,7 @@ ++ * @h_transaction: Which compound transaction is this update a part of? ++ * @h_buffer_credits: Number of remaining buffers we are allowed to dirty. ++ * @h_ref: Reference count on this handle +++ * @h_jcb: List of application registered callbacks for this handle. ++ * @h_err: Field for caller's use to track errors through large fs operations ++ * @h_sync: flag for sync-on-close ++ * @h_jdata: flag to force data journaling ++@@ -412,6 +434,13 @@ ++ /* operations */ ++ int h_err; ++ +++ /* +++ * List of application registered callbacks for this handle. The +++ * function(s) will be called after the transaction that this handle is +++ * part of has been committed to disk. [t_jcb_lock] +++ */ +++ struct list_head h_jcb; +++ ++ /* Flags [no locking] */ ++ unsigned int h_sync: 1; /* sync-on-close */ ++ unsigned int h_jdata: 1; /* force data journaling */ ++@@ -467,6 +496,8 @@ ++ * j_state_lock ++ * ->j_list_lock (journal_unmap_buffer) ++ * +++ * t_handle_lock +++ * ->t_jcb_lock ++ */ ++ ++ struct transaction_s ++@@ -613,6 +644,15 @@ ++ */ ++ int t_handle_count; ++ +++ /* +++ * Protects the callback list +++ */ +++ spinlock_t t_jcb_lock; +++ /* +++ * List of registered callback functions for this transaction. +++ * Called when the transaction is committed. [t_jcb_lock] +++ */ +++ struct list_head t_jcb; ++ }; ++ ++ struct transaction_run_stats_s { ++@@ -1016,6 +1056,9 @@ ++ extern int jbd2_journal_flush (journal_t *); ++ extern void jbd2_journal_lock_updates (journal_t *); ++ extern void jbd2_journal_unlock_updates (journal_t *); +++extern void jbd2_journal_callback_set(handle_t *handle, +++ void (*fn)(struct journal_callback *,int), +++ struct journal_callback *jcb); ++ ++ extern journal_t * jbd2_journal_init_dev(struct block_device *bdev, ++ struct block_device *fs_dev, ++Index: linux-source-2.6.26/fs/jbd2/checkpoint.c ++=================================================================== ++--- linux-source-2.6.26.orig/fs/jbd2/checkpoint.c 2008-07-13 23:51:29.000000000 +0200 +++++ linux-source-2.6.26/fs/jbd2/checkpoint.c 2009-10-09 13:42:21.000000000 +0200 ++@@ -696,6 +696,7 @@ ++ J_ASSERT(transaction->t_checkpoint_list == NULL); ++ J_ASSERT(transaction->t_checkpoint_io_list == NULL); ++ J_ASSERT(transaction->t_updates == 0); +++ J_ASSERT(list_empty(&transaction->t_jcb)); ++ J_ASSERT(journal->j_committing_transaction != transaction); ++ J_ASSERT(journal->j_running_transaction != transaction); ++ ++Index: linux-source-2.6.26/fs/jbd2/commit.c ++=================================================================== ++--- linux-source-2.6.26.orig/fs/jbd2/commit.c 2008-07-13 23:51:29.000000000 +0200 +++++ linux-source-2.6.26/fs/jbd2/commit.c 2009-10-09 13:42:21.000000000 +0200 ++@@ -854,6 +854,30 @@ ++ /* AKPM: bforget here */ ++ } ++ +++ /* +++ * Call any callbacks that had been registered for handles in this +++ * transaction. It is up to the callback to free any allocated +++ * memory. +++ * +++ * The spinlocking (t_jcb_lock) here is surely unnecessary... +++ */ +++ spin_lock(&commit_transaction->t_jcb_lock); +++ if (!list_empty(&commit_transaction->t_jcb)) { +++ struct list_head *p, *n; +++ int error = is_journal_aborted(journal); +++ +++ list_for_each_safe(p, n, &commit_transaction->t_jcb) { +++ struct journal_callback *jcb; +++ +++ jcb = list_entry(p, struct journal_callback, jcb_list); +++ list_del(p); +++ spin_unlock(&commit_transaction->t_jcb_lock); +++ jcb->jcb_func(jcb, error); +++ spin_lock(&commit_transaction->t_jcb_lock); +++ } +++ } +++ spin_unlock(&commit_transaction->t_jcb_lock); +++ ++ jbd_debug(3, "JBD: commit phase 6\n"); ++ ++ if (!JBD2_HAS_INCOMPAT_FEATURE(journal, ++Index: linux-source-2.6.26/fs/jbd2/journal.c ++=================================================================== ++--- linux-source-2.6.26.orig/fs/jbd2/journal.c 2009-10-09 13:39:04.000000000 +0200 +++++ linux-source-2.6.26/fs/jbd2/journal.c 2009-10-09 13:43:03.000000000 +0200 ++@@ -82,6 +82,9 @@ ++ EXPORT_SYMBOL(jbd2_journal_invalidatepage); ++ EXPORT_SYMBOL(jbd2_journal_try_to_free_buffers); ++ EXPORT_SYMBOL(jbd2_journal_force_commit); +++EXPORT_SYMBOL(jbd2_journal_callback_set); +++EXPORT_SYMBOL(jbd2_journal_bmap); +++ ++ ++ static int journal_convert_superblock_v1(journal_t *, journal_superblock_t *); ++ static void __journal_abort_soft (journal_t *journal, int errno); ++Index: linux-source-2.6.26/fs/jbd2/transaction.c ++=================================================================== ++--- linux-source-2.6.26.orig/fs/jbd2/transaction.c 2008-07-13 23:51:29.000000000 +0200 +++++ linux-source-2.6.26/fs/jbd2/transaction.c 2009-10-09 13:42:21.000000000 +0200 ++@@ -252,6 +252,7 @@ ++ memset(handle, 0, sizeof(*handle)); ++ handle->h_buffer_credits = nblocks; ++ handle->h_ref = 1; +++ INIT_LIST_HEAD(&handle->h_jcb); ++ ++ lockdep_init_map(&handle->h_lockdep_map, "jbd2_handle", ++ &jbd2_handle_key, 0); ++@@ -1350,6 +1351,36 @@ ++ } ++ ++ /** +++ * void jbd2_journal_callback_set() - Register a callback function for this handle. +++ * @handle: handle to attach the callback to. +++ * @func: function to callback. +++ * @jcb: structure with additional information required by func() , and +++ * some space for jbd2 internal information. +++ * +++ * The function will be +++ * called when the transaction that this handle is part of has been +++ * committed to disk with the original callback data struct and the +++ * error status of the journal as parameters. There is no guarantee of +++ * ordering between handles within a single transaction, nor between +++ * callbacks registered on the same handle. +++ * +++ * The caller is responsible for allocating the journal_callback struct. +++ * This is to allow the caller to add as much extra data to the callback +++ * as needed, but reduce the overhead of multiple allocations. The caller +++ * allocated struct must start with a struct journal_callback at offset 0, +++ * and has the caller-specific data afterwards. +++ */ +++void jbd2_journal_callback_set(handle_t *handle, +++ void (*func)(struct journal_callback *jcb, int error), +++ struct journal_callback *jcb) +++{ +++ spin_lock(&handle->h_transaction->t_jcb_lock); +++ list_add_tail(&jcb->jcb_list, &handle->h_jcb); +++ spin_unlock(&handle->h_transaction->t_jcb_lock); +++ jcb->jcb_func = func; +++} +++ +++/** ++ * int jbd2_journal_stop() - complete a transaction ++ * @handle: tranaction to complete. ++ * ++@@ -1423,6 +1454,11 @@ ++ wake_up(&journal->j_wait_transaction_locked); ++ } ++ +++ /* Move callbacks from the handle to the transaction. */ +++ spin_lock(&transaction->t_jcb_lock); +++ list_splice(&handle->h_jcb, &transaction->t_jcb); +++ spin_unlock(&transaction->t_jcb_lock); +++ ++ /* ++ * If the handle is marked SYNC, we need to set another commit ++ * going! We also want to force a commit if the current diff -Nru lustre-1.8.3/debian/patches/no-darwin.dpatch lustre-1.8.5+dfsg/debian/patches/no-darwin.dpatch --- lustre-1.8.3/debian/patches/no-darwin.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/no-darwin.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,528 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## no-darwin.dpatch by Goswin von Brederlow -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Remove faulty 'if DARWIN' blocks from autoMakefile.am files -## DP: Remove darwin subdirs from autoMakefile.am files - -@DPATCH@ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lnet/include/libcfs/Makefile.am lustre/lnet/include/libcfs/Makefile.am ---- lustre~/lnet/include/libcfs/Makefile.am 2010-05-05 11:24:03.000000000 +0200 -+++ lustre/lnet/include/libcfs/Makefile.am 2010-05-05 11:40:59.198032073 +0200 -@@ -1,8 +1,8 @@ - SUBDIRS := linux --if DARWIN --SUBDIRS += darwin --endif --DIST_SUBDIRS := linux darwin -+#if DARWIN -+#SUBDIRS += darwin -+#endif -+DIST_SUBDIRS := $(SUBDIRS) - - EXTRA_DIST := curproc.h kp30.h libcfs.h list.h lltrace.h \ - portals_utils.h types.h user-lock.h user-prim.h user-time.h \ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lnet/include/libcfs/Makefile.am.~1~ lustre/lnet/include/libcfs/Makefile.am.~1~ ---- lustre~/lnet/include/libcfs/Makefile.am.~1~ 1970-01-01 01:00:00.000000000 +0100 -+++ lustre/lnet/include/libcfs/Makefile.am.~1~ 2010-05-05 11:24:03.000000000 +0200 -@@ -0,0 +1,9 @@ -+SUBDIRS := linux -+if DARWIN -+SUBDIRS += darwin -+endif -+DIST_SUBDIRS := linux darwin -+ -+EXTRA_DIST := curproc.h kp30.h libcfs.h list.h lltrace.h \ -+ portals_utils.h types.h user-lock.h user-prim.h user-time.h \ -+ user-tcpip.h user-bitops.h bitmap.h -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lnet/include/lnet/Makefile.am lustre/lnet/include/lnet/Makefile.am ---- lustre~/lnet/include/lnet/Makefile.am 2010-05-05 11:24:03.000000000 +0200 -+++ lustre/lnet/include/lnet/Makefile.am 2010-05-05 11:39:32.333472438 +0200 -@@ -1,10 +1,10 @@ - lnetdir=$(includedir)/lnet - - SUBDIRS := linux --if DARWIN --SUBDIRS += darwin --endif --DIST_SUBDIRS := linux darwin -+#if DARWIN -+#SUBDIRS += darwin -+#endif -+DIST_SUBDIRS := $(SUBDIRS) - - EXTRA_DIST = api.h api-support.h \ - lib-lnet.h lib-types.h lnet.h lnetctl.h types.h \ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lnet/include/lnet/Makefile.am.~1~ lustre/lnet/include/lnet/Makefile.am.~1~ ---- lustre~/lnet/include/lnet/Makefile.am.~1~ 1970-01-01 01:00:00.000000000 +0100 -+++ lustre/lnet/include/lnet/Makefile.am.~1~ 2010-05-05 11:24:03.000000000 +0200 -@@ -0,0 +1,11 @@ -+lnetdir=$(includedir)/lnet -+ -+SUBDIRS := linux -+if DARWIN -+SUBDIRS += darwin -+endif -+DIST_SUBDIRS := linux darwin -+ -+EXTRA_DIST = api.h api-support.h \ -+ lib-lnet.h lib-types.h lnet.h lnetctl.h types.h \ -+ socklnd.h ptllnd.h ptllnd_wire.h lnetst.h lnet-sysctl.h -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lnet/klnds/socklnd/autoMakefile.am lustre/lnet/klnds/socklnd/autoMakefile.am ---- lustre~/lnet/klnds/socklnd/autoMakefile.am 2010-04-10 02:28:56.000000000 +0200 -+++ lustre/lnet/klnds/socklnd/autoMakefile.am 2010-05-05 11:35:37.533473974 +0200 -@@ -6,21 +6,21 @@ - endif # LINUX - endif # MODULES - --if DARWIN -- -- macos_PROGRAMS := ksocklnd -- -- nodist_ksocklnd_SOURCES := socklnd.c socklnd_cb.c socklnd_proto.c socklnd_modparams.c socklnd_lib-darwin.c -- -- ksocklnd_CFLAGS := $(EXTRA_KCFLAGS) -- ksocklnd_LDFLAGS := $(EXTRA_KLDFLAGS) -- ksocklnd_LDADD := $(EXTRA_KLIBS) -- -- plist_DATA := Info.plist -- install_data_hook := fix-kext-ownership -+#if DARWIN -+# -+# macos_PROGRAMS := ksocklnd -+# -+# nodist_ksocklnd_SOURCES := socklnd.c socklnd_cb.c socklnd_proto.c socklnd_modparams.c socklnd_lib-darwin.c -+# -+# ksocklnd_CFLAGS := $(EXTRA_KCFLAGS) -+# ksocklnd_LDFLAGS := $(EXTRA_KLDFLAGS) -+# ksocklnd_LDADD := $(EXTRA_KLIBS) -+# -+# plist_DATA := Info.plist -+# install_data_hook := fix-kext-ownership - -- EXTRA_DIST := socklnd_lib-darwin.c socklnd_lib-darwin.h $(plist_DATA) --endif # DARWIN -+# EXTRA_DIST := socklnd_lib-darwin.c socklnd_lib-darwin.h $(plist_DATA) -+#endif # DARWIN - - install-data-hook: $(install_data_hook) - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lnet/libcfs/autoMakefile.am lustre/lnet/libcfs/autoMakefile.am ---- lustre~/lnet/libcfs/autoMakefile.am 2010-05-05 11:24:03.000000000 +0200 -+++ lustre/lnet/libcfs/autoMakefile.am 2010-05-05 11:41:39.355057967 +0200 -@@ -35,10 +35,10 @@ - # - - SUBDIRS := linux --if DARWIN --SUBDIRS += darwin --endif --DIST_SUBDIRS := linux darwin -+#if DARWIN -+#SUBDIRS += darwin -+#endif -+DIST_SUBDIRS := $(SUBDIRS) - - if LIBLUSTRE - noinst_LIBRARIES= libcfs.a -@@ -53,25 +53,25 @@ - modulenet_DATA := libcfs$(KMODEXT) - endif - --if DARWIN --macos_PROGRAMS := libcfs -- --nodist_libcfs_SOURCES := darwin/darwin-sync.c darwin/darwin-mem.c \ -- darwin/darwin-prim.c darwin/darwin-fs.c darwin/darwin-curproc.c \ -- darwin/darwin-tcpip.c darwin/darwin-utils.c \ -- darwin/darwin-debug.c darwin/darwin-proc.c \ -- darwin/darwin-tracefile.c darwin/darwin-module.c \ -- debug.c module.c tracefile.c nidstrings.c watchdog.c -- --libcfs_CFLAGS := $(EXTRA_KCFLAGS) --libcfs_LDFLAGS := $(EXTRA_KLDFLAGS) --libcfs_LDADD := $(EXTRA_KLIBS) -- --plist_DATA := Info.plist -- --install_data_hook := fix-kext-ownership -- --endif -+#if DARWIN -+#macos_PROGRAMS := libcfs -+# -+#nodist_libcfs_SOURCES := darwin/darwin-sync.c darwin/darwin-mem.c \ -+# darwin/darwin-prim.c darwin/darwin-fs.c darwin/darwin-curproc.c \ -+# darwin/darwin-tcpip.c darwin/darwin-utils.c \ -+# darwin/darwin-debug.c darwin/darwin-proc.c \ -+# darwin/darwin-tracefile.c darwin/darwin-module.c \ -+# debug.c module.c tracefile.c nidstrings.c watchdog.c -+# -+#libcfs_CFLAGS := $(EXTRA_KCFLAGS) -+#libcfs_LDFLAGS := $(EXTRA_KLDFLAGS) -+#libcfs_LDADD := $(EXTRA_KLIBS) -+# -+#plist_DATA := Info.plist -+# -+#install_data_hook := fix-kext-ownership -+# -+#endif - - endif - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lnet/lnet/autoMakefile.am lustre/lnet/lnet/autoMakefile.am ---- lustre~/lnet/lnet/autoMakefile.am 2010-04-10 02:28:56.000000000 +0200 -+++ lustre/lnet/lnet/autoMakefile.am 2010-05-05 11:35:37.533473974 +0200 -@@ -18,23 +18,23 @@ - modulenet_DATA = lnet$(KMODEXT) - endif # LINUX - --if DARWIN --macos_PROGRAMS := lnet -- --lnet_SOURCES := api-errno.c api-ni.c config.c --lnet_SOURCES += lib-me.c lib-msg.c lib-eq.c lib-md.c --lnet_SOURCES += lib-move.c module.c lo.c router.c router_proc.c --lnet_SOURCES += acceptor.c peer.c -- --lnet_CFLAGS := $(EXTRA_KCFLAGS) --lnet_LDFLAGS := $(EXTRA_KLDFLAGS) --lnet_LDADD := $(EXTRA_KLIBS) -- --plist_DATA := Info.plist -- --install_data_hook := fix-kext-ownership -- --endif # DARWIN -+#if DARWIN -+#macos_PROGRAMS := lnet -+# -+#lnet_SOURCES := api-errno.c api-ni.c config.c -+#lnet_SOURCES += lib-me.c lib-msg.c lib-eq.c lib-md.c -+#lnet_SOURCES += lib-move.c module.c lo.c router.c router_proc.c -+#lnet_SOURCES += acceptor.c peer.c -+# -+#lnet_CFLAGS := $(EXTRA_KCFLAGS) -+#lnet_LDFLAGS := $(EXTRA_KLDFLAGS) -+#lnet_LDADD := $(EXTRA_KLIBS) -+# -+#plist_DATA := Info.plist -+# -+#install_data_hook := fix-kext-ownership -+# -+#endif # DARWIN - - endif # MODULES - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/lov/autoMakefile.am lustre/lustre/lov/autoMakefile.am ---- lustre~/lustre/lov/autoMakefile.am 2010-04-10 02:28:57.000000000 +0200 -+++ lustre/lustre/lov/autoMakefile.am 2010-05-05 11:35:37.533473974 +0200 -@@ -46,29 +46,29 @@ - modulefs_DATA = lov$(KMODEXT) - endif - --if DARWIN --macos_PROGRAMS := lov -+#if DARWIN -+#macos_PROGRAMS := lov - --lov_SOURCES := \ -- lov_log.c \ -- lov_pool.c \ -- lov_obd.c \ -- lov_pack.c \ -- lov_request.c \ -- lov_merge.c \ -- lov_qos.c \ -- lov_offset.c \ -- lov_internal.h -+#lov_SOURCES := \ -+# lov_log.c \ -+# lov_pool.c \ -+# lov_obd.c \ -+# lov_pack.c \ -+# lov_request.c \ -+# lov_merge.c \ -+# lov_qos.c \ -+# lov_offset.c \ -+# lov_internal.h - --lov_CFLAGS := $(EXTRA_KCFLAGS) --lov_LDFLAGS := $(EXTRA_KLDFLAGS) --lov_LDADD := $(EXTRA_KLIBS) -+#lov_CFLAGS := $(EXTRA_KCFLAGS) -+#lov_LDFLAGS := $(EXTRA_KLDFLAGS) -+#lov_LDADD := $(EXTRA_KLIBS) - --plist_DATA := Info.plist -+#plist_DATA := Info.plist - --install_data_hook := fix-kext-ownership -+#install_data_hook := fix-kext-ownership - --endif # DARWIN -+#endif # DARWIN - - endif # MODULES - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/lvfs/autoMakefile.am lustre/lustre/lvfs/autoMakefile.am ---- lustre~/lustre/lvfs/autoMakefile.am 2010-04-10 02:28:57.000000000 +0200 -+++ lustre/lustre/lvfs/autoMakefile.am 2010-05-05 11:35:37.533473974 +0200 -@@ -85,21 +85,21 @@ - - endif # LINUX - --if DARWIN -- --macos_PROGRAMS := lvfs -- --lvfs_SOURCES := lvfs_darwin.c -- --lvfs_CFLAGS := $(EXTRA_KCFLAGS) --lvfs_LDFLAGS := $(EXTRA_KLDFLAGS) --lvfs_LDADD := $(EXTRA_KLIBS) -- --plist_DATA := Info.plist -- --install_data_hook := fix-kext-ownership -- --endif # DARWIN -+#if DARWIN -+# -+#macos_PROGRAMS := lvfs -+# -+#lvfs_SOURCES := lvfs_darwin.c -+# -+#lvfs_CFLAGS := $(EXTRA_KCFLAGS) -+#lvfs_LDFLAGS := $(EXTRA_KLDFLAGS) -+#lvfs_LDADD := $(EXTRA_KLIBS) -+# -+#plist_DATA := Info.plist -+# -+#install_data_hook := fix-kext-ownership -+# -+#endif # DARWIN - - else # MODULES - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/obdclass/autoMakefile.am lustre/lustre/obdclass/autoMakefile.am ---- lustre~/lustre/obdclass/autoMakefile.am 2010-05-05 11:24:04.000000000 +0200 -+++ lustre/lustre/obdclass/autoMakefile.am 2010-05-05 11:42:14.697472299 +0200 -@@ -1,8 +1,8 @@ - SUBDIRS := linux --if DARWIN --SUBDIRS += darwin --endif --DIST_SUBDIRS := linux darwin -+#if DARWIN -+#SUBDIRS += darwin -+#endif -+DIST_SUBDIRS := $(SUBDIRS) - - if LIBLUSTRE - -@@ -25,25 +25,25 @@ - noinst_DATA = llog_test$(KMODEXT) - endif # LINUX - --if DARWIN --macos_PROGRAMS := obdclass -- --obdclass_SOURCES := \ -- darwin/darwin-module.c darwin/darwin-sysctl.c \ -- class_obd.c genops.c lprocfs_status.c \ -- lustre_handles.c lustre_peer.c obd_config.c \ -- obdo.c debug.c llog_ioctl.c uuid.c \ -- llog_swab.c llog_obd.c llog.c llog_cat.c llog_lvfs.c -- --obdclass_CFLAGS := $(EXTRA_KCFLAGS) --obdclass_LDFLAGS := $(EXTRA_KLDFLAGS) --obdclass_LDADD := $(EXTRA_KLIBS) -- --plist_DATA := Info.plist -- --install_data_hook := fix-kext-ownership -- --endif # DARWIN -+#if DARWIN -+#macos_PROGRAMS := obdclass -+# -+#obdclass_SOURCES := \ -+# darwin/darwin-module.c darwin/darwin-sysctl.c \ -+# class_obd.c genops.c lprocfs_status.c \ -+# lustre_handles.c lustre_peer.c obd_config.c \ -+# obdo.c debug.c llog_ioctl.c uuid.c \ -+# llog_swab.c llog_obd.c llog.c llog_cat.c llog_lvfs.c -+# -+#obdclass_CFLAGS := $(EXTRA_KCFLAGS) -+#obdclass_LDFLAGS := $(EXTRA_KLDFLAGS) -+#obdclass_LDADD := $(EXTRA_KLIBS) -+# -+#plist_DATA := Info.plist -+# -+#install_data_hook := fix-kext-ownership -+# -+#endif # DARWIN - - endif # MODULES - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/obdecho/autoMakefile.am lustre/lustre/obdecho/autoMakefile.am ---- lustre~/lustre/obdecho/autoMakefile.am 2010-01-11 04:29:50.000000000 +0100 -+++ lustre/lustre/obdecho/autoMakefile.am 2010-05-05 11:35:37.533473974 +0200 -@@ -46,22 +46,22 @@ - modulefs_DATA = obdecho$(KMODEXT) - endif - --if DARWIN --macos_PROGRAMS := obdecho --obdecho_SOURCES := \ -- lproc_echo.c \ -- echo.c \ -- echo_client.c -- --obdecho_CFLAGS := $(EXTRA_KCFLAGS) --obdecho_LDFLAGS := $(EXTRA_KLDFLAGS) --obdecho_LDADD := $(EXTRA_KLIBS) -- --plist_DATA := Info.plist -- --install_data_hook := fix-kext-ownership -- --endif # darwin -+#if DARWIN -+#macos_PROGRAMS := obdecho -+#obdecho_SOURCES := \ -+# lproc_echo.c \ -+# echo.c \ -+# echo_client.c -+# -+#obdecho_CFLAGS := $(EXTRA_KCFLAGS) -+#obdecho_LDFLAGS := $(EXTRA_KLDFLAGS) -+#obdecho_LDADD := $(EXTRA_KLIBS) -+# -+#plist_DATA := Info.plist -+# -+#install_data_hook := fix-kext-ownership -+# -+#endif # darwin - - endif # MODULES - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/osc/autoMakefile.am lustre/lustre/osc/autoMakefile.am ---- lustre~/lustre/osc/autoMakefile.am 2010-04-10 02:28:57.000000000 +0200 -+++ lustre/lustre/osc/autoMakefile.am 2010-05-05 11:35:37.533473974 +0200 -@@ -47,22 +47,22 @@ - modulefs_DATA = osc$(KMODEXT) - endif - --if DARWIN --macos_PROGRAMS := osc -- --osc_SOURCES := \ -- osc_create.c \ -- osc_request.c -- --osc_CFLAGS := $(EXTRA_KCFLAGS) --osc_LDFLAGS := $(EXTRA_KLDFLAGS) --osc_LDADD := $(EXTRA_KLIBS) -- --plist_DATA := Info.plist -- --install_data_hook := fix-kext-ownership -- --endif # Darwin -+#if DARWIN -+#macos_PROGRAMS := osc -+# -+#osc_SOURCES := \ -+# osc_create.c \ -+# osc_request.c -+# -+#osc_CFLAGS := $(EXTRA_KCFLAGS) -+#osc_LDFLAGS := $(EXTRA_KLDFLAGS) -+#osc_LDADD := $(EXTRA_KLIBS) -+# -+#plist_DATA := Info.plist -+# -+#install_data_hook := fix-kext-ownership -+# -+#endif # Darwin - - endif - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/ptlrpc/autoMakefile.am lustre/lustre/ptlrpc/autoMakefile.am ---- lustre~/lustre/ptlrpc/autoMakefile.am 2010-04-10 02:28:57.000000000 +0200 -+++ lustre/lustre/ptlrpc/autoMakefile.am 2010-05-05 11:35:37.533473974 +0200 -@@ -68,39 +68,39 @@ - modulefs_DATA = ptlrpc$(KMODEXT) - endif #LINUX - --if DARWIN --macos_PROGRAMS := ptlrpc -- --ptlrpc_SOURCES := \ -- ptlrpc_module.c \ -- client.c \ -- connection.c \ -- events.c \ -- import.c \ -- llog_client.c \ -- llog_net.c \ -- llog_server.c \ -- lproc_ptlrpc.c \ -- niobuf.c \ -- pack_generic.c \ -- pers.c \ -- pinger.c \ -- ptlrpcd.c \ -- recover.c \ -- recov_thread.c \ -- service.c \ -- wiretest.c \ -- $(LDLM_COMM_SOURCES) -- --ptlrpc_CFLAGS := $(EXTRA_KCFLAGS) --ptlrpc_LDFLAGS := $(EXTRA_KLDFLAGS) --ptlrpc_LDADD := $(EXTRA_KLIBS) -- --plist_DATA := Info.plist -- --install_data_hook := fix-kext-ownership -- --endif # DARWIN -+#if DARWIN -+#macos_PROGRAMS := ptlrpc -+# -+#ptlrpc_SOURCES := \ -+# ptlrpc_module.c \ -+# client.c \ -+# connection.c \ -+# events.c \ -+# import.c \ -+# llog_client.c \ -+# llog_net.c \ -+# llog_server.c \ -+# lproc_ptlrpc.c \ -+# niobuf.c \ -+# pack_generic.c \ -+# pers.c \ -+# pinger.c \ -+# ptlrpcd.c \ -+# recover.c \ -+# recov_thread.c \ -+# service.c \ -+# wiretest.c \ -+# $(LDLM_COMM_SOURCES) -+# -+#ptlrpc_CFLAGS := $(EXTRA_KCFLAGS) -+#ptlrpc_LDFLAGS := $(EXTRA_KLDFLAGS) -+#ptlrpc_LDADD := $(EXTRA_KLIBS) -+# -+#plist_DATA := Info.plist -+# -+#install_data_hook := fix-kext-ownership -+# -+#endif # DARWIN - - endif # MODULES - diff -Nru lustre-1.8.3/debian/patches/no-darwin.patch lustre-1.8.5+dfsg/debian/patches/no-darwin.patch --- lustre-1.8.3/debian/patches/no-darwin.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/no-darwin.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,512 @@ +## no-darwin.dpatch by Goswin von Brederlow +## DP: Remove faulty 'if DARWIN' blocks from autoMakefile.am files +## DP: Remove darwin subdirs from autoMakefile.am files + +Index: lustre/lnet/include/libcfs/Makefile.am +=================================================================== +--- lustre.orig/lnet/include/libcfs/Makefile.am 2010-12-07 16:54:32.917545003 +0100 ++++ lustre/lnet/include/libcfs/Makefile.am 2010-12-07 17:00:08.541545001 +0100 +@@ -1,8 +1,8 @@ + SUBDIRS := linux +-if DARWIN +-SUBDIRS += darwin +-endif +-DIST_SUBDIRS := linux darwin ++#if DARWIN ++#SUBDIRS += darwin ++#endif ++DIST_SUBDIRS := $(SUBDIRS) + + EXTRA_DIST := curproc.h kp30.h libcfs.h list.h lltrace.h \ + portals_utils.h types.h user-lock.h user-prim.h user-time.h \ +Index: lustre/lnet/include/libcfs/Makefile.am.~1~ +=================================================================== +Index: lustre/lnet/include/lnet/Makefile.am +=================================================================== +--- lustre.orig/lnet/include/lnet/Makefile.am 2010-12-07 16:54:32.933545003 +0100 ++++ lustre/lnet/include/lnet/Makefile.am 2010-12-07 17:00:08.541545001 +0100 +@@ -1,10 +1,10 @@ + lnetdir=$(includedir)/lnet + + SUBDIRS := linux +-if DARWIN +-SUBDIRS += darwin +-endif +-DIST_SUBDIRS := linux darwin ++#if DARWIN ++#SUBDIRS += darwin ++#endif ++DIST_SUBDIRS := $(SUBDIRS) + + EXTRA_DIST = api.h api-support.h \ + lib-lnet.h lib-types.h lnet.h lnetctl.h types.h \ +Index: lustre/lnet/include/lnet/Makefile.am.~1~ +=================================================================== +Index: lustre/lnet/klnds/socklnd/autoMakefile.am +=================================================================== +--- lustre.orig/lnet/klnds/socklnd/autoMakefile.am 2010-12-07 16:54:32.969545003 +0100 ++++ lustre/lnet/klnds/socklnd/autoMakefile.am 2010-12-07 17:00:08.545545001 +0100 +@@ -6,21 +6,21 @@ + endif # LINUX + endif # MODULES + +-if DARWIN ++#if DARWIN ++# ++# macos_PROGRAMS := ksocklnd ++# ++# nodist_ksocklnd_SOURCES := socklnd.c socklnd_cb.c socklnd_proto.c socklnd_modparams.c socklnd_lib-darwin.c ++# ++# ksocklnd_CFLAGS := $(EXTRA_KCFLAGS) ++# ksocklnd_LDFLAGS := $(EXTRA_KLDFLAGS) ++# ksocklnd_LDADD := $(EXTRA_KLIBS) ++# ++# plist_DATA := Info.plist ++# install_data_hook := fix-kext-ownership + +- macos_PROGRAMS := ksocklnd +- +- nodist_ksocklnd_SOURCES := socklnd.c socklnd_cb.c socklnd_proto.c socklnd_modparams.c socklnd_lib-darwin.c +- +- ksocklnd_CFLAGS := $(EXTRA_KCFLAGS) +- ksocklnd_LDFLAGS := $(EXTRA_KLDFLAGS) +- ksocklnd_LDADD := $(EXTRA_KLIBS) +- +- plist_DATA := Info.plist +- install_data_hook := fix-kext-ownership +- +- EXTRA_DIST := socklnd_lib-darwin.c socklnd_lib-darwin.h $(plist_DATA) +-endif # DARWIN ++# EXTRA_DIST := socklnd_lib-darwin.c socklnd_lib-darwin.h $(plist_DATA) ++#endif # DARWIN + + install-data-hook: $(install_data_hook) + +Index: lustre/lnet/libcfs/autoMakefile.am +=================================================================== +--- lustre.orig/lnet/libcfs/autoMakefile.am 2010-12-07 16:54:32.945545003 +0100 ++++ lustre/lnet/libcfs/autoMakefile.am 2010-12-07 17:00:08.545545001 +0100 +@@ -35,10 +35,10 @@ + # + + SUBDIRS := linux +-if DARWIN +-SUBDIRS += darwin +-endif +-DIST_SUBDIRS := linux darwin ++#if DARWIN ++#SUBDIRS += darwin ++#endif ++DIST_SUBDIRS := $(SUBDIRS) + + if LIBLUSTRE + noinst_LIBRARIES= libcfs.a +@@ -53,25 +53,25 @@ + modulenet_DATA := libcfs$(KMODEXT) + endif + +-if DARWIN +-macos_PROGRAMS := libcfs +- +-nodist_libcfs_SOURCES := darwin/darwin-sync.c darwin/darwin-mem.c \ +- darwin/darwin-prim.c darwin/darwin-fs.c darwin/darwin-curproc.c \ +- darwin/darwin-tcpip.c darwin/darwin-utils.c \ +- darwin/darwin-debug.c darwin/darwin-proc.c \ +- darwin/darwin-tracefile.c darwin/darwin-module.c \ +- debug.c module.c tracefile.c nidstrings.c watchdog.c +- +-libcfs_CFLAGS := $(EXTRA_KCFLAGS) +-libcfs_LDFLAGS := $(EXTRA_KLDFLAGS) +-libcfs_LDADD := $(EXTRA_KLIBS) +- +-plist_DATA := Info.plist +- +-install_data_hook := fix-kext-ownership +- +-endif ++#if DARWIN ++#macos_PROGRAMS := libcfs ++# ++#nodist_libcfs_SOURCES := darwin/darwin-sync.c darwin/darwin-mem.c \ ++# darwin/darwin-prim.c darwin/darwin-fs.c darwin/darwin-curproc.c \ ++# darwin/darwin-tcpip.c darwin/darwin-utils.c \ ++# darwin/darwin-debug.c darwin/darwin-proc.c \ ++# darwin/darwin-tracefile.c darwin/darwin-module.c \ ++# debug.c module.c tracefile.c nidstrings.c watchdog.c ++# ++#libcfs_CFLAGS := $(EXTRA_KCFLAGS) ++#libcfs_LDFLAGS := $(EXTRA_KLDFLAGS) ++#libcfs_LDADD := $(EXTRA_KLIBS) ++# ++#plist_DATA := Info.plist ++# ++#install_data_hook := fix-kext-ownership ++# ++#endif + + endif + +Index: lustre/lnet/lnet/autoMakefile.am +=================================================================== +--- lustre.orig/lnet/lnet/autoMakefile.am 2010-12-07 16:54:32.953545003 +0100 ++++ lustre/lnet/lnet/autoMakefile.am 2010-12-07 17:00:08.545545001 +0100 +@@ -18,23 +18,23 @@ + modulenet_DATA = lnet$(KMODEXT) + endif # LINUX + +-if DARWIN +-macos_PROGRAMS := lnet +- +-lnet_SOURCES := api-errno.c api-ni.c config.c +-lnet_SOURCES += lib-me.c lib-msg.c lib-eq.c lib-md.c +-lnet_SOURCES += lib-move.c module.c lo.c router.c router_proc.c +-lnet_SOURCES += acceptor.c peer.c +- +-lnet_CFLAGS := $(EXTRA_KCFLAGS) +-lnet_LDFLAGS := $(EXTRA_KLDFLAGS) +-lnet_LDADD := $(EXTRA_KLIBS) +- +-plist_DATA := Info.plist +- +-install_data_hook := fix-kext-ownership +- +-endif # DARWIN ++#if DARWIN ++#macos_PROGRAMS := lnet ++# ++#lnet_SOURCES := api-errno.c api-ni.c config.c ++#lnet_SOURCES += lib-me.c lib-msg.c lib-eq.c lib-md.c ++#lnet_SOURCES += lib-move.c module.c lo.c router.c router_proc.c ++#lnet_SOURCES += acceptor.c peer.c ++# ++#lnet_CFLAGS := $(EXTRA_KCFLAGS) ++#lnet_LDFLAGS := $(EXTRA_KLDFLAGS) ++#lnet_LDADD := $(EXTRA_KLIBS) ++# ++#plist_DATA := Info.plist ++# ++#install_data_hook := fix-kext-ownership ++# ++#endif # DARWIN + + endif # MODULES + +Index: lustre/lustre/lov/autoMakefile.am +=================================================================== +--- lustre.orig/lustre/lov/autoMakefile.am 2010-12-07 16:54:32.981545003 +0100 ++++ lustre/lustre/lov/autoMakefile.am 2010-12-07 17:00:08.545545001 +0100 +@@ -46,29 +46,29 @@ + modulefs_DATA = lov$(KMODEXT) + endif + +-if DARWIN +-macos_PROGRAMS := lov ++#if DARWIN ++#macos_PROGRAMS := lov + +-lov_SOURCES := \ +- lov_log.c \ +- lov_pool.c \ +- lov_obd.c \ +- lov_pack.c \ +- lov_request.c \ +- lov_merge.c \ +- lov_qos.c \ +- lov_offset.c \ +- lov_internal.h +- +-lov_CFLAGS := $(EXTRA_KCFLAGS) +-lov_LDFLAGS := $(EXTRA_KLDFLAGS) +-lov_LDADD := $(EXTRA_KLIBS) ++#lov_SOURCES := \ ++# lov_log.c \ ++# lov_pool.c \ ++# lov_obd.c \ ++# lov_pack.c \ ++# lov_request.c \ ++# lov_merge.c \ ++# lov_qos.c \ ++# lov_offset.c \ ++# lov_internal.h ++ ++#lov_CFLAGS := $(EXTRA_KCFLAGS) ++#lov_LDFLAGS := $(EXTRA_KLDFLAGS) ++#lov_LDADD := $(EXTRA_KLIBS) + +-plist_DATA := Info.plist ++#plist_DATA := Info.plist + +-install_data_hook := fix-kext-ownership ++#install_data_hook := fix-kext-ownership + +-endif # DARWIN ++#endif # DARWIN + + endif # MODULES + +Index: lustre/lustre/lvfs/autoMakefile.am +=================================================================== +--- lustre.orig/lustre/lvfs/autoMakefile.am 2010-12-07 16:54:32.989545003 +0100 ++++ lustre/lustre/lvfs/autoMakefile.am 2010-12-07 17:00:08.545545001 +0100 +@@ -85,21 +85,21 @@ + + endif # LINUX + +-if DARWIN +- +-macos_PROGRAMS := lvfs +- +-lvfs_SOURCES := lvfs_darwin.c +- +-lvfs_CFLAGS := $(EXTRA_KCFLAGS) +-lvfs_LDFLAGS := $(EXTRA_KLDFLAGS) +-lvfs_LDADD := $(EXTRA_KLIBS) +- +-plist_DATA := Info.plist +- +-install_data_hook := fix-kext-ownership +- +-endif # DARWIN ++#if DARWIN ++# ++#macos_PROGRAMS := lvfs ++# ++#lvfs_SOURCES := lvfs_darwin.c ++# ++#lvfs_CFLAGS := $(EXTRA_KCFLAGS) ++#lvfs_LDFLAGS := $(EXTRA_KLDFLAGS) ++#lvfs_LDADD := $(EXTRA_KLIBS) ++# ++#plist_DATA := Info.plist ++# ++#install_data_hook := fix-kext-ownership ++# ++#endif # DARWIN + + else # MODULES + +Index: lustre/lustre/obdclass/autoMakefile.am +=================================================================== +--- lustre.orig/lustre/obdclass/autoMakefile.am 2010-12-07 16:54:33.033545003 +0100 ++++ lustre/lustre/obdclass/autoMakefile.am 2010-12-07 17:00:08.545545001 +0100 +@@ -1,8 +1,8 @@ + SUBDIRS := linux +-if DARWIN +-SUBDIRS += darwin +-endif +-DIST_SUBDIRS := linux darwin ++#if DARWIN ++#SUBDIRS += darwin ++#endif ++DIST_SUBDIRS := $(SUBDIRS) + + if LIBLUSTRE + +@@ -25,25 +25,25 @@ + noinst_DATA = llog_test$(KMODEXT) + endif # LINUX + +-if DARWIN +-macos_PROGRAMS := obdclass +- +-obdclass_SOURCES := \ +- darwin/darwin-module.c darwin/darwin-sysctl.c \ +- class_obd.c genops.c lprocfs_status.c \ +- lustre_handles.c lustre_peer.c obd_config.c \ +- obdo.c debug.c llog_ioctl.c uuid.c \ +- llog_swab.c llog_obd.c llog.c llog_cat.c llog_lvfs.c +- +-obdclass_CFLAGS := $(EXTRA_KCFLAGS) +-obdclass_LDFLAGS := $(EXTRA_KLDFLAGS) +-obdclass_LDADD := $(EXTRA_KLIBS) +- +-plist_DATA := Info.plist +- +-install_data_hook := fix-kext-ownership +- +-endif # DARWIN ++#if DARWIN ++#macos_PROGRAMS := obdclass ++# ++#obdclass_SOURCES := \ ++# darwin/darwin-module.c darwin/darwin-sysctl.c \ ++# class_obd.c genops.c lprocfs_status.c \ ++# lustre_handles.c lustre_peer.c obd_config.c \ ++# obdo.c debug.c llog_ioctl.c uuid.c \ ++# llog_swab.c llog_obd.c llog.c llog_cat.c llog_lvfs.c ++# ++#obdclass_CFLAGS := $(EXTRA_KCFLAGS) ++#obdclass_LDFLAGS := $(EXTRA_KLDFLAGS) ++#obdclass_LDADD := $(EXTRA_KLIBS) ++# ++#plist_DATA := Info.plist ++# ++#install_data_hook := fix-kext-ownership ++# ++#endif # DARWIN + + endif # MODULES + +Index: lustre/lustre/obdecho/autoMakefile.am +=================================================================== +--- lustre.orig/lustre/obdecho/autoMakefile.am 2010-12-07 16:54:33.001545003 +0100 ++++ lustre/lustre/obdecho/autoMakefile.am 2010-12-07 17:00:08.545545001 +0100 +@@ -46,22 +46,22 @@ + modulefs_DATA = obdecho$(KMODEXT) + endif + +-if DARWIN +-macos_PROGRAMS := obdecho +-obdecho_SOURCES := \ +- lproc_echo.c \ +- echo.c \ +- echo_client.c +- +-obdecho_CFLAGS := $(EXTRA_KCFLAGS) +-obdecho_LDFLAGS := $(EXTRA_KLDFLAGS) +-obdecho_LDADD := $(EXTRA_KLIBS) +- +-plist_DATA := Info.plist +- +-install_data_hook := fix-kext-ownership +- +-endif # darwin ++#if DARWIN ++#macos_PROGRAMS := obdecho ++#obdecho_SOURCES := \ ++# lproc_echo.c \ ++# echo.c \ ++# echo_client.c ++# ++#obdecho_CFLAGS := $(EXTRA_KCFLAGS) ++#obdecho_LDFLAGS := $(EXTRA_KLDFLAGS) ++#obdecho_LDADD := $(EXTRA_KLIBS) ++# ++#plist_DATA := Info.plist ++# ++#install_data_hook := fix-kext-ownership ++# ++#endif # darwin + + endif # MODULES + +Index: lustre/lustre/osc/autoMakefile.am +=================================================================== +--- lustre.orig/lustre/osc/autoMakefile.am 2010-12-07 16:54:33.021545003 +0100 ++++ lustre/lustre/osc/autoMakefile.am 2010-12-07 17:00:08.549545001 +0100 +@@ -47,22 +47,22 @@ + modulefs_DATA = osc$(KMODEXT) + endif + +-if DARWIN +-macos_PROGRAMS := osc +- +-osc_SOURCES := \ +- osc_create.c \ +- osc_request.c +- +-osc_CFLAGS := $(EXTRA_KCFLAGS) +-osc_LDFLAGS := $(EXTRA_KLDFLAGS) +-osc_LDADD := $(EXTRA_KLIBS) +- +-plist_DATA := Info.plist +- +-install_data_hook := fix-kext-ownership +- +-endif # Darwin ++#if DARWIN ++#macos_PROGRAMS := osc ++# ++#osc_SOURCES := \ ++# osc_create.c \ ++# osc_request.c ++# ++#osc_CFLAGS := $(EXTRA_KCFLAGS) ++#osc_LDFLAGS := $(EXTRA_KLDFLAGS) ++#osc_LDADD := $(EXTRA_KLIBS) ++# ++#plist_DATA := Info.plist ++# ++#install_data_hook := fix-kext-ownership ++# ++#endif # Darwin + + endif + +Index: lustre/lustre/ptlrpc/autoMakefile.am +=================================================================== +--- lustre.orig/lustre/ptlrpc/autoMakefile.am 2010-12-07 16:54:33.009545003 +0100 ++++ lustre/lustre/ptlrpc/autoMakefile.am 2010-12-07 17:00:08.549545001 +0100 +@@ -68,39 +68,39 @@ + modulefs_DATA = ptlrpc$(KMODEXT) + endif #LINUX + +-if DARWIN +-macos_PROGRAMS := ptlrpc +- +-ptlrpc_SOURCES := \ +- ptlrpc_module.c \ +- client.c \ +- connection.c \ +- events.c \ +- import.c \ +- llog_client.c \ +- llog_net.c \ +- llog_server.c \ +- lproc_ptlrpc.c \ +- niobuf.c \ +- pack_generic.c \ +- pers.c \ +- pinger.c \ +- ptlrpcd.c \ +- recover.c \ +- recov_thread.c \ +- service.c \ +- wiretest.c \ +- $(LDLM_COMM_SOURCES) +- +-ptlrpc_CFLAGS := $(EXTRA_KCFLAGS) +-ptlrpc_LDFLAGS := $(EXTRA_KLDFLAGS) +-ptlrpc_LDADD := $(EXTRA_KLIBS) +- +-plist_DATA := Info.plist +- +-install_data_hook := fix-kext-ownership +- +-endif # DARWIN ++#if DARWIN ++#macos_PROGRAMS := ptlrpc ++# ++#ptlrpc_SOURCES := \ ++# ptlrpc_module.c \ ++# client.c \ ++# connection.c \ ++# events.c \ ++# import.c \ ++# llog_client.c \ ++# llog_net.c \ ++# llog_server.c \ ++# lproc_ptlrpc.c \ ++# niobuf.c \ ++# pack_generic.c \ ++# pers.c \ ++# pinger.c \ ++# ptlrpcd.c \ ++# recover.c \ ++# recov_thread.c \ ++# service.c \ ++# wiretest.c \ ++# $(LDLM_COMM_SOURCES) ++# ++#ptlrpc_CFLAGS := $(EXTRA_KCFLAGS) ++#ptlrpc_LDFLAGS := $(EXTRA_KLDFLAGS) ++#ptlrpc_LDADD := $(EXTRA_KLIBS) ++# ++#plist_DATA := Info.plist ++# ++#install_data_hook := fix-kext-ownership ++# ++#endif # DARWIN + + endif # MODULES + diff -Nru lustre-1.8.3/debian/patches/no_default_debugging.dpatch lustre-1.8.5+dfsg/debian/patches/no_default_debugging.dpatch --- lustre-1.8.3/debian/patches/no_default_debugging.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/no_default_debugging.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,27 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## no_default_debugging.patch by Goswin von Brederlow -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Patch from Q-Leap Networks - -@DPATCH@ -diff -urNad lustre-1.6.5-rc2~/lnet/libcfs/debug.c lustre-1.6.5-rc2/lnet/libcfs/debug.c ---- lustre-1.6.5-rc2~/lnet/libcfs/debug.c 2008-05-09 13:44:34.000000000 +0200 -+++ lustre-1.6.5-rc2/lnet/libcfs/debug.c 2008-05-09 13:46:09.000000000 +0200 -@@ -34,13 +34,13 @@ - static char debug_file_name[1024]; - - #ifdef __KERNEL__ --unsigned int libcfs_subsystem_debug = ~0; -+unsigned int libcfs_subsystem_debug = 0; - CFS_MODULE_PARM(libcfs_subsystem_debug, "i", int, 0644, - "Lustre kernel debug subsystem mask"); - EXPORT_SYMBOL(libcfs_subsystem_debug); - --unsigned int libcfs_debug = (D_EMERG | D_ERROR | D_WARNING | D_CONSOLE | -- D_NETERROR | D_HA | D_CONFIG | D_IOCTL); -+unsigned int libcfs_debug = 0; -+ - CFS_MODULE_PARM(libcfs_debug, "i", int, 0644, - "Lustre kernel debug mask"); - EXPORT_SYMBOL(libcfs_debug); diff -Nru lustre-1.8.3/debian/patches/no_default_debugging.patch lustre-1.8.5+dfsg/debian/patches/no_default_debugging.patch --- lustre-1.8.3/debian/patches/no_default_debugging.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/no_default_debugging.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,24 @@ +## no_default_debugging.patch by Goswin von Brederlow +## DP: Patch from Q-Leap Networks + +Index: lustre/lnet/libcfs/debug.c +=================================================================== +--- lustre.orig/lnet/libcfs/debug.c 2010-12-07 16:54:33.125545003 +0100 ++++ lustre/lnet/libcfs/debug.c 2010-12-07 16:59:14.421545003 +0100 +@@ -52,13 +52,13 @@ + static char debug_file_name[1024]; + + #ifdef __KERNEL__ +-unsigned int libcfs_subsystem_debug = ~0; ++unsigned int libcfs_subsystem_debug = 0; + CFS_MODULE_PARM(libcfs_subsystem_debug, "i", int, 0644, + "Lustre kernel debug subsystem mask"); + EXPORT_SYMBOL(libcfs_subsystem_debug); + +-unsigned int libcfs_debug = (D_EMERG | D_ERROR | D_WARNING | D_CONSOLE | +- D_NETERROR | D_HA | D_CONFIG | D_IOCTL); ++unsigned int libcfs_debug = 0; ++ + CFS_MODULE_PARM(libcfs_debug, "i", int, 0644, + "Lustre kernel debug mask"); + EXPORT_SYMBOL(libcfs_debug); diff -Nru lustre-1.8.3/debian/patches/no-strict-aliasing.dpatch lustre-1.8.5+dfsg/debian/patches/no-strict-aliasing.dpatch --- lustre-1.8.3/debian/patches/no-strict-aliasing.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/no-strict-aliasing.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,308 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## no_default_debugging.patch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Build lustre wit -fno-strict-aliasing as it otherwise fails to compile with gcc-4.4 - -@DPATCH@ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/aclocal.m4 lustre/aclocal.m4 ---- lustre~/aclocal.m4 2010-03-11 13:05:55.000000000 +0100 -+++ lustre/aclocal.m4 2010-04-21 11:07:29.552195225 +0200 -@@ -1681,7 +1681,7 @@ - AC_DEFUN([LC_UMOUNTBEGIN_HAS_VFSMOUNT], - [AC_MSG_CHECKING([if umount_begin needs vfsmount parameter instead of super_block]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - -@@ -1746,7 +1746,7 @@ - AC_DEFUN([LC_VFS_READDIR_U64_INO], - [AC_MSG_CHECKING([check vfs_readdir need 64bit inode number]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - int fillonedir(void * __buf, const char * name, int namlen, loff_t offset, -@@ -2086,7 +2086,7 @@ - AC_DEFUN([LC_RW_TREE_LOCK], - [AC_MSG_CHECKING([if kernel has tree_lock as rwlock]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - ],[ -@@ -2214,7 +2214,7 @@ - ],[ - AC_MSG_CHECKING([if kernel using gfp_t for shrinker second paramter]) - tmp_flags="$EXTRA_KCFLAGS" -- EXTRA_KCFLAGS="-Werror" -+ EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - ],[ -@@ -2454,7 +2454,7 @@ - AC_DEFUN([LC_RW_TREE_LOCK], - [AC_MSG_CHECKING([mapping->tree_lock is rw_lock]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - ],[ -@@ -3245,9 +3245,9 @@ - AC_DEFUN([LC_CONFIGURE], - [LC_CONFIG_OBD_BUFFER_SIZE - --if test $target_cpu == "i686" -o $target_cpu == "x86_64"; then -- CFLAGS="$CFLAGS -Werror" --fi -+#if test $target_cpu == "i686" -o $target_cpu == "x86_64"; then -+# CFLAGS="$CFLAGS -Werror -fno-strict-aliasing" -+#fi - - # include/liblustre.h - AC_CHECK_HEADERS([asm/page.h sys/user.h sys/vfs.h stdint.h blkid/blkid.h]) -@@ -5093,7 +5093,7 @@ - AC_DEFUN([LN_KERN__U64_LONG_LONG], - [AC_MSG_CHECKING([kernel __u64 is long long type]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Werror" -+EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - #include -@@ -5116,7 +5116,7 @@ - AC_DEFUN([LN_USER__U64_LONG_LONG], - [AC_MSG_CHECKING([userspace __u64 is long long type]) - tmp_flags="$CFLAGS" --CFLAGS="$CFLAGS -Werror" -+CFLAGS="$CFLAGS -Werror -fno-strict-aliasing" - AC_COMPILE_IFELSE([ - #include - #include -@@ -5141,7 +5141,7 @@ - AC_DEFUN([LN_SIZE_T_LONG], - [AC_MSG_CHECKING([size_t is unsigned long type]) - tmp_flags="$CFLAGS" --CFLAGS="$CFLAGS -Werror" -+CFLAGS="$CFLAGS -Werror -fno-strict-aliasing" - AC_COMPILE_IFELSE([ - #include - #include -@@ -5165,7 +5165,7 @@ - AC_DEFUN([LN_SSIZE_T_LONG], - [AC_MSG_CHECKING([ssize_t is signed long type]) - tmp_flags="$CFLAGS" --CFLAGS="$CFLAGS -Werror" -+CFLAGS="$CFLAGS -Werror -fno-strict-aliasing" - AC_COMPILE_IFELSE([ - #include - #include -@@ -5312,7 +5312,7 @@ - AC_DEFUN([LN_KMEM_CACHE], - [AC_MSG_CHECKING([check kernel has struct kmem_cache]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - typedef struct kmem_cache cache_t; -@@ -5356,7 +5356,7 @@ - [LB_CHECK_SYMBOL_EXPORT([dump_trace], - [kernel/ksyms.c arch/${LINUX_ARCH%_64}/kernel/traps_64.c],[ - tmp_flags="$EXTRA_KCFLAGS" -- EXTRA_KCFLAGS="-Werror" -+ EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - AC_MSG_CHECKING([whether we can really use dump_trace]) - LB_LINUX_TRY_COMPILE([ - struct task_struct; -@@ -5510,7 +5510,7 @@ - AC_DEFUN([LN_FUNC_UNSHARE_FS_STRUCT], - [AC_MSG_CHECKING([if kernel defines unshare_fs_struct()]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - #include -@@ -6705,7 +6705,7 @@ - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings -- # (even with -Werror). So we grep stderr for any message -+ # (even with -Werror -fno-strict-aliasing). So we grep stderr for any message - # that says an option was ignored. - if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/autoconf/lustre-core.m4 lustre/lustre/autoconf/lustre-core.m4 ---- lustre~/lustre/autoconf/lustre-core.m4 2010-04-21 11:03:04.964193828 +0200 -+++ lustre/lustre/autoconf/lustre-core.m4 2010-04-21 11:03:05.153194299 +0200 -@@ -651,7 +651,7 @@ - AC_DEFUN([LC_UMOUNTBEGIN_HAS_VFSMOUNT], - [AC_MSG_CHECKING([if umount_begin needs vfsmount parameter instead of super_block]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - -@@ -716,7 +716,7 @@ - AC_DEFUN([LC_VFS_READDIR_U64_INO], - [AC_MSG_CHECKING([check vfs_readdir need 64bit inode number]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - int fillonedir(void * __buf, const char * name, int namlen, loff_t offset, -@@ -1056,7 +1056,7 @@ - AC_DEFUN([LC_RW_TREE_LOCK], - [AC_MSG_CHECKING([if kernel has tree_lock as rwlock]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - ],[ -@@ -1184,7 +1184,7 @@ - ],[ - AC_MSG_CHECKING([if kernel using gfp_t for shrinker second paramter]) - tmp_flags="$EXTRA_KCFLAGS" -- EXTRA_KCFLAGS="-Werror" -+ EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - ],[ -@@ -1424,7 +1424,7 @@ - AC_DEFUN([LC_RW_TREE_LOCK], - [AC_MSG_CHECKING([mapping->tree_lock is rw_lock]) - tmp_flags="$EXTRA_KCFLAGS" --EXTRA_KCFLAGS="-Werror" -+EXTRA_KCFLAGS="-Werror -fno-strict-aliasing" - LB_LINUX_TRY_COMPILE([ - #include - ],[ -@@ -2216,9 +2216,9 @@ - AC_DEFUN([LC_CONFIGURE], - [LC_CONFIG_OBD_BUFFER_SIZE - --if test $target_cpu == "i686" -o $target_cpu == "x86_64"; then -- CFLAGS="$CFLAGS -Werror" --fi -+#if test $target_cpu == "i686" -o $target_cpu == "x86_64"; then -+# CFLAGS="$CFLAGS -Werror -fno-strict-aliasing" -+#fi - - # include/liblustre.h - AC_CHECK_HEADERS([asm/page.h sys/user.h sys/vfs.h stdint.h blkid/blkid.h]) -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/llite/file.c lustre/lustre/llite/file.c ---- lustre~/lustre/llite/file.c 2010-04-21 11:03:04.916194526 +0200 -+++ lustre/lustre/llite/file.c 2010-04-21 11:03:05.157194090 +0200 -@@ -1428,7 +1428,7 @@ - - count = ll_file_get_iov_count(iov, &nr_segs); - CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p),size="LPSZ",offset=%Ld\n", -- inode->i_ino, inode->i_generation, inode, count, *ppos); -+ inode->i_ino, inode->i_generation, inode, (unsigned int)count, *ppos); - /* "If nbyte is 0, read() will return 0 and have no other results." - * -- Single Unix Spec */ - if (count == 0) -@@ -1598,7 +1598,7 @@ - - chunk = end - *ppos + 1; - CDEBUG(D_INODE,"Read ino %lu, "LPSZ" bytes, offset %lld, i_size %llu\n", -- inode->i_ino, chunk, *ppos, i_size_read(inode)); -+ inode->i_ino, (unsigned int)chunk, *ppos, i_size_read(inode)); - - /* turn off the kernel's read-ahead */ - if (ltd.lock_style != LL_LOCK_STYLE_NOLOCK) { -@@ -1778,7 +1778,7 @@ - count = ll_file_get_iov_count(iov, &nr_segs); - - CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p),size="LPSZ",offset=%Ld\n", -- inode->i_ino, inode->i_generation, inode, count, *ppos); -+ inode->i_ino, inode->i_generation, inode, (unsigned int)count, *ppos); - - SIGNAL_MASK_ASSERT(); /* XXX BUG 1511 */ - -@@ -1881,7 +1881,7 @@ - /* generic_file_write handles O_APPEND after getting i_mutex */ - chunk = end - *ppos + 1; - CDEBUG(D_INFO, "Writing inode %lu, "LPSZ" bytes, offset %Lu\n", -- inode->i_ino, chunk, *ppos); -+ inode->i_ino, (unsigned int)chunk, *ppos); - if (tree_locked) { - struct ost_lvb *xtimes; - /* write under locks -@@ -2116,7 +2116,7 @@ - ENTRY; - - CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p),size="LPSZ",offset=%Ld\n", -- inode->i_ino, inode->i_generation, inode, count, *ppos); -+ inode->i_ino, inode->i_generation, inode, (unsigned int)count, *ppos); - - /* "If nbyte is 0, read() will return 0 and have no other results." - * -- Single Unix Spec */ -@@ -2181,7 +2181,7 @@ - } - - CDEBUG(D_INFO, "Send ino %lu, "LPSZ" bytes, offset %lld, i_size %llu\n", -- inode->i_ino, count, *ppos, i_size_read(inode)); -+ inode->i_ino, (unsigned int)count, *ppos, i_size_read(inode)); - - ll_ra_read_init(in_file, &bead, *ppos, count); - /* BUG: 5972 */ -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/llite/rw26.c lustre/lustre/llite/rw26.c ---- lustre~/lustre/llite/rw26.c 2010-03-11 13:05:55.000000000 +0100 -+++ lustre/lustre/llite/rw26.c 2010-04-21 11:03:05.157194090 +0200 -@@ -242,8 +242,8 @@ - - CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p), size="LPSZ" (max %lu), " - "offset=%lld=%llx, pages "LPSZ" (max %lu)\n", -- inode->i_ino, inode->i_generation, inode, count, MAX_DIO_SIZE, -- file_offset, file_offset, count >> CFS_PAGE_SHIFT, -+ inode->i_ino, inode->i_generation, inode, (unsigned int)count, MAX_DIO_SIZE, -+ file_offset, file_offset, (unsigned int)count >> CFS_PAGE_SHIFT, - MAX_DIO_SIZE >> CFS_PAGE_SHIFT); - - if (rw == WRITE) -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/lvfs/fsfilt_ext3.c lustre/lustre/lvfs/fsfilt_ext3.c ---- lustre~/lustre/lvfs/fsfilt_ext3.c 2010-03-03 14:44:38.000000000 +0100 -+++ lustre/lustre/lvfs/fsfilt_ext3.c 2010-04-21 11:03:05.157194090 +0200 -@@ -721,7 +721,7 @@ - const int blksize = inode->i_sb->s_blocksize; - - CDEBUG(D_EXT2, "reading "LPSZ" at dir %lu+%llu\n", -- count, inode->i_ino, *off); -+ (unsigned int)count, inode->i_ino, *off); - while (count > 0) { - struct buffer_head *bh; - -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/mds/mds_join.c lustre/lustre/mds/mds_join.c ---- lustre~/lustre/mds/mds_join.c 2010-01-23 03:07:58.000000000 +0100 -+++ lustre/lustre/mds/mds_join.c 2010-04-21 11:03:05.157194090 +0200 -@@ -241,7 +241,7 @@ - int max_easize = sizeof(*lmmj); - - CDEBUG(D_INFO, "change the max md size from %d to "LPSZ"\n", -- mds->mds_max_mdsize, sizeof(*lmmj)); -+ mds->mds_max_mdsize, (unsigned int)sizeof(*lmmj)); - - if (mds->mds_max_mdsize < max_easize || - mds->mds_max_cookiesize < max_cookiesize) { -diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' lustre~/lustre/obdclass/obd_mount.c lustre/lustre/obdclass/obd_mount.c ---- lustre~/lustre/obdclass/obd_mount.c 2010-03-11 13:05:55.000000000 +0100 -+++ lustre/lustre/obdclass/obd_mount.c 2010-04-21 11:03:05.157194090 +0200 -@@ -279,7 +279,7 @@ - CDEBUG(D_MOUNT, "Have %s, size %lu\n", MOUNT_DATA_FILE, len); - if (len != sizeof(*ldd)) { - CERROR("disk data size does not match: see %lu expect "LPSZ"\n", -- len, sizeof(*ldd)); -+ (long unsigned int)len, (unsigned int)sizeof(*ldd)); - GOTO(out_close, rc = -EINVAL); - } - diff -Nru lustre-1.8.3/debian/patches/no-strict-aliasing.patch lustre-1.8.5+dfsg/debian/patches/no-strict-aliasing.patch --- lustre-1.8.3/debian/patches/no-strict-aliasing.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/no-strict-aliasing.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,20 @@ +## no_default_debugging.patch by Patrick Winnertz +## DP: Build lustre wit -fno-strict-aliasing as it otherwise fails to compile with gcc-4.4 + +Index: lustre/lustre/autoconf/lustre-core.m4 +=================================================================== +--- lustre.orig/lustre/autoconf/lustre-core.m4 2010-12-07 17:00:37.901545003 +0100 ++++ lustre/lustre/autoconf/lustre-core.m4 2010-12-07 17:00:47.757545002 +0100 +@@ -2344,9 +2344,9 @@ + AC_DEFUN([LC_CONFIGURE], + [LC_CONFIG_OBD_BUFFER_SIZE + +-if test $target_cpu == "i686" -o $target_cpu == "x86_64"; then +- CFLAGS="$CFLAGS -Werror" +-fi ++#if test $target_cpu == "i686" -o $target_cpu == "x86_64"; then ++# CFLAGS="$CFLAGS -Werror" ++#fi + + # include/liblustre.h + AC_CHECK_HEADERS([asm/page.h sys/user.h sys/vfs.h stdint.h blkid/blkid.h]) diff -Nru lustre-1.8.3/debian/patches/page-size-undef-fixes.dpatch lustre-1.8.5+dfsg/debian/patches/page-size-undef-fixes.dpatch --- lustre-1.8.3/debian/patches/page-size-undef-fixes.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/page-size-undef-fixes.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## page-size-undef-fixes.dpatch by -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: set PAGE_SHIFT if this macro is undefined - -@DPATCH@ ---- lustre-1.6.0.1/lnet/include/libcfs/user-prim.h 2007-05-24 07:23:17.000000000 -0700 -+++ lustre-1.6.0.1/lnet/include/libcfs/user-prim.h 2007-05-24 07:24:04.000000000 -0700 -@@ -105,6 +105,12 @@ - - typedef struct page cfs_page_t; - -+#ifndef PAGE_SHIFT -+#define PAGE_SHIFT 12 /* 4KB page size if not defined */ -+#endif -+#ifndef PAGE_SIZE -+#define PAGE_SIZE ((__u64)1 << PAGE_SHIFT) -+#endif - #define CFS_PAGE_SIZE PAGE_SIZE - #define CFS_PAGE_SHIFT PAGE_SHIFT - #define CFS_PAGE_MASK (~((__u64)CFS_PAGE_SIZE-1)) diff -Nru lustre-1.8.3/debian/patches/page-size-undef-fixes.patch lustre-1.8.5+dfsg/debian/patches/page-size-undef-fixes.patch --- lustre-1.8.3/debian/patches/page-size-undef-fixes.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/page-size-undef-fixes.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,20 @@ +## page-size-undef-fixes.dpatch by +## DP: set PAGE_SHIFT if this macro is undefined + +Index: lustre/lnet/include/libcfs/user-prim.h +=================================================================== +--- lustre.orig/lnet/include/libcfs/user-prim.h 2010-12-07 16:57:17.801545003 +0100 ++++ lustre/lnet/include/libcfs/user-prim.h 2010-12-07 16:58:38.857545002 +0100 +@@ -140,6 +140,12 @@ + + #else + ++#ifndef PAGE_SHIFT ++#define PAGE_SHIFT 12 /* 4KB page size if not defined */ ++#endif ++#ifndef PAGE_SIZE ++#define PAGE_SIZE ((__u64)1 << PAGE_SHIFT) ++#endif + #define CFS_PAGE_SIZE PAGE_SIZE + #define CFS_PAGE_SHIFT PAGE_SHIFT + #define CFS_PAGE_MASK (~((__u64)CFS_PAGE_SIZE-1)) diff -Nru lustre-1.8.3/debian/patches/posix_acl.dpatch lustre-1.8.5+dfsg/debian/patches/posix_acl.dpatch --- lustre-1.8.3/debian/patches/posix_acl.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/posix_acl.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,62 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## posix_acl.patch by Goswin von Brederlow -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Patch from Q-Leap Networks - -@DPATCH@ -diff -urNad lustre~/lustre/llite/file.c lustre/lustre/llite/file.c ---- lustre~/lustre/llite/file.c 2009-03-12 10:33:45.000000000 +0100 -+++ lustre/lustre/llite/file.c 2009-03-12 10:41:51.000000000 +0100 -@@ -45,6 +45,7 @@ - #include - #include - #include -+#include - #include "llite_internal.h" - #include - -diff -urNad lustre~/lustre/llite/xattr.c lustre/lustre/llite/xattr.c ---- lustre~/lustre/llite/xattr.c 2009-03-12 10:27:57.000000000 +0100 -+++ lustre/lustre/llite/xattr.c 2009-03-12 10:40:31.000000000 +0100 -@@ -38,6 +38,7 @@ - #include - #include - #include -+#include - - #define DEBUG_SUBSYSTEM S_LLITE - -diff -urNad lustre~/lustre/mdc/mdc_locks.c lustre/lustre/mdc/mdc_locks.c ---- lustre~/lustre/mdc/mdc_locks.c 2009-03-12 10:27:57.000000000 +0100 -+++ lustre/lustre/mdc/mdc_locks.c 2009-03-12 10:40:31.000000000 +0100 -@@ -44,6 +44,7 @@ - # include - # include - # include -+# include - #else - # include - #endif -diff -urNad lustre~/lustre/mdc/mdc_request.c lustre/lustre/mdc/mdc_request.c ---- lustre~/lustre/mdc/mdc_request.c 2009-03-12 10:27:57.000000000 +0100 -+++ lustre/lustre/mdc/mdc_request.c 2009-03-12 10:40:31.000000000 +0100 -@@ -44,6 +44,7 @@ - # include - # include - # include -+# include - #else - # include - #endif -diff -urNad lustre~/lustre/mds/handler.c lustre/lustre/mds/handler.c ---- lustre~/lustre/mds/handler.c 2009-03-12 10:40:31.000000000 +0100 -+++ lustre/lustre/mds/handler.c 2009-03-12 10:42:18.000000000 +0100 -@@ -52,6 +52,7 @@ - #include - #include - #include -+#include - # include - # include - # include diff -Nru lustre-1.8.3/debian/patches/posix_acl.patch lustre-1.8.5+dfsg/debian/patches/posix_acl.patch --- lustre-1.8.3/debian/patches/posix_acl.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/posix_acl.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,63 @@ +## posix_acl.patch by Goswin von Brederlow +## DP: Patch from Q-Leap Networks + +Index: lustre/lustre/llite/file.c +=================================================================== +--- lustre.orig/lustre/llite/file.c 2010-12-07 16:54:33.281545003 +0100 ++++ lustre/lustre/llite/file.c 2010-12-07 16:58:57.589545003 +0100 +@@ -45,6 +45,7 @@ + #include + #include + #include ++#include + #include "llite_internal.h" + #include + +Index: lustre/lustre/llite/xattr.c +=================================================================== +--- lustre.orig/lustre/llite/xattr.c 2010-12-07 16:54:33.273545003 +0100 ++++ lustre/lustre/llite/xattr.c 2010-12-07 16:58:57.589545003 +0100 +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + #define DEBUG_SUBSYSTEM S_LLITE + +Index: lustre/lustre/mdc/mdc_locks.c +=================================================================== +--- lustre.orig/lustre/mdc/mdc_locks.c 2010-12-07 16:54:33.249545003 +0100 ++++ lustre/lustre/mdc/mdc_locks.c 2010-12-07 16:58:57.589545003 +0100 +@@ -44,6 +44,7 @@ + # include + # include + # include ++# include + #else + # include + #endif +Index: lustre/lustre/mdc/mdc_request.c +=================================================================== +--- lustre.orig/lustre/mdc/mdc_request.c 2010-12-07 16:54:33.253545003 +0100 ++++ lustre/lustre/mdc/mdc_request.c 2010-12-07 16:58:57.593545003 +0100 +@@ -44,6 +44,7 @@ + # include + # include + # include ++# include + #else + # include + #endif +Index: lustre/lustre/mds/handler.c +=================================================================== +--- lustre.orig/lustre/mds/handler.c 2010-12-07 16:54:33.265545003 +0100 ++++ lustre/lustre/mds/handler.c 2010-12-07 16:58:57.593545003 +0100 +@@ -52,6 +52,7 @@ + #include + #include + #include ++#include + # include + # include + # include diff -Nru lustre-1.8.3/debian/patches/series lustre-1.8.5+dfsg/debian/patches/series --- lustre-1.8.3/debian/patches/series 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/series 2012-01-08 20:55:00.000000000 +0100 @@ -0,0 +1,28 @@ +page-size-undef-fixes.patch +posix_acl.patch +ldiskfs-detect-2.6.20-2.6.22.patch +no_default_debugging.patch +autogen.sh.patch +no-darwin.patch +libsysio.patch +bug12769-ql-fix.patch +bug15587_security.capability_xattr.patch +# Debian patches +bash_completion.patch +lustre_manpage.patch +tex2pdf.patch +lustre_config.patch +fix-2.6.15-versioncheck.patch +bug13852-quota_includes.patch +enable-quota.patch +fix-symlink-attack.patch +use_bash_instead_of_sh.patch +fix-oot-builds.patch +no-strict-aliasing.patch +fix_bashisms_for_dash.patch +fix_dentry_conf_test.patch +spelling_errors.patch +cacheflush_remove_mark_rodata.patch +615749_no_add_needed +modified-debian-specific-stuff.patch +ldadd_for_loadgen.patch diff -Nru lustre-1.8.3/debian/patches/spelling_errors.patch lustre-1.8.5+dfsg/debian/patches/spelling_errors.patch --- lustre-1.8.3/debian/patches/spelling_errors.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/spelling_errors.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,28 @@ +#fix some spelling errors in some lustre files + +Index: lustre/lustre/tests/multiop.c +=================================================================== +--- lustre.orig/lustre/tests/multiop.c 2010-12-10 13:35:15.726428000 +0100 ++++ lustre/lustre/tests/multiop.c 2010-12-10 13:35:51.294428000 +0100 +@@ -290,7 +290,7 @@ + break; + case 'M': + if (st.st_size == 0) { +- fprintf(stderr, "mmap without preceeding stat, or on" ++ fprintf(stderr, "mmap without preceding stat, or on" + " zero length file.\n"); + exit(-1); + } +Index: lustre/lustre/utils/lfs.c +=================================================================== +--- lustre.orig/lustre/utils/lfs.c 2010-12-10 13:37:15.026428001 +0100 ++++ lustre/lustre/utils/lfs.c 2010-12-10 13:37:40.238428000 +0100 +@@ -1229,7 +1229,7 @@ + } + size = lseek(fd, 0, SEEK_END); + if (size % JOIN_FILE_ALIGN) { +- fprintf(stderr,"head file %s size %llu must be mutiple of %d\n", ++ fprintf(stderr,"head file %s size %llu must be multiple of %d\n", + name_head, (long long)size, JOIN_FILE_ALIGN); + rc = -EINVAL; + goto out; diff -Nru lustre-1.8.3/debian/patches/tex2pdf.dpatch lustre-1.8.5+dfsg/debian/patches/tex2pdf.dpatch --- lustre-1.8.3/debian/patches/tex2pdf.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/tex2pdf.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,31 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: prevend tex2pdf from writing to a location outside the build dir - -@DPATCH@ -diff -urNad lustre-1.6.2.obsolete.0.125913187702285~/lustre/doc/tex2pdf lustre-1.6.2.obsolete.0.125913187702285/lustre/doc/tex2pdf ---- lustre-1.6.2~/lustre/doc/tex2pdf 2002-09-17 22:11:35.000000000 +0200 -+++ lustre-1.6.2/lustre/doc/tex2pdf 2007-09-18 11:30:03.000000000 +0200 -@@ -61,9 +61,8 @@ - my $MYHOSTNAME=hostname; - my $MYNAME=basename $0; - my $MYUSER=$ENV{'USER'}; --my $USER_HOME=$ENV{'HOME'}; - if (not $MYUSER) { $MYUSER = 'nobody'; } --if (not $USER_HOME) { $USER_HOME = '/tmp'; } -+my $USER_HOME = $ENV{'PWD'}; - - my @TMPFILES=(); - my @TMP_TEX_FILES=(); -@@ -1128,8 +1127,8 @@ - &abort("Illegal value: $value"); - } - &set_param_value($key, $value); -- } elsif (defined(&type_enum_array($type))){ -- &set_enum_param($key, $value); -+# } elsif (defined(&type_enum_array($type))){ -+# &set_enum_param($key, $value); - } else { - &set_param_value($key, $value); - } diff -Nru lustre-1.8.3/debian/patches/tex2pdf.patch lustre-1.8.5+dfsg/debian/patches/tex2pdf.patch --- lustre-1.8.3/debian/patches/tex2pdf.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/tex2pdf.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,28 @@ +## DP: prevend tex2pdf from writing to a location outside the build dir + +Index: lustre/lustre/doc/tex2pdf +=================================================================== +--- lustre.orig/lustre/doc/tex2pdf 2010-12-07 16:54:32.721545003 +0100 ++++ lustre/lustre/doc/tex2pdf 2010-12-07 17:00:26.357545002 +0100 +@@ -61,9 +61,8 @@ + my $MYHOSTNAME=hostname; + my $MYNAME=basename $0; + my $MYUSER=$ENV{'USER'}; +-my $USER_HOME=$ENV{'HOME'}; + if (not $MYUSER) { $MYUSER = 'nobody'; } +-if (not $USER_HOME) { $USER_HOME = '/tmp'; } ++my $USER_HOME = $ENV{'PWD'}; + + my @TMPFILES=(); + my @TMP_TEX_FILES=(); +@@ -1128,8 +1127,8 @@ + &abort("Illegal value: $value"); + } + &set_param_value($key, $value); +- } elsif (defined(&type_enum_array($type))){ +- &set_enum_param($key, $value); ++# } elsif (defined(&type_enum_array($type))){ ++# &set_enum_param($key, $value); + } else { + &set_param_value($key, $value); + } diff -Nru lustre-1.8.3/debian/patches/use_bash_instead_of_sh.dpatch lustre-1.8.5+dfsg/debian/patches/use_bash_instead_of_sh.dpatch --- lustre-1.8.3/debian/patches/use_bash_instead_of_sh.dpatch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/use_bash_instead_of_sh.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,26 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## use_bash_instead_of_sh.dpatch by Patrick Winnertz -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: This script uses functions not available on plain sh shell, therefore -## DP: using /bin/bash instead - -@DPATCH@ -diff -urNad lustre~/lustre/tests/acl/make-tree lustre/lustre/tests/acl/make-tree ---- lustre~/lustre/tests/acl/make-tree 2005-06-21 00:18:48.000000000 +0200 -+++ lustre/lustre/tests/acl/make-tree 2008-10-10 09:32:09.000000000 +0200 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/bin/bash - - # reduce LEVELS from 3 => 2 by CFS - LEVELS=2 ; [ -z "$1" ] || LEVELS=$1 -diff -urNad lustre~/lustre/tests/insanity.sh lustre/lustre/tests/insanity.sh ---- lustre~/lustre/tests/insanity.sh 2008-01-11 13:30:26.000000000 +0100 -+++ lustre/lustre/tests/insanity.sh 2008-10-10 09:32:19.000000000 +0200 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/bin/bash - # Test multiple failures, AKA Test 17 - - set -e diff -Nru lustre-1.8.3/debian/patches/use_bash_instead_of_sh.patch lustre-1.8.5+dfsg/debian/patches/use_bash_instead_of_sh.patch --- lustre-1.8.3/debian/patches/use_bash_instead_of_sh.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/patches/use_bash_instead_of_sh.patch 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1,24 @@ +## use_bash_instead_of_sh.dpatch by Patrick Winnertz +## DP: This script uses functions not available on plain sh shell, therefore +## DP: using /bin/bash instead + +Index: lustre/lustre/tests/acl/make-tree +=================================================================== +--- lustre.orig/lustre/tests/acl/make-tree 2010-12-07 16:54:32.421545003 +0100 ++++ lustre/lustre/tests/acl/make-tree 2010-12-07 17:00:42.689545003 +0100 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + + # reduce LEVELS from 3 => 2 by CFS + LEVELS=2 ; [ -z "$1" ] || LEVELS=$1 +Index: lustre/lustre/tests/insanity.sh +=================================================================== +--- lustre.orig/lustre/tests/insanity.sh 2010-12-07 16:54:32.433545003 +0100 ++++ lustre/lustre/tests/insanity.sh 2010-12-07 17:00:42.689545003 +0100 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + # Test multiple failures, AKA Test 17 + + set -e diff -Nru lustre-1.8.3/debian/rules lustre-1.8.5+dfsg/debian/rules --- lustre-1.8.3/debian/rules 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/rules 2011-11-16 13:36:55.000000000 +0100 @@ -12,8 +12,9 @@ DEB_BUILD_GNU_SYSTEM = $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM) DEB_BUILD_GNU_CPU = $(shell dpkg-architecture -qDEB_BUILD_GNU_CPU) -CFLAGS = -Wall -g -fno-stack-protector -LDFLAGS = -lpthread +CFLAGS = -Wall -g +LDFLAGS = -Wl,--no-add-needed + ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else @@ -322,7 +323,6 @@ clean: dh_testdir dh_testroot - dpatch deapply-all rm -rf debian/substvars debian/*.bak debian/*~ *~ *-stamp rm -rf $(BUILDDIR) rm -rf debian/patched @@ -330,11 +330,9 @@ patch: patch-stamp patch-stamp: - dpatch apply-all touch $@ unpatch: - dpatch deapply-all rm -rf debian/patched patch-stamp .PHONY: binary-arch clean source diff binary binary-indep binary-arch install configure diff -Nru lustre-1.8.3/debian/source/format lustre-1.8.5+dfsg/debian/source/format --- lustre-1.8.3/debian/source/format 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/source/format 2011-11-16 13:36:55.000000000 +0100 @@ -0,0 +1 @@ +3.0 (quilt) diff -Nru lustre-1.8.3/debian/source.lintian-overrides lustre-1.8.5+dfsg/debian/source.lintian-overrides --- lustre-1.8.3/debian/source.lintian-overrides 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/debian/source.lintian-overrides 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -lustre source: ored-build-depends-on-obsolete-package build-depends: tetex-extra -lustre source: more-than-one-patch-system -lustre source: quilt-build-dep-but-no-series-file diff -Nru lustre-1.8.3/ldiskfs/aclocal.m4 lustre-1.8.5+dfsg/ldiskfs/aclocal.m4 --- lustre-1.8.3/ldiskfs/aclocal.m4 2010-04-10 02:29:17.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/aclocal.m4 2010-11-17 04:32:07.000000000 +0100 @@ -1166,86 +1166,7 @@ [use alternate names for ldiskfs-enabled e2fsprogs]), [],[withval='no']) -if test x$withval = xyes ; then - AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - AC_MSG_RESULT([enabled]) -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - AC_MSG_RESULT([disabled]) -fi - AC_DEFINE_UNQUOTED(E2FSPROGS, "$E2FSPROGS", [name of ldiskfs e2fsprogs package]) - AC_DEFINE_UNQUOTED(MKE2FS, "$MKE2FS", [name of ldiskfs mkfs program]) - AC_DEFINE_UNQUOTED(DEBUGFS, "$DEBUGFS", [name of ldiskfs debug program]) - AC_DEFINE_UNQUOTED(TUNE2FS, "$TUNE2FS", [name of ldiskfs tune program]) - AC_DEFINE_UNQUOTED(E2LABEL, "$E2LABEL", [name of ldiskfs label program]) - AC_DEFINE_UNQUOTED(DUMPE2FS,"$DUMPE2FS", [name of ldiskfs dump program]) - AC_DEFINE_UNQUOTED(E2FSCK, "$E2FSCK", [name of ldiskfs fsck program]) -]) - -# -# LB_DEFINE_E2FSPROGS_NAMES -# -# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package. -# -AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES], -[AC_ARG_WITH([ldiskfsprogs], - AC_HELP_STRING([--with-ldiskfsprogs], - [use alternate names for ldiskfs-enabled e2fsprogs]), - [],[withval='no']) - -if test x$withval = xyes ; then - AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - AC_MSG_RESULT([enabled]) -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - AC_MSG_RESULT([disabled]) -fi - AC_DEFINE_UNQUOTED(E2FSPROGS, "$E2FSPROGS", [name of ldiskfs e2fsprogs package]) - AC_DEFINE_UNQUOTED(MKE2FS, "$MKE2FS", [name of ldiskfs mkfs program]) - AC_DEFINE_UNQUOTED(DEBUGFS, "$DEBUGFS", [name of ldiskfs debug program]) - AC_DEFINE_UNQUOTED(TUNE2FS, "$TUNE2FS", [name of ldiskfs tune program]) - AC_DEFINE_UNQUOTED(E2LABEL, "$E2LABEL", [name of ldiskfs label program]) - AC_DEFINE_UNQUOTED(DUMPE2FS,"$DUMPE2FS", [name of ldiskfs dump program]) - AC_DEFINE_UNQUOTED(E2FSCK, "$E2FSCK", [name of ldiskfs fsck program]) -]) - -# -# LB_DEFINE_E2FSPROGS_NAMES -# -# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package. -# -AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES], -[AC_ARG_WITH([ldiskfsprogs], - AC_HELP_STRING([--with-ldiskfsprogs], - [use alternate names for ldiskfs-enabled e2fsprogs]), - [],[withval='no']) - +AC_MSG_CHECKING([whether to use alternate names for e2fsprogs]) if test x$withval = xyes ; then AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) E2FSPROGS="ldiskfsprogs" @@ -1759,10 +1680,6 @@ LB_DEFINE_E2FSPROGS_NAMES -LB_DEFINE_E2FSPROGS_NAMES - -LB_DEFINE_E2FSPROGS_NAMES - LC_CONFIG_LIBLUSTRE LIBCFS_CONFIGURE LN_CONFIGURE @@ -1892,7 +1809,7 @@ AC_MSG_RESULT([$LINUXRELEASE]) AC_SUBST(LINUXRELEASE) -moduledir='/lib/modules/'$LINUXRELEASE/kernel +moduledir='/lib/modules/'$LINUXRELEASE/updates/kernel AC_SUBST(moduledir) modulefsdir='$(moduledir)/fs/$(PACKAGE)' @@ -2173,7 +2090,7 @@ # like AC_COMPILE_IFELSE # AC_DEFUN([LB_LINUX_COMPILE_IFELSE], -[m4_ifvaln([$1], [LB_LINUX_CONFTEST([$1])])dnl +[m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl rm -f build/conftest.o build/conftest.mod.c build/conftest.ko AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])], [$4], @@ -2337,7 +2254,7 @@ . $O2IBPATH/ofed_patch.mk fi if test -n "$BACKPORT_INCLUDES"; then - OFED_BACKPORT_PATH=`echo $BACKPORT_INCLUDES | sed "s#.*/src/ofa_kernel/#$O2IBPATH/#"` + OFED_BACKPORT_PATH="$O2IBPATH/${BACKPORT_INCLUDES/*\/kernel_addons/kernel_addons}/" EXTRA_LNET_INCLUDE="-I$OFED_BACKPORT_PATH $EXTRA_LNET_INCLUDE" AC_MSG_RESULT([yes]) else @@ -2348,32 +2265,6 @@ ]) # LC_MODULE_LOADING -# after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains -# so we test if request_module is implemented or not -AC_DEFUN([LC_MODULE_LOADING], -[AC_MSG_CHECKING([if kernel module loading is possible]) -LB_LINUX_TRY_MAKE([ - #include -],[ - int myretval=ENOSYS ; - return myretval; -],[ - $makerule LUSTRE_KERNEL_TEST=conftest.i -],[ - grep request_module build/conftest.i | grep -v `grep "int myretval=" build/conftest.i | cut -d= -f2 | cut -d" " -f1` >/dev/null -],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_MODULE_LOADING_SUPPORT, 1, - [kernel module loading is possible]) -],[ - AC_MSG_RESULT(no) - AC_MSG_WARN([]) - AC_MSG_WARN([Kernel module loading support is highly recommended.]) - AC_MSG_WARN([]) -]) -]) - -# LC_MODULE_LOADING # after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains # so we test if request_module is implemented or not AC_DEFUN([LC_MODULE_LOADING], diff -Nru lustre-1.8.3/ldiskfs/autoMakefile.in lustre-1.8.5+dfsg/ldiskfs/autoMakefile.in --- lustre-1.8.3/ldiskfs/autoMakefile.in 2010-04-10 02:29:18.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/autoMakefile.in 2010-11-17 04:32:09.000000000 +0100 @@ -414,7 +414,7 @@ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + -find $(distdir) -type d ! -perm -755 -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ @@ -700,7 +700,52 @@ cversion=$$(sed -ne '1s/^lustre (\(.*\)-[0-9][0-9]*).*$$/\1/p' debian/changelog); \ if [ "$$lversion" != "$$cversion" ]; then \ echo -e "1i\nlustre ($$lversion-1) unstable; urgency=low\n\n * Automated changelog entry update\n\n -- Brian J. Murrell $$(date -R)\n\n.\nwq" | ed debian/changelog; \ + fi; \ + if [ -d .git ]; then \ + ver=$$(git describe --match v\* --tags); \ + if [[ $$ver = *-*-* ]]; then \ + hash=$${ver##*-}; \ + ffw=$${ver#*-}; \ + ffw=$${ffw%-*}; \ + ver=$${ver%%-*}; \ + fi; \ + if [ $$ffw -gt 0 ]; then \ + tag=$$ver; \ + if [[ $$ver =~ ^v([0-9]+_)+([0-9]+|RC[0-9]+)$$ ]]; then \ + ver=$$(echo $$ver | \ + sed -e 's/^v\(.*\)/\1/' \ + -e 's/_RC[[0-9]].*$$//' \ + -e 's/_/./g'); \ + fi; \ + pdir="debian/patches"; \ + if [ -d $$pdir ]; then \ + rm -rf $$pdir; \ + fi; \ + mkdir $$pdir; \ + git format-patch -o $$pdir $$tag..HEAD; \ + pushd $$pdir; \ + if [ -d ../patched ]; then \ + rm -rf ../patched; \ + fi; \ + mkdir ../patched; \ + rm -f 00list *.dpatch; \ + for file in [0-9][0-9][0-9][0-9]-*.patch; do \ + if ! grep -q "^ debian/changelog" $$file; then \ + desc=$$(cat $$file | sed -e '1,/^$$/d' \ + -e '/^---$$/,$$d'); \ + dpatch_file=$${file/.patch/.dpatch}; \ + sed -e '1,/^---$$/d' $$file | \ + dpatch patch-template -p "$${file%.patch}" \ + "$$desc" > $$dpatch_file; \ + echo "faked by make debs run from git" > \ + ../patched/$$dpatch_file; \ + echo $$dpatch_file >> 00list; \ + fi; \ + rm -f $$file; \ + done; \ + fi; \ fi + rm -rf debs dpkg-buildpackage || { \ rc=$${PIPESTATUS[0]}; \ [ $${rc} -gt 1 ] && exit $${rc}; \ @@ -710,7 +755,7 @@ version=$$(sed -ne '1s/^lustre (\(.*\)).*$$/\1/p' debian/changelog) && \ rm -rf debian/tmp/modules-deb && \ mkdir debian/tmp/modules-deb && \ - cd debian/tmp/modules-deb && \ + pushd debian/tmp/modules-deb && \ dpkg -x ../../../../lustre-source_$${version}_all.deb $$(pwd) && \ mkdir usr_src/ && \ tar -C usr_src/ -xjf usr/src/lustre.tar.bz2 && \ @@ -720,7 +765,12 @@ ln -s /usr/share/modass/packages/ usr_share_modass/ && \ echo "lustre" > usr_share_modass/compliant.list && \ export MA_DIR=$$(pwd)/usr_share_modass && \ - m-a build $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre + KVERS=$${KVERS:-$(LINUXRELEASE)}; \ + m-a build $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre && \ + popd && \ + VER=$$(sed -ne '1s/^lustre (\(.*-[0-9][0-9]*\)).*$$/\1/p' debian/changelog); \ + mkdir -p debs && \ + mv ../liblustre_$${VER}_*.deb ../linux-patch-lustre_$${VER}_all.deb ../lustre-dev_$${VER}_*.deb ../lustre-source_$${VER}_all.deb ../lustre-tests_$${VER}_*.deb ../lustre-utils_$${VER}_*.deb ../lustre_$${VER}.dsc ../lustre_$${VER}_*.changes ../lustre_$${VER}.tar.gz ../lustre-client-modules-$${KVERS}_$${VER}_*.deb debs/ module-dist-hook: # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru lustre-1.8.3/ldiskfs/build/autoconf/lustre-build-linux.m4 lustre-1.8.5+dfsg/ldiskfs/build/autoconf/lustre-build-linux.m4 --- lustre-1.8.3/ldiskfs/build/autoconf/lustre-build-linux.m4 2010-03-15 03:04:07.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/build/autoconf/lustre-build-linux.m4 2010-11-17 04:31:48.000000000 +0100 @@ -84,7 +84,7 @@ AC_MSG_RESULT([$LINUXRELEASE]) AC_SUBST(LINUXRELEASE) -moduledir='/lib/modules/'$LINUXRELEASE/kernel +moduledir='/lib/modules/'$LINUXRELEASE/updates/kernel AC_SUBST(moduledir) modulefsdir='$(moduledir)/fs/$(PACKAGE)' @@ -365,7 +365,7 @@ # like AC_COMPILE_IFELSE # AC_DEFUN([LB_LINUX_COMPILE_IFELSE], -[m4_ifvaln([$1], [LB_LINUX_CONFTEST([$1])])dnl +[m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl rm -f build/conftest.o build/conftest.mod.c build/conftest.ko AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])], [$4], @@ -529,7 +529,7 @@ . $O2IBPATH/ofed_patch.mk fi if test -n "$BACKPORT_INCLUDES"; then - OFED_BACKPORT_PATH=`echo $BACKPORT_INCLUDES | sed "s#.*/src/ofa_kernel/#$O2IBPATH/#"` + OFED_BACKPORT_PATH="$O2IBPATH/${BACKPORT_INCLUDES/*\/kernel_addons/kernel_addons}/" EXTRA_LNET_INCLUDE="-I$OFED_BACKPORT_PATH $EXTRA_LNET_INCLUDE" AC_MSG_RESULT([yes]) else @@ -540,32 +540,6 @@ ]) # LC_MODULE_LOADING -# after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains -# so we test if request_module is implemented or not -AC_DEFUN([LC_MODULE_LOADING], -[AC_MSG_CHECKING([if kernel module loading is possible]) -LB_LINUX_TRY_MAKE([ - #include -],[ - int myretval=ENOSYS ; - return myretval; -],[ - $makerule LUSTRE_KERNEL_TEST=conftest.i -],[ - grep request_module build/conftest.i | grep -v `grep "int myretval=" build/conftest.i | cut -d= -f2 | cut -d" " -f1` >/dev/null -],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_MODULE_LOADING_SUPPORT, 1, - [kernel module loading is possible]) -],[ - AC_MSG_RESULT(no) - AC_MSG_WARN([]) - AC_MSG_WARN([Kernel module loading support is highly recommended.]) - AC_MSG_WARN([]) -]) -]) - -# LC_MODULE_LOADING # after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains # so we test if request_module is implemented or not AC_DEFUN([LC_MODULE_LOADING], diff -Nru lustre-1.8.3/ldiskfs/build/autoconf/lustre-build.m4 lustre-1.8.5+dfsg/ldiskfs/build/autoconf/lustre-build.m4 --- lustre-1.8.3/ldiskfs/build/autoconf/lustre-build.m4 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/build/autoconf/lustre-build.m4 2010-11-17 04:31:48.000000000 +0100 @@ -331,86 +331,7 @@ [use alternate names for ldiskfs-enabled e2fsprogs]), [],[withval='no']) -if test x$withval = xyes ; then - AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - AC_MSG_RESULT([enabled]) -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - AC_MSG_RESULT([disabled]) -fi - AC_DEFINE_UNQUOTED(E2FSPROGS, "$E2FSPROGS", [name of ldiskfs e2fsprogs package]) - AC_DEFINE_UNQUOTED(MKE2FS, "$MKE2FS", [name of ldiskfs mkfs program]) - AC_DEFINE_UNQUOTED(DEBUGFS, "$DEBUGFS", [name of ldiskfs debug program]) - AC_DEFINE_UNQUOTED(TUNE2FS, "$TUNE2FS", [name of ldiskfs tune program]) - AC_DEFINE_UNQUOTED(E2LABEL, "$E2LABEL", [name of ldiskfs label program]) - AC_DEFINE_UNQUOTED(DUMPE2FS,"$DUMPE2FS", [name of ldiskfs dump program]) - AC_DEFINE_UNQUOTED(E2FSCK, "$E2FSCK", [name of ldiskfs fsck program]) -]) - -# -# LB_DEFINE_E2FSPROGS_NAMES -# -# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package. -# -AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES], -[AC_ARG_WITH([ldiskfsprogs], - AC_HELP_STRING([--with-ldiskfsprogs], - [use alternate names for ldiskfs-enabled e2fsprogs]), - [],[withval='no']) - -if test x$withval = xyes ; then - AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) - E2FSPROGS="ldiskfsprogs" - MKE2FS="mkfs.ldiskfs" - DEBUGFS="debug.ldiskfs" - TUNE2FS="tune.ldiskfs" - E2LABEL="label.ldiskfs" - DUMPE2FS="dump.ldiskfs" - E2FSCK="fsck.ldiskfs" - AC_MSG_RESULT([enabled]) -else - E2FSPROGS="e2fsprogs" - MKE2FS="mke2fs" - DEBUGFS="debugfs" - TUNE2FS="tune2fs" - E2LABEL="e2label" - DUMPE2FS="dumpe2fs" - E2FSCK="e2fsck" - AC_MSG_RESULT([disabled]) -fi - AC_DEFINE_UNQUOTED(E2FSPROGS, "$E2FSPROGS", [name of ldiskfs e2fsprogs package]) - AC_DEFINE_UNQUOTED(MKE2FS, "$MKE2FS", [name of ldiskfs mkfs program]) - AC_DEFINE_UNQUOTED(DEBUGFS, "$DEBUGFS", [name of ldiskfs debug program]) - AC_DEFINE_UNQUOTED(TUNE2FS, "$TUNE2FS", [name of ldiskfs tune program]) - AC_DEFINE_UNQUOTED(E2LABEL, "$E2LABEL", [name of ldiskfs label program]) - AC_DEFINE_UNQUOTED(DUMPE2FS,"$DUMPE2FS", [name of ldiskfs dump program]) - AC_DEFINE_UNQUOTED(E2FSCK, "$E2FSCK", [name of ldiskfs fsck program]) -]) - -# -# LB_DEFINE_E2FSPROGS_NAMES -# -# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package. -# -AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES], -[AC_ARG_WITH([ldiskfsprogs], - AC_HELP_STRING([--with-ldiskfsprogs], - [use alternate names for ldiskfs-enabled e2fsprogs]), - [],[withval='no']) - +AC_MSG_CHECKING([whether to use alternate names for e2fsprogs]) if test x$withval = xyes ; then AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package]) E2FSPROGS="ldiskfsprogs" @@ -924,10 +845,6 @@ LB_DEFINE_E2FSPROGS_NAMES -LB_DEFINE_E2FSPROGS_NAMES - -LB_DEFINE_E2FSPROGS_NAMES - LC_CONFIG_LIBLUSTRE LIBCFS_CONFIGURE LN_CONFIGURE diff -Nru lustre-1.8.3/ldiskfs/build/autoMakefile.am.toplevel lustre-1.8.5+dfsg/ldiskfs/build/autoMakefile.am.toplevel --- lustre-1.8.3/ldiskfs/build/autoMakefile.am.toplevel 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/build/autoMakefile.am.toplevel 2010-11-17 04:31:48.000000000 +0100 @@ -152,7 +152,52 @@ cversion=$$(sed -ne '1s/^lustre (\(.*\)-[0-9][0-9]*).*$$/\1/p' debian/changelog); \ if [ "$$lversion" != "$$cversion" ]; then \ echo -e "1i\nlustre ($$lversion-1) unstable; urgency=low\n\n * Automated changelog entry update\n\n -- Brian J. Murrell $$(date -R)\n\n.\nwq" | ed debian/changelog; \ + fi; \ + if [ -d .git ]; then \ + ver=$$(git describe --match v\* --tags); \ + if [[ $$ver = *-*-* ]]; then \ + hash=$${ver##*-}; \ + ffw=$${ver#*-}; \ + ffw=$${ffw%-*}; \ + ver=$${ver%%-*}; \ + fi; \ + if [ $$ffw -gt 0 ]; then \ + tag=$$ver; \ + if [[ $$ver =~ ^v([0-9]+_)+([0-9]+|RC[0-9]+)$$ ]]; then \ + ver=$$(echo $$ver | \ + sed -e 's/^v\(.*\)/\1/' \ + -e 's/_RC[[0-9]].*$$//' \ + -e 's/_/./g'); \ + fi; \ + pdir="debian/patches"; \ + if [ -d $$pdir ]; then \ + rm -rf $$pdir; \ + fi; \ + mkdir $$pdir; \ + git format-patch -o $$pdir $$tag..HEAD; \ + pushd $$pdir; \ + if [ -d ../patched ]; then \ + rm -rf ../patched; \ + fi; \ + mkdir ../patched; \ + rm -f 00list *.dpatch; \ + for file in [0-9][0-9][0-9][0-9]-*.patch; do \ + if ! grep -q "^ debian/changelog" $$file; then \ + desc=$$(cat $$file | sed -e '1,/^$$/d' \ + -e '/^---$$/,$$d'); \ + dpatch_file=$${file/.patch/.dpatch}; \ + sed -e '1,/^---$$/d' $$file | \ + dpatch patch-template -p "$${file%.patch}" \ + "$$desc" > $$dpatch_file; \ + echo "faked by make debs run from git" > \ + ../patched/$$dpatch_file; \ + echo $$dpatch_file >> 00list; \ + fi; \ + rm -f $$file; \ + done; \ + fi; \ fi + rm -rf debs dpkg-buildpackage || { \ rc=$${PIPESTATUS[0]}; \ [ $${rc} -gt 1 ] && exit $${rc}; \ @@ -162,7 +207,7 @@ version=$$(sed -ne '1s/^lustre (\(.*\)).*$$/\1/p' debian/changelog) && \ rm -rf debian/tmp/modules-deb && \ mkdir debian/tmp/modules-deb && \ - cd debian/tmp/modules-deb && \ + pushd debian/tmp/modules-deb && \ dpkg -x ../../../../lustre-source_$${version}_all.deb $$(pwd) && \ mkdir usr_src/ && \ tar -C usr_src/ -xjf usr/src/lustre.tar.bz2 && \ @@ -172,4 +217,9 @@ ln -s /usr/share/modass/packages/ usr_share_modass/ && \ echo "lustre" > usr_share_modass/compliant.list && \ export MA_DIR=$$(pwd)/usr_share_modass && \ - m-a build $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre + KVERS=$${KVERS:-$(LINUXRELEASE)}; \ + m-a build $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre && \ + popd && \ + VER=$$(sed -ne '1s/^lustre (\(.*-[0-9][0-9]*\)).*$$/\1/p' debian/changelog); \ + mkdir -p debs && \ + mv ../liblustre_$${VER}_*.deb ../linux-patch-lustre_$${VER}_all.deb ../lustre-dev_$${VER}_*.deb ../lustre-source_$${VER}_all.deb ../lustre-tests_$${VER}_*.deb ../lustre-utils_$${VER}_*.deb ../lustre_$${VER}.dsc ../lustre_$${VER}_*.changes ../lustre_$${VER}.tar.gz ../lustre-client-modules-$${KVERS}_$${VER}_*.deb debs/ diff -Nru lustre-1.8.3/ldiskfs/build/lbuild lustre-1.8.5+dfsg/ldiskfs/build/lbuild --- lustre-1.8.3/ldiskfs/build/lbuild 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/build/lbuild 2010-11-17 04:31:48.000000000 +0100 @@ -89,6 +89,11 @@ # build the lustre-tests rpm? LUSTRE_TESTS=true +# these are disabled by default, enabled with command line switches or by +# the calling environment +BUILD_MPTLINUX=${BUILD_MPTLINUX:-false} +BUILD_RDAC=${BUILD_RDAC:-false} + DATE=$(date) USE_DATESTAMP=1 @@ -237,6 +242,17 @@ --xen Builds a Xen domX kernel. + --enable-mptlinux + Enables the building of MPTLINUX with the same kernel Lustre is + built with. + + --enable-rdac + Enables the building of MPTLINUX with the same kernel Lustre is + built with. + + --set-value + Set's a variable to a given value. + EOF # list_targets @@ -491,7 +507,7 @@ touch $semaphore if ! wget -nv "$from" -O "$to" || [ ! -s "$to" ]; then # the trap will remove the files via the fatal below - fatal 1 "Could not download ${to##*/} from ${from%%/*}/." + fatal 1 "Could not download ${to##*/} from ${from%/*}/." fi rm -f $semaphore delete_exit_trap "download" @@ -507,58 +523,30 @@ download_ofed() { local force="${1:-false}" - local location="http://downloads.lustre.org/public/OFED/" + if [ -z "$OFED_VERSION" -o "$OFED_VERSION" = "inkernel" ]; then + return 0 + fi + + local location="http://www.openfabrics.org/downloads/OFED/ofed-${OFED_VERSION}/" - local Mmv daily if [[ $OFED_VERSION = daily-* ]]; then + local Mmv daily OFED_VERSION=${OFED_VERSION/daily-/} Mmv=${OFED_VERSION%%-*} daily=${OFED_VERSION##$Mmv-} location="http://www.openfabrics.org/downloads/OFED/ofed-${Mmv}-daily/" # find the filename for the version for the date specified - OFED_VERSION=$(curl -s "$location" | sed -nre "/${daily}-/s/.*href=\"OFED-([0-9]+\.[0-9]+-${daily}-[0-9]{4,4}).tgz.*$/\1/p" | tail -1) + OFED_VERSION=$(curl -s "$location" | sed -nre "/${daily}-/s/.*href=\"OFED-(${Mmv//./\\.}-${daily}-[0-9]{4,4}).tgz.*$/\1/p" | tail -1) if [ -z "$OFED_VERSION" ]; then fatal 1 "Could not determine the filename of the OFED snapshot for ${daily}" fi fi - if [ -z "$OFED_VERSION" -o "$OFED_VERSION" = "inkernel" ]; then - return 0 - fi - local file="OFED-${OFED_VERSION}.tgz" download_file "$location/$file" "$KERNELTREE" "$force" } -download_rdac() { - local force="${1:-false}" - - local location="http://downloads.lustre.org/public/RDAC/" - - if [ -z "$RDAC_VERSION" -o "$RDAC_VERSION" = "inkernel" ]; then - return 0 - fi - - local file="rdac-LINUX-${RDAC_VERSION}-source.tar.gz" - download_file "$location/$file" "$KERNELTREE" "$force" - -} - -download_mptlinux() { - local force="${1:-false}" - - local location="http://downloads.lustre.org/public/MPTLINUX/" - - if [ -z "$MPTLINUX_VERSION" -o "$MPTLINUX_VERSION" = "inkernel" ]; then - return 0 - fi - - file="MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip" - download_file "$location/$file" "$KERNELTREE" "$force" - -} - load_target() { EXTRA_VERSION_save="$EXTRA_VERSION" @@ -637,11 +625,10 @@ elif ! $RELEASE; then # if there is no patch series, then this is not a lustre specific # kernel. don't make it look like one - if [ -n "$SERIES" ]; then - #remove the @VERSION@ (lustre version) -# EXTRA_VERSION=$(echo $EXTRA_VERSION | sed -e "s/\(.*_lustre\)\..*/\1/") + if $PATCHLESS || [ -n "$SERIES" ]; then + EXTRA_VERSION=$(echo $EXTRA_VERSION | sed -e "s/\(.*_lustre\)\..*/\1/") # EXTRA_VERSION="${EXTRA_VERSION}-${TAG}.${TIMESTAMP}" - ! ( $PATCHLESS ) && EXTRA_VERSION="${EXTRA_VERSION}.${TIMESTAMP}" + EXTRA_VERSION="${EXTRA_VERSION}.${TIMESTAMP}" fi fi # EXTRA_VERSION=${EXTRA_VERSION//-/_} @@ -683,10 +670,12 @@ } untar() { - local file="$1" + local tarfile="$1" + shift + local extractfile="$@" - echo "Untarring ${file##*/}..." - tar $(tarflags "$file") "$file" + echo "Untarring ${tarfile##*/}..." + tar $(tarflags "$tarfile") "$tarfile" $extractfile } @@ -710,10 +699,10 @@ unpack_mptlinux() { - if ! unzip -p $KERNELTREE/MPTLINUX_RHEL5_SLES10_PH15-4.16.00.00-2.zip | tar xzvf - srpms-2/mptlinux-4.16.00.00-2.src.rpm; then + if ! untar $KERNELTREE/SUN_MPTLINUX_RHEL5_PH16-${MPTLINUX_VERSION}.tar.gz pkg1-rhel5/srpms-1/mptlinux-${MPTLINUX_VERSION}-1.src.rpm; then return 1 fi - mv srpms-2/mptlinux-4.16.00.00-2.src.rpm . + mv pkg1-rhel5/srpms-1/mptlinux-${MPTLINUX_VERSION}-1.src.rpm . } @@ -856,6 +845,7 @@ $RPMBUILD $targets $rpmbuildopt ../lustre.spec \ ${is_patchless:+--define "lustre_name lustre-client"} \ ${lustre_tests:+--define "build_lustre_tests 0"} \ + ${FIND_REQUIRES:+--define "__find_requires $FIND_REQUIRES"} \ --define "configure_args $confoptions ${CONFIGURE_FLAGS}" \ --define "_tmppath $TMPDIR" \ --define "_topdir $TOPDIR" 2>&1 || \ @@ -965,6 +955,10 @@ [ $infact_arch == $smp_type ] && RPMSMPTYPE=bigsmp && break done + for smp_type in $PPC64_ARCHS; do + [ $infact_arch == $smp_type ] && RPMSMPTYPE=ppc64 && break + done + for smp_type in $DEFAULT_ARCHS; do [ $infact_arch == $smp_type ] && RPMSMPTYPE=default && break done @@ -1035,7 +1029,9 @@ # call a distro specific hook, if available if type -p unpack_linux_devel_rpm-$DISTRO; then - unpack_linux_devel_rpm-$DISTRO "$kernelrpm" + if ! unpack_linux_devel_rpm-$DISTRO "$kernelrpm"; then + return 255 + fi fi popd &>/dev/null @@ -1083,7 +1079,7 @@ rpm --define "_topdir ${TOPDIR}" -ivh $SOURCE SOURCE="${TOPDIR}/SPECS/ofa_kernel.spec" local file ed_fragment1 ed_fragment2 n=1 - for file in ${TOPDIR}/lustre/build/patches/ofed/*; do + for file in $(ls ${TOPDIR}/lustre/build/patches/ofed/*); do ed_fragment1="$ed_fragment1 Patch$n: ${file%%*/}" ed_fragment2="$ed_fragment2 @@ -1092,7 +1088,8 @@ let n=$n+1 done - ed $SOURCE </dev/null @@ -1571,7 +1594,7 @@ fatal 1 "Failed to find a kernel development RPM in $TOPDIR/RPMS/$arch/" fi - # install the -devel RPM in preparation for the lustre build + # install the -devel RPM in preparation for modules builds if ! lnxrel="$kernel_extra_version" unpack_linux_devel_rpm \ "$TOPDIR/RPMS/$arch/$kernel_devel_rpm"; then fatal 1 "Could not find the Linux tree in $TOPDIR/RPMS/$arch/$kernel_devel_rpm" @@ -1589,6 +1612,38 @@ fi fi + # ~sigh~ have to make copies of and modify some of the rpm + # infrastructure files so that find-requires can find our unpacked + # kernel-devel artifacts + cp $RPM_HELPERS_DIR/{symset-table,find-requires{,.ksyms}} . + FIND_REQUIRES="$(pwd)/find-requires" + chmod 755 {symset-table,find-requires{,.ksyms}} + local tmp="$(pwd)" + tmp="${tmp//\//\\/}" + ed find-requires < ++ - update to 4.18.20.04 +* Wed Oct 28 2009 Brian J. Murrell + - split into modules and non-modules packages so that multiple + modules packages can be installed, for several kernels diff -Nru lustre-1.8.3/ldiskfs/ChangeLog lustre-1.8.5+dfsg/ldiskfs/ChangeLog --- lustre-1.8.3/ldiskfs/ChangeLog 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/ChangeLog 2010-11-17 04:31:48.000000000 +0100 @@ -1,3 +1,43 @@ +2010-10-29 Oracle, Inc. + * version 3.1.4 + +Severity : normal +Bugzilla : 23683 +Description: Bring upstream patch for ldiskfs. + +Severity : normal +Bugzilla : 21610 +Description: add support for SLES11 SP1 + +------------------------------------------------------------------------------- + +2010-07-31 Oracle, Inc. + * version 3.1.3 + +Severity : normal +Bugzilla : 18456 +Description: Reduce group prealloc size and skip groups with little free space. + +Severity : normal +Bugzilla : 22237 +Description: Fix issue with proc_remove. + +Severity : normal +Bugzilla : 22771 +Description: add mount option to disable mb_cache since it can cause slowdown. + +Severity : normal +Bugzilla : 23368 +Description: Disable delayed allocation by default for ext4-based ldiskfs on + RHEL5.5 + +Severity : normal +Bugzilla : 23368 +Description: A mount failure can corrupt the slab. This is a bug in the latest + RHEL5.5 kernel and only ext4-based ldiskfs is impacted. + +------------------------------------------------------------------------------- + 2010-04-30 Oracle, Inc. * version 3.1.2 diff -Nru lustre-1.8.3/ldiskfs/configure lustre-1.8.5+dfsg/ldiskfs/configure --- lustre-1.8.3/ldiskfs/configure 2010-04-10 02:29:18.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/configure 2010-11-17 04:32:09.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for Lustre ldiskfs 3.0.9. +# Generated by GNU Autoconf 2.59 for Lustre ldiskfs 3.1.4. # # Report bugs to . # @@ -269,8 +269,8 @@ # Identity of this package. PACKAGE_NAME='Lustre ldiskfs' PACKAGE_TARNAME='lustre-ldiskfs' -PACKAGE_VERSION='3.0.9' -PACKAGE_STRING='Lustre ldiskfs 3.0.9' +PACKAGE_VERSION='3.1.4' +PACKAGE_STRING='Lustre ldiskfs 3.1.4' PACKAGE_BUGREPORT='https://bugzilla.lustre.org/' ac_unique_file="lustre-ldiskfs.spec.in" @@ -780,7 +780,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Lustre ldiskfs 3.0.9 to adapt to many kinds of systems. +\`configure' configures Lustre ldiskfs 3.1.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -847,7 +847,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Lustre ldiskfs 3.0.9:";; + short | recursive ) echo "Configuration of Lustre ldiskfs 3.1.4:";; esac cat <<\_ACEOF @@ -858,6 +858,7 @@ --enable-dependency-tracking Do not reject slow dependency extractors --disable-modules disable building of Lustre kernel modules --disable-quilt disable use of quilt for ldiskfs + --enable-ext4 enable building of ldiskfs based on ext4 Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -979,7 +980,7 @@ test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -Lustre ldiskfs configure 3.0.9 +Lustre ldiskfs configure 3.1.4 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -993,7 +994,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Lustre ldiskfs $as_me 3.0.9, which was +It was created by Lustre ldiskfs $as_me 3.1.4, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -1691,7 +1692,7 @@ # Define the identity of the package. PACKAGE='lustre-ldiskfs' - VERSION='3.0.9' + VERSION='3.1.4' cat >>confdefs.h <<_ACEOF @@ -4381,7 +4382,7 @@ echo "$as_me:$LINENO: checking for external module build support" >&5 echo $ECHO_N "checking for external module build support... $ECHO_C" >&6 rm -f build/conftest.i - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4396,7 +4397,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d $makerule LUSTRE_KERNEL_TEST=conftest.i ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4420,7 +4420,7 @@ makerule="_module_$makerule" MODULE_TARGET="M" - cat >conftest.c <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4435,7 +4435,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d $makerule LUSTRE_KERNEL_TEST=conftest.i ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4480,7 +4479,7 @@ # --- check that we can build modules at all echo "$as_me:$LINENO: checking that modules can be built at all" >&5 echo $ECHO_N "checking that modules can be built at all... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4495,7 +4494,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4540,7 +4538,7 @@ else LINUXRELEASEHEADER=version.h fi -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4560,7 +4558,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d $makerule LUSTRE_KERNEL_TEST=conftest.i @@ -4607,7 +4604,7 @@ echo "${ECHO_T}$LINUXRELEASE" >&6 -moduledir='/lib/modules/'$LINUXRELEASE/kernel +moduledir='/lib/modules/'$LINUXRELEASE/updates/kernel modulefsdir='$(moduledir)/fs/$(PACKAGE)' @@ -4627,7 +4624,7 @@ # check is redhat/suse kernels echo "$as_me:$LINENO: checking that RedHat kernel" >&5 echo $ECHO_N "checking that RedHat kernel... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4648,7 +4645,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4681,7 +4677,7 @@ echo "$as_me:$LINENO: checking if Linux was built with CONFIG_SUSE_KERNEL" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_SUSE_KERNEL... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4702,7 +4698,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4766,7 +4761,7 @@ echo "$as_me:$LINENO: checking if Linux was built with CONFIG_MODULES" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_MODULES... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4787,7 +4782,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4825,7 +4819,7 @@ echo "$as_me:$LINENO: checking if Linux was built with CONFIG_MODVERSIONS" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_MODVERSIONS... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4846,7 +4840,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4880,7 +4873,7 @@ echo "$as_me:$LINENO: checking if Linux was built with CONFIG_KALLSYMS" >&5 echo $ECHO_N "checking if Linux was built with CONFIG_KALLSYMS... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4901,7 +4894,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d modules ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/`uname -m|sed -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/'`/include -I$LINUX/include -I$LINUX_OBJ/include -I$LINUX_OBJ/include2 -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4942,7 +4934,7 @@ # 2.6.28 echo "$as_me:$LINENO: checking if kernel module loading is possible" >&5 echo $ECHO_N "checking if kernel module loading is possible... $ECHO_C" >&6 -cat >conftest.c <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4962,7 +4954,6 @@ return 0; } _ACEOF - rm -f build/conftest.o build/conftest.mod.c build/conftest.ko if { ac_try='cp conftest.c build && make -d $makerule LUSTRE_KERNEL_TEST=conftest.i @@ -5073,7 +5064,7 @@ . $O2IBPATH/ofed_patch.mk fi if test -n "$BACKPORT_INCLUDES"; then - OFED_BACKPORT_PATH=`echo $BACKPORT_INCLUDES | sed "s#.*/src/ofa_kernel/#$O2IBPATH/#"` + OFED_BACKPORT_PATH="$O2IBPATH/${BACKPORT_INCLUDES/*\/kernel_addons/kernel_addons}/" EXTRA_LNET_INCLUDE="-I$OFED_BACKPORT_PATH $EXTRA_LNET_INCLUDE" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 @@ -5367,6 +5358,42 @@ + +if test x$RHEL_KERNEL = xyes; then + # Check whether --enable-ext4 or --disable-ext4 was given. +if test "${enable_ext4+set}" = set; then + enableval="$enable_ext4" + +else + + if test x$ldiskfs_is_ext4 = xyes; then + enable_ext4=yes + else + enable_ext4=no + fi + +fi; +else + case $LINUXRELEASE in + # ext4 was in 2.6.22-2.6.26 but not stable enough to use + 2.6.20-6*) enable_ext4='no' ;; + *) if test -f $LINUX/fs/ext4/ext4.h ; then +enable_ext4='yes' +else +enable_ext4='no' +fi + ;; + esac +fi +if test x$enable_ext4 = xyes; then + ac_configure_args="$ac_configure_args --enable-ext4" +fi +echo "$as_me:$LINENO: checking whether to build ldiskfs based on ext4" >&5 +echo $ECHO_N "checking whether to build ldiskfs based on ext4... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $enable_ext4" >&5 +echo "${ECHO_T}$enable_ext4" >&6 + + if test x$enable_ext4 = xyes ; then cat >>confdefs.h <<\_ACEOF @@ -5416,6 +5443,7 @@ ;; 2.6.22*) LDISKFS_SERIES="2.6.22-vanilla.series";; 2.6.27*) LDISKFS_SERIES="2.6-sles11.series";; +2.6.32.*) LDISKFS_SERIES="2.6-sles11.series";; *) { echo "$as_me:$LINENO: WARNING: Unknown kernel version $LINUXRELEASE, fix ldiskfs/configure.ac" >&5 echo "$as_me: WARNING: Unknown kernel version $LINUXRELEASE, fix ldiskfs/configure.ac" >&2;} esac @@ -6005,7 +6033,7 @@ } >&5 cat >&5 <<_CSEOF -This file was extended by Lustre ldiskfs $as_me 3.0.9, which was +This file was extended by Lustre ldiskfs $as_me 3.1.4, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6068,7 +6096,7 @@ cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -Lustre ldiskfs config.status 3.0.9 +Lustre ldiskfs config.status 3.1.4 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff -Nru lustre-1.8.3/ldiskfs/configure.ac lustre-1.8.5+dfsg/ldiskfs/configure.ac --- lustre-1.8.3/ldiskfs/configure.ac 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/configure.ac 2010-11-17 04:31:48.000000000 +0100 @@ -1,6 +1,6 @@ # Process this file with autoconf to produce a configure script. -AC_INIT([Lustre ldiskfs], 3.0.9, [https://bugzilla.lustre.org/]) +AC_INIT([Lustre ldiskfs], 3.1.4, [https://bugzilla.lustre.org/]) AC_CONFIG_SRCDIR([lustre-ldiskfs.spec.in]) # Don't look for install-sh, etc. in .. @@ -83,6 +83,8 @@ LB_DEFINE_LDISKFS_OPTIONS +LB_HAVE_EXT4_ENABLED + if test x$enable_ext4 = xyes ; then AC_DEFINE(HAVE_EXT4_LDISKFS, 1, [ldiskfs based on ext4]) BACKFS=ext4 @@ -118,6 +120,7 @@ ;; 2.6.22*) LDISKFS_SERIES="2.6.22-vanilla.series";; 2.6.27*) LDISKFS_SERIES="2.6-sles11.series";; +2.6.32.*) LDISKFS_SERIES="2.6-sles11.series";; *) AC_MSG_WARN([Unknown kernel version $LINUXRELEASE, fix ldiskfs/configure.ac]) esac AC_MSG_RESULT([$LDISKFS_SERIES]) diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/export-ext4-2.6-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/export-ext4-2.6-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/export-ext4-2.6-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/export-ext4-2.6-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -38,9 +38,9 @@ --- linux-stage.orig/fs/ext4/ext4.h +++ linux-stage/fs/ext4/ext4.h @@ -1024,6 +1024,8 @@ extern unsigned long ext4_count_free_ino - extern unsigned long ext4_count_free_inodes(struct super_block *); - extern unsigned long ext4_count_dirs(struct super_block *); - extern void ext4_check_inodes_bitmap(struct super_block *); + ext4_group_t group, + struct ext4_group_desc *desc); + extern void mark_bitmap_end(int start_bit, int end_bit, char *bitmap); +extern struct buffer_head *ext4_read_inode_bitmap(struct super_block *sb, + ext4_group_t block_group); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/export-ext4-2.6-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/export-ext4-2.6-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/export-ext4-2.6-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/export-ext4-2.6-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -46,9 +46,9 @@ --- linux-stage.orig/fs/ext4/ext4.h +++ linux-stage/fs/ext4/ext4.h @@ -1047,6 +1047,8 @@ extern struct inode * ext4_orphan_get(st - extern unsigned long ext4_count_free_inodes(struct super_block *); - extern unsigned long ext4_count_dirs(struct super_block *); - extern void ext4_check_inodes_bitmap(struct super_block *); + ext4_group_t group, + struct ext4_group_desc *desc); + extern void mark_bitmap_end(int start_bit, int end_bit, char *bitmap); +extern struct buffer_head *ext4_read_inode_bitmap(struct super_block *sb, + ext4_group_t block_group); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-block-bitmap-validation-2.6-sles10.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-block-bitmap-validation-2.6-sles10.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-block-bitmap-validation-2.6-sles10.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-block-bitmap-validation-2.6-sles10.patch 2010-11-17 04:31:48.000000000 +0100 @@ -167,22 +167,3 @@ return bh; } /* -Index: linux-stage/include/linux/ext3_fs.h -=================================================================== ---- linux-stage.orig/include/linux/ext3_fs.h -+++ linux-stage/include/linux/ext3_fs.h -@@ -872,6 +872,14 @@ struct dir_private_info { - __u32 next_hash; - }; - -+/* calculate the first block number of the group */ -+static inline long long -+ext3_group_first_block_no(struct super_block *sb, unsigned long group_no) -+{ -+ return group_no * (long long)EXT3_BLOCKS_PER_GROUP(sb) + -+ le32_to_cpu(EXT3_SB(sb)->s_es->s_first_data_block); -+} -+ - /* - * Special error return code only used by dx_probe() and its callers. - */ diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-disable-mb-cache.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-disable-mb-cache.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-disable-mb-cache.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-disable-mb-cache.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,153 @@ +Index: linux-stage/fs/ext3/xattr.c +=================================================================== +--- linux-stage.orig/fs/ext3/xattr.c ++++ linux-stage/fs/ext3/xattr.c +@@ -93,7 +93,8 @@ + # define ea_bdebug(f...) + #endif + +-static void ext3_xattr_cache_insert(struct buffer_head *); ++static void ext3_xattr_cache_insert(struct super_block *, ++ struct buffer_head *); + static struct buffer_head *ext3_xattr_cache_find(struct inode *, + struct ext3_xattr_header *, + struct mb_cache_entry **); +@@ -238,7 +239,7 @@ bad_block: ext3_error(inode->i_sb, __FUN + error = -EIO; + goto cleanup; + } +- ext3_xattr_cache_insert(bh); ++ ext3_xattr_cache_insert(inode->i_sb, bh); + entry = BFIRST(bh); + error = ext3_xattr_find_entry(&entry, name_index, name, bh->b_size, 1); + if (error == -EIO) +@@ -380,7 +381,7 @@ ext3_xattr_block_list(struct inode *inod + error = -EIO; + goto cleanup; + } +- ext3_xattr_cache_insert(bh); ++ ext3_xattr_cache_insert(inode->i_sb, bh); + error = ext3_xattr_list_entries(inode, BFIRST(bh), buffer, buffer_size); + + cleanup: +@@ -479,7 +480,9 @@ ext3_xattr_release_block(handle_t *handl + { + struct mb_cache_entry *ce = NULL; + +- ce = mb_cache_entry_get(ext3_xattr_cache, bh->b_bdev, bh->b_blocknr); ++ if (!test_opt(inode->i_sb, NO_MBCACHE)) ++ ce = mb_cache_entry_get(ext3_xattr_cache, bh->b_bdev, ++ bh->b_blocknr); + if (BHDR(bh)->h_refcount == cpu_to_le32(1)) { + ea_bdebug(bh, "refcount now=0; freeing"); + if (ce) +@@ -699,8 +702,10 @@ ext3_xattr_block_set(handle_t *handle, s + if (i->value && i->value_len > sb->s_blocksize) + return -ENOSPC; + if (s->base) { +- ce = mb_cache_entry_get(ext3_xattr_cache, bs->bh->b_bdev, +- bs->bh->b_blocknr); ++ if (!test_opt(inode->i_sb, NO_MBCACHE)) ++ ce = mb_cache_entry_get(ext3_xattr_cache, ++ bs->bh->b_bdev, ++ bs->bh->b_blocknr); + if (header(s->base)->h_refcount == cpu_to_le32(1)) { + if (ce) { + mb_cache_entry_free(ce); +@@ -716,7 +721,7 @@ ext3_xattr_block_set(handle_t *handle, s + if (!IS_LAST_ENTRY(s->first)) + ext3_xattr_rehash(header(s->base), + s->here); +- ext3_xattr_cache_insert(bs->bh); ++ ext3_xattr_cache_insert(sb, bs->bh); + } + unlock_buffer(bs->bh); + if (error == -EIO) +@@ -797,7 +802,8 @@ inserted: + if (error) + goto cleanup_dquot; + } +- mb_cache_entry_release(ce); ++ if (ce) ++ mb_cache_entry_release(ce); + ce = NULL; + } else if (bs->bh && s->base == bs->bh->b_data) { + /* We were modifying this block in-place. */ +@@ -832,7 +838,7 @@ getblk_failed: + memcpy(new_bh->b_data, s->base, new_bh->b_size); + set_buffer_uptodate(new_bh); + unlock_buffer(new_bh); +- ext3_xattr_cache_insert(new_bh); ++ ext3_xattr_cache_insert(sb, new_bh); + error = ext3_journal_dirty_metadata(handle, new_bh); + if (error) + goto cleanup; +@@ -1387,12 +1393,15 @@ ext3_xattr_put_super(struct super_block + * Returns 0, or a negative error number on failure. + */ + static void +-ext3_xattr_cache_insert(struct buffer_head *bh) ++ext3_xattr_cache_insert(struct super_block *sb, struct buffer_head *bh) + { + __u32 hash = le32_to_cpu(BHDR(bh)->h_hash); + struct mb_cache_entry *ce; + int error; + ++ if (test_opt(sb, NO_MBCACHE)) ++ return; ++ + ce = mb_cache_entry_alloc(ext3_xattr_cache); + if (!ce) { + ea_bdebug(bh, "out of memory"); +@@ -1466,6 +1475,8 @@ ext3_xattr_cache_find(struct inode *inod + __u32 hash = le32_to_cpu(header->h_hash); + struct mb_cache_entry *ce; + ++ if (test_opt(inode->i_sb, NO_MBCACHE)) ++ return NULL; + if (!header->h_hash) + return NULL; /* never share */ + ea_idebug(inode, "looking for cached blocks [%x]", (int)hash); +Index: linux-stage/fs/ext3/super.c +=================================================================== +--- linux-stage.orig/fs/ext3/super.c ++++ linux-stage/fs/ext3/super.c +@@ -722,6 +722,7 @@ enum { + Opt_grpquota, + Opt_extents, Opt_noextents, Opt_bigendian_extents, Opt_extdebug, + Opt_mballoc, Opt_nomballoc, Opt_stripe, Opt_maxdirsize, Opt_force_over_8tb, ++ Opt_no_mbcache, + }; + + static match_table_t tokens = { +@@ -788,6 +789,7 @@ static match_table_t tokens = { + {Opt_force_over_8tb, "force_over_8tb"}, + {Opt_resize, "resize"}, + {Opt_maxdirsize, "maxdirsize=%u"}, ++ {Opt_no_mbcache, "no_mbcache"}, + {Opt_err, NULL} + }; + +@@ -1175,6 +1177,9 @@ clear_qf_name: + case Opt_force_over_8tb: + force_over_8tb = 1; + break; ++ case Opt_no_mbcache: ++ set_opt(sbi->s_mount_opt, NO_MBCACHE); ++ break; + default: + printk (KERN_ERR + "EXT3-fs: Unrecognized mount option \"%s\" " +Index: linux-stage/include/linux/ext3_fs.h +=================================================================== +--- linux-stage.orig/include/linux/ext3_fs.h ++++ linux-stage/include/linux/ext3_fs.h +@@ -483,6 +483,8 @@ do { \ + #define EXT3_MOUNT_JOURNAL_ASYNC_COMMIT 0x20000000 /* Journal Async Commit */ + #endif + ++#define EXT3_MOUNT_NO_MBCACHE 0x40000000 /* Disable mbcache */ ++ + /* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */ + #ifndef clear_opt + #define clear_opt(o, opt) o &= ~EXT3_MOUNT_##opt diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-extents-2.6.16-sles10.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-extents-2.6.16-sles10.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-extents-2.6.16-sles10.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-extents-2.6.16-sles10.patch 2010-11-17 04:31:48.000000000 +0100 @@ -2518,9 +2518,9 @@ /* inode.c */ +extern int ext3_block_truncate_page(handle_t *, struct page *, struct address_space *, loff_t); - int ext3_forget(handle_t *, int, struct inode *, struct buffer_head *, int); + int ext3_forget(handle_t *handle, int is_metadata, struct inode *inode, + struct buffer_head *bh, ext3_fsblk_t blocknr); struct buffer_head * ext3_getblk (handle_t *, struct inode *, long, int, int *); - struct buffer_head * ext3_bread (handle_t *, struct inode *, int, int, int *); @@ -804,6 +810,7 @@ extern int ext3_get_inode_loc(struct ino extern void ext3_truncate (struct inode *); extern void ext3_set_inode_flags(struct inode *); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-extents-search-2.6.9-rhel4.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-extents-search-2.6.9-rhel4.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-extents-search-2.6.9-rhel4.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-extents-search-2.6.9-rhel4.patch 2010-11-17 04:31:48.000000000 +0100 @@ -75,7 +75,7 @@ +{ + struct buffer_head *bh = NULL; + struct ext3_extent_header *eh; -+ struct ext3_extent_idx *ix; ++ struct ext3_extent_idx *ix = NULL; + struct ext3_extent *ex; + unsigned long block; + int depth; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-inode-version-2.6.18-vanilla.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-inode-version-2.6.18-vanilla.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-inode-version-2.6.18-vanilla.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-inode-version-2.6.18-vanilla.patch 2010-09-01 09:17:44.000000000 +0200 @@ -118,9 +118,9 @@ typedef int ext3_grpblk_t; @@ -162,6 +164,8 @@ struct ext3_inode_info { + /* mballoc */ + struct list_head i_prealloc_list; spinlock_t i_prealloc_lock; - - void *i_filterdata; + + __u64 i_fs_version; }; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-inode-version-2.6-sles10.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-inode-version-2.6-sles10.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-inode-version-2.6-sles10.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-inode-version-2.6-sles10.patch 2010-11-17 04:31:48.000000000 +0100 @@ -118,9 +118,9 @@ __u32 _rsv_start; /* First byte reserved */ __u32 _rsv_end; /* Last byte reserved or 0 */ @@ -142,6 +144,8 @@ struct ext3_inode_info { + /* mballoc */ + struct list_head i_prealloc_list; spinlock_t i_prealloc_lock; - - void *i_filterdata; + + __u64 i_fs_version; }; @@ -292,7 +292,7 @@ + if (ext3_xattr_check_block(bh)) { + ext3_error(inode->i_sb, __FUNCTION__, + "inode %lu: bad block %d", inode->i_ino, -+ EXT3_I(inode)->i_file_acl); ++ (int)EXT3_I(inode)->i_file_acl); + error = -EIO; + goto cleanup; + } diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch 2010-11-17 04:31:48.000000000 +0100 @@ -580,21 +580,6 @@ return block; } -@@ -4135,11 +4135,11 @@ out: - } - EXPORT_SYMBOL(ext3_mb_new_blocks); - --int ext3_new_block(handle_t *handle, struct inode *inode, -- unsigned long goal, int *errp) -+ext3_fsblk_t ext3_new_block(handle_t *handle, struct inode *inode, -+ ext3_fsblk_t goal, int *errp) - { - struct ext3_allocation_request ar; -- unsigned long ret; -+ ext3_fsblk_t ret; - - if (!test_opt(inode->i_sb, MBALLOC)) { - ret = ext3_new_block_old(handle, inode, goal, errp); @@ -4254,8 +4254,8 @@ int ext3_mb_free_metadata(handle_t *hand * Main entry point into mballoc to free blocks */ diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mballoc3-core.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mballoc3-core.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mballoc3-core.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mballoc3-core.patch 2010-11-17 04:31:48.000000000 +0100 @@ -288,9 +288,9 @@ =================================================================== --- /dev/null +++ linux-2.6.22.19/fs/ext3/mballoc.c -@@ -0,0 +1,4483 @@ +@@ -0,0 +1,4486 @@ +/* -+ * Copyright 2009 Sun Microsystems, Inc. ++ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Written by Alex Zhuravlev + * + * This program is free software; you can redistribute it and/or modify @@ -1369,9 +1369,9 @@ + unlock_page(page); + } + } ++ e3b->bd_bitmap_page = page; + if (page == NULL || !PageUptodate(page)) + goto err; -+ e3b->bd_bitmap_page = page; + e3b->bd_bitmap = page_address(page) + (poff * sb->s_blocksize); + mark_page_accessed(page); + @@ -1392,9 +1392,9 @@ + unlock_page(page); + } + } ++ e3b->bd_buddy_page = page; + if (page == NULL || !PageUptodate(page)) + goto err; -+ e3b->bd_buddy_page = page; + e3b->bd_buddy = page_address(page) + (poff * sb->s_blocksize); + mark_page_accessed(page); + @@ -2126,9 +2126,12 @@ + if (group == EXT3_SB(sb)->s_groups_count) + group = 0; + -+ /* quick check to skip empty groups */ ++ /* If there's no chance that this group has a better ++ * extent, just skip it instead of seeking to read ++ * block bitmap from disk. Initially ac_b_ex.fe_len = 0, ++ * so this always skips groups with no free space. */ + grp = EXT3_GROUP_INFO(ac->ac_sb, group); -+ if (grp->bb_free == 0) ++ if (grp->bb_free <= ac->ac_b_ex.fe_len) + continue; + + if (EXT3_MB_GRP_NEED_INIT(EXT3_GROUP_INFO(sb, group))) { @@ -2802,7 +2805,7 @@ + + sbi->s_mb_small_req = 256; + sbi->s_mb_large_req = 1024; -+ sbi->s_mb_group_prealloc = 512; ++ sbi->s_mb_group_prealloc = 256; + } else { + sbi->s_mb_prealloc_table_size = 3; + i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); @@ -2821,7 +2824,7 @@ + + sbi->s_mb_small_req = sbi->s_stripe; + sbi->s_mb_large_req = sbi->s_stripe * 8; -+ sbi->s_mb_group_prealloc = sbi->s_stripe * 4; ++ sbi->s_mb_group_prealloc = sbi->s_stripe; + } + + i = sizeof(struct ext3_locality_group) * num_possible_cpus(); @@ -4512,11 +4515,11 @@ +} +EXPORT_SYMBOL(ext3_mb_new_blocks); + -+int ext3_new_block(handle_t *handle, struct inode *inode, ++ext3_fsblk_t ext3_new_block(handle_t *handle, struct inode *inode, + unsigned long goal, int *errp) +{ + struct ext3_allocation_request ar; -+ unsigned long ret; ++ ext3_fsblk_t ret; + + if (!test_opt(inode->i_sb, MBALLOC)) { + ret = ext3_new_block_old(handle, inode, goal, errp); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mballoc3-sles10.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mballoc3-sles10.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mballoc3-sles10.patch 2010-02-01 11:00:34.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mballoc3-sles10.patch 2010-11-17 04:31:48.000000000 +0100 @@ -17,10 +17,10 @@ =================================================================== --- linux-2.6.16.46-0.14.orig/include/linux/ext3_fs_sb.h +++ linux-2.6.16.46-0.14/include/linux/ext3_fs_sb.h -@@ -21,8 +21,15 @@ +@@ -21,8 +21,16 @@ #include #include - #include + #include +#include #endif #include @@ -30,6 +30,7 @@ +struct ext3_locality_group; +struct ext3_mb_history; +#define EXT3_BB_MAX_BLOCKS ++#define EXT3_SBI_WITH_COUNTER64 1 /* * third extended-fs super-block data in memory @@ -48,14 +49,23 @@ @@ -784,8 +785,9 @@ struct dir_private_info { extern int ext3_bg_has_super(struct super_block *sb, int group); extern unsigned long ext3_bg_num_gdb(struct super_block *sb, int group); - extern int ext3_new_block (handle_t *, struct inode *, unsigned long, int *); -+extern int ext3_new_block_old (handle_t *, struct inode *, unsigned long, int *); - extern void ext3_free_blocks (handle_t *, struct inode *, unsigned long, + extern ext3_fsblk_t ext3_new_block (handle_t *, struct inode *, ext3_fsblk_t, int *); ++extern ext3_fsblk_t ext3_new_block_old (handle_t *, struct inode *, ext3_fsblk_t, int *); + extern void ext3_free_blocks (handle_t *, struct inode *, ext3_fsblk_t, - unsigned long); + unsigned long, int); extern void ext3_free_blocks_sb (handle_t *, struct super_block *, unsigned long, unsigned long, int *); extern unsigned long ext3_count_free_blocks (struct super_block *); +@@ -784,7 +785,7 @@ struct dir_private_info { + extern void ext3_mb_discard_inode_preallocations(struct inode *); + extern int __init init_ext3_mb_proc(void); + extern void exit_ext3_mb_proc(void); +-extern void ext3_mb_free_blocks(handle_t *, struct inode *, unsigned long, unsigned long, int, int *); ++extern void ext3_mb_free_blocks(handle_t *, struct inode *, unsigned long, unsigned long, int, unsigned long *); + + + /* inode.c */ Index: linux-2.6.16.46-0.14/fs/ext3/super.c =================================================================== --- linux-2.6.16.46-0.14.orig/fs/ext3/super.c @@ -307,14 +317,14 @@ -/* Free given blocks, update quota and i_blocks field */ -void ext3_free_blocks(handle_t *handle, struct inode *inode, -- unsigned long block, unsigned long count) +- ext3_fsblk_t block, unsigned long count) +void ext3_free_blocks(handle_t *handle, struct inode * inode, -+ unsigned long block, unsigned long count, int metadata) ++ ext3_fsblk_t block, unsigned long count, int metadata) { - struct super_block * sb; -- int dquot_freed_blocks; +- unsigned long dquot_freed_blocks; + struct super_block *sb; -+ int freed; ++ unsigned long freed; + + /* this isn't the right place to decide whether block is metadata + * inode.c/extents.c knows better, but for safety ... */ @@ -343,9 +353,9 @@ * bitmap, and then for any free bit if that fails. * This function also updates quota and i_blocks field. */ --int ext3_new_block(handle_t *handle, struct inode *inode, -+int ext3_new_block_old(handle_t *handle, struct inode *inode, - unsigned long goal, int *errp) +-ext3_fsblk_t ext3_new_block(handle_t *handle, struct inode *inode, ++ext3_fsblk_t ext3_new_block_old(handle_t *handle, struct inode *inode, + ext3_fsblk_t goal, int *errp) { struct buffer_head *bitmap_bh = NULL; Index: linux-2.6.16.46-0.14/fs/ext3/inode.c @@ -379,3 +389,34 @@ if (parent_bh) { /* +Index: linux-2.6.16.46-0.14/fs/ext3/mballoc.c +=================================================================== +--- linux-2.6.16.46-0.14.orig/fs/ext3/mballoc.c ++++ linux-2.6.16.46-0.14/fs/ext3/mballoc.c +@@ -569,7 +569,7 @@ + cpu_to_le16(le16_to_cpu(gdp->bg_free_blocks_count) + - ac->ac_b_ex.fe_len); + spin_unlock(sb_bgl_lock(sbi, ac->ac_b_ex.fe_group)); +- percpu_counter_mod(&sbi->s_freeblocks_counter, - ac->ac_b_ex.fe_len); ++ percpu_counter64_mod(&sbi->s_freeblocks_counter, - ac->ac_b_ex.fe_len); + ext3_unlock_group(sb, ac->ac_b_ex.fe_group); + + err = ext3_journal_dirty_metadata(handle, bitmap_bh); +@@ -769,7 +769,7 @@ + */ + void ext3_mb_free_blocks(handle_t *handle, struct inode *inode, + unsigned long block, unsigned long count, +- int metadata, int *freed) ++ int metadata, unsigned long *freed) + { + struct buffer_head *bitmap_bh = NULL; + struct super_block *sb = inode->i_sb; +@@ -1569,7 +1569,7 @@ + gdp->bg_free_blocks_count = + cpu_to_le16(le16_to_cpu(gdp->bg_free_blocks_count) + count); + spin_unlock(sb_bgl_lock(sbi, block_group)); +- percpu_counter_mod(&sbi->s_freeblocks_counter, count); ++ percpu_counter64_mod(&sbi->s_freeblocks_counter, count); + + if (metadata) { + /* blocks being freed are metadata. these blocks shouldn't diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.18-vanilla.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.18-vanilla.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.18-vanilla.patch 2010-03-15 03:04:07.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.18-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -38,7 +38,7 @@ if (sbi->s_dev_proc) { remove_proc_entry(sbi->s_dev_proc->name, proc_root_ext3); sbi->s_dev_proc = NULL; -@@ -1375,7 +1379,7 @@ static int ext3_check_descriptors (struc +@@ -1395,7 +1399,7 @@ static int ext3_check_descriptors (struc return 0; } if (!ext3_group_desc_csum_verify(sbi, i, gdp)) { @@ -47,7 +47,7 @@ "Checksum for group %d failed (%u!=%u)\n", i, le16_to_cpu(ext3_group_desc_csum(sbi,i,gdp)), le16_to_cpu(gdp->bg_checksum)); -@@ -1470,7 +1474,7 @@ static void ext3_orphan_cleanup (struct +@@ -1490,7 +1494,7 @@ static void ext3_orphan_cleanup (struct if (inode->i_nlink) { printk(KERN_DEBUG "%s: truncating inode %lu to %Ld bytes\n", @@ -56,7 +56,7 @@ jbd_debug(2, "truncating inode %lu to %Ld bytes\n", inode->i_ino, inode->i_size); ext3_truncate(inode); -@@ -1478,7 +1482,7 @@ static void ext3_orphan_cleanup (struct +@@ -1498,7 +1502,7 @@ static void ext3_orphan_cleanup (struct } else { printk(KERN_DEBUG "%s: deleting unreferenced inode %lu\n", @@ -65,7 +65,7 @@ jbd_debug(2, "deleting unreferenced inode %lu\n", inode->i_ino); nr_orphans++; -@@ -1548,6 +1552,346 @@ static ext3_fsblk_t descriptor_loc(struc +@@ -1568,6 +1572,355 @@ static ext3_fsblk_t descriptor_loc(struc return (has_super + ext3_group_first_block_no(sb, bg)); } @@ -137,7 +137,7 @@ +static void dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp, + const char *function, const char *msg) +{ -+ ext3_warning(sb, function, msg); ++ ext3_warning(sb, function, "%s", msg); + ext3_warning(sb, function, "MMP failure info: last update time: %llu, " + "last update node: %s, last update device: %s\n", + (long long unsigned int)le64_to_cpu(mmp->mmp_time), @@ -149,9 +149,9 @@ + */ +static int kmmpd(void *data) +{ -+ struct super_block *sb = (struct super_block *) data; ++ struct super_block *sb = ((struct mmpd_data *) data)->sb; ++ struct buffer_head *bh = ((struct mmpd_data *) data)->bh; + struct ext3_super_block *es = EXT3_SB(sb)->s_es; -+ struct buffer_head *bh = NULL; + struct mmp_struct *mmp; + unsigned long mmp_block; + u32 seq = 0; @@ -163,17 +163,13 @@ + int retval; + + mmp_block = le64_to_cpu(es->s_mmp_block); -+ retval = read_mmp_block(sb, &bh, mmp_block); -+ if (retval) -+ goto failed; -+ + mmp = (struct mmp_struct *)(bh->b_data); + mmp->mmp_time = cpu_to_le64(get_seconds()); + /* + * Start with the higher mmp_check_interval and reduce it if + * the MMP block is being updated on time. + */ -+ mmp_check_interval = max(5 * mmp_update_interval, ++ mmp_check_interval = max(5UL * mmp_update_interval, + EXT3_MMP_MIN_CHECK_INTERVAL); + mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval); + bdevname(bh->b_bdev, mmp->mmp_bdevname); @@ -206,7 +202,7 @@ + EXT3_FEATURE_INCOMPAT_MMP)) { + ext3_warning(sb, __func__, "kmmpd being stopped " + "since MMP feature has been disabled."); -+ EXT3_SB(sb)->s_mmp_tsk = 0; ++ EXT3_SB(sb)->s_mmp_tsk = NULL; + goto failed; + } + @@ -214,7 +210,7 @@ + ext3_warning(sb, __func__, "kmmpd being stopped " + "since filesystem has been remounted as " + "readonly."); -+ EXT3_SB(sb)->s_mmp_tsk = 0; ++ EXT3_SB(sb)->s_mmp_tsk = NULL; + goto failed; + } + @@ -235,19 +231,23 @@ + + retval = read_mmp_block(sb, &bh_check, mmp_block); + if (retval) { -+ EXT3_SB(sb)->s_mmp_tsk = 0; ++ ext3_error(sb, __func__, "error reading MMP" ++ "data: %d", retval); ++ EXT3_SB(sb)->s_mmp_tsk = NULL; + goto failed; + } + + mmp_check = (struct mmp_struct *)(bh_check->b_data); -+ if (mmp->mmp_time != mmp_check->mmp_time || ++ if (mmp->mmp_seq != mmp_check->mmp_seq || + memcmp(mmp->mmp_nodename, mmp_check->mmp_nodename, -+ sizeof(mmp->mmp_nodename))) ++ sizeof(mmp->mmp_nodename))) { + dump_mmp_msg(sb, mmp_check, __func__, + "Error while updating MMP info. " + "The filesystem seems to have " + "been multiply mounted."); -+ ++ ext3_error(sb, __func__, "abort"); ++ goto failed; ++ } + put_bh(bh_check); + } + @@ -255,8 +255,9 @@ + * Adjust the mmp_check_interval depending on how much time + * it took for the MMP block to be written. + */ -+ mmp_check_interval = max(5 * diff / HZ, -+ (unsigned long) EXT3_MMP_MIN_CHECK_INTERVAL); ++ mmp_check_interval = max(min(5 * diff / HZ, ++ EXT3_MMP_MAX_CHECK_INTERVAL), ++ EXT3_MMP_MIN_CHECK_INTERVAL); + mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval); + } + @@ -297,6 +298,7 @@ + struct ext3_super_block *es = EXT3_SB(sb)->s_es; + struct buffer_head *bh = NULL; + struct mmp_struct *mmp = NULL; ++ struct mmpd_data *mmpd_data; + u32 seq; + unsigned int mmp_check_interval = le16_to_cpu(es->s_mmp_update_interval); + unsigned int wait_time = 0; @@ -388,20 +390,27 @@ + goto failed; + } + ++ mmpd_data = kmalloc(sizeof(struct mmpd_data *), GFP_KERNEL); ++ if (!mmpd_data) { ++ ext3_warning(sb, KERN_ERR, "not enough memory for mmpd_data"); ++ goto failed; ++ } ++ mmpd_data->sb = sb; ++ mmpd_data->bh = bh; ++ + /* + * Start a kernel thread to update the MMP block periodically. + */ -+ EXT3_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, sb, "kmmpd-%02x:%02x", -+ MAJOR(sb->s_dev), -+ MINOR(sb->s_dev)); ++ EXT3_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, mmpd_data, "kmmpd-%s", ++ bdevname(bh->b_bdev, ++ mmp->mmp_bdevname)); + if (IS_ERR(EXT3_SB(sb)->s_mmp_tsk)) { -+ EXT3_SB(sb)->s_mmp_tsk = 0; ++ EXT3_SB(sb)->s_mmp_tsk = NULL; + ext3_warning(sb, __func__, "Unable to create kmmpd thread " + "for %s.", sb->s_id); + goto failed; + } + -+ brelse(bh); + return 0; + +failed: @@ -412,7 +421,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) { -@@ -1880,6 +2224,11 @@ static int ext3_fill_super (struct super +@@ -1901,6 +2254,11 @@ static int ext3_fill_super (struct super EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_RECOVER)); @@ -424,7 +433,7 @@ /* * The first inode we look at is the journal inode. Don't try * root first: it may be modified in the journal! -@@ -2012,6 +2361,8 @@ cantfind_ext3: +@@ -2033,6 +2391,8 @@ cantfind_ext3: failed_mount4: journal_destroy(sbi->s_journal); failed_mount3: @@ -433,7 +442,7 @@ percpu_counter_destroy(&sbi->s_freeblocks_counter); percpu_counter_destroy(&sbi->s_freeinodes_counter); percpu_counter_destroy(&sbi->s_dirs_counter); -@@ -2388,9 +2739,9 @@ static void ext3_clear_journal_err(struc +@@ -2409,9 +2769,9 @@ static void ext3_clear_journal_err(struc char nbuf[16]; errstr = ext3_decode_error(sb, j_errno, nbuf); @@ -445,7 +454,7 @@ "filesystem check."); EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS; -@@ -2510,7 +2861,7 @@ static int ext3_remount (struct super_bl +@@ -2531,7 +2891,7 @@ static int ext3_remount (struct super_bl ext3_fsblk_t n_blocks_count = 0; unsigned long old_sb_flags; struct ext3_mount_options old_opts; @@ -454,7 +463,7 @@ #ifdef CONFIG_QUOTA int i; #endif -@@ -2536,7 +2887,7 @@ static int ext3_remount (struct super_bl +@@ -2557,7 +2917,7 @@ static int ext3_remount (struct super_bl } if (sbi->s_mount_opt & EXT3_MOUNT_ABORT) @@ -463,7 +472,7 @@ sb->s_flags = (sb->s_flags & ~MS_POSIXACL) | ((sbi->s_mount_opt & EXT3_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0); -@@ -2609,6 +2960,13 @@ static int ext3_remount (struct super_bl +@@ -2630,6 +2990,13 @@ static int ext3_remount (struct super_bl } if (!ext3_setup_super (sb, es, 0)) sb->s_flags &= ~MS_RDONLY; @@ -518,7 +527,7 @@ #define EXT3_FEATURE_RO_COMPAT_SUPP (EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT3_FEATURE_RO_COMPAT_LARGE_FILE| \ EXT4_FEATURE_RO_COMPAT_GDT_CSUM| \ -@@ -871,6 +877,39 @@ ext3_group_first_block_no(struct super_b +@@ -871,6 +877,50 @@ ext3_group_first_block_no(struct super_b #define ERR_BAD_DX_DIR -75000 /* @@ -544,6 +553,12 @@ + __le32 mmp_pad2[227]; +}; + ++/* arguments passed to the mmp thread */ ++struct mmpd_data { ++ struct buffer_head *bh; /* bh from initial read_mmp_block() */ ++ struct super_block *sb; /* super block of the fs */ ++}; ++ +/* + * Default interval in seconds to update the MMP sequence number. + */ @@ -552,7 +567,12 @@ +/* + * Minimum interval for MMP checking in seconds. + */ -+#define EXT3_MMP_MIN_CHECK_INTERVAL 5 ++#define EXT3_MMP_MIN_CHECK_INTERVAL 5UL ++ ++/* ++ * Maximum interval for MMP checking in seconds. ++ */ ++#define EXT3_MMP_MAX_CHECK_INTERVAL 300UL + +/* * Function prototypes @@ -562,11 +582,12 @@ =================================================================== --- linux-stage.orig/include/linux/ext3_fs_sb.h +++ linux-stage/include/linux/ext3_fs_sb.h -@@ -156,6 +156,7 @@ struct ext3_sb_info { +@@ -157,6 +157,8 @@ struct ext3_sb_info { /* locality groups */ struct ext3_locality_group *s_locality_groups; -+ struct task_struct *s_mmp_tsk; /* Kernel thread for multiple mount protection */ ++ /* Kernel thread for multiple mount protection */ ++ struct task_struct *s_mmp_tsk; }; #define EXT3_GROUP_INFO(sb, group) \ diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.22-vanilla.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.22-vanilla.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.22-vanilla.patch 2010-03-15 03:04:07.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.22-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -92,7 +92,7 @@ +static void dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp, + const char *function, const char *msg) +{ -+ ext3_warning(sb, function, msg); ++ ext3_warning(sb, function, "%s", msg); + ext3_warning(sb, function, "MMP failure info: last update time: %llu, " + "last update node: %s, last update device: %s\n", + (long long unsigned int)le64_to_cpu(mmp->mmp_time), diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-rhel4.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-rhel4.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-rhel4.patch 2010-03-15 03:04:07.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-rhel4.patch 2010-11-17 04:31:48.000000000 +0100 @@ -92,7 +92,7 @@ +static void dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp, + const char *function, const char *msg) +{ -+ ext3_warning(sb, function, msg); ++ ext3_warning(sb, function, "%s", msg); + ext3_warning(sb, function, "MMP failure info: last update time: %llu, " + "last update node: %s, last update device: %s\n", + (long long unsigned int)le64_to_cpu(mmp->mmp_time), diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-sles10.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-sles10.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-sles10.patch 2010-03-15 03:04:07.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-sles10.patch 2010-11-17 04:31:48.000000000 +0100 @@ -65,7 +65,7 @@ jbd_debug(2, "deleting unreferenced inode %ld\n", inode->i_ino); nr_orphans++; -@@ -1525,6 +1529,346 @@ static unsigned long descriptor_loc(stru +@@ -1525,6 +1529,351 @@ static unsigned long descriptor_loc(stru return (first_data_block + has_super + (bg * sbi->s_blocks_per_group)); } @@ -137,7 +137,7 @@ +static void dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp, + const char *function, const char *msg) +{ -+ ext3_warning(sb, function, msg); ++ ext3_warning(sb, function, "%s", msg); + ext3_warning(sb, function, "MMP failure info: last update time: %llu, " + "last update node: %s, last update device: %s\n", + (long long unsigned int)le64_to_cpu(mmp->mmp_time), @@ -149,9 +149,9 @@ + */ +static int kmmpd(void *data) +{ -+ struct super_block *sb = (struct super_block *) data; ++ struct super_block *sb = ((struct mmpd_data *) data)->sb; ++ struct buffer_head *bh = ((struct mmpd_data *) data)->bh; + struct ext3_super_block *es = EXT3_SB(sb)->s_es; -+ struct buffer_head *bh = NULL; + struct mmp_struct *mmp; + unsigned long mmp_block; + u32 seq = 0; @@ -163,17 +163,13 @@ + int retval; + + mmp_block = le64_to_cpu(es->s_mmp_block); -+ retval = read_mmp_block(sb, &bh, mmp_block); -+ if (retval) -+ goto failed; -+ + mmp = (struct mmp_struct *)(bh->b_data); + mmp->mmp_time = cpu_to_le64(get_seconds()); + /* + * Start with the higher mmp_check_interval and reduce it if + * the MMP block is being updated on time. + */ -+ mmp_check_interval = max(5 * mmp_update_interval, ++ mmp_check_interval = max(5UL * mmp_update_interval, + EXT3_MMP_MIN_CHECK_INTERVAL); + mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval); + bdevname(bh->b_bdev, mmp->mmp_bdevname); @@ -255,8 +251,9 @@ + * Adjust the mmp_check_interval depending on how much time + * it took for the MMP block to be written. + */ -+ mmp_check_interval = max(5 * diff / HZ, -+ (unsigned long) EXT3_MMP_MIN_CHECK_INTERVAL); ++ mmp_check_interval = max(min(5 * diff / HZ, ++ EXT3_MMP_MAX_CHECK_INTERVAL), ++ EXT3_MMP_MIN_CHECK_INTERVAL); + mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval); + } + @@ -297,6 +294,7 @@ + struct ext3_super_block *es = EXT3_SB(sb)->s_es; + struct buffer_head *bh = NULL; + struct mmp_struct *mmp = NULL; ++ struct mmpd_data *mmpd_data; + u32 seq; + unsigned int mmp_check_interval = le16_to_cpu(es->s_mmp_update_interval); + unsigned int wait_time = 0; @@ -388,12 +386,20 @@ + goto failed; + } + ++ mmpd_data = kmalloc(sizeof(struct mmpd_data *), GFP_KERNEL); ++ if (!mmpd_data) { ++ ext3_warning(sb, KERN_ERR, "not enough memory for mmpd_data"); ++ goto failed; ++ } ++ mmpd_data->sb = sb; ++ mmpd_data->bh = bh; ++ + /* + * Start a kernel thread to update the MMP block periodically. + */ -+ EXT3_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, sb, "kmmpd-%02x:%02x", -+ MAJOR(sb->s_dev), -+ MINOR(sb->s_dev)); ++ EXT3_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, mmpd_data, "kmmpd-%s", ++ bdevname(bh->b_bdev, ++ mmp->mmp_bdevname)); + if (IS_ERR(EXT3_SB(sb)->s_mmp_tsk)) { + EXT3_SB(sb)->s_mmp_tsk = 0; + ext3_warning(sb, __func__, "Unable to create kmmpd thread " @@ -401,7 +407,6 @@ + goto failed; + } + -+ brelse(bh); + return 0; + +failed: @@ -412,7 +417,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) { -@@ -1848,6 +2192,11 @@ static int ext3_fill_super (struct super +@@ -1848,6 +2197,11 @@ static int ext3_fill_super (struct super EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_RECOVER)); @@ -424,7 +429,7 @@ /* * The first inode we look at is the journal inode. Don't try * root first: it may be modified in the journal! -@@ -1992,6 +2341,8 @@ cantfind_ext3: +@@ -1992,6 +2346,8 @@ cantfind_ext3: failed_mount3: journal_destroy(sbi->s_journal); failed_mount2: @@ -433,7 +438,7 @@ for (i = 0; i < db_count; i++) brelse(sbi->s_group_desc[i]); kfree(sbi->s_group_desc); -@@ -2357,9 +2708,9 @@ static void ext3_clear_journal_err(struc +@@ -2357,9 +2713,9 @@ static void ext3_clear_journal_err(struc char nbuf[16]; errstr = ext3_decode_error(sb, j_errno, nbuf); @@ -445,7 +450,7 @@ "filesystem check."); EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS; -@@ -2462,7 +2813,7 @@ static int ext3_remount (struct super_bl +@@ -2462,7 +2818,7 @@ static int ext3_remount (struct super_bl unsigned long n_blocks_count = 0; unsigned long old_sb_flags; struct ext3_mount_options old_opts; @@ -454,7 +459,7 @@ #ifdef CONFIG_QUOTA int i; #endif -@@ -2488,7 +2839,7 @@ static int ext3_remount (struct super_bl +@@ -2488,7 +2844,7 @@ static int ext3_remount (struct super_bl } if (sbi->s_mount_opt & EXT3_MOUNT_ABORT) @@ -463,7 +468,7 @@ sb->s_flags = (sb->s_flags & ~MS_POSIXACL) | ((sbi->s_mount_opt & EXT3_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0); -@@ -2546,6 +2897,13 @@ static int ext3_remount (struct super_bl +@@ -2546,6 +2902,13 @@ static int ext3_remount (struct super_bl } if (!ext3_setup_super (sb, es, 0)) sb->s_flags &= ~MS_RDONLY; @@ -518,7 +523,7 @@ #define EXT3_FEATURE_RO_COMPAT_SUPP (EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT3_FEATURE_RO_COMPAT_LARGE_FILE| \ EXT4_FEATURE_RO_COMPAT_GDT_CSUM| \ -@@ -862,6 +868,39 @@ struct dir_private_info { +@@ -862,6 +868,50 @@ struct dir_private_info { #define ERR_BAD_DX_DIR -75000 /* @@ -544,6 +549,12 @@ + __le32 mmp_pad2[227]; +}; + ++/* arguments passed to the mmp thread */ ++struct mmpd_data { ++ struct buffer_head *bh; /* bh from initial read_mmp_block() */ ++ struct super_block *sb; /* super block of the fs */ ++}; ++ +/* + * Default interval in seconds to update the MMP sequence number. + */ @@ -552,7 +563,12 @@ +/* + * Minimum interval for MMP checking in seconds. + */ -+#define EXT3_MMP_MIN_CHECK_INTERVAL 5 ++#define EXT3_MMP_MIN_CHECK_INTERVAL 5UL ++ ++/* ++ * Maximum interval for MMP checking in seconds. ++ */ ++#define EXT3_MMP_MAX_CHECK_INTERVAL 300UL + +/* * Function prototypes @@ -562,11 +578,12 @@ =================================================================== --- linux-stage.orig/include/linux/ext3_fs_sb.h +++ linux-stage/include/linux/ext3_fs_sb.h -@@ -145,6 +145,7 @@ struct ext3_sb_info { +@@ -145,6 +145,8 @@ struct ext3_sb_info { /* locality groups */ struct ext3_locality_group *s_locality_groups; -+ struct task_struct *s_mmp_tsk; /* Kernel thread for multiple mount protection */ ++ /* Kernel thread for multiple mount protection */ ++ struct task_struct *s_mmp_tsk; }; #define EXT3_GROUP_INFO(sb, group) \ diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-statfs-2.6-sles10.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-statfs-2.6-sles10.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-statfs-2.6-sles10.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-statfs-2.6-sles10.patch 2010-11-17 04:31:48.000000000 +0100 @@ -3,10 +3,10 @@ --- linux-2.6.16.46-0.14.orig/fs/ext3/super.c +++ linux-2.6.16.46-0.14/fs/ext3/super.c @@ -2908,18 +2908,19 @@ restore_opts: - static int ext3_statfs (struct super_block * sb, struct kstatfs * buf) { + struct super_block *sb = dentry->d_sb; struct ext3_super_block *es = EXT3_SB(sb)->s_es; -- unsigned long overhead; +- ext3_fsblk_t overhead; - int i; + struct ext3_sb_info *sbi = EXT3_SB(sb); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-sles10.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-sles10.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-sles10.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-sles10.patch 2010-11-17 04:31:48.000000000 +0100 @@ -213,7 +213,7 @@ + le16_to_cpu(gdp->bg_checksum)); + return 0; + } - block += EXT3_BLOCKS_PER_GROUP(sb); + first_block += EXT3_BLOCKS_PER_GROUP(sb); gdp++; } Index: linux-2.6.16.60-0.27/fs/ext3/group.h diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4_22237_fix.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4_22237_fix.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4_22237_fix.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4_22237_fix.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,18 @@ +--- linux-2.6.18-164.6.1_ext4/fs/ext4/super.c 2010-03-31 15:35:44.000000000 +0530 ++++ linux-2.6.18-164.6.1_ext4_1/fs/ext4/super.c 2010-03-31 16:53:00.000000000 +0530 +@@ -2818,7 +2818,6 @@ static int ext4_fill_super(struct super_ + if (p == NULL) { + printk(KERN_ERR "EXT4-fs: unable to create %s\n", + EXT4_MAX_DIR_SIZE_NAME); +- remove_proc_entry(EXT4_MAX_DIR_SIZE_NAME, sbi->s_proc); + ret = -ENOMEM; + goto failed_mount; + } +@@ -3123,6 +3122,7 @@ failed_mount: + if (sbi->s_proc) { + remove_proc_entry("inode_readahead_blks", sbi->s_proc); + remove_proc_entry("inode_goal", sbi->s_proc); ++ remove_proc_entry(EXT4_MAX_DIR_SIZE_NAME, sbi->s_proc); + remove_proc_entry(sb->s_id, ext4_proc_root); + } + #ifdef CONFIG_QUOTA diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-back-dquot-to-rhel54.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-back-dquot-to-rhel54.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-back-dquot-to-rhel54.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-back-dquot-to-rhel54.patch 2010-09-17 03:17:05.000000000 +0200 @@ -0,0 +1,53 @@ +diff -up a/fs/ext4/super.c b/s/ext4/super.c +--- a/fs/ext4/super.c ++++ b/fs/ext4/super.c +@@ -706,9 +767,47 @@ static inline struct inode *dquot_to_ino + static ssize_t ext4_quota_write(struct super_block *sb, int type, + const char *data, size_t len, loff_t off); + ++static int ext4_dquot_initialize(struct inode *inode, int type) ++{ ++ handle_t *handle; ++ int ret, err; ++ ++ /* We may create quota structure so we need to reserve enough blocks */ ++ handle = ext4_journal_start(inode, 2*EXT4_QUOTA_INIT_BLOCKS(inode->i_sb)); ++ if (IS_ERR(handle)) ++ return PTR_ERR(handle); ++ ret = dquot_initialize(inode, type); ++ err = ext4_journal_stop(handle); ++ if (!ret) ++ ret = err; ++ return ret; ++} ++ ++static int ext4_dquot_drop(struct inode *inode) ++{ ++ handle_t *handle; ++ int ret, err; ++ ++ /* We may delete quota structure so we need to reserve enough blocks */ ++ handle = ext4_journal_start(inode, 2*EXT4_QUOTA_DEL_BLOCKS(inode->i_sb)); ++ if (IS_ERR(handle)) { ++ /* ++ * We call dquot_drop() anyway to at least release references ++ * to quota structures so that umount does not hang. ++ */ ++ dquot_drop(inode); ++ return PTR_ERR(handle); ++ } ++ ret = dquot_drop(inode); ++ err = ext4_journal_stop(handle); ++ if (!ret) ++ ret = err; ++ return ret; ++} ++ + static struct dquot_operations ext4_quota_operations = { +- .initialize = dquot_initialize, +- .drop = dquot_drop, ++ .initialize = ext4_dquot_initialize, ++ .drop = ext4_dquot_drop, + .alloc_space = dquot_alloc_space, + .alloc_inode = dquot_alloc_inode, + .free_space = dquot_free_space, diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-big-endian-check-2.6-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-big-endian-check-2.6-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-big-endian-check-2.6-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-big-endian-check-2.6-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -12,32 +12,32 @@ struct ext4_group_desc *bg) { @@ -1291,7 +1293,7 @@ enum { - Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota, - Opt_grpquota, Opt_extents, Opt_noextents, Opt_i_version, - Opt_stripe, Opt_delalloc, Opt_nodelalloc, -- Opt_inode_readahead_blks, -+ Opt_inode_readahead_blks, Opt_bigendian_extents, + Opt_stripe, Opt_delalloc, Opt_nodelalloc, + Opt_block_validity, Opt_noblock_validity, + Opt_inode_readahead_blks, Opt_journal_ioprio, +- Opt_discard, Opt_nodiscard, ++ Opt_discard, Opt_nodiscard, Opt_bigendian_extents, Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, }; @@ -1353,6 +1355,7 @@ static const match_table_t tokens = { - {Opt_delalloc, "delalloc"}, - {Opt_nodelalloc, "nodelalloc"}, - {Opt_inode_readahead_blks, "inode_readahead_blks=%u"}, + {Opt_noauto_da_alloc, "noauto_da_alloc"}, + {Opt_discard, "discard"}, + {Opt_nodiscard, "nodiscard"}, + {Opt_bigendian_extents, "bigendian_extents"}, {Opt_err, NULL}, }; @@ -1768,6 +1771,9 @@ set_qf_format: - return 0; - sbi->s_inode_readahead_blks = option; + case Opt_nodiscard: + clear_opt(sbi->s_mount_opt, DISCARD); break; + case Opt_bigendian_extents: + bigendian_extents = 1; + break; default: - printk(KERN_ERR - "EXT4-fs: Unrecognized mount option \"%s\" " + ext4_msg(sb, KERN_ERR, + "Unrecognized mount option \"%s\" " @@ -2673,6 +2679,15 @@ static int ext4_fill_super(struct super_ &sbi->s_inode_readahead_blks); #endif @@ -51,6 +51,6 @@ + } +#endif + - bgl_lock_init(&sbi->s_blockgroup_lock); + bgl_lock_init(sbi->s_blockgroup_lock); - sbi->s_last_alloc_group = -1; + for (i = 0; i < db_count; i++) { diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-bug23780-remove-i_data_sem-from-walk_space.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-bug23780-remove-i_data_sem-from-walk_space.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-bug23780-remove-i_data_sem-from-walk_space.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-bug23780-remove-i_data_sem-from-walk_space.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,33 @@ +commit c1a9f672dd752df609a38126e33457c2064329e6 +Author: Johann Lombardi +Date: Wed Oct 6 15:26:43 2010 +0200 + + Revert "ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem)" + + This reverts commit fab3a549e204172236779f502eccb4f9bf0dc87d. + +diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c +index 06328d3..51c9452 100644 +--- a/fs/ext4/extents.c ++++ b/fs/ext4/extents.c +@@ -1862,9 +1862,7 @@ int ext4_ext_walk_space(struct inode *inode, ext4_lblk_t block, + while (block < last && block != EXT_MAX_BLOCK) { + num = last - block; + /* find extent for this block */ +- down_read(&EXT4_I(inode)->i_data_sem); + path = ext4_ext_find_extent(inode, block, path); +- up_read(&EXT4_I(inode)->i_data_sem); + if (IS_ERR(path)) { + err = PTR_ERR(path); + path = NULL; +@@ -3956,8 +3954,10 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, + * Walk the extent tree gathering extent information. + * ext4_ext_fiemap_cb will push extents back to user. + */ ++ down_read(&EXT4_I(inode)->i_data_sem); + error = ext4_ext_walk_space(inode, start_blk, len_blks, + ext4_ext_fiemap_cb, fieinfo); ++ up_read(&EXT4_I(inode)->i_data_sem); + } + + return error; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4_data_in_dirent.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4_data_in_dirent.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4_data_in_dirent.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4_data_in_dirent.patch 2010-11-17 04:31:48.000000000 +0100 @@ -49,9 +49,9 @@ @@ -175,7 +182,7 @@ revalidate: * failure will be detected in the * dirent test below. */ - if (ext4_rec_len_from_disk(de->rec_len) -- < EXT4_DIR_REC_LEN(1)) -+ < __EXT4_DIR_REC_LEN(1)) + if (ext4_rec_len_from_disk(de->rec_len, +- sb->s_blocksize) < EXT4_DIR_REC_LEN(1)) ++ sb->s_blocksize) < __EXT4_DIR_REC_LEN(1)) break; i += ext4_rec_len_from_disk(de->rec_len); } @@ -61,8 +61,8 @@ int len; + int extra_data = 1; - info = (struct dir_private_info *) dir_file->private_data; - p = &info->root.rb_node; + info = (struct dir_private_info *) dir_file->private_data; + p = &info->root.rb_node; /* Create and allocate the fname structure */ - len = sizeof(struct fname) + dirent->name_len + 1; @@ -169,14 +169,13 @@ extern int ext4_add_dot_dotdot(handle_t *handle, struct inode *dir, - struct inode *inode); + struct inode *inode, const void *, const void *); + extern unsigned int ext4_rec_len_from_disk(__le16 dlen, unsigned blocksize); + extern __le16 ext4_rec_len_to_disk(unsigned len, unsigned blocksize); extern int ext4_orphan_add(handle_t *, struct inode *); - extern int ext4_orphan_del(handle_t *, struct inode *); - extern int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash, -@@ -1343,7 +1386,28 @@ static inline int ext4_is_group_locked(s +@@ -1343,6 +1386,28 @@ static inline int ext4_is_group_locked(s + return spin_is_locked(ext4_group_lock_ptr(sb, group)); } - -- +/* + * Compute the total directory entry data length. + * This includes the filename and an implicit NUL terminator (always present), @@ -247,7 +246,7 @@ + unsigned entry_space; + + BUG_ON(dot_de->name_len != 1); -+ dotdot_de = ext4_next_entry(dot_de); ++ dotdot_de = ext4_next_entry(dot_de, blocksize); + entry_space = blocksize - EXT4_DIR_REC_LEN(dot_de) - + EXT4_DIR_REC_LEN(dotdot_de) - infosize; + @@ -286,7 +285,7 @@ dir->i_sb->s_blocksize - - EXT4_DIR_REC_LEN(0)); + __EXT4_DIR_REC_LEN(0)); - for (; de < top; de = ext4_next_entry(de)) { + for (; de < top; de = ext4_next_entry(de, dir->i_sb->s_blocksize)) { if (!ext4_check_dir_entry("htree_dirblock_to_tree", dir, de, bh, (block<i_sb)) @@ -1026,7 +1036,7 @@ static struct buffer_head * ext4_dx_find @@ -295,13 +294,13 @@ top = (struct ext4_dir_entry_2 *) ((char *) de + sb->s_blocksize - - EXT4_DIR_REC_LEN(0)); + __EXT4_DIR_REC_LEN(0)); - for (; de < top; de = ext4_next_entry(de)) { + for (; de < top; de = ext4_next_entry(de, sb->s_blocksize)) { int off = (block << EXT4_BLOCK_SIZE_BITS(sb)) + ((char *) de - bh->b_data); @@ -1193,7 +1203,7 @@ dx_move_dirents(char *from, char *to, st - while (count--) { - struct ext4_dir_entry_2 *de = (struct ext4_dir_entry_2 *) (from + map->offs); + struct ext4_dir_entry_2 *de = (struct ext4_dir_entry_2 *) + (from + (map->offs<<2)); - rec_len = EXT4_DIR_REC_LEN(de->name_len); + rec_len = EXT4_DIR_REC_LEN(de); memcpy (to, de, rec_len); @@ -341,7 +340,7 @@ } - nlen = EXT4_DIR_REC_LEN(de->name_len); + nlen = EXT4_DIR_REC_LEN(de); - rlen = ext4_rec_len_from_disk(de->rec_len); + rlen = ext4_rec_len_from_disk(de->rec_len, blocksize); if ((de->inode? rlen - nlen: rlen) >= reclen) break; @@ -1383,7 +1399,7 @@ static int add_dirent_to_buf(handle_t *h @@ -350,7 +349,7 @@ /* By now the buffer is marked for journaling */ - nlen = EXT4_DIR_REC_LEN(de->name_len); + nlen = EXT4_DIR_REC_LEN(de); - rlen = ext4_rec_len_from_disk(de->rec_len); + rlen = ext4_rec_len_from_disk(de->rec_len, blocksize); if (de->inode) { struct ext4_dir_entry_2 *de1 = (struct ext4_dir_entry_2 *)((char *)de + nlen); @@ -1399,6 +1415,12 @@ static int add_dirent_to_buf(handle_t *h @@ -432,7 +431,7 @@ out_journal: if (journal) { -@@ -1972,11 +2007,12 @@ retry: +@@ -1972,12 +2007,13 @@ retry: /* Initialize @inode as a subdirectory of @dir, and add the * "." and ".." entries into the first directory block. */ int ext4_add_dot_dotdot(handle_t *handle, struct inode * dir, @@ -440,6 +439,7 @@ + struct inode *inode, + const void *data1, const void *data2) { + unsigned int blocksize = dir->i_sb->s_blocksize; struct buffer_head * dir_block; struct ext4_dir_entry_2 * de; - int err = 0; @@ -447,11 +447,12 @@ if (IS_ERR(handle)) return PTR_ERR(handle); -@@ -1993,16 +2029,34 @@ int ext4_add_dot_dotdot(handle_t *handle +@@ -1993,17 +2029,34 @@ int ext4_add_dot_dotdot(handle_t *handle de = (struct ext4_dir_entry_2 *) dir_block->b_data; de->inode = cpu_to_le32(inode->i_ino); de->name_len = 1; -- de->rec_len = ext4_rec_len_to_disk(EXT4_DIR_REC_LEN(de->name_len)); +- de->rec_len = ext4_rec_len_to_disk(EXT4_DIR_REC_LEN(de->name_len), +- blocksize); strcpy(de->name, "."); ext4_set_de_type(dir->i_sb, de, S_IFDIR); + /* get packed fid data*/ @@ -465,11 +466,11 @@ + de->rec_len = cpu_to_le16(EXT4_DIR_REC_LEN(de)); + dot_reclen = cpu_to_le16(de->rec_len); + - de = ext4_next_entry(de); + de = ext4_next_entry(de, blocksize); de->inode = cpu_to_le32(dir->i_ino); - de->rec_len = ext4_rec_len_to_disk(inode->i_sb->s_blocksize - -- EXT4_DIR_REC_LEN(1)); -+ dot_reclen); +- de->rec_len = ext4_rec_len_to_disk(blocksize - EXT4_DIR_REC_LEN(1), ++ de->rec_len = ext4_rec_len_to_disk(blocksize - dot_reclen, + blocksize); de->name_len = 2; strcpy(de->name, ".."); ext4_set_de_type(dir->i_sb, de, S_IFDIR); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-delalloc-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-delalloc-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-delalloc-rhel5.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-delalloc-rhel5.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,20 @@ +Disable the DELALLOC feature because it is not robust in ext4 versions < 2.6.31. + +-- +Index: linux-stage/fs/ext4/super.c +=================================================================== +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -2913,12 +2913,6 @@ static int ext4_fill_super(struct super_ + if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_EXTENTS)) + set_opt(sbi->s_mount_opt, EXTENTS); + +- /* +- * enable delayed allocation by default +- * Use -o nodelalloc to turn it off +- */ +- set_opt(sbi->s_mount_opt, DELALLOC); +- + if (!parse_options((char *) data, sb, &journal_devnum, + &journal_ioprio, NULL, 0)) + goto failed_mount; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-delalloc-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-delalloc-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-delalloc-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-delalloc-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -5,17 +5,16 @@ =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/super.c 2009-06-15 05:36:44.000000000 -0400 +++ linux-2.6.27.21-0.1/fs/ext4/super.c 2009-06-15 05:40:38.000000000 -0400 -@@ -2462,13 +2462,6 @@ static int ext4_fill_super(struct super_ - "extents feature not enabled on this filesystem, " - "use tune2fs.\n"); - +@@ -2462,12 +2462,6 @@ static int ext4_fill_super(struct super_ + + set_opt(sbi->s_mount_opt, BARRIER); + - /* - * enable delayed allocation by default - * Use -o nodelalloc to turn it off - */ - set_opt(sbi->s_mount_opt, DELALLOC); - -- - if (!parse_options((char *) data, sb, &journal_inum, &journal_devnum, - NULL, 0)) - goto failed_mount; + if (!parse_options((char *) data, sb, &journal_devnum, + &journal_ioprio, NULL, 0)) + goto failed_mount; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-rhel5.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-rhel5.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,154 @@ +Index: linux-stage/fs/ext4/xattr.c +=================================================================== +--- linux-stage.orig/fs/ext4/xattr.c ++++ linux-stage/fs/ext4/xattr.c +@@ -86,7 +86,8 @@ + # define ea_bdebug(f...) + #endif + +-static void ext4_xattr_cache_insert(struct buffer_head *); ++static void ext4_xattr_cache_insert(struct super_block *, ++ struct buffer_head *); + static struct buffer_head *ext4_xattr_cache_find(struct inode *, + struct ext4_xattr_header *, + struct mb_cache_entry **); +@@ -233,7 +234,7 @@ bad_block: ext4_error(inode->i_sb, __fun + error = -EIO; + goto cleanup; + } +- ext4_xattr_cache_insert(bh); ++ ext4_xattr_cache_insert(inode->i_sb, bh); + entry = BFIRST(bh); + error = ext4_xattr_find_entry(&entry, name_index, name, bh->b_size, 1); + if (error == -EIO) +@@ -375,7 +376,7 @@ ext4_xattr_block_list(struct inode *inod + error = -EIO; + goto cleanup; + } +- ext4_xattr_cache_insert(bh); ++ ext4_xattr_cache_insert(inode->i_sb, bh); + error = ext4_xattr_list_entries(inode, BFIRST(bh), buffer, buffer_size); + + cleanup: +@@ -472,7 +473,9 @@ ext4_xattr_release_block(handle_t *handl + struct mb_cache_entry *ce = NULL; + int error = 0; + +- ce = mb_cache_entry_get(ext4_xattr_cache, bh->b_bdev, bh->b_blocknr); ++ if (!test_opt(inode->i_sb, NO_MBCACHE)) ++ ce = mb_cache_entry_get(ext4_xattr_cache, bh->b_bdev, ++ bh->b_blocknr); + error = ext4_journal_get_write_access(handle, bh); + if (error) + goto out; +@@ -700,8 +703,10 @@ ext4_xattr_block_set(handle_t *handle, s + if (i->value && i->value_len > sb->s_blocksize) + return -ENOSPC; + if (s->base) { +- ce = mb_cache_entry_get(ext4_xattr_cache, bs->bh->b_bdev, +- bs->bh->b_blocknr); ++ if (!test_opt(inode->i_sb, NO_MBCACHE)) ++ ce = mb_cache_entry_get(ext4_xattr_cache, ++ bs->bh->b_bdev, ++ bs->bh->b_blocknr); + error = ext4_journal_get_write_access(handle, bs->bh); + if (error) + goto cleanup; +@@ -718,7 +723,7 @@ ext4_xattr_block_set(handle_t *handle, s + if (!IS_LAST_ENTRY(s->first)) + ext4_xattr_rehash(header(s->base), + s->here); +- ext4_xattr_cache_insert(bs->bh); ++ ext4_xattr_cache_insert(sb, bs->bh); + } + unlock_buffer(bs->bh); + if (error == -EIO) +@@ -801,7 +806,8 @@ inserted: + if (error) + goto cleanup_dquot; + } +- mb_cache_entry_release(ce); ++ if (ce) ++ mb_cache_entry_release(ce); + ce = NULL; + } else if (bs->bh && s->base == bs->bh->b_data) { + /* We were modifying this block in-place. */ +@@ -845,7 +851,7 @@ getblk_failed: + memcpy(new_bh->b_data, s->base, new_bh->b_size); + set_buffer_uptodate(new_bh); + unlock_buffer(new_bh); +- ext4_xattr_cache_insert(new_bh); ++ ext4_xattr_cache_insert(sb, new_bh); + error = ext4_handle_dirty_metadata(handle, + inode, new_bh); + if (error) +@@ -1404,12 +1410,15 @@ ext4_xattr_put_super(struct super_block + * Returns 0, or a negative error number on failure. + */ + static void +-ext4_xattr_cache_insert(struct buffer_head *bh) ++ext4_xattr_cache_insert(struct super_block *sb, struct buffer_head *bh) + { + __u32 hash = le32_to_cpu(BHDR(bh)->h_hash); + struct mb_cache_entry *ce; + int error; + ++ if (test_opt(sb, NO_MBCACHE)) ++ return; ++ + ce = mb_cache_entry_alloc(ext4_xattr_cache); + if (!ce) { + ea_bdebug(bh, "out of memory"); +@@ -1483,6 +1492,8 @@ ext4_xattr_cache_find(struct inode *inod + __u32 hash = le32_to_cpu(header->h_hash); + struct mb_cache_entry *ce; + ++ if (test_opt(inode->i_sb, NO_MBCACHE)) ++ return NULL; + if (!header->h_hash) + return NULL; /* never share */ + ea_idebug(inode, "looking for cached blocks [%x]", (int)hash); +Index: linux-stage/fs/ext4/super.c +=================================================================== +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -1481,6 +1481,7 @@ enum { + Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, Opt_bigendian_extents, + Opt_force_over_16tb, + Opt_extents, Opt_noextents, ++ Opt_no_mbcache, + }; + + static match_table_t tokens = { +@@ -1554,6 +1555,7 @@ static match_table_t tokens = { + {Opt_force_over_16tb, "force_over_16tb"}, + {Opt_extents, "extents"}, + {Opt_noextents, "noextents"}, ++ {Opt_no_mbcache, "no_mbcache"}, + {Opt_err, NULL}, + }; + +@@ -2030,6 +2032,9 @@ set_qf_format: + } + clear_opt(sbi->s_mount_opt, EXTENTS); + break; ++ case Opt_no_mbcache: ++ set_opt(sbi->s_mount_opt, NO_MBCACHE); ++ break; + default: + ext4_msg(sb, KERN_ERR, + "Unrecognized mount option \"%s\" " +Index: linux-stage/fs/ext4/ext4.h +=================================================================== +--- linux-stage.orig/fs/ext4/ext4.h ++++ linux-stage/fs/ext4/ext4.h +@@ -715,7 +715,8 @@ struct ext4_inode_info { + /* + * Mount flags + */ +-#define EXT4_MOUNT_OLDALLOC 0x00002 /* Don't use the new Orlov allocator */ ++#define EXT4_MOUNT_NO_MBCACHE 0x00001 /* Disable mbcache */ ++#define EXT4_MOUNT_OLDALLOC 0x00002 /* Don't use the new Orlov allocator */ + #define EXT4_MOUNT_GRPID 0x00004 /* Create files with directory's group */ + #define EXT4_MOUNT_DEBUG 0x00008 /* Some debugging messages */ + #define EXT4_MOUNT_ERRORS_CONT 0x00010 /* Continue on errors */ diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-sles11.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,153 @@ +Index: linux-stage/fs/ext4/xattr.c +=================================================================== +--- linux-stage.orig/fs/ext4/xattr.c ++++ linux-stage/fs/ext4/xattr.c +@@ -86,7 +86,8 @@ + # define ea_bdebug(f...) + #endif + +-static void ext4_xattr_cache_insert(struct buffer_head *); ++static void ext4_xattr_cache_insert(struct super_block *, ++ struct buffer_head *); + static struct buffer_head *ext4_xattr_cache_find(struct inode *, + struct ext4_xattr_header *, + struct mb_cache_entry **); +@@ -233,7 +234,7 @@ bad_block: ext4_error(inode->i_sb, __fun + error = -EIO; + goto cleanup; + } +- ext4_xattr_cache_insert(bh); ++ ext4_xattr_cache_insert(inode->i_sb, bh); + entry = BFIRST(bh); + error = ext4_xattr_find_entry(&entry, name_index, name, bh->b_size, 1); + if (error == -EIO) +@@ -375,7 +376,7 @@ ext4_xattr_block_list(struct inode *inod + error = -EIO; + goto cleanup; + } +- ext4_xattr_cache_insert(bh); ++ ext4_xattr_cache_insert(inode->i_sb, bh); + error = ext4_xattr_list_entries(inode, BFIRST(bh), buffer, buffer_size); + + cleanup: +@@ -472,7 +473,9 @@ ext4_xattr_release_block(handle_t *handl + struct mb_cache_entry *ce = NULL; + int error = 0; + +- ce = mb_cache_entry_get(ext4_xattr_cache, bh->b_bdev, bh->b_blocknr); ++ if (!test_opt(inode->i_sb, NO_MBCACHE)) ++ ce = mb_cache_entry_get(ext4_xattr_cache, bh->b_bdev, ++ bh->b_blocknr); + error = ext4_journal_get_write_access(handle, bh); + if (error) + goto out; +@@ -700,8 +703,10 @@ ext4_xattr_block_set(handle_t *handle, s + if (i->value && i->value_len > sb->s_blocksize) + return -ENOSPC; + if (s->base) { +- ce = mb_cache_entry_get(ext4_xattr_cache, bs->bh->b_bdev, +- bs->bh->b_blocknr); ++ if (!test_opt(inode->i_sb, NO_MBCACHE)) ++ ce = mb_cache_entry_get(ext4_xattr_cache, ++ bs->bh->b_bdev, ++ bs->bh->b_blocknr); + error = ext4_journal_get_write_access(handle, bs->bh); + if (error) + goto cleanup; +@@ -718,7 +723,7 @@ ext4_xattr_block_set(handle_t *handle, s + if (!IS_LAST_ENTRY(s->first)) + ext4_xattr_rehash(header(s->base), + s->here); +- ext4_xattr_cache_insert(bs->bh); ++ ext4_xattr_cache_insert(sb, bs->bh); + } + unlock_buffer(bs->bh); + if (error == -EIO) +@@ -799,7 +804,8 @@ inserted: + if (error) + goto cleanup_dquot; + } +- mb_cache_entry_release(ce); ++ if (ce) ++ mb_cache_entry_release(ce); + ce = NULL; + } else if (bs->bh && s->base == bs->bh->b_data) { + /* We were modifying this block in-place. */ +@@ -832,7 +838,7 @@ getblk_failed: + memcpy(new_bh->b_data, s->base, new_bh->b_size); + set_buffer_uptodate(new_bh); + unlock_buffer(new_bh); +- ext4_xattr_cache_insert(new_bh); ++ ext4_xattr_cache_insert(sb, new_bh); + error = ext4_handle_dirty_metadata(handle, + inode, new_bh); + if (error) +@@ -1390,12 +1396,15 @@ ext4_xattr_put_super(struct super_block + * Returns 0, or a negative error number on failure. + */ + static void +-ext4_xattr_cache_insert(struct buffer_head *bh) ++ext4_xattr_cache_insert(struct super_block *sb, struct buffer_head *bh) + { + __u32 hash = le32_to_cpu(BHDR(bh)->h_hash); + struct mb_cache_entry *ce; + int error; + ++ if (test_opt(sb, NO_MBCACHE)) ++ return; ++ + ce = mb_cache_entry_alloc(ext4_xattr_cache, GFP_NOFS); + if (!ce) { + ea_bdebug(bh, "out of memory"); +@@ -1469,6 +1478,8 @@ ext4_xattr_cache_find(struct inode *inod + __u32 hash = le32_to_cpu(header->h_hash); + struct mb_cache_entry *ce; + ++ if (test_opt(inode->i_sb, NO_MBCACHE)) ++ return NULL; + if (!header->h_hash) + return NULL; /* never share */ + ea_idebug(inode, "looking for cached blocks [%x]", (int)hash); +Index: linux-stage/fs/ext4/ext4.h +=================================================================== +--- linux-stage.orig/fs/ext4/ext4.h ++++ linux-stage/fs/ext4/ext4.h +@@ -550,6 +550,7 @@ do { \ + #define EXT4_MOUNT_DISCARD 0x40000000 /* Issue DISCARD requests */ + #define EXT4_MOUNT_IOPEN 0x80000000 /* Allow access via iopen */ + #define EXT4_MOUNT_IOPEN_NOPRIV 0x100000000ULL /* Make iopen world-readable */ ++#define EXT4_MOUNT_NO_MBCACHE 0x200000000ULL /* Disable mbcache */ + + #define clear_opt(o, opt) o &= ~EXT4_MOUNT_##opt + #define set_opt(o, opt) o |= EXT4_MOUNT_##opt +Index: linux-stage/fs/ext4/super.c +=================================================================== +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -1333,7 +1333,7 @@ enum { + Opt_inode_readahead_blks, Opt_journal_ioprio, + Opt_discard, Opt_nodiscard, Opt_bigendian_extents, + Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, +- Opt_mballoc, Opt_force_over_8tb, Opt_extents, ++ Opt_mballoc, Opt_force_over_8tb, Opt_no_mbcache, Opt_extents, + }; + + static match_table_t tokens = { +@@ -1396,6 +1397,7 @@ static match_table_t tokens = { + {Opt_bigendian_extents, "bigendian_extents"}, + {Opt_mballoc, "mballoc"}, + {Opt_force_over_8tb, "force_over_8tb"}, ++ {Opt_no_mbcache, "no_mbcache"}, + {Opt_err, NULL}, + }; + +@@ -1819,6 +1821,9 @@ set_qf_format: + case Opt_force_over_8tb: + force_over_8tb = 1; + break; ++ case Opt_no_mbcache: ++ set_opt(sbi->s_mount_opt, NO_MBCACHE); ++ break; + default: + printk(KERN_ERR + "EXT4-fs: Unrecognized mount option \"%s\" " diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-write-bar-by-default.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-write-bar-by-default.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-disable-write-bar-by-default.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-disable-write-bar-by-default.patch 2010-11-17 04:31:48.000000000 +0100 @@ -4,8 +4,8 @@ +++ linux-stage/fs/ext4/super.c @@ -2457,7 +2457,7 @@ static int ext4_fill_super(struct super_ sbi->s_resgid = le16_to_cpu(es->s_def_resgid); + sbi->s_max_batch_time = EXT4_DEF_MAX_BATCH_TIME; - set_opt(sbi->s_mount_opt, RESERVATION); - set_opt(sbi->s_mount_opt, BARRIER); + /* set_opt(sbi->s_mount_opt, BARRIER); */ diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-dynlocks-2.6.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-dynlocks-2.6.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-dynlocks-2.6.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-dynlocks-2.6.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,33 @@ +diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/Makefile linux-2.6.27.21-0.1_2//fs/ext4/Makefile +--- linux-2.6.27.21-0.1_1//fs/ext4/Makefile 2009-08-21 15:12:51.000000000 +0530 ++++ linux-2.6.27.21-0.1_2//fs/ext4/Makefile 2009-08-21 15:13:23.000000000 +0530 +@@ -6,7 +6,8 @@ obj-$(CONFIG_EXT4_FS) += ext4.o + + ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o iopen.o \ + ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \ +- ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o ++ ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o \ ++ dynlocks.o + + ext4-$(CONFIG_EXT4_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o + ext4-$(CONFIG_EXT4_FS_POSIX_ACL) += acl.o +diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/super.c linux-2.6.27.21-0.1_2//fs/ext4/super.c +--- linux-2.6.27.21-0.1_1//fs/ext4/super.c 2009-08-21 15:12:51.000000000 +0530 ++++ linux-2.6.27.21-0.1_2//fs/ext4/super.c 2009-08-21 15:18:18.000000000 +0530 +@@ -4126,6 +4126,7 @@ static int __init init_ext4_fs(void) + err = init_inodecache(); + if (err) + goto out1; ++ dynlock_cache_init(); + err = register_filesystem(&ext4_fs_type); + if (err) + goto out; +@@ -4149,6 +4150,7 @@ static void __exit exit_ext4_fs(void) + unregister_filesystem(&ext4_fs_type); + unregister_filesystem(&ext4dev_fs_type); + destroy_inodecache(); ++ dynlock_cache_exit(); + exit_ext4_xattr(); + exit_ext4_mballoc(); + remove_proc_entry("fs/ext4", NULL); + diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-dynlocks-2.6-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-dynlocks-2.6-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-dynlocks-2.6-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-dynlocks-2.6-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -1,15 +1,16 @@ diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/Makefile linux-2.6.27.21-0.1_2//fs/ext4/Makefile --- linux-2.6.27.21-0.1_1//fs/ext4/Makefile 2009-08-21 15:12:51.000000000 +0530 +++ linux-2.6.27.21-0.1_2//fs/ext4/Makefile 2009-08-21 15:13:23.000000000 +0530 -@@ -6,7 +6,7 @@ obj-$(CONFIG_EXT4DEV_FS) += ext4dev.o +@@ -6,7 +6,8 @@ obj-$(CONFIG_EXT4DEV_FS) += ext4dev.o - ext4dev-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o iopen.o \ - ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \ -- ext4_jbd2.o migrate.o mballoc.o -+ ext4_jbd2.o migrate.o mballoc.o dynlocks.o - - ext4dev-$(CONFIG_EXT4DEV_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o - ext4dev-$(CONFIG_EXT4DEV_FS_POSIX_ACL) += acl.o + ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o iopen.o \ + ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \ +- ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o ++ ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o \ ++ dynlocks.o + + ext4-$(CONFIG_EXT4_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o + ext4-$(CONFIG_EXT4_FS_POSIX_ACL) += acl.o diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/super.c linux-2.6.27.21-0.1_2//fs/ext4/super.c --- linux-2.6.27.21-0.1_1//fs/ext4/super.c 2009-08-21 15:12:51.000000000 +0530 +++ linux-2.6.27.21-0.1_2//fs/ext4/super.c 2009-08-21 15:18:18.000000000 +0530 diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-dynlocks-common-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-dynlocks-common-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-dynlocks-common-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-dynlocks-common-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -13,7 +13,7 @@ + +#include +#include -+#include ++#include +#include + +#define DYNLOCK_HANDLE_MAGIC 0xd19a10c diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-rhel5.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -30,9 +30,9 @@ - if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_EXTENTS)) { + if (test_opt(sb, EXTENTS)) { + #if defined(AGGRESSIVE_TEST) || defined(CHECK_BINSEARCH) || defined(EXTENTS_STATS) printk(KERN_INFO "EXT4-fs: file extents enabled"); #ifdef AGGRESSIVE_TEST - printk(", aggressive tests"); @@ -2338,7 +2338,7 @@ void ext4_ext_init(struct super_block *s */ void ext4_ext_release(struct super_block *sb) diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-ext_generation-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-ext_generation-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-ext_generation-rhel5.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-ext_generation-rhel5.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,48 @@ +Index: linux-2.6.27.21-0.1/fs/ext4/ext4_extents.h +=================================================================== +--- linux-2.6.27.21-0.1.orig/fs/ext4/ext4_extents.h 2009-07-07 14:47:22.000000000 +0530 ++++ linux-2.6.27.21-0.1/fs/ext4/ext4_extents.h 2009-07-07 14:49:31.000000000 +0530 +@@ -203,6 +203,11 @@ + return le16_to_cpu(ext_inode_hdr(inode)->eh_depth); + } + ++static inline void ext4_ext_tree_changed(struct inode *inode) ++{ ++ EXT4_I(inode)->i_ext_generation++; ++} ++ + static inline void + ext4_ext_invalidate_cache(struct inode *inode) + { +Index: linux-2.6.27.21-0.1/fs/ext4/ext4.h +=================================================================== +--- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h 2009-07-07 14:47:13.000000000 +0530 ++++ linux-2.6.27.21-0.1/fs/ext4/ext4.h 2009-07-07 14:50:07.000000000 +0530 +@@ -114,6 +114,7 @@ + struct inode vfs_inode; + struct jbd2_inode jinode; + ++ unsigned long i_ext_generation; + struct ext4_ext_cache i_cached_extent; + /* + * File creation time. Its function is same as that of +Index: linux-2.6.27.21-0.1/fs/ext4/extents.c +=================================================================== +--- linux-2.6.27.21-0.1.orig/fs/ext4/extents.c 2009-07-07 14:48:03.000000000 +0530 ++++ linux-2.6.27.21-0.1/fs/ext4/extents.c 2009-07-07 14:48:58.000000000 +0530 +@@ -1618,6 +1618,7 @@ + ext4_ext_drop_refs(npath); + kfree(npath); + } ++ ext4_ext_tree_changed(inode); + ext4_ext_invalidate_cache(inode); + return err; + } +@@ -2279,6 +2280,7 @@ + } + } + out: ++ ext4_ext_tree_changed(inode); + ext4_ext_drop_refs(path); + kfree(path); + ext4_journal_stop(handle); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-ext_generation-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-ext_generation-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-ext_generation-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-ext_generation-sles11.patch 2010-09-17 03:17:05.000000000 +0200 @@ -14,10 +14,10 @@ static inline void ext4_ext_invalidate_cache(struct inode *inode) { -Index: linux-2.6.27.21-0.1/fs/ext4/ext4_i.h +Index: linux-2.6.27.21-0.1/fs/ext4/ext4.h =================================================================== ---- linux-2.6.27.21-0.1.orig/fs/ext4/ext4_i.h 2009-07-07 14:47:13.000000000 +0530 -+++ linux-2.6.27.21-0.1/fs/ext4/ext4_i.h 2009-07-07 14:50:07.000000000 +0530 +--- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h 2009-07-07 14:47:13.000000000 +0530 ++++ linux-2.6.27.21-0.1/fs/ext4/ext4.h 2009-07-07 14:50:07.000000000 +0530 @@ -114,6 +114,7 @@ struct inode vfs_inode; struct jbd2_inode jinode; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-failed-mount-b23368.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-failed-mount-b23368.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-failed-mount-b23368.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-failed-mount-b23368.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,12 @@ +Index: linux-stage/fs/ext4/super.c +=================================================================== +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -3466,7 +3466,6 @@ failed_mount: + brelse(bh); + out_fail: + sb->s_fs_info = NULL; +- kfree(&sbi->s_blockgroup_lock); + kfree(sbi); + lock_kernel(); + return ret; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-fiemap-2.6-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-fiemap-2.6-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-fiemap-2.6-rhel5.patch 2010-02-04 07:54:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-fiemap-2.6-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -6,9 +6,9 @@ #define EXT4_IOC_GROUP_ADD _IOW('f', 8, struct ext4_new_group_input) #define EXT4_IOC_MIGRATE _IO('f', 9) +#define EXT4_IOC_FIEMAP _IOWR('f', 11, struct fiemap) + /* note ioctl 10 reserved for an early version of the FIEMAP ioctl */ /* note ioctl 11 reserved for filesystem-independent FIEMAP ioctl */ - /* diff -rupN linux-2.6.18-164.6.1_1/fs/ext4/ioctl.c linux-2.6.18-164.6.1_2/fs/ext4/ioctl.c --- linux-2.6.18-164.6.1_1/fs/ext4/ioctl.c 2009-12-22 13:06:51.000000000 +0530 +++ linux-2.6.18-164.6.1_2/fs/ext4/ioctl.c 2009-12-22 13:09:45.000000000 +0530 diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-force_over_8tb-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-force_over_8tb-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-force_over_8tb-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-force_over_8tb-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -12,22 +12,22 @@ unsigned long journal_devnum); static int ext4_create_journal(struct super_block *, struct ext4_super_block *, @@ -1287,7 +1289,7 @@ - Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota, - Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota, - Opt_grpquota, Opt_extents, Opt_noextents, Opt_i_version, -- Opt_mballoc, -+ Opt_mballoc, Opt_force_over_8tb, - Opt_stripe, Opt_delalloc, Opt_nodelalloc, - Opt_inode_readahead_blks, Opt_bigendian_extents, - Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, + Opt_inode_readahead_blks, Opt_journal_ioprio, + Opt_discard, Opt_nodiscard, Opt_bigendian_extents, + Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, +- Opt_mballoc, Opt_extents, ++ Opt_mballoc, Opt_force_over_8tb, Opt_extents, + }; + + static match_table_t tokens = { @@ -1349,6 +1351,7 @@ - {Opt_stripe, "stripe=%u"}, - {Opt_resize, "resize"}, + {Opt_nodiscard, "nodiscard"}, + {Opt_bigendian_extents, "bigendian_extents"}, {Opt_mballoc, "mballoc"}, + {Opt_force_over_8tb, "force_over_8tb"}, - {Opt_delalloc, "delalloc"}, - {Opt_nodelalloc, "nodelalloc"}, - {Opt_inode_readahead_blks, "inode_readahead_blks=%u"}, + {Opt_err, NULL}, + }; + @@ -1773,6 +1776,9 @@ break; case Opt_mballoc: @@ -36,8 +36,8 @@ + force_over_8tb = 1; + break; default: - printk(KERN_ERR - "EXT4-fs: Unrecognized mount option \"%s\" " + ext4_msg(sb, KERN_ERR, + "Unrecognized mount option \"%s\" " @@ -2634,6 +2640,17 @@ goto failed_mount; } diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-inode-version-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-inode-version-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-inode-version-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-inode-version-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -37,10 +37,10 @@ raw_inode->i_extra_isize = cpu_to_le16(ei->i_extra_isize); } -Index: linux-2.6.18-128.1.6/fs/ext4/ext4_i.h +Index: linux-2.6.18-128.1.6/fs/ext4/ext4.h =================================================================== ---- linux-2.6.18-128.1.6.orig/fs/ext4/ext4_i.h -+++ linux-2.6.18-128.1.6/fs/ext4/ext4_i.h +--- linux-2.6.18-128.1.6.orig/fs/ext4/ext4.h ++++ linux-2.6.18-128.1.6/fs/ext4/ext4.h @@ -21,6 +21,8 @@ #include #include @@ -51,22 +51,22 @@ typedef int ext4_grpblk_t; @@ -164,6 +166,8 @@ struct ext4_inode_info { - spinlock_t i_prealloc_lock; - - void *i_filterdata; + struct list_head i_aio_dio_complete_list; + /* current io_end structure for async DIO write*/ + ext4_io_end_t *cur_aio_dio; + + __u64 i_fs_version; }; - #endif /* _EXT4_I */ + /* Index: linux-2.6.18-128.1.6/fs/ext4/ialloc.c =================================================================== --- linux-2.6.18-128.1.6.orig/fs/ext4/ialloc.c +++ linux-2.6.18-128.1.6/fs/ext4/ialloc.c @@ -878,6 +878,7 @@ got: - ei->i_dtime = 0; ei->i_block_alloc_info = NULL; ei->i_block_group = group; + ei->i_last_alloc_group = ~0; + ei->i_fs_version = 0; ext4_set_inode_flags(inode); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-kill-dx_root.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-kill-dx_root.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-kill-dx_root.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-kill-dx_root.patch 2010-09-17 03:17:05.000000000 +0200 @@ -170,14 +170,14 @@ root = (struct dx_root *) bh->b_data; + dot_de = (struct ext4_dir_entry_2 *) bh->b_data; -+ dotdot_de = ext4_next_entry(dot_de); ++ dotdot_de = ext4_next_entry(dot_de, blocksize); + /* The 0th block becomes the root, move the dirents out */ - fde = &root->dotdot; - de = (struct ext4_dir_entry_2 *)((char *)fde + -- ext4_rec_len_from_disk(fde->rec_len)); +- ext4_rec_len_from_disk(fde->rec_len, blocksize)); + de = (struct ext4_dir_entry_2 *)((char *)dotdot_de + -+ ext4_rec_len_from_disk(dotdot_de->rec_len)); ++ ext4_rec_len_from_disk(dotdot_de->rec_len, blocksize)); - if ((char *) de >= (((char *) root) + blocksize)) { + if ((char *) de >= (((char *) dot_de) + blocksize)) { ext4_error(dir->i_sb, __func__, @@ -191,12 +191,13 @@ /* Allocate new block for the 0th block's dirents */ bh2 = ext4_append(handle, dir, &block, &retval); -@@ -1472,18 +1475,23 @@ static int make_indexed_dir(handle_t *ha - de = de2; +@@ -1472,19 +1475,23 @@ static int make_indexed_dir(handle_t *ha de->rec_len = ext4_rec_len_to_disk(data1 + blocksize - (char *) de); + blocksize); /* Initialize the root; the dot dirents already exist */ - de = (struct ext4_dir_entry_2 *) (&root->dotdot); -- de->rec_len = ext4_rec_len_to_disk(blocksize - EXT4_DIR_REC_LEN(2)); +- de->rec_len = ext4_rec_len_to_disk(blocksize - EXT4_DIR_REC_LEN(2), +- blocksize); - memset (&root->info, 0, sizeof(root->info)); - root->info.info_length = sizeof(root->info); - root->info.hash_version = EXT4_SB(dir->i_sb)->s_def_hash_version; @@ -205,7 +206,7 @@ - dx_set_count(entries, 1); - dx_set_limit(entries, dx_root_limit(dir, sizeof(root->info))); + dotdot_de->rec_len = ext4_rec_len_to_disk(blocksize - -+ le16_to_cpu(dot_de->rec_len)); ++ le16_to_cpu(dot_de->rec_len), blocksize); + + /* initialize hashing info */ + dx_info = dx_get_dx_info(dot_de); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-lustre-i_version.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-lustre-i_version.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-lustre-i_version.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-lustre-i_version.patch 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ -Index: linux-2.6.27.21-0.1/fs/ext4/ext4_i.h +Index: linux-2.6.27.21-0.1/fs/ext4/ext4.h =================================================================== ---- linux-2.6.27.21-0.1.orig/fs/ext4/ext4_i.h 2009-06-15 06:23:34.000000000 -0400 -+++ linux-2.6.27.21-0.1/fs/ext4/ext4_i.h 2009-06-15 17:09:59.000000000 -0400 +--- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h 2009-06-15 06:23:34.000000000 -0400 ++++ linux-2.6.27.21-0.1/fs/ext4/ext4.h 2009-06-15 17:09:59.000000000 -0400 @@ -36,6 +36,8 @@ typedef unsigned int ext4_group_t; #define rsv_start rsv_window._rsv_start #define rsv_end rsv_window._rsv_end @@ -12,22 +12,22 @@ * storage for cached extent */ @@ -138,6 +140,8 @@ struct ext4_inode_info { - spinlock_t i_block_reservation_lock; - - void *i_filterdata; + */ + tid_t i_sync_tid; + tid_t i_datasync_tid; + + __u64 i_fs_version; }; - #endif /* _EXT4_I */ + /* Index: linux-2.6.27.21-0.1/fs/ext4/ialloc.c =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/ialloc.c 2009-06-15 06:23:34.000000000 -0400 +++ linux-2.6.27.21-0.1/fs/ext4/ialloc.c 2009-06-15 16:59:35.000000000 -0400 @@ -888,6 +888,7 @@ got: - ei->i_file_acl = 0; ei->i_dtime = 0; ei->i_block_group = group; + ei->i_last_alloc_group = ~0; + ei->i_fs_version = 0; ext4_set_inode_flags(inode); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-map_inode_page-2.6.18-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-map_inode_page-2.6.18-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-map_inode_page-2.6.18-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-map_inode_page-2.6.18-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -2,7 +2,7 @@ =================================================================== --- linux-2.6.18.i386.orig/fs/ext4/inode.c +++ linux-2.6.18.i386/fs/ext4/inode.c -@@ -3666,3 +3666,66 @@ out_unlock: +@@ -3666,3 +3666,67 @@ out_unlock: unlock_page(page); return ret; } @@ -44,7 +44,8 @@ + if (blocks[i] != 0) + continue; + -+ rc = ext4_get_blocks_handle(handle, inode, iblock, 1, &dummy, 1, 1); ++ rc = ext4_ind_get_blocks(handle, inode, iblock, 1, &dummy, ++ EXT4_GET_BLOCKS_CREATE); + if (rc < 0) { + printk(KERN_INFO "ext4_map_inode_page: error reading " + "block %ld\n", iblock); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-map_inode_page-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-map_inode_page-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-map_inode_page-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-map_inode_page-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -2,7 +2,7 @@ =================================================================== --- linux-2.6.18.i386.orig/fs/ext4/inode.c +++ linux-2.6.18.i386/fs/ext4/inode.c -@@ -3666,3 +3666,66 @@ out_unlock: +@@ -3666,3 +3666,67 @@ out_unlock: unlock_page(page); return ret; } @@ -44,7 +44,8 @@ + if (blocks[i] != 0) + continue; + -+ rc = ext4_get_blocks_handle(handle, inode, iblock, 1, &dummy, 1, 1); ++ rc = ext4_ind_get_blocks(handle, inode, iblock, 1, &dummy, ++ EXT4_GET_BLOCKS_CREATE); + if (rc < 0) { + printk(KERN_INFO "ext4_map_inode_page: error reading " + "block %ld\n", iblock); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-max-dir-size-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-max-dir-size-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-max-dir-size-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-max-dir-size-rhel5.patch 2010-11-17 04:31:48.000000000 +0100 @@ -2,7 +2,7 @@ =================================================================== --- linux-2.6.18.i386.orig/fs/ext4/ialloc.c +++ linux-2.6.18.i386/fs/ext4/ialloc.c -@@ -622,12 +622,15 @@ struct inode *ext4_new_inode(handle_t *h +@@ -622,11 +622,14 @@ struct inode *ext4_new_inode(handle_t *h sb = dir->i_sb; trace_mark(ext4_request_inode, "dev %s dir %lu mode %d", sb->s_id, dir->i_ino, mode); @@ -14,105 +14,34 @@ if (!inode) return ERR_PTR(-ENOMEM); ei = EXT4_I(inode); - - sbi = EXT4_SB(sb); - es = sbi->s_es; - if (goal) { + if (goal) + goal = sbi->s_inode_goal; Index: linux-2.6.18.i386/fs/ext4/super.c =================================================================== --- linux-2.6.18.i386.orig/fs/ext4/super.c +++ linux-2.6.18.i386/fs/ext4/super.c @@ -38,6 +38,7 @@ - #include - #include - #include -+#include - - #include "ext4.h" - #include "ext4_jbd2.h" -@@ -551,6 +554,7 @@ static void ext4_put_super(struct super_ - ext4_commit_super(sb, es, 1); - } - if (sbi->s_proc) { -+ remove_proc_entry(EXT4_MAX_DIR_SIZE_NAME, sbi->s_proc); - remove_proc_entry("inode_readahead_blks", sbi->s_proc); - remove_proc_entry(sb->s_id, ext4_proc_root); - } -@@ -2185,6 +2191,48 @@ static unsigned long ext4_get_stripe_siz - return 0; - } + EXT4_RW_ATTR_SBI_UI(mb_order2_req, s_mb_order2_reqs); + EXT4_RW_ATTR_SBI_UI(mb_stream_req, s_mb_stream_request); + EXT4_RW_ATTR_SBI_UI(mb_group_prealloc, s_mb_group_prealloc); ++EXT4_RW_ATTR_SBI_UI(max_dir_size, s_max_dir_size); + + static struct attribute *ext4_attrs[] = { + ATTR_LIST(delayed_allocation_blocks), +@@ -48,6 +48,7 @@ + ATTR_LIST(mb_order2_req), + ATTR_LIST(mb_stream_req), + ATTR_LIST(mb_group_prealloc), ++ ATTR_LIST(max_dir_size), + NULL, + }; -+#ifdef CONFIG_PROC_FS -+static int ext4_max_dir_size_read(char *page, char **start, off_t off, -+ int count, int *eof, void *data) -+{ -+ struct ext4_sb_info *sbi = data; -+ int len; -+ -+ *eof = 1; -+ if (off != 0) -+ return 0; -+ -+ len = sprintf(page, "%lu\n", sbi->s_max_dir_size); -+ *start = page; -+ return len; -+} -+ -+static int ext4_max_dir_size_write(struct file *file, const char *buffer, -+ unsigned long count, void *data) -+{ -+ struct ext4_sb_info *sbi = data; -+ char str[32]; -+ unsigned long value; -+ char *end; -+ -+ if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT4-fs: %s string too long, max %u bytes\n", -+ EXT4_MAX_DIR_SIZE_NAME, (int)sizeof(str)); -+ return -EOVERFLOW; -+ } -+ -+ if (copy_from_user(str, buffer, count)) -+ return -EFAULT; -+ -+ value = simple_strtol(str, &end, 0); -+ if (value < 0) -+ return -ERANGE; -+ -+ sbi->s_max_dir_size = value; -+ return count; -+} -+#endif -+ - static int ext4_fill_super(struct super_block *sb, void *data, int silent) - __releases(kernel_lock) - __acquires(kernel_lock) -@@ -2743,6 +2790,20 @@ static int ext4_fill_super(struct super_ - p->proc_fops = &ext4_ui_proc_fops, - p->data = &sbi->s_inode_goal; - } -+ sbi->s_max_dir_size = EXT4_DEFAULT_MAX_DIR_SIZE; -+ p = create_proc_entry(EXT4_MAX_DIR_SIZE_NAME, -+ S_IFREG | S_IRUGO | S_IWUSR, sbi->s_proc); -+ if (p == NULL) { -+ printk(KERN_ERR "EXT4-fs: unable to create %s\n", -+ EXT4_MAX_DIR_SIZE_NAME); -+ remove_proc_entry(EXT4_MAX_DIR_SIZE_NAME, sbi->s_proc); -+ ret = -ENOMEM; -+ goto failed_mount; -+ } -+ p->data = sbi; -+ p->read_proc = ext4_max_dir_size_read; -+ p->write_proc = ext4_max_dir_size_write; -+ - } - #endif - -Index: linux-2.6.18.i386/fs/ext4/ext4_sb.h +Index: linux-2.6.18.i386/fs/ext4/ext4.h =================================================================== ---- linux-2.6.18.i386.orig/fs/ext4/ext4_sb.h -+++ linux-2.6.18.i386/fs/ext4/ext4_sb.h +--- linux-2.6.18.i386.orig/fs/ext4/ext4.h ++++ linux-2.6.18.i386/fs/ext4/ext4.h @@ -117,6 +117,7 @@ struct ext4_sb_info { /* where last allocation was done - for stream allocation */ unsigned long s_mb_last_group; @@ -121,20 +50,3 @@ /* history to debug policy */ struct ext4_mb_history *s_mb_history; -Index: linux-2.6.18.i386/fs/ext4/ext4.h -=================================================================== ---- linux-2.6.18.i386.orig/fs/ext4/ext4.h -+++ linux-2.6.18.i386/fs/ext4/ext4.h -@@ -992,6 +992,12 @@ struct mmp_struct { - */ - #define EXT4_MMP_MIN_CHECK_INTERVAL 5 - -+/* -+ * max directory size tunable -+ */ -+#define EXT4_DEFAULT_MAX_DIR_SIZE 0 -+#define EXT4_MAX_DIR_SIZE_NAME "max_dir_size" -+ - /* - * Function prototypes - */ diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-max-dir-size-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-max-dir-size-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-max-dir-size-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-max-dir-size-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -2,10 +2,10 @@ =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/ialloc.c 2009-07-07 14:35:55.000000000 +0530 +++ linux-2.6.27.21-0.1/fs/ext4/ialloc.c 2009-07-07 14:38:17.000000000 +0530 -@@ -700,12 +700,15 @@ - return ERR_PTR(-EPERM); - +@@ -700,11 +700,14 @@ sb = dir->i_sb; + ngroups = ext4_get_groups_count(sb); + trace_ext4_request_inode(dir, mode); + sbi = EXT4_SB(sb); + if (sbi->s_max_dir_size > 0 && i_size_read(dir) >= sbi->s_max_dir_size) + return ERR_PTR(-EFBIG); @@ -14,182 +14,39 @@ if (!inode) return ERR_PTR(-ENOMEM); ei = EXT4_I(inode); - - sbi = EXT4_SB(sb); - es = sbi->s_es; - if (goal && goal < le32_to_cpu(es->s_inodes_count)) { + if (!goal) + Index: linux-2.6.27.21-0.1/fs/ext4/super.c =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/super.c 2009-07-07 14:38:06.000000000 +0530 +++ linux-2.6.27.21-0.1/fs/ext4/super.c 2009-07-07 14:38:41.000000000 +0530 -@@ -41,6 +41,7 @@ - #include - #include - #include -+#include - - #include "ext4.h" - #include "ext4_jbd2.h" -@@ -71,6 +72,8 @@ - static void ext4_write_super_lockfs(struct super_block *sb); - +@@ -71,6 +72,7 @@ + EXT4_RW_ATTR_SBI_UI(mb_stream_req, s_mb_stream_request); + EXT4_RW_ATTR_SBI_UI(mb_group_prealloc, s_mb_group_prealloc); + EXT4_RW_ATTR_SBI_UI(max_writeback_mb_bump, s_max_writeback_mb_bump); ++EXT4_RW_ATTR_SBI_UI(max_dir_size, s_max_dir_size); -+struct proc_dir_entry *proc_root_ext4; -+ - ext4_fsblk_t ext4_block_bitmap(struct super_block *sb, - struct ext4_group_desc *bg) - { + static struct attribute *ext4_attrs[] = { + ATTR_LIST(delayed_allocation_blocks), @@ -603,6 +606,7 @@ - } - if (sbi->s_mmp_tsk) - kthread_stop(sbi->s_mmp_tsk); -+ - sb->s_fs_info = NULL; - kfree(sbi); - return; -@@ -2283,6 +2287,46 @@ - return 0; - } - -+static int ext4_max_dir_size_read(char *page, char **start, off_t off, -+ int count, int *eof, void *data) -+{ -+ struct ext4_sb_info *sbi = data; -+ int len; -+ -+ *eof = 1; -+ if (off != 0) -+ return 0; -+ -+ len = sprintf(page, "%lu\n", sbi->s_max_dir_size); -+ *start = page; -+ return len; -+} -+ -+static int ext4_max_dir_size_write(struct file *file, const char *buffer, -+ unsigned long count, void *data) -+{ -+ struct ext4_sb_info *sbi = data; -+ char str[32]; -+ unsigned long value; -+ char *end; -+ -+ if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT4-fs: %s string too long, max %u bytes\n", -+ EXT4_MAX_DIR_SIZE_NAME, (int)sizeof(str)); -+ return -EOVERFLOW; -+ } -+ -+ if (copy_from_user(str, buffer, count)) -+ return -EFAULT; -+ -+ value = simple_strtol(str, &end, 0); -+ if (value < 0) -+ return -ERANGE; -+ -+ sbi->s_max_dir_size = value; -+ return count; -+} -+ - static int ext4_fill_super(struct super_block *sb, void *data, int silent) - __releases(kernel_lock) - __acquires(kernel_lock) -@@ -2307,6 +2351,7 @@ - int needs_recovery, has_huge_files; - int features; - __u64 blocks_count; -+ struct proc_dir_entry *proc; - int err; + ATTR_LIST(mb_stream_req), + ATTR_LIST(mb_group_prealloc), + ATTR_LIST(max_writeback_mb_bump), ++ ATTR_LIST(max_dir_size), + NULL, + }; - sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); -@@ -2880,6 +2925,22 @@ - test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA ? "ordered": - "writeback"); - -+ sbi->s_max_dir_size = EXT4_DEFAULT_MAX_DIR_SIZE; -+ proc = create_proc_entry(EXT4_MAX_DIR_SIZE_NAME, -+ S_IFREG | S_IRUGO | S_IWUSR, sbi->s_proc); -+ if (proc == NULL) { -+ printk(KERN_ERR "EXT4-fs: unable to create %s\n", -+ EXT4_MAX_DIR_SIZE_NAME); -+ remove_proc_entry(EXT4_MAX_DIR_SIZE_NAME, sbi->s_proc); -+ remove_proc_entry(sbi->s_proc->name, proc_root_ext4); -+ sbi->s_proc = NULL; -+ ret = -ENOMEM; -+ goto failed_mount4; -+ } -+ proc->data = sbi; -+ proc->read_proc = ext4_max_dir_size_read; -+ proc->write_proc = ext4_max_dir_size_write; -+ - lock_kernel(); - return 0; - -@@ -2906,6 +2967,7 @@ - failed_mount: - if (sbi->s_proc) { - remove_proc_entry("inode_readahead_blks", sbi->s_proc); -+ remove_proc_entry(EXT4_MAX_DIR_SIZE_NAME, sbi->s_proc); - remove_proc_entry("inode_goal", sbi->s_proc); - remove_proc_entry(sb->s_id, ext4_proc_root); - } -@@ -3254,7 +3316,6 @@ - } - } - -- - /* - * Have we just finished recovery? If so, and if we are mounting (or - * remounting) the filesystem readonly, then we will end up with a Index: linux-2.6.27.21-0.1/fs/ext4/ext4_sb.h =================================================================== ---- linux-2.6.27.21-0.1.orig/fs/ext4/ext4_sb.h 2009-07-07 14:36:58.000000000 +0530 -+++ linux-2.6.27.21-0.1/fs/ext4/ext4_sb.h 2009-07-07 14:38:17.000000000 +0530 +--- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h 2009-07-07 14:36:58.000000000 +0530 ++++ linux-2.6.27.21-0.1/fs/ext4/ext4.h 2009-07-07 14:38:17.000000000 +0530 @@ -119,6 +119,7 @@ /* where last allocation was done - for stream allocation */ unsigned long s_mb_last_group; unsigned long s_mb_last_start; + unsigned long s_max_dir_size; - /* history to debug policy */ - struct ext4_mb_history *s_mb_history; -Index: linux-2.6.27.21-0.1/fs/ext4/ext4.h -=================================================================== ---- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h 2009-07-07 14:38:12.000000000 +0530 -+++ linux-2.6.27.21-0.1/fs/ext4/ext4.h 2009-07-07 14:38:17.000000000 +0530 -@@ -1017,6 +1017,14 @@ - */ - #define EXT4_MMP_MIN_CHECK_INTERVAL 5 - -+extern struct proc_dir_entry *proc_root_ext4; -+ -+/* -+ * max directory size tunable -+ */ -+#define EXT4_DEFAULT_MAX_DIR_SIZE 0 -+#define EXT4_MAX_DIR_SIZE_NAME "max_dir_size" -+ - /* - * Function prototypes - */ -Index: linux-2.6.27.21-0.1/fs/ext4/mballoc.c -=================================================================== ---- linux-2.6.27.21-0.1.orig/fs/ext4/mballoc.c 2009-07-07 14:08:21.000000000 +0530 -+++ linux-2.6.27.21-0.1/fs/ext4/mballoc.c 2009-07-07 14:38:17.000000000 +0530 -@@ -2943,6 +2943,7 @@ - remove_proc_entry(EXT4_MB_MIN_TO_SCAN_NAME, sbi->s_proc); - remove_proc_entry(EXT4_MB_MAX_TO_SCAN_NAME, sbi->s_proc); - remove_proc_entry(EXT4_MB_STATS_NAME, sbi->s_proc); -+ remove_proc_entry(EXT4_MAX_DIR_SIZE_NAME, sbi->s_proc); - return -ENOMEM; - #else - return 0; -@@ -2963,6 +2964,7 @@ - remove_proc_entry(EXT4_MB_MIN_TO_SCAN_NAME, sbi->s_proc); - remove_proc_entry(EXT4_MB_MAX_TO_SCAN_NAME, sbi->s_proc); - remove_proc_entry(EXT4_MB_STATS_NAME, sbi->s_proc); -+ remove_proc_entry(EXT4_MAX_DIR_SIZE_NAME, sbi->s_proc); - #endif - return 0; - } + /* stats for buddy allocator */ + spinlock_t s_mb_pa_lock; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-rhel5.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -13,11 +13,11 @@ ext4_group_t group); @@ -660,7 +660,7 @@ static void ext4_mb_mark_free_simple(str - } } --static void ext4_mb_generate_buddy(struct super_block *sb, -+static int ext4_mb_generate_buddy(struct super_block *sb, + static noinline_for_stack +-void ext4_mb_generate_buddy(struct super_block *sb, ++int ext4_mb_generate_buddy(struct super_block *sb, void *buddy, void *bitmap, ext4_group_t group) { struct ext4_group_info *grp = ext4_get_group_info(sb, group); @@ -155,7 +155,7 @@ if (ac->ac_op == EXT4_MB_HISTORY_ALLOC) { if (ac->ac_g_ex.fe_start == ac->ac_b_ex.fe_start && ac->ac_g_ex.fe_group == ac->ac_b_ex.fe_group) -@@ -3539,22 +3555,67 @@ ext4_mb_use_preallocated(struct ext4_all +@@ -3539,23 +3555,68 @@ ext4_mb_use_preallocated(struct ext4_all } /* @@ -194,10 +194,11 @@ +/* * the function goes through all preallocation in this group and marks them * used in in-core bitmap. buddy must be generated from this bitmap - * Need to be called with ext4 group lock (ext4_lock_group) + * Need to be called with ext4 group lock held */ --static void ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap, -+static int ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap, + static noinline_for_stack +-void ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap, ++int ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap, ext4_group_t group) { struct ext4_group_info *grp = ext4_get_group_info(sb, group); @@ -224,7 +225,7 @@ /* all form of preallocation discards first load group, * so the only competing code is preallocation use. * we don't need any locking here -@@ -3570,15 +3631,24 @@ static void ext4_mb_generate_from_pa(str +@@ -3570,14 +3631,23 @@ static void ext4_mb_generate_from_pa(str &groupnr, &start); len = pa->pa_len; spin_unlock(&pa->pa_lock); @@ -234,8 +235,7 @@ continue; + } BUG_ON(groupnr != group); - mb_set_bits(sb_bgl_lock(EXT4_SB(sb), group), - bitmap, start, len); + mb_set_bits(bitmap, start, len); preallocated += len; count++; } @@ -245,7 +245,7 @@ + count, grp->bb_prealloc_nr, skip); + return -EIO; + } - mb_debug("prellocated %u for group %u\n", preallocated, group); + mb_debug(1, "prellocated %u for group %u\n", preallocated, group); + return 0; } diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-sles11.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -12,12 +12,12 @@ static void ext4_mb_generate_from_freelist(struct super_block *sb, void *bitmap, ext4_group_t group); @@ -672,7 +672,7 @@ static void ext4_mb_mark_free_simple(str - } } --static void ext4_mb_generate_buddy(struct super_block *sb, -+static int ext4_mb_generate_buddy(struct super_block *sb, - void *buddy, void *bitmap, ext4_group_t group) + static noinline_for_stack +-void ext4_mb_generate_buddy(struct super_block *sb, ++int ext4_mb_generate_buddy(struct super_block *sb, + void *buddy, void *bitmap, ext4_group_t group) { struct ext4_group_info *grp = ext4_get_group_info(sb, group); @@ -704,14 +704,13 @@ static void ext4_mb_generate_buddy(struc @@ -25,7 +25,7 @@ if (free != grp->bb_free) { - ext4_grp_locked_error(sb, group, __func__, -- "EXT4-fs: group %u: %u blocks in bitmap, %u in gd\n", +- "EXT4-fs: group %u: %u blocks in bitmap, %u in gd", - group, free, grp->bb_free); - /* - * If we intent to continue, we consider group descritor @@ -86,17 +86,6 @@ SetPageUptodate(page); out: -@@ -2217,7 +2219,10 @@ static int ext4_mb_seq_history_show(stru - hs->result.fe_start, hs->result.fe_len); - seq_printf(seq, "%-5u %-8u %-23s free\n", - hs->pid, hs->ino, buf2); -+ } else { -+ seq_printf(seq, "unknown op %d\n", hs->op); - } -+ - return 0; - } - @@ -2345,9 +2350,11 @@ static void *ext4_mb_seq_groups_next(str static int ext4_mb_seq_groups_show(struct seq_file *seq, void *v) { @@ -134,7 +123,7 @@ ext4_lock_group(sb, group); memcpy(&sg, ext4_get_group_info(sb, group), i); ext4_unlock_group(sb, group); - ext4_mb_release_desc(&e4b); + ext4_mb_unload_buddy(&e4b); - seq_printf(seq, "#%-5u: %-5u %-5u %-5u [", group, sg.info.bb_free, + seq_printf(seq, "#%-5u: %-5u %-5u %-5u %-5u [", group, @@ -142,15 +131,7 @@ sg.info.bb_fragments, sg.info.bb_first_free); for (i = 0; i <= 13; i++) seq_printf(seq, " %-5u", i <= sb->s_blocksize_bits + 1 ? -@@ -2474,6 +2487,7 @@ ext4_mb_store_history(struct ext4_alloca - h.tail = ac->ac_tail; - h.buddy = ac->ac_buddy; - h.merged = 0; -+ h.cr = ac->ac_criteria; - if (ac->ac_op == EXT4_MB_HISTORY_ALLOC) { - if (ac->ac_g_ex.fe_start == ac->ac_b_ex.fe_start && - ac->ac_g_ex.fe_group == ac->ac_b_ex.fe_group) -@@ -3695,22 +3709,67 @@ static void ext4_mb_generate_from_freeli +@@ -3695,23 +3709,68 @@ static void ext4_mb_generate_from_freeli } /* @@ -189,11 +170,12 @@ +/* * the function goes through all preallocation in this group and marks them * used in in-core bitmap. buddy must be generated from this bitmap - * Need to be called with ext4 group lock (ext4_lock_group) + * Need to be called with ext4 group lock held */ --static void ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap, -+static int ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap, - ext4_group_t group) + static noinline_for_stack +-void ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap, ++int ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap, + ext4_group_t group) { struct ext4_group_info *grp = ext4_get_group_info(sb, group); struct ext4_prealloc_space *pa; @@ -229,28 +211,28 @@ continue; + } BUG_ON(groupnr != group); - mb_set_bits(sb_bgl_lock(EXT4_SB(sb), group), - bitmap, start, len); + mb_set_bits(bitmap, start, len); + preallocated += len; @@ -3729,6 +3789,7 @@ static void ext4_mb_generate_from_pa(str count++; } - mb_debug("prellocated %u for group %u\n", preallocated, group); + mb_debug(1, "prellocated %u for group %u\n", preallocated, group); + return 0; } static void ext4_mb_pa_callback(struct rcu_head *head) @@ -3978,6 +4039,7 @@ ext4_mb_release_inode_pa(struct ext4_bud + if (ac) { ac->ac_sb = sb; ac->ac_inode = pa->pa_inode; - ac->ac_op = EXT4_MB_HISTORY_DISCARD; + ac->ac_o_ex.fe_len = 1; } while (bit < end) { @@ -4260,7 +4322,7 @@ repeat: - __release(e4b->alloc_semp); + if (err) { ext4_error(sb, __func__, "Error in loading buddy " - "information for %u\n", group); + "information for %u", group); - continue; + return; } @@ -269,12 +251,3 @@ /* * default group prealloc size 512 blocks -@@ -219,7 +219,7 @@ struct ext4_mb_history { - __u16 tail; /* what tail broke some buddy */ - __u16 buddy; /* buddy the tail ^^^ broke */ - __u16 flags; -- __u8 cr:3; /* which phase the result extent was found at */ -+ __u8 cr:8; /* which phase the result extent was found at */ - __u8 op:4; - __u8 merged:1; - }; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mballoc-skip-grps.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mballoc-skip-grps.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mballoc-skip-grps.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mballoc-skip-grps.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,22 @@ +Index: linux-stage/fs/ext4/mballoc.c +=================================================================== +--- linux-stage.orig/fs/ext4/mballoc.c ++++ linux-stage/fs/ext4/mballoc.c +@@ -2780,7 +2784,7 @@ int ext4_mb_init(struct super_block *sb, + + sbi->s_mb_small_req = 256; + sbi->s_mb_large_req = 1024; +- sbi->s_mb_group_prealloc = 512; ++ sbi->s_mb_group_prealloc = 256; + } else { + sbi->s_mb_prealloc_table_size = 3; + i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); +@@ -2798,7 +2802,7 @@ int ext4_mb_init(struct super_block *sb, + + sbi->s_mb_small_req = sbi->s_stripe; + sbi->s_mb_large_req = sbi->s_stripe * 8; +- sbi->s_mb_group_prealloc = sbi->s_stripe * 4; ++ sbi->s_mb_group_prealloc = sbi->s_stripe; + } + + sbi->s_locality_groups = alloc_percpu(struct ext4_locality_group); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-misc-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-misc-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-misc-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-misc-rhel5.patch 2010-11-17 04:31:48.000000000 +0100 @@ -18,15 +18,6 @@ =================================================================== --- linux-2.6.18.i386.orig/fs/ext4/extents.c +++ linux-2.6.18.i386/fs/ext4/extents.c -@@ -50,7 +50,7 @@ - * ext_pblock: - * combine low and high parts of physical block number into ext4_fsblk_t - */ --static ext4_fsblk_t ext_pblock(struct ext4_extent *ex) -+ext4_fsblk_t ext_pblock(struct ext4_extent *ex) - { - ext4_fsblk_t block; - @@ -60,6 +60,17 @@ static ext4_fsblk_t ext_pblock(struct ex } @@ -152,19 +143,16 @@ /* * ext4_inode has i_block array (60 bytes total). -@@ -124,6 +129,7 @@ struct ext4_ext_path { +@@ -124,6 +129,8 @@ struct ext4_ext_path { #define EXT4_EXT_CACHE_GAP 1 #define EXT4_EXT_CACHE_EXTENT 2 +#define EXT4_EXT_HAS_NO_TREE /* ext4_extents_tree struct is not used*/ ++#define EXT_INSERT_EXTENT_WITH_5ARGS #define EXT_MAX_BLOCK 0xffffffff -@@ -228,9 +234,12 @@ static inline int ext4_ext_get_actual_le - } - - extern int ext4_ext_calc_metadata_amount(struct inode *inode, int blocks); -+extern ext4_fsblk_t ext_pblock(struct ext4_extent *ex); +@@ -228,6 +234,8 @@ static inline int ext4_ext_get_actual_le extern ext4_fsblk_t idx_pblock(struct ext4_extent_idx *); extern void ext4_ext_store_pblock(struct ext4_extent *, ext4_fsblk_t); extern int ext4_extent_tree_init(handle_t *, struct inode *); @@ -264,6 +252,17 @@ =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/super.c 2009-07-07 14:47:19.000000000 +0530 +++ linux-2.6.27.21-0.1/fs/ext4/super.c 2009-07-07 14:48:53.000000000 +0530 +@@ -1086,8 +1087,8 @@ + ext4_warning(sb, function, "%s", msg); + ext4_warning(sb, function, "MMP failure info: last update time: %llu, " + "last update node: %s, last update device: %s\n", +- le64_to_cpu(mmp->mmp_time), mmp->mmp_nodename, +- mmp->mmp_bdevname); ++ (unsigned long long)(le64_to_cpu(mmp->mmp_time)), ++ mmp->mmp_nodename, mmp->mmp_bdevname); + } + + /* @@ -1286,6 +1287,7 @@ Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota, Opt_ignore, Opt_barrier, Opt_nobarrier, Opt_err, Opt_resize, @@ -289,6 +288,38 @@ default: printk(KERN_ERR "EXT4-fs: Unrecognized mount option \"%s\" " +@@ -2768,7 +2771,7 @@ + char *buf) + { + return snprintf(buf, PAGE_SIZE, "%llu\n", +- (s64) percpu_counter_sum(&sbi->s_dirtyblocks_counter)); ++ (unsigned long long) percpu_counter_sum(&sbi->s_dirtyblocks_counter)); + } + + static ssize_t session_write_kbytes_show(struct ext4_attr *a, +@@ -2868,11 +2871,11 @@ + struct super_block *sb = sbi->s_buddy_cache->i_sb; + + return snprintf(buf, PAGE_SIZE, "%llu\n", +- sbi->s_kbytes_written + ++ (unsigned long long)(sbi->s_kbytes_written + + (sb->s_bdev->bd_part ? + (part_stat_read(sb->s_bdev->bd_part, sectors[1]) - + EXT4_SB(sb)->s_sectors_written_start) >> 1 +- : 0)); ++ : 0))); + } + + static ssize_t inode_readahead_blks_store(struct ext4_attr *a, +@@ -3868,7 +3871,7 @@ + if (blocks_count && ext4_blocks_count(es) > blocks_count) { + ext4_msg(sb, KERN_WARNING, "bad geometry: block count %llu " + "exceeds size of device (%llu blocks)", +- ext4_blocks_count(es), blocks_count); ++ ext4_blocks_count(es), (unsigned long long)blocks_count); + goto failed_mount; + } + Index: linux-2.6.27.21-0.1/fs/ext4/fsync.c =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/fsync.c 2009-07-07 14:47:19.000000000 +0530 @@ -302,3 +333,17 @@ /* * data=writeback: +Index: linux-2.6.27.21-0.1/fs/ext4/move_extent.c +=================================================================== +--- linux-2.6.27.21-0.1.orig/fs/ext4/move_extent.c 2009-07-07 14:47:19.000000000 +0530 ++++ linux-2.6.27.21-0.1/fs/ext4/move_extent.c 2009-07-07 14:48:53.000000000 +0530 +@@ -1768,7 +1771,8 @@ + ext4_error(orig_inode->i_sb, __func__, + "We replaced blocks too much! " + "sum of replaced: %llu requested: %llu", +- *moved_len, len); ++ (unsigned long long)(*moved_len), ++ (unsigned long long)(len)); + ret1 = -EIO; + goto out; + } diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-misc-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-misc-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-misc-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-misc-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -2,13 +2,15 @@ =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/ext4_jbd2.h 2009-07-07 14:47:19.000000000 +0530 +++ linux-2.6.27.21-0.1/fs/ext4/ext4_jbd2.h 2009-07-07 14:47:22.000000000 +0530 -@@ -35,6 +35,9 @@ +@@ -35,6 +35,11 @@ (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_EXTENTS) \ || test_opt(sb, EXTENTS) ? 27U : 8U) +/* Indicate that EXT4_SINGLEDATA_TRANS_BLOCKS takes the sb as argument */ +#define EXT4_SINGLEDATA_TRANS_BLOCKS_HAS_SB + ++#define ext4_journal_dirty_metadata(handle, bh) \ ++ ext4_handle_dirty_metadata(handle, NULL, bh) /* Extended attribute operations touch at most two data buffers, * two bitmap buffers, and two group summaries, in addition to the inode * and the superblock, which are already accounted for. */ @@ -16,15 +18,6 @@ =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/extents.c 2009-07-07 14:47:19.000000000 +0530 +++ linux-2.6.27.21-0.1/fs/ext4/extents.c 2009-07-07 14:48:03.000000000 +0530 -@@ -48,7 +48,7 @@ - * ext_pblock: - * combine low and high parts of physical block number into ext4_fsblk_t - */ --static ext4_fsblk_t ext_pblock(struct ext4_extent *ex) -+ext4_fsblk_t ext_pblock(struct ext4_extent *ex) - { - ext4_fsblk_t block; - @@ -58,6 +58,17 @@ } @@ -118,10 +111,10 @@ * ext4_ext_calc_credits_for_single_extent: * This routine returns max. credits that needed to insert an extent * to the extent tree. -@@ -3171,3 +3221,13 @@ - +@@ -3171,3 +3221,14 @@ return error; } + + +EXPORT_SYMBOL(ext4_ext_store_pblock); +EXPORT_SYMBOL(ext4_ext_search_right); @@ -131,6 +124,7 @@ +EXPORT_SYMBOL(ext4_mb_new_blocks); +EXPORT_SYMBOL(ext4_ext_calc_credits_for_insert); +EXPORT_SYMBOL(ext4_mark_inode_dirty); ++EXPORT_SYMBOL(ext4_ext_walk_space); + Index: linux-2.6.27.21-0.1/fs/ext4/ext4_extents.h =================================================================== @@ -148,21 +142,16 @@ /* * ext4_inode has i_block array (60 bytes total). -@@ -124,6 +129,7 @@ +@@ -124,6 +129,8 @@ #define EXT4_EXT_CACHE_GAP 1 #define EXT4_EXT_CACHE_EXTENT 2 +#define EXT4_EXT_HAS_NO_TREE /* ext4_extents_tree struct is not used*/ - - #define EXT_MAX_BLOCK 0xffffffff - -@@ -223,10 +229,14 @@ - (le16_to_cpu(ext->ee_len) - EXT_INIT_MAX_LEN)); - } - -+extern ext4_fsblk_t ext_pblock(struct ext4_extent *ex); -+extern void ext4_ext_store_pblock(struct ext4_extent *ex, ext4_fsblk_t pb); - extern int ext4_ext_calc_metadata_amount(struct inode *inode, int blocks); ++ + /* + * to be called by ext4_ext_walk_space() + * negative retcode - error +@@ -223,6 +229,8 @@ extern ext4_fsblk_t idx_pblock(struct ext4_extent_idx *); extern void ext4_ext_store_pblock(struct ext4_extent *, ext4_fsblk_t); extern int ext4_extent_tree_init(handle_t *, struct inode *); @@ -202,46 +191,48 @@ +++ linux-2.6.27.21-0.1/fs/ext4/super.c 2009-07-07 14:48:53.000000000 +0530 @@ -91,6 +91,7 @@ (EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT ? - (ext4_fsblk_t)le32_to_cpu(bg->bg_inode_bitmap_hi) << 32 : 0); + (ext4_fsblk_t)le32_to_cpu(bg->bg_inode_bitmap_hi) << 32 : 0); } +EXPORT_SYMBOL(ext4_inode_bitmap); ext4_fsblk_t ext4_inode_table(struct super_block *sb, struct ext4_group_desc *bg) @@ -1286,6 +1287,7 @@ - Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota, - Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota, - Opt_grpquota, Opt_extents, Opt_noextents, Opt_i_version, -+ Opt_mballoc, - Opt_stripe, Opt_delalloc, Opt_nodelalloc, - Opt_inode_readahead_blks, Opt_bigendian_extents, - Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, -@@ -1346,6 +1348,7 @@ - {Opt_i_version, "i_version"}, - {Opt_stripe, "stripe=%u"}, - {Opt_resize, "resize"}, + Opt_inode_readahead_blks, Opt_journal_ioprio, + Opt_discard, Opt_nodiscard, Opt_bigendian_extents, + Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, ++ Opt_mballoc, Opt_extents, + }; + + +@@ -1346,6 +1348,8 @@ + {Opt_discard, "discard"}, + {Opt_nodiscard, "nodiscard"}, + {Opt_bigendian_extents, "bigendian_extents"}, ++ {Opt_extents, "extents"}, + {Opt_mballoc, "mballoc"}, - {Opt_delalloc, "delalloc"}, - {Opt_nodelalloc, "nodelalloc"}, - {Opt_inode_readahead_blks, "inode_readahead_blks=%u"}, -@@ -1768,6 +1771,8 @@ + {Opt_err, NULL}, + }; + +@@ -1768,6 +1771,9 @@ case Opt_bigendian_extents: bigendian_extents = 1; break; + case Opt_mballoc: ++ case Opt_extents: + break; default: - printk(KERN_ERR - "EXT4-fs: Unrecognized mount option \"%s\" " -@@ -4094,7 +4099,7 @@ - .kill_sb = kill_block_super, - .fs_flags = FS_REQUIRES_DEV, - }; --MODULE_ALIAS("ext4dev"); -+MODULE_ALIAS("ext4"); - - static int __init init_ext4_fs(void) - { + ext4_msg(sb, KERN_ERR, + "Unrecognized mount option \"%s\" " +@@ -1968,7 +1971,7 @@ + ext4_commit_super(sb, 1); + if (test_opt(sb, DEBUG)) + printk(KERN_INFO "[EXT4 FS bs=%lu, gc=%u, " +- "bpg=%lu, ipg=%lu, mo=%04x]\n", ++ "bpg=%lu, ipg=%lu, mo=%04llx]\n", + sb->s_blocksize, + sbi->s_groups_count, + EXT4_BLOCKS_PER_GROUP(sb), Index: linux-2.6.27.21-0.1/fs/ext4/ext4_jbd2.c =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/ext4_jbd2.c 2009-07-07 14:47:19.000000000 +0530 @@ -258,30 +249,50 @@ ext4_journal_abort_handle(where, __func__, bh, handle, err); return err; } -+EXPORT_SYMBOL(__ext4_journal_dirty_metadata); ++EXPORT_SYMBOL(__ext4_handle_dirty_metadata); Index: linux-2.6.27.21-0.1/fs/ext4/ext4.h =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h 2009-07-07 14:47:19.000000000 +0530 +++ linux-2.6.27.21-0.1/fs/ext4/ext4.h 2009-07-07 14:47:22.000000000 +0530 -@@ -26,6 +26,9 @@ +@@ -26,6 +26,11 @@ * The fourth extended filesystem constants/structures */ +/* Has been moved to linux/magic.h but we need it for Lustre */ +#define EXT4_SUPER_MAGIC 0xEF53 + ++#define HAVE_EXT_PREPARE_CB_EXTENT ++#define EXT_INSERT_EXTENT_WITH_5ARGS /* * Define EXT4FS_DEBUG to produce debug messages */ -@@ -400,6 +403,8 @@ +@@ -425,7 +425,7 @@ + * Mount options + */ + struct ext4_mount_options { +- unsigned long s_mount_opt; ++ unsigned long long s_mount_opt; + uid_t s_resuid; + gid_t s_resgid; + unsigned long s_commit_interval; +@@ -1020,6 +1020,8 @@ + __le32 i_version_hi; /* high 32 bits for 64-bit version */ }; - +/* SLES11 kernel already has 64-bit inode->i_version field */ +#define HAVE_DISK_INODE_VERSION - #define EXT4_EPOCH_BITS 2 - #define EXT4_EPOCH_MASK ((1 << EXT4_EPOCH_BITS) - 1) + struct move_extent { + __u32 reserved; /* should be zero */ +@@ -1023,7 +1028,7 @@ + struct buffer_head * s_sbh; /* Buffer containing the super block */ + struct ldiskfs_super_block *s_es; /* Pointer to the super block in the buffer */ + struct buffer_head **s_group_desc; +- unsigned int s_mount_opt; ++ unsigned long long s_mount_opt; /* lustre need more options */ + unsigned int s_mount_flags; + ldiskfs_fsblk_t s_sb_block; + uid_t s_resuid; @@ -1123,6 +1128,8 @@ extern int ext4_mb_get_buddy_cache_lock(struct super_block *, ext4_group_t); extern void ext4_mb_put_buddy_cache_lock(struct super_block *, @@ -303,3 +314,20 @@ static int ext4_inode_blocks_set(handle_t *handle, struct ext4_inode *raw_inode, +--- /dev/null 2009-09-21 17:11:24.467285554 +0800 ++++ linux-2.6.27.21-0.1/fs/ext4/fiemap.h +@@ -0,0 +1,3 @@ ++ ++#include_next ++ +--- linux/fs/ext4/move_extent.c ++++ linux/fs/ext4/move_extent.c +@@ -483,7 +483,7 @@ + + o_start = o_end = oext = orig_path[depth].p_ext; + oext_alen = ext4_ext_get_actual_len(oext); +- start_ext.ee_len = end_ext.ee_len = 0; ++ start_ext.ee_block = start_ext.ee_len = end_ext.ee_len = 0; + + new_ext.ee_block = cpu_to_le32(*from); + ext4_ext_store_pblock(&new_ext, ext_pblock(dext)); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mmp-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mmp-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mmp-rhel5.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mmp-rhel5.patch 2010-11-17 04:31:48.000000000 +0100 @@ -2,7 +2,7 @@ =================================================================== --- linux-stage.orig/fs/ext4/super.c +++ linux-stage/fs/ext4/super.c -@@ -38,6 +38,8 @@ +@@ -40,6 +40,8 @@ #include #include #include @@ -11,16 +11,16 @@ #include "ext4.h" #include "ext4_jbd2.h" -@@ -617,6 +619,8 @@ static void ext4_put_super(struct super_ +@@ -660,6 +662,8 @@ static void ext4_put_super(struct super_ invalidate_bdev(sbi->journal_bdev, 0); ext4_blkdev_remove(sbi); } + if (sbi->s_mmp_tsk) + kthread_stop(sbi->s_mmp_tsk); sb->s_fs_info = NULL; - kfree(sbi); - return; -@@ -864,6 +868,345 @@ static int ext4_show_options(struct seq_ + /* + * Now that we are completely done shutting down the +@@ -921,6 +925,354 @@ static int ext4_show_options(struct seq_ return 0; } @@ -92,7 +92,7 @@ +static void dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp, + const char *function, const char *msg) +{ -+ ext4_warning(sb, function, msg); ++ ext4_warning(sb, function, "%s", msg); + ext4_warning(sb, function, "MMP failure info: last update time: %llu, " + "last update node: %s, last update device: %s\n", + le64_to_cpu(mmp->mmp_time), mmp->mmp_nodename, @@ -104,9 +104,9 @@ + */ +static int kmmpd(void *data) +{ -+ struct super_block *sb = (struct super_block *) data; ++ struct super_block *sb = ((struct mmpd_data *) data)->sb; ++ struct buffer_head *bh = ((struct mmpd_data *) data)->bh; + struct ext4_super_block *es = EXT4_SB(sb)->s_es; -+ struct buffer_head *bh = NULL; + struct mmp_struct *mmp; + unsigned long mmp_block; + u32 seq = 0; @@ -118,17 +118,13 @@ + int retval; + + mmp_block = le64_to_cpu(es->s_mmp_block); -+ retval = read_mmp_block(sb, &bh, mmp_block); -+ if (retval) -+ goto failed; -+ + mmp = (struct mmp_struct *)(bh->b_data); + mmp->mmp_time = cpu_to_le64(get_seconds()); + /* + * Start with the higher mmp_check_interval and reduce it if + * the MMP block is being updated on time. + */ -+ mmp_check_interval = max(5 * mmp_update_interval, ++ mmp_check_interval = max(5UL * mmp_update_interval, + EXT4_MMP_MIN_CHECK_INTERVAL); + mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval); + bdevname(bh->b_bdev, mmp->mmp_bdevname); @@ -161,7 +157,7 @@ + EXT4_FEATURE_INCOMPAT_MMP)) { + ext4_warning(sb, __func__, "kmmpd being stopped " + "since MMP feature has been disabled."); -+ EXT4_SB(sb)->s_mmp_tsk = 0; ++ EXT4_SB(sb)->s_mmp_tsk = NULL; + goto failed; + } + @@ -169,7 +165,7 @@ + ext4_warning(sb, __func__, "kmmpd being stopped " + "since filesystem has been remounted as " + "readonly."); -+ EXT4_SB(sb)->s_mmp_tsk = 0; ++ EXT4_SB(sb)->s_mmp_tsk = NULL; + goto failed; + } + @@ -190,19 +186,23 @@ + + retval = read_mmp_block(sb, &bh_check, mmp_block); + if (retval) { -+ EXT4_SB(sb)->s_mmp_tsk = 0; ++ ext4_error(sb, __func__, "error reading MMP" ++ "data: %d", retval); ++ EXT4_SB(sb)->s_mmp_tsk = NULL; + goto failed; + } + + mmp_check = (struct mmp_struct *)(bh_check->b_data); -+ if (mmp->mmp_time != mmp_check->mmp_time || ++ if (mmp->mmp_seq != mmp_check->mmp_seq || + memcmp(mmp->mmp_nodename, mmp_check->mmp_nodename, -+ sizeof(mmp->mmp_nodename))) ++ sizeof(mmp->mmp_nodename))) { + dump_mmp_msg(sb, mmp_check, __func__, + "Error while updating MMP info. " + "The filesystem seems to have " + "been multiply mounted."); -+ ++ ext4_error(sb, __func__, "abort"); ++ goto failed; ++ } + put_bh(bh_check); + } + @@ -210,8 +210,9 @@ + * Adjust the mmp_check_interval depending on how much time + * it took for the MMP block to be written. + */ -+ mmp_check_interval = max(5 * diff / HZ, -+ (unsigned long) EXT4_MMP_MIN_CHECK_INTERVAL); ++ mmp_check_interval = max(min(5 * diff / HZ, ++ EXT4_MMP_MAX_CHECK_INTERVAL), ++ EXT4_MMP_MIN_CHECK_INTERVAL); + mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval); + } + @@ -252,6 +253,7 @@ + struct ext4_super_block *es = EXT4_SB(sb)->s_es; + struct buffer_head *bh = NULL; + struct mmp_struct *mmp = NULL; ++ struct mmpd_data *mmpd_data; + u32 seq; + unsigned int mmp_check_interval = le16_to_cpu(es->s_mmp_update_interval); + unsigned int wait_time = 0; @@ -343,20 +345,27 @@ + goto failed; + } + ++ mmpd_data = kmalloc(sizeof(struct mmpd_data *), GFP_KERNEL); ++ if (!mmpd_data) { ++ ext4_warning(sb, KERN_ERR, "not enough memory for mmpd_data"); ++ goto failed; ++ } ++ mmpd_data->sb = sb; ++ mmpd_data->bh = bh; ++ + /* + * Start a kernel thread to update the MMP block periodically. + */ -+ EXT4_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, sb, "kmmpd-%02x:%02x", -+ MAJOR(sb->s_dev), -+ MINOR(sb->s_dev)); ++ EXT4_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, mmpd_data, "kmmpd-%s", ++ bdevname(bh->b_bdev, ++ mmp->mmp_bdevname)); + if (IS_ERR(EXT4_SB(sb)->s_mmp_tsk)) { -+ EXT4_SB(sb)->s_mmp_tsk = 0; ++ EXT4_SB(sb)->s_mmp_tsk = NULL; + ext4_warning(sb, __func__, "Unable to create kmmpd thread " + "for %s.", sb->s_id); + goto failed; + } + -+ brelse(bh); + return 0; + +failed: @@ -366,7 +375,7 @@ static struct dentry *ext4_get_dentry(struct super_block *sb, void *vobjp) { -@@ -873,7 +1216,6 @@ static struct dentry *ext4_get_dentry(st +@@ -930,7 +1282,6 @@ static struct dentry *ext4_get_dentry(st struct inode *inode; struct dentry *result; @@ -374,7 +383,7 @@ if (ino < EXT4_FIRST_INO(sb) && ino != EXT4_ROOT_INO) return ERR_PTR(-ESTALE); if (ino > le32_to_cpu(EXT4_SB(sb)->s_es->s_inodes_count)) -@@ -2407,6 +2749,11 @@ static int ext4_fill_super(struct super_ +@@ -2740,6 +3091,11 @@ static int ext4_fill_super(struct super_ EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER)); @@ -386,7 +395,7 @@ /* * The first inode we look at is the journal inode. Don't try * root first: it may be modified in the journal! -@@ -2621,6 +2968,8 @@ failed_mount3: +@@ -2978,6 +3334,8 @@ failed_mount3: percpu_counter_destroy(&sbi->s_freeinodes_counter); percpu_counter_destroy(&sbi->s_dirs_counter); percpu_counter_destroy(&sbi->s_dirtyblocks_counter); @@ -395,7 +404,7 @@ failed_mount2: for (i = 0; i < db_count; i++) brelse(sbi->s_group_desc[i]); -@@ -3142,7 +3491,7 @@ static int ext4_remount(struct super_blo +@@ -3488,7 +3846,7 @@ static int ext4_remount(struct super_blo struct ext4_mount_options old_opts; ext4_group_t g; unsigned int journal_ioprio = DEFAULT_JOURNAL_IOPRIO; @@ -404,7 +413,7 @@ #ifdef CONFIG_QUOTA int i; #endif -@@ -3278,6 +3627,13 @@ static int ext4_remount(struct super_blo +@@ -3607,6 +3965,13 @@ static int ext4_remount(struct super_blo goto restore_opts; if (!ext4_setup_super(sb, es, 0)) sb->s_flags &= ~MS_RDONLY; @@ -417,12 +426,12 @@ + } } } - if (sbi->s_journal == NULL) + ext4_setup_system_zone(sb); Index: linux-stage/fs/ext4/ext4.h =================================================================== --- linux-stage.orig/fs/ext4/ext4.h +++ linux-stage/fs/ext4/ext4.h -@@ -665,7 +665,7 @@ struct ext4_super_block { +@@ -851,7 +851,7 @@ struct ext4_super_block { __le16 s_want_extra_isize; /* New inodes should reserve # bytes */ __le32 s_flags; /* Miscellaneous flags */ __le16 s_raid_stride; /* RAID stride */ @@ -431,7 +440,17 @@ __le64 s_mmp_block; /* Block for multi-mount protection */ __le32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/ __u8 s_log_groups_per_flex; /* FLEX_BG group size */ -@@ -782,7 +782,8 @@ static inline int ext4_valid_inum(struct +@@ -1005,6 +1005,9 @@ struct ext4_sb_info { + + /* workqueue for dio unwritten */ + struct workqueue_struct *dio_unwritten_wq; ++ ++ /* Kernel thread for multiple mount protection */ ++ struct task_struct *s_mmp_tsk; + }; + + static inline struct ext4_sb_info *EXT4_SB(struct super_block *sb) +@@ -1114,7 +1117,8 @@ static inline int ext4_valid_inum(struct EXT4_FEATURE_INCOMPAT_META_BG| \ EXT4_FEATURE_INCOMPAT_EXTENTS| \ EXT4_FEATURE_INCOMPAT_64BIT| \ @@ -441,8 +460,8 @@ #define EXT4_FEATURE_RO_COMPAT_SUPP (EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT4_FEATURE_RO_COMPAT_LARGE_FILE| \ EXT4_FEATURE_RO_COMPAT_GDT_CSUM| \ -@@ -995,6 +996,39 @@ do { \ - #endif +@@ -1296,6 +1300,50 @@ void ext4_get_group_no_and_offset(struct + extern struct proc_dir_entry *ext4_proc_root; /* + * This structure will be used for multiple mount protection. It will be @@ -467,6 +486,12 @@ + __le32 mmp_pad2[227]; +}; + ++/* arguments passed to the mmp thread */ ++struct mmpd_data { ++ struct buffer_head *bh; /* bh from initial read_mmp_block() */ ++ struct super_block *sb; /* super block of the fs */ ++}; ++ +/* + * Default interval in seconds to update the MMP sequence number. + */ @@ -475,22 +500,14 @@ +/* + * Minimum interval for MMP checking in seconds. + */ -+#define EXT4_MMP_MIN_CHECK_INTERVAL 5 ++#define EXT4_MMP_MIN_CHECK_INTERVAL 5UL ++ ++/* ++ * Maximum interval for MMP checking in seconds. ++ */ ++#define EXT4_MMP_MAX_CHECK_INTERVAL 300UL + +/* * Function prototypes */ -Index: linux-stage/fs/ext4/ext4_sb.h -=================================================================== ---- linux-stage.orig/fs/ext4/ext4_sb.h -+++ linux-stage/fs/ext4/ext4_sb.h -@@ -149,6 +149,8 @@ struct ext4_sb_info { - - unsigned int s_log_groups_per_flex; - struct flex_groups *s_flex_groups; -+ -+ struct task_struct *s_mmp_tsk; /* Kernel thread for multiple mount protection */ - }; - - #endif /* _EXT4_SB */ diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mmp-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mmp-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-mmp-sles11.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-mmp-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -2,25 +2,25 @@ =================================================================== --- linux-stage.orig/fs/ext4/super.c +++ linux-stage/fs/ext4/super.c -@@ -39,6 +39,8 @@ - #include +@@ -41,6 +41,8 @@ #include + #include #include +#include +#include #include "ext4.h" #include "ext4_jbd2.h" -@@ -600,6 +602,8 @@ static void ext4_put_super(struct super_ +@@ -666,6 +668,8 @@ static void ext4_put_super(struct super_ invalidate_bdev(sbi->journal_bdev); ext4_blkdev_remove(sbi); } + if (sbi->s_mmp_tsk) + kthread_stop(sbi->s_mmp_tsk); sb->s_fs_info = NULL; - kfree(sbi); - return; -@@ -808,7 +812,6 @@ static int ext4_show_options(struct seq_ + /* + * Now that we are completely done shutting down the +@@ -886,7 +890,6 @@ static int ext4_show_options(struct seq_ if (!test_opt(sb, DELALLOC)) seq_puts(seq, ",nodelalloc"); @@ -28,10 +28,10 @@ if (sbi->s_stripe) seq_printf(seq, ",stripe=%lu", sbi->s_stripe); /* -@@ -831,6 +834,340 @@ static int ext4_show_options(struct seq_ +@@ -921,6 +924,350 @@ static int ext4_show_options(struct seq_ + return 0; } - + +/* + * Write the MMP block using WRITE_SYNC to try to get the block on-disk @@ -98,7 +98,7 @@ +static void dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp, + const char *function, const char *msg) +{ -+ ext4_warning(sb, function, msg); ++ ext4_warning(sb, function, "%s", msg); + ext4_warning(sb, function, "MMP failure info: last update time: %llu, " + "last update node: %s, last update device: %s\n", + le64_to_cpu(mmp->mmp_time), mmp->mmp_nodename, @@ -110,9 +110,9 @@ + */ +static int kmmpd(void *data) +{ -+ struct super_block *sb = (struct super_block *) data; ++ struct super_block *sb = ((struct mmpd_data *) data)->sb; ++ struct buffer_head *bh = ((struct mmpd_data *) data)->bh; + struct ext4_super_block *es = EXT4_SB(sb)->s_es; -+ struct buffer_head *bh = NULL; + struct mmp_struct *mmp; + unsigned long mmp_block; + u32 seq = 0; @@ -124,17 +124,13 @@ + int retval; + + mmp_block = le64_to_cpu(es->s_mmp_block); -+ retval = read_mmp_block(sb, &bh, mmp_block); -+ if (retval) -+ goto failed; -+ + mmp = (struct mmp_struct *)(bh->b_data); + mmp->mmp_time = cpu_to_le64(get_seconds()); + /* + * Start with the higher mmp_check_interval and reduce it if + * the MMP block is being updated on time. + */ -+ mmp_check_interval = max(5 * mmp_update_interval, ++ mmp_check_interval = max(5UL * mmp_update_interval, + EXT4_MMP_MIN_CHECK_INTERVAL); + mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval); + bdevname(bh->b_bdev, mmp->mmp_bdevname); @@ -165,7 +161,7 @@ + EXT4_FEATURE_INCOMPAT_MMP)) { + ext4_warning(sb, __func__, "kmmpd being stopped " + "since MMP feature has been disabled."); -+ EXT4_SB(sb)->s_mmp_tsk = 0; ++ EXT4_SB(sb)->s_mmp_tsk = NULL; + goto failed; + } + @@ -173,7 +169,7 @@ + ext4_warning(sb, __func__, "kmmpd being stopped " + "since filesystem has been remounted as " + "readonly."); -+ EXT4_SB(sb)->s_mmp_tsk = 0; ++ EXT4_SB(sb)->s_mmp_tsk = NULL; + goto failed; + } + @@ -194,19 +190,24 @@ + + retval = read_mmp_block(sb, &bh_check, mmp_block); + if (retval) { -+ EXT4_SB(sb)->s_mmp_tsk = 0; ++ ext4_error(sb, __func__, "error reading MMP" ++ "data: %d", retval); ++ ++ EXT4_SB(sb)->s_mmp_tsk = NULL; + goto failed; + } + + mmp_check = (struct mmp_struct *)(bh_check->b_data); -+ if (mmp->mmp_time != mmp_check->mmp_time || ++ if (mmp->mmp_seq != mmp_check->mmp_seq || + memcmp(mmp->mmp_nodename, mmp_check->mmp_nodename, -+ sizeof(mmp->mmp_nodename))) ++ sizeof(mmp->mmp_nodename))) { + dump_mmp_msg(sb, mmp_check, __func__, + "Error while updating MMP info. " + "The filesystem seems to have " + "been multiply mounted."); -+ ++ ext4_error(sb, __func__, "abort"); ++ goto failed; ++ } + put_bh(bh_check); + } + @@ -214,8 +215,9 @@ + * Adjust the mmp_check_interval depending on how much time + * it took for the MMP block to be written. + */ -+ mmp_check_interval = max(5 * diff / HZ, -+ (unsigned long) EXT4_MMP_MIN_CHECK_INTERVAL); ++ mmp_check_interval = max(min(5 * diff / HZ, ++ EXT4_MMP_MAX_CHECK_INTERVAL), ++ EXT4_MMP_MIN_CHECK_INTERVAL); + mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval); + } + @@ -256,6 +258,7 @@ + struct ext4_super_block *es = EXT4_SB(sb)->s_es; + struct buffer_head *bh = NULL; + struct mmp_struct *mmp = NULL; ++ struct mmpd_data *mmpd_data; + u32 seq; + unsigned int mmp_check_interval = le16_to_cpu(es->s_mmp_update_interval); + unsigned int wait_time = 0; @@ -345,20 +348,27 @@ + goto failed; + } + ++ mmpd_data = kmalloc(sizeof(struct mmpd_data *), GFP_KERNEL); ++ if (!mmpd_data) { ++ ext4_warning(sb, KERN_ERR, "not enough memory for mmpd_data"); ++ goto failed; ++ } ++ mmpd_data->sb = sb; ++ mmpd_data->bh = bh; ++ + /* + * Start a kernel thread to update the MMP block periodically. + */ -+ EXT4_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, sb, "kmmpd-%02x:%02x", -+ MAJOR(sb->s_dev), -+ MINOR(sb->s_dev)); ++ EXT4_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, mmpd_data, "kmmpd-%s", ++ bdevname(bh->b_bdev, ++ mmp->mmp_bdevname)); + if (IS_ERR(EXT4_SB(sb)->s_mmp_tsk)) { -+ EXT4_SB(sb)->s_mmp_tsk = 0; ++ EXT4_SB(sb)->s_mmp_tsk = NULL; + ext4_warning(sb, __func__, "Unable to create kmmpd thread " + "for %s.", sb->s_id); + goto failed; + } + -+ brelse(bh); + return 0; + +failed: @@ -367,9 +377,9 @@ +} + static struct inode *ext4_nfs_get_inode(struct super_block *sb, - u64 ino, u32 generation) + u64 ino, u32 generation) { -@@ -2371,6 +2708,11 @@ static int ext4_fill_super(struct super_ +@@ -2767,6 +3114,11 @@ static int ext4_fill_super(struct super_ EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER)); @@ -382,24 +392,24 @@ * The first inode we look at is the journal inode. Don't try * root first: it may be modified in the journal! @@ -2571,6 +2913,8 @@ failed_mount3: - percpu_counter_destroy(&sbi->s_freeinodes_counter); - percpu_counter_destroy(&sbi->s_dirs_counter); - percpu_counter_destroy(&sbi->s_dirtyblocks_counter); + else + kfree(sbi->s_flex_groups); + } + if (sbi->s_mmp_tsk) + kthread_stop(sbi->s_mmp_tsk); failed_mount2: for (i = 0; i < db_count; i++) brelse(sbi->s_group_desc[i]); -@@ -3086,7 +3430,7 @@ static int ext4_remount(struct super_blo - unsigned long old_sb_flags; +@@ -3512,7 +3866,7 @@ static int ext4_remount(struct super_blo struct ext4_mount_options old_opts; ext4_group_t g; + unsigned int journal_ioprio = DEFAULT_JOURNAL_IOPRIO; - int err; + int err = 0; #ifdef CONFIG_QUOTA int i; #endif -@@ -3211,6 +3555,13 @@ static int ext4_remount(struct super_blo +@@ -3634,6 +3988,13 @@ static int ext4_remount(struct super_blo goto restore_opts; if (!ext4_setup_super(sb, es, 0)) sb->s_flags &= ~MS_RDONLY; @@ -412,12 +422,12 @@ + } } } - #ifdef CONFIG_QUOTA + ext4_setup_system_zone(sb); Index: linux-stage/fs/ext4/ext4.h =================================================================== --- linux-stage.orig/fs/ext4/ext4.h +++ linux-stage/fs/ext4/ext4.h -@@ -660,7 +660,7 @@ struct ext4_super_block { +@@ -875,7 +875,7 @@ struct ext4_super_block { __le16 s_want_extra_isize; /* New inodes should reserve # bytes */ __le32 s_flags; /* Miscellaneous flags */ __le16 s_raid_stride; /* RAID stride */ @@ -426,7 +436,17 @@ __le64 s_mmp_block; /* Block for multi-mount protection */ __le32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/ __u8 s_log_groups_per_flex; /* FLEX_BG group size */ -@@ -777,7 +777,8 @@ static inline int ext4_valid_inum(struct +@@ -1022,6 +1022,9 @@ struct ext4_sb_info { + + /* workqueue for dio unwritten */ + struct workqueue_struct *dio_unwritten_wq; ++ ++ /* Kernel thread for multiple mount protection */ ++ struct task_struct *s_mmp_tsk; + }; + + static inline struct ext4_sb_info *EXT4_SB(struct super_block *sb) +@@ -1130,7 +1133,8 @@ static inline int ext4_valid_inum(struct EXT4_FEATURE_INCOMPAT_META_BG| \ EXT4_FEATURE_INCOMPAT_EXTENTS| \ EXT4_FEATURE_INCOMPAT_64BIT| \ @@ -436,8 +456,8 @@ #define EXT4_FEATURE_RO_COMPAT_SUPP (EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT4_FEATURE_RO_COMPAT_LARGE_FILE| \ EXT4_FEATURE_RO_COMPAT_GDT_CSUM| \ -@@ -981,6 +982,39 @@ do { \ - #endif +@@ -1312,6 +1316,50 @@ void ext4_get_group_no_and_offset(struct + extern struct proc_dir_entry *ext4_proc_root; /* + * This structure will be used for multiple mount protection. It will be @@ -462,6 +482,12 @@ + __le32 mmp_pad2[227]; +}; + ++/* arguments passed to the mmp thread */ ++struct mmpd_data { ++ struct buffer_head *bh; /* bh from initial read_mmp_block() */ ++ struct super_block *sb; /* super block of the fs */ ++}; ++ +/* + * Default interval in seconds to update the MMP sequence number. + */ @@ -470,22 +496,14 @@ +/* + * Minimum interval for MMP checking in seconds. + */ -+#define EXT4_MMP_MIN_CHECK_INTERVAL 5 ++#define EXT4_MMP_MIN_CHECK_INTERVAL 5UL ++ ++/* ++ * Maximum interval for MMP checking in seconds. ++ */ ++#define EXT4_MMP_MAX_CHECK_INTERVAL 300UL + +/* * Function prototypes */ -Index: linux-stage/fs/ext4/ext4_sb.h -=================================================================== ---- linux-stage.orig/fs/ext4/ext4_sb.h -+++ linux-stage/fs/ext4/ext4_sb.h -@@ -149,6 +149,8 @@ struct ext4_sb_info { - - unsigned int s_log_groups_per_flex; - struct flex_groups *s_flex_groups; -+ -+ struct task_struct *s_mmp_tsk; /* Kernel thread for multiple mount protection */ - }; - - #endif /* _EXT4_SB */ diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-osd-iop-common.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-osd-iop-common.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-osd-iop-common.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-osd-iop-common.patch 2010-09-17 03:17:05.000000000 +0200 @@ -18,9 +18,9 @@ +#define ll_ext4_find_entry(inode, dentry, res_dir) ext4_find_entry(dir, &(dentry)->d_name, res_dir) +extern int ext4_add_dot_dotdot(handle_t *handle, struct inode *dir, + struct inode *inode); + extern unsigned int ext4_rec_len_from_disk(__le16 dlen, unsigned blocksize); + extern __le16 ext4_rec_len_to_disk(unsigned len, unsigned blocksize); extern int ext4_orphan_add(handle_t *, struct inode *); - extern int ext4_orphan_del(handle_t *, struct inode *); - extern int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash, diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/namei.c linux-2.6.27.21-0.1_2//fs/ext4/namei.c --- linux-2.6.27.21-0.1_1//fs/ext4/namei.c 2009-08-24 15:32:00.000000000 +0530 +++ linux-2.6.27.21-0.1_2//fs/ext4/namei.c 2009-08-24 15:43:56.000000000 +0530 @@ -104,7 +104,7 @@ +{ + struct inode *inode; + -+ inode = ext4_new_inode(handle, dir, mode); ++ inode = ext4_new_inode(handle, dir, mode, NULL, 0); + if (!IS_ERR(inode)) { + if (S_ISCHR(mode) || S_ISBLK(mode) || S_ISFIFO(mode)) { +#ifdef CONFIG_LDISKFS_FS_XATTR @@ -123,7 +123,7 @@ /* * By the time this is called, we already have created * the directory cache entry for the new file, but it -@@ -1872,39 +1895,31 @@ retry: +@@ -1872,40 +1895,32 @@ retry: return err; } @@ -137,6 +137,7 @@ - struct inode *inode; - struct buffer_head *dir_block; - struct ext4_dir_entry_2 *de; + unsigned int blocksize = dir->i_sb->s_blocksize; - int err, retries = 0; - - if (EXT4_DIR_LINK_MAX(dir)) @@ -155,8 +156,8 @@ if (IS_DIRSYNC(dir)) ext4_handle_sync(handle); -- inode = ext4_new_inode_goal(handle, dir, S_IFDIR | mode, -- ext4_dentry_goal(dir->i_sb, dentry)); +- inode = ext4_new_inode(handle, dir, S_IFDIR | mode, &dentry->d_name, +- ext4_dentry_goal(dir->i_sb, dentry)); - err = PTR_ERR(inode); - if (IS_ERR(inode)) - goto out_stop; @@ -205,8 +206,8 @@ + if (IS_DIRSYNC(dir)) + handle->h_sync = 1; + -+ inode = ext4_new_inode_goal(handle, dir, S_IFDIR | mode, -+ ext4_dentry_goal(dir->i_sb, dentry)); ++ inode = ext4_new_inode(handle, dir, S_IFDIR | mode, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out_stop; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-osd-iop-common-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-osd-iop-common-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-osd-iop-common-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-osd-iop-common-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -1,25 +1,23 @@ diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/ext4.h linux-2.6.27.21-0.1_2//fs/ext4/ext4.h --- linux-2.6.27.21-0.1_1//fs/ext4/ext4.h 2009-08-24 15:32:00.000000000 +0530 +++ linux-2.6.27.21-0.1_2//fs/ext4/ext4.h 2009-08-24 15:32:55.000000000 +0530 -@@ -1171,6 +1171,18 @@ extern int ext4_fiemap(struct inode *, s - /* migrate.c */ +@@ -1171,6 +1171,16 @@ extern int ext4_fiemap(struct inode *, s extern int ext4_ext_migrate(struct inode *); + /* namei.c */ -+extern struct inode *ext4_create_inode(handle_t *handle, -+ struct inode * dir, int mode); +extern int ext4_add_entry(handle_t *handle, struct dentry *dentry, + struct inode *inode); +extern int ext4_delete_entry(handle_t *handle, struct inode * dir, + struct ext4_dir_entry_2 * de_del, + struct buffer_head * bh); -+extern struct buffer_head * ext4_find_entry (struct inode *dir, ++extern struct buffer_head * ext4_find_entry(struct inode *dir, + const struct qstr *d_name, + struct ext4_dir_entry_2 ** res_dir); +extern int ext4_add_dot_dotdot(handle_t *handle, struct inode *dir, + struct inode *inode); + extern unsigned int ext4_rec_len_from_disk(__le16 dlen, unsigned blocksize); + extern __le16 ext4_rec_len_to_disk(unsigned len, unsigned blocksize); extern int ext4_orphan_add(handle_t *, struct inode *); - extern int ext4_orphan_del(handle_t *, struct inode *); - extern int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash, diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/namei.c linux-2.6.27.21-0.1_2//fs/ext4/namei.c --- linux-2.6.27.21-0.1_1//fs/ext4/namei.c 2009-08-24 15:32:00.000000000 +0530 +++ linux-2.6.27.21-0.1_2//fs/ext4/namei.c 2009-08-24 15:43:56.000000000 +0530 @@ -95,34 +93,7 @@ /* * DIR_NLINK feature is set if 1) nlinks > EXT4_LINK_MAX or 2) nlinks == 2, * since this indicates that nlinks count was previously 1. -@@ -1796,6 +1799,26 @@ static unsigned ext4_dentry_goal(struct - return inum; - } - -+struct inode * ext4_create_inode(handle_t *handle, struct inode * dir, int mode) -+{ -+ struct inode *inode; -+ -+ inode = ext4_new_inode(handle, dir, mode); -+ if (!IS_ERR(inode)) { -+ if (S_ISCHR(mode) || S_ISBLK(mode) || S_ISFIFO(mode)) { -+#ifdef CONFIG_LDISKFS_FS_XATTR -+ inode->i_op = &ext4_special_inode_operations; -+#endif -+ } else { -+ inode->i_op = &ext4_file_inode_operations; -+ inode->i_fop = &ext4_file_operations; -+ ext4_set_aops(inode); -+ } -+ } -+ return inode; -+} -+EXPORT_SYMBOL(ext4_create_inode); -+ - /* - * By the time this is called, we already have created - * the directory cache entry for the new file, but it -@@ -1872,51 +1895,43 @@ retry: +@@ -1872,40 +1895,32 @@ retry: return err; } @@ -136,6 +107,7 @@ - struct inode *inode; - struct buffer_head *dir_block; - struct ext4_dir_entry_2 *de; + unsigned int blocksize = dir->i_sb->s_blocksize; - int err, retries = 0; - - if (EXT4_DIR_LINK_MAX(dir)) @@ -147,15 +119,15 @@ -retry: - handle = ext4_journal_start(dir, EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + - EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 + -- 2*EXT4_QUOTA_INIT_BLOCKS(dir->i_sb)); +- EXT4_MAXQUOTAS_INIT_BLOCKS(dir->i_sb)); if (IS_ERR(handle)) return PTR_ERR(handle); if (IS_DIRSYNC(dir)) - handle->h_sync = 1; + ext4_handle_sync(handle); -- inode = ext4_new_inode_goal(handle, dir, S_IFDIR | mode, -- ext4_dentry_goal(dir->i_sb, dentry)); +- inode = ext4_new_inode(handle, dir, S_IFDIR | mode, &dentry->d_name, +- ext4_dentry_goal(dir->i_sb, dentry)); - err = PTR_ERR(inode); - if (IS_ERR(inode)) - goto out_stop; @@ -176,20 +148,6 @@ BUFFER_TRACE(dir_block, "get_write_access"); ext4_journal_get_write_access(handle, dir_block); de = (struct ext4_dir_entry_2 *) dir_block->b_data; - de->inode = cpu_to_le32(inode->i_ino); - de->name_len = 1; - de->rec_len = ext4_rec_len_to_disk(EXT4_DIR_REC_LEN(de->name_len)); -- strcpy(de->name, "."); -+ strcpy (de->name, "."); - ext4_set_de_type(dir->i_sb, de, S_IFDIR); - de = ext4_next_entry(de); - de->inode = cpu_to_le32(dir->i_ino); - de->rec_len = ext4_rec_len_to_disk(inode->i_sb->s_blocksize - -- EXT4_DIR_REC_LEN(1)); -+ EXT4_DIR_REC_LEN(1)); - de->name_len = 2; - strcpy(de->name, ".."); - ext4_set_de_type(dir->i_sb, de, S_IFDIR); @@ -1925,9 +1940,43 @@ retry: ext4_journal_dirty_metadata(handle, dir_block); brelse(dir_block); @@ -219,8 +177,8 @@ + if (IS_DIRSYNC(dir)) + handle->h_sync = 1; + -+ inode = ext4_new_inode_goal(handle, dir, S_IFDIR | mode, -+ ext4_dentry_goal(dir->i_sb, dentry)); ++ inode = ext4_new_inode(handle, dir, S_IFDIR | mode, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out_stop; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-pdir-fix.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-pdir-fix.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-pdir-fix.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-pdir-fix.patch 2010-11-17 04:31:48.000000000 +0100 @@ -1,18 +1,18 @@ -diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/ext4_i.h linux-2.6.27.21-0.1_2//fs/ext4/ext4_i.h ---- linux-2.6.27.21-0.1_1//fs/ext4/ext4_i.h 2009-08-24 13:00:59.000000000 +0530 -+++ linux-2.6.27.21-0.1_2//fs/ext4/ext4_i.h 2009-08-24 13:01:25.000000000 +0530 +diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/ext4.h linux-2.6.27.21-0.1_2//fs/ext4/ext4_i.h +--- linux-2.6.27.21-0.1_1//fs/ext4/ext4.h 2009-08-24 13:00:59.000000000 +0530 ++++ linux-2.6.27.21-0.1_2//fs/ext4/ext4.h 2009-08-24 13:01:25.000000000 +0530 @@ -16,6 +16,7 @@ - #ifndef _EXT4_I - #define _EXT4_I - + #include + #include + #include +#include - #include - #include - #include + #ifdef __KERNEL__ + #include + #endif @@ -56,7 +57,9 @@ struct ext4_inode_info { __u32 i_flags; - ext4_fsblk_t i_file_acl; __u32 i_dtime; + ext4_fsblk_t i_file_acl; - + /* following fields for parallel directory operations -bzzz */ + struct dynlock i_htree_lock; diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-pdir-fix-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-pdir-fix-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-pdir-fix-rhel5.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-pdir-fix-rhel5.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,59 @@ +diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/ext4_i.h linux-2.6.27.21-0.1_2//fs/ext4/ext4_i.h +--- linux-2.6.27.21-0.1_1//fs/ext4/ext4.h 2009-08-24 13:00:59.000000000 +0530 ++++ linux-2.6.27.21-0.1_2//fs/ext4/ext4.h 2009-08-24 13:01:25.000000000 +0530 +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -56,7 +57,9 @@ struct ext4_inode_info { + __u32 i_flags; + ext4_fsblk_t i_file_acl; + __u32 i_dtime; +- ++ /* following fields for parallel directory operations -bzzz */ ++ struct dynlock i_htree_lock; ++ struct semaphore i_append_sem; + /* + * i_block_group is the number of the block group which contains + * this file's inode. Constant across the lifetime of the inode, +diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/namei.c linux-2.6.27.21-0.1_2//fs/ext4/namei.c +--- linux-2.6.27.21-0.1_1//fs/ext4/namei.c 2009-08-24 13:00:59.000000000 +0530 ++++ linux-2.6.27.21-0.1_2//fs/ext4/namei.c 2009-08-24 13:03:45.000000000 +0530 +@@ -55,6 +55,11 @@ static struct buffer_head *ext4_append(h + ext4_lblk_t *block, int *err) + { + struct buffer_head *bh; ++ struct ext4_inode_info *ei = EXT4_I(inode); ++ ++ /* with parallel dir operations all appends ++ * have to be serialized -bzzz */ ++ down(&ei->i_append_sem); + + *block = inode->i_size >> inode->i_sb->s_blocksize_bits; + +@@ -67,7 +72,9 @@ static struct buffer_head *ext4_append(h + brelse(bh); + bh = NULL; + } ++ ei->i_disksize = inode->i_size; + } ++ up(&ei->i_append_sem); + return bh; + } + +diff -rupN linux-2.6.27.21-0.1_1//fs/ext4/super.c linux-2.6.27.21-0.1_2//fs/ext4/super.c +--- linux-2.6.27.21-0.1_1//fs/ext4/super.c 2009-08-24 13:00:59.000000000 +0530 ++++ linux-2.6.27.21-0.1_2//fs/ext4/super.c 2009-08-24 13:01:25.000000000 +0530 +@@ -635,6 +635,8 @@ static struct inode *ext4_alloc_inode(st + #endif + ei->vfs_inode.i_version = 1; + ei->vfs_inode.i_data.writeback_index = 0; ++ dynlock_init(&ei->i_htree_lock); ++ sema_init(&ei->i_append_sem, 1); + memset(&ei->i_cached_extent, 0, sizeof(struct ext4_ext_cache)); + INIT_LIST_HEAD(&ei->i_prealloc_list); + spin_lock_init(&ei->i_prealloc_lock); diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-prealloc-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-prealloc-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-prealloc-rhel5.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-prealloc-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -1,7 +1,31 @@ -Index: linux-2.6.18-128.1.6/fs/ext4/ext4_sb.h +Index: linux-2.6.18-128.1.6/fs/ext4/super.c =================================================================== ---- linux-2.6.18-128.1.6.orig/fs/ext4/ext4_sb.h 2009-05-28 17:16:51.000000000 +0530 -+++ linux-2.6.18-128.1.6/fs/ext4/ext4_sb.h 2009-05-28 17:16:52.000000000 +0530 +--- linux-2.6.18-128.1.6.orig/fs/ext4/super.c ++++ linux-2.6.18-128.1.6/fs/ext4/super.c +@@ -108,7 +108,8 @@ + EXT4_RW_ATTR_SBI_UI(mb_max_to_scan, s_mb_max_to_scan); + EXT4_RW_ATTR_SBI_UI(mb_min_to_scan, s_mb_min_to_scan); + EXT4_RW_ATTR_SBI_UI(mb_order2_req, s_mb_order2_reqs); +-EXT4_RW_ATTR_SBI_UI(mb_stream_req, s_mb_stream_request); ++EXT4_RW_ATTR_SBI_UI(mb_small_req, s_mb_small_req); ++EXT4_RW_ATTR_SBI_UI(mb_large_req, s_mb_large_req); + EXT4_RW_ATTR_SBI_UI(mb_group_prealloc, s_mb_group_prealloc); + EXT4_RW_ATTR_SBI_UI(max_dir_size, s_max_dir_size); + +@@ -108,7 +108,8 @@ + ATTR_LIST(mb_max_to_scan), + ATTR_LIST(mb_min_to_scan), + ATTR_LIST(mb_order2_req), +- ATTR_LIST(mb_stream_req), ++ ATTR_LIST(mb_small_req), ++ ATTR_LIST(mb_large_req), + ATTR_LIST(mb_group_prealloc), + ATTR_LIST(max_dir_size), + NULL, +Index: linux-2.6.18-128.1.6/fs/ext4/ext4.h +=================================================================== +--- linux-2.6.18-128.1.6.orig/fs/ext4/ext4.h 2009-05-28 17:16:51.000000000 +0530 ++++ linux-2.6.18-128.1.6/fs/ext4/ext4.h 2009-05-28 17:16:52.000000000 +0530 @@ -108,11 +108,14 @@ /* tunables */ @@ -22,17 +46,8 @@ =================================================================== --- linux-2.6.18-128.1.6.orig/fs/ext4/mballoc.c 2009-05-28 17:16:51.000000000 +0530 +++ linux-2.6.18-128.1.6/fs/ext4/mballoc.c 2009-05-28 17:19:57.000000000 +0530 -@@ -1744,7 +1744,7 @@ - if (size < isize) - size = isize; - -- if (size < sbi->s_mb_stream_request && -+ if ((ac->ac_g_ex.fe_len < sbi->s_mb_large_req) && - (ac->ac_flags & EXT4_MB_HINT_DATA)) { - /* TBD: may be hot point */ - spin_lock(&sbi->s_md_lock); -@@ -2484,6 +2484,26 @@ - return -ENOMEM; +@@ -2284,6 +2284,26 @@ + } } +static void ext4_mb_prealloc_table_add(struct ext4_sb_info *sbi, int value) @@ -55,78 +70,15 @@ +} + + - int ext4_mb_init(struct super_block *sb, int needs_recovery) + static int ext4_mb_good_group(struct ext4_allocation_context *ac, + ext4_group_t group, int cr) { - struct ext4_sb_info *sbi = EXT4_SB(sb); -@@ -2542,13 +2562,57 @@ - sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN; - sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN; - sbi->s_mb_stats = MB_DEFAULT_STATS; -- sbi->s_mb_stream_request = MB_DEFAULT_STREAM_THRESHOLD; - sbi->s_mb_order2_reqs = MB_DEFAULT_ORDER2_REQS; - sbi->s_mb_history_filter = EXT4_MB_HISTORY_DEFAULT; -- sbi->s_mb_group_prealloc = MB_DEFAULT_GROUP_PREALLOC; -+ -+ if (sbi->s_stripe == 0) { -+ sbi->s_mb_prealloc_table_size = 10; -+ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); -+ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS); -+ if (sbi->s_mb_prealloc_table == NULL) { -+ kfree(sbi->s_mb_offsets); -+ kfree(sbi->s_mb_maxs); -+ return -ENOMEM; -+ } -+ memset(sbi->s_mb_prealloc_table, 0, i); -+ -+ ext4_mb_prealloc_table_add(sbi, 4); -+ ext4_mb_prealloc_table_add(sbi, 8); -+ ext4_mb_prealloc_table_add(sbi, 16); -+ ext4_mb_prealloc_table_add(sbi, 32); -+ ext4_mb_prealloc_table_add(sbi, 64); -+ ext4_mb_prealloc_table_add(sbi, 128); -+ ext4_mb_prealloc_table_add(sbi, 256); -+ ext4_mb_prealloc_table_add(sbi, 512); -+ ext4_mb_prealloc_table_add(sbi, 1024); -+ ext4_mb_prealloc_table_add(sbi, 2048); -+ -+ sbi->s_mb_small_req = 256; -+ sbi->s_mb_large_req = 1024; -+ sbi->s_mb_group_prealloc = 512; -+ } else { -+ sbi->s_mb_prealloc_table_size = 3; -+ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); -+ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS); -+ if (sbi->s_mb_prealloc_table == NULL) { -+ kfree(sbi->s_mb_offsets); -+ kfree(sbi->s_mb_maxs); -+ return -ENOMEM; -+ } -+ memset(sbi->s_mb_prealloc_table, 0, i); -+ -+ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe); -+ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe * 2); -+ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe * 4); +@@ -2325,6 +2389,80 @@ + .llseek = seq_lseek, + .release = seq_release, + }; + -+ sbi->s_mb_small_req = sbi->s_stripe; -+ sbi->s_mb_large_req = sbi->s_stripe * 8; -+ sbi->s_mb_group_prealloc = sbi->s_stripe * 4; -+ } - - sbi->s_locality_groups = alloc_percpu(struct ext4_locality_group); - if (sbi->s_locality_groups == NULL) { -+ kfree(sbi->s_mb_prealloc_table); - kfree(sbi->s_mb_offsets); - kfree(sbi->s_mb_maxs); - return -ENOMEM; -@@ -2725,8 +2789,82 @@ - #define EXT4_MB_MAX_TO_SCAN_NAME "max_to_scan" - #define EXT4_MB_MIN_TO_SCAN_NAME "min_to_scan" - #define EXT4_MB_ORDER2_REQ "order2_req" --#define EXT4_MB_STREAM_REQ "stream_req" -+#define EXT4_MB_SMALL_REQ "small_req" -+#define EXT4_MB_LARGE_REQ "large_req" +#define EXT4_MB_PREALLOC_TABLE "prealloc_table" - #define EXT4_MB_GROUP_PREALLOC "group_prealloc" + +static int ext4_mb_prealloc_table_proc_read(char *page, char **start, off_t off, + int count, int *eof, void *data) @@ -200,58 +152,90 @@ + return cnt; +} - #define MB_PROC_FOPS(name) \ - static int ext4_mb_##name##_proc_show(struct seq_file *m, void *v) \ -@@ -2795,6 +2932,7 @@ - mode_t mode = S_IFREG | S_IRUGO | S_IWUSR; - struct ext4_sb_info *sbi = EXT4_SB(sb); - struct proc_dir_entry *proc; -+ struct proc_dir_entry *proc_entry; - - if (sbi->s_proc == NULL) - return -EINVAL; -@@ -2808,13 +2946,28 @@ - EXT4_PROC_HANDLER(EXT4_MB_MAX_TO_SCAN_NAME, mb_max_to_scan); - EXT4_PROC_HANDLER(EXT4_MB_MIN_TO_SCAN_NAME, mb_min_to_scan); - EXT4_PROC_HANDLER(EXT4_MB_ORDER2_REQ, mb_order2_reqs); -- EXT4_PROC_HANDLER(EXT4_MB_STREAM_REQ, mb_stream_request); -+ EXT4_PROC_HANDLER(EXT4_MB_SMALL_REQ, mb_small_req); -+ EXT4_PROC_HANDLER(EXT4_MB_LARGE_REQ, mb_large_req); - EXT4_PROC_HANDLER(EXT4_MB_GROUP_PREALLOC, mb_group_prealloc); -+ -+ proc_entry = create_proc_entry(EXT4_MB_PREALLOC_TABLE, S_IFREG | -+ S_IRUGO | S_IWUSR, sbi->s_proc); -+ if (proc_entry == NULL) { -+ printk(KERN_ERR "EXT4-fs: unable to create %s\n", -+ EXT4_MB_PREALLOC_TABLE); -+ goto err_out; + static void ext4_mb_history_release(struct super_block *sb) + { +@@ -2400,6 +2400,7 @@ + remove_proc_entry("mb_groups", sbi->s_proc); + if (sbi->s_mb_history_max) + remove_proc_entry("mb_history", sbi->s_proc); ++ remove_proc_entry(EXT4_MB_PREALLOC_TABLE, sbi->s_proc); + } + kfree(sbi->s_mb_history); + } +@@ -2408,6 +2446,13 @@ + p->proc_fops = &ext4_mb_seq_groups_fops; + p->data = sb; + } ++ p = create_proc_entry(EXT4_MB_PREALLOC_TABLE, S_IFREG | ++ S_IRUGO | S_IWUSR, sbi->s_proc); ++ if (p) { ++ p->data = sbi; ++ p->read_proc = ext4_mb_prealloc_table_proc_read; ++ p->write_proc = ext4_mb_prealloc_table_proc_write; ++ } + } + + sbi->s_mb_history_cur = 0; +@@ -2542,13 +2562,57 @@ + sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN; + sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN; + sbi->s_mb_stats = MB_DEFAULT_STATS; +- sbi->s_mb_stream_request = MB_DEFAULT_STREAM_THRESHOLD; + sbi->s_mb_order2_reqs = MB_DEFAULT_ORDER2_REQS; + sbi->s_mb_history_filter = EXT4_MB_HISTORY_DEFAULT; +- sbi->s_mb_group_prealloc = MB_DEFAULT_GROUP_PREALLOC; ++ ++ if (sbi->s_stripe == 0) { ++ sbi->s_mb_prealloc_table_size = 10; ++ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); ++ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS); ++ if (sbi->s_mb_prealloc_table == NULL) { ++ kfree(sbi->s_mb_offsets); ++ kfree(sbi->s_mb_maxs); ++ return -ENOMEM; ++ } ++ memset(sbi->s_mb_prealloc_table, 0, i); ++ ++ ext4_mb_prealloc_table_add(sbi, 4); ++ ext4_mb_prealloc_table_add(sbi, 8); ++ ext4_mb_prealloc_table_add(sbi, 16); ++ ext4_mb_prealloc_table_add(sbi, 32); ++ ext4_mb_prealloc_table_add(sbi, 64); ++ ext4_mb_prealloc_table_add(sbi, 128); ++ ext4_mb_prealloc_table_add(sbi, 256); ++ ext4_mb_prealloc_table_add(sbi, 512); ++ ext4_mb_prealloc_table_add(sbi, 1024); ++ ext4_mb_prealloc_table_add(sbi, 2048); ++ ++ sbi->s_mb_small_req = 256; ++ sbi->s_mb_large_req = 1024; ++ sbi->s_mb_group_prealloc = 512; ++ } else { ++ sbi->s_mb_prealloc_table_size = 3; ++ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); ++ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS); ++ if (sbi->s_mb_prealloc_table == NULL) { ++ kfree(sbi->s_mb_offsets); ++ kfree(sbi->s_mb_maxs); ++ return -ENOMEM; ++ } ++ memset(sbi->s_mb_prealloc_table, 0, i); ++ ++ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe); ++ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe * 2); ++ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe * 4); ++ ++ sbi->s_mb_small_req = sbi->s_stripe; ++ sbi->s_mb_large_req = sbi->s_stripe * 8; ++ sbi->s_mb_group_prealloc = sbi->s_stripe * 4; + } -+ proc_entry->data = sbi; -+ proc_entry->read_proc = ext4_mb_prealloc_table_proc_read; -+ proc_entry->write_proc = ext4_mb_prealloc_table_proc_write; -+ - return 0; - - err_out: - remove_proc_entry(EXT4_MB_GROUP_PREALLOC, sbi->s_proc); -- remove_proc_entry(EXT4_MB_STREAM_REQ, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_PREALLOC_TABLE, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_LARGE_REQ, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_SMALL_REQ, sbi->s_proc); - remove_proc_entry(EXT4_MB_ORDER2_REQ, sbi->s_proc); - remove_proc_entry(EXT4_MB_MIN_TO_SCAN_NAME, sbi->s_proc); - remove_proc_entry(EXT4_MB_MAX_TO_SCAN_NAME, sbi->s_proc); -@@ -2838,7 +2990,9 @@ - - - remove_proc_entry(EXT4_MB_GROUP_PREALLOC, sbi->s_proc); -- remove_proc_entry(EXT4_MB_STREAM_REQ, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_PREALLOC_TABLE, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_LARGE_REQ, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_SMALL_REQ, sbi->s_proc); - remove_proc_entry(EXT4_MB_ORDER2_REQ, sbi->s_proc); - remove_proc_entry(EXT4_MB_MIN_TO_SCAN_NAME, sbi->s_proc); - remove_proc_entry(EXT4_MB_MAX_TO_SCAN_NAME, sbi->s_proc); + + sbi->s_locality_groups = alloc_percpu(struct ext4_locality_group); + if (sbi->s_locality_groups == NULL) { ++ kfree(sbi->s_mb_prealloc_table); + kfree(sbi->s_mb_offsets); + kfree(sbi->s_mb_maxs); + return -ENOMEM; @@ -3032,11 +3186,12 @@ ext4_mb_normalize_request(struct ext4_allocation_context *ac, struct ext4_allocation_request *ar) @@ -350,43 +334,22 @@ /* now prepare goal request */ -@@ -4077,22 +4217,32 @@ - { - struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); - int bsbits = ac->ac_sb->s_blocksize_bits; -- loff_t size, isize; -+ loff_t size; - - if (!(ac->ac_flags & EXT4_MB_HINT_DATA)) - return; - -- size = ac->ac_o_ex.fe_logical + ac->ac_o_ex.fe_len; -- isize = i_size_read(ac->ac_inode) >> bsbits; -- size = max(size, isize); -- -- /* don't use group allocation for large files */ -- if (size >= sbi->s_mb_stream_request) -+ if (ac->ac_o_ex.fe_len >= sbi->s_mb_small_req) - return; +@@ -4077,11 +4217,17 @@ - if (unlikely(ac->ac_flags & EXT4_MB_HINT_GOAL_ONLY)) - return; + /* don't use group allocation for large files */ + size = max(size, isize); +- if (size >= sbi->s_mb_stream_request) { ++ if ((ac->ac_o_ex.fe_len >= sbi->s_mb_small_req) || ++ (size >= sbi->s_mb_large_req)) { + ac->ac_flags |= EXT4_MB_STREAM_ALLOC; + return; + } + /* request is so large that we don't care about + * streaming - it overweights any possible seek */ + if (ac->ac_o_ex.fe_len >= sbi->s_mb_large_req) + return; + -+ size = ac->ac_o_ex.fe_logical + ac->ac_o_ex.fe_len; -+ size = size << bsbits; -+ if (size < i_size_read(ac->ac_inode)) -+ size = i_size_read(ac->ac_inode); -+ size = (size + ac->ac_sb->s_blocksize - 1) >> bsbits; -+ -+ /* don't use group allocation for large files */ -+ if (size >= sbi->s_mb_large_req) -+ return; -+ BUG_ON(ac->ac_lg != NULL); /* * locality group prealloc space are per cpu. The reason for having diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-prealloc-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-prealloc-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-prealloc-sles11.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-prealloc-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ Index: linux-2.6.27.21-0.1/fs/ext4/ext4_sb.h =================================================================== ---- linux-2.6.27.21-0.1.orig/fs/ext4/ext4_sb.h 2009-05-28 11:13:24.000000000 +0530 -+++ linux-2.6.27.21-0.1/fs/ext4/ext4_sb.h 2009-05-28 11:16:48.000000000 +0530 +--- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h 2009-05-28 11:13:24.000000000 +0530 ++++ linux-2.6.27.21-0.1/fs/ext4/ext4.h 2009-05-28 11:16:48.000000000 +0530 @@ -109,11 +109,14 @@ /* tunables */ @@ -16,22 +16,13 @@ + unsigned long *s_mb_prealloc_table; + unsigned long s_mb_prealloc_table_size; unsigned int s_mb_group_prealloc; + unsigned int s_max_writeback_mb_bump; /* where last allocation was done - for stream allocation */ - unsigned long s_mb_last_group; Index: linux-2.6.27.21-0.1/fs/ext4/mballoc.c =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/mballoc.c 2009-05-28 11:12:43.000000000 +0530 +++ linux-2.6.27.21-0.1/fs/ext4/mballoc.c 2009-05-28 11:18:09.000000000 +0530 -@@ -1996,7 +1996,7 @@ - if (size < isize) - size = isize; - -- if (size < sbi->s_mb_stream_request && -+ if ((ac->ac_g_ex.fe_len < sbi->s_mb_large_req) && - (ac->ac_flags & EXT4_MB_HINT_DATA)) { - /* TBD: may be hot point */ - spin_lock(&sbi->s_md_lock); -@@ -2686,6 +2686,26 @@ +@@ -2686,6 +2686,99 @@ return -ENOMEM; } @@ -54,80 +45,8 @@ + } +} + -+ - int ext4_mb_init(struct super_block *sb, int needs_recovery) - { - struct ext4_sb_info *sbi = EXT4_SB(sb); -@@ -2738,13 +2758,57 @@ - sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN; - sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN; - sbi->s_mb_stats = MB_DEFAULT_STATS; -- sbi->s_mb_stream_request = MB_DEFAULT_STREAM_THRESHOLD; - sbi->s_mb_order2_reqs = MB_DEFAULT_ORDER2_REQS; - sbi->s_mb_history_filter = EXT4_MB_HISTORY_DEFAULT; -- sbi->s_mb_group_prealloc = MB_DEFAULT_GROUP_PREALLOC; -+ -+ if (sbi->s_stripe == 0) { -+ sbi->s_mb_prealloc_table_size = 10; -+ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); -+ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS); -+ if (sbi->s_mb_prealloc_table == NULL) { -+ kfree(sbi->s_mb_offsets); -+ kfree(sbi->s_mb_maxs); -+ return -ENOMEM; -+ } -+ memset(sbi->s_mb_prealloc_table, 0, i); -+ -+ ext4_mb_prealloc_table_add(sbi, 4); -+ ext4_mb_prealloc_table_add(sbi, 8); -+ ext4_mb_prealloc_table_add(sbi, 16); -+ ext4_mb_prealloc_table_add(sbi, 32); -+ ext4_mb_prealloc_table_add(sbi, 64); -+ ext4_mb_prealloc_table_add(sbi, 128); -+ ext4_mb_prealloc_table_add(sbi, 256); -+ ext4_mb_prealloc_table_add(sbi, 512); -+ ext4_mb_prealloc_table_add(sbi, 1024); -+ ext4_mb_prealloc_table_add(sbi, 2048); -+ -+ sbi->s_mb_small_req = 256; -+ sbi->s_mb_large_req = 1024; -+ sbi->s_mb_group_prealloc = 512; -+ } else { -+ sbi->s_mb_prealloc_table_size = 3; -+ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); -+ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS); -+ if (sbi->s_mb_prealloc_table == NULL) { -+ kfree(sbi->s_mb_offsets); -+ kfree(sbi->s_mb_maxs); -+ return -ENOMEM; -+ } -+ memset(sbi->s_mb_prealloc_table, 0, i); -+ -+ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe); -+ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe * 2); -+ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe * 4); -+ -+ sbi->s_mb_small_req = sbi->s_stripe; -+ sbi->s_mb_large_req = sbi->s_stripe * 8; -+ sbi->s_mb_group_prealloc = sbi->s_stripe * 4; -+ } - - sbi->s_locality_groups = alloc_percpu(struct ext4_locality_group); - if (sbi->s_locality_groups == NULL) { -+ kfree(sbi->s_mb_prealloc_table); - kfree(sbi->s_mb_offsets); - kfree(sbi->s_mb_maxs); - return -ENOMEM; -@@ -2915,15 +2977,90 @@ - #define EXT4_MB_MAX_TO_SCAN_NAME "max_to_scan" - #define EXT4_MB_MIN_TO_SCAN_NAME "min_to_scan" - #define EXT4_MB_ORDER2_REQ "order2_req" --#define EXT4_MB_STREAM_REQ "stream_req" -+#define EXT4_MB_SMALL_REQ "small_req" -+#define EXT4_MB_LARGE_REQ "large_req" +#define EXT4_MB_PREALLOC_TABLE "prealloc_table" - #define EXT4_MB_GROUP_PREALLOC "group_prealloc" - ++ +static int ext4_mb_prealloc_table_proc_read(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ @@ -200,58 +119,100 @@ + return cnt; +} + - static int ext4_mb_init_per_dev_proc(struct super_block *sb) + int ext4_mb_init(struct super_block *sb, int needs_recovery) { - #ifdef CONFIG_PROC_FS - mode_t mode = S_IFREG | S_IRUGO | S_IWUSR; struct ext4_sb_info *sbi = EXT4_SB(sb); - struct proc_dir_entry *proc; -+ struct proc_dir_entry *proc_entry; +@@ -2738,12 +2758,56 @@ + sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN; + sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN; + sbi->s_mb_stats = MB_DEFAULT_STATS; +- sbi->s_mb_stream_request = MB_DEFAULT_STREAM_THRESHOLD; + sbi->s_mb_order2_reqs = MB_DEFAULT_ORDER2_REQS; +- sbi->s_mb_group_prealloc = MB_DEFAULT_GROUP_PREALLOC; ++ ++ if (sbi->s_stripe == 0) { ++ sbi->s_mb_prealloc_table_size = 10; ++ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); ++ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS); ++ if (sbi->s_mb_prealloc_table == NULL) { ++ kfree(sbi->s_mb_offsets); ++ kfree(sbi->s_mb_maxs); ++ return -ENOMEM; ++ } ++ memset(sbi->s_mb_prealloc_table, 0, i); ++ ++ ext4_mb_prealloc_table_add(sbi, 4); ++ ext4_mb_prealloc_table_add(sbi, 8); ++ ext4_mb_prealloc_table_add(sbi, 16); ++ ext4_mb_prealloc_table_add(sbi, 32); ++ ext4_mb_prealloc_table_add(sbi, 64); ++ ext4_mb_prealloc_table_add(sbi, 128); ++ ext4_mb_prealloc_table_add(sbi, 256); ++ ext4_mb_prealloc_table_add(sbi, 512); ++ ext4_mb_prealloc_table_add(sbi, 1024); ++ ext4_mb_prealloc_table_add(sbi, 2048); ++ ++ sbi->s_mb_small_req = 256; ++ sbi->s_mb_large_req = 1024; ++ sbi->s_mb_group_prealloc = 512; ++ } else { ++ sbi->s_mb_prealloc_table_size = 3; ++ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long); ++ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS); ++ if (sbi->s_mb_prealloc_table == NULL) { ++ kfree(sbi->s_mb_offsets); ++ kfree(sbi->s_mb_maxs); ++ return -ENOMEM; ++ } ++ memset(sbi->s_mb_prealloc_table, 0, i); ++ ++ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe); ++ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe * 2); ++ ext4_mb_prealloc_table_add(sbi, sbi->s_stripe * 4); ++ ++ sbi->s_mb_small_req = sbi->s_stripe; ++ sbi->s_mb_large_req = sbi->s_stripe * 8; ++ sbi->s_mb_group_prealloc = sbi->s_stripe * 4; ++ } + + sbi->s_locality_groups = alloc_percpu(struct ext4_locality_group); + if (sbi->s_locality_groups == NULL) { ++ kfree(sbi->s_mb_prealloc_table); + kfree(sbi->s_mb_offsets); + kfree(sbi->s_mb_maxs); + return -ENOMEM; +@@ -2932,9 +3069,18 @@ + spin_lock_init(&lg->lg_prealloc_lock); + } + +- if (sbi->s_proc) ++ if (sbi->s_proc) { ++ struct proc_dir_entry *proc_entry; + proc_create_data("mb_groups", S_IRUGO, sbi->s_proc, + &ext4_mb_seq_groups_fops, sb); ++ proc_entry = create_proc_entry(EXT4_MB_PREALLOC_TABLE, S_IFREG | ++ S_IRUGO | S_IWUSR, sbi->s_proc); ++ if (proc_entry != NULL) { ++ proc_entry->data = sbi; ++ proc_entry->read_proc = ext4_mb_prealloc_table_proc_read; ++ proc_entry->write_proc = ext4_mb_prealloc_table_proc_write; ++ } ++ } - if (sbi->s_proc == NULL) - return -EINVAL; -@@ -2932,13 +3069,28 @@ - EXT4_PROC_HANDLER(EXT4_MB_MAX_TO_SCAN_NAME, mb_max_to_scan); - EXT4_PROC_HANDLER(EXT4_MB_MIN_TO_SCAN_NAME, mb_min_to_scan); - EXT4_PROC_HANDLER(EXT4_MB_ORDER2_REQ, mb_order2_reqs); -- EXT4_PROC_HANDLER(EXT4_MB_STREAM_REQ, mb_stream_request); -+ EXT4_PROC_HANDLER(EXT4_MB_SMALL_REQ, mb_small_req); -+ EXT4_PROC_HANDLER(EXT4_MB_LARGE_REQ, mb_large_req); - EXT4_PROC_HANDLER(EXT4_MB_GROUP_PREALLOC, mb_group_prealloc); -+ -+ proc_entry = create_proc_entry(EXT4_MB_PREALLOC_TABLE, S_IFREG | -+ S_IRUGO | S_IWUSR, sbi->s_proc); -+ if (proc_entry == NULL) { -+ printk(KERN_ERR "EXT4-fs: unable to create %s\n", -+ EXT4_MB_PREALLOC_TABLE); -+ goto err_out; + if (sbi->s_journal) + sbi->s_journal->j_commit_callback = release_blocks_on_commit; +@@ -2959,8 +3111,10 @@ + } + + free_percpu(sbi->s_locality_groups); +- if (sbi->s_proc) ++ if (sbi->s_proc) { + remove_proc_entry("mb_groups", sbi->s_proc); ++ remove_proc_entry(EXT4_MB_PREALLOC_TABLE, sbi->s_proc); + } -+ proc_entry->data = sbi; -+ proc_entry->read_proc = ext4_mb_prealloc_table_proc_read; -+ proc_entry->write_proc = ext4_mb_prealloc_table_proc_write; -+ - return 0; - - err_out: - remove_proc_entry(EXT4_MB_GROUP_PREALLOC, sbi->s_proc); -- remove_proc_entry(EXT4_MB_STREAM_REQ, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_PREALLOC_TABLE, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_LARGE_REQ, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_SMALL_REQ, sbi->s_proc); - remove_proc_entry(EXT4_MB_ORDER2_REQ, sbi->s_proc); - remove_proc_entry(EXT4_MB_MIN_TO_SCAN_NAME, sbi->s_proc); - remove_proc_entry(EXT4_MB_MAX_TO_SCAN_NAME, sbi->s_proc); -@@ -2959,7 +3111,9 @@ - return -EINVAL; - - remove_proc_entry(EXT4_MB_GROUP_PREALLOC, sbi->s_proc); -- remove_proc_entry(EXT4_MB_STREAM_REQ, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_PREALLOC_TABLE, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_LARGE_REQ, sbi->s_proc); -+ remove_proc_entry(EXT4_MB_SMALL_REQ, sbi->s_proc); - remove_proc_entry(EXT4_MB_ORDER2_REQ, sbi->s_proc); - remove_proc_entry(EXT4_MB_MIN_TO_SCAN_NAME, sbi->s_proc); - remove_proc_entry(EXT4_MB_MAX_TO_SCAN_NAME, sbi->s_proc); + + return 0; + @@ -3162,11 +3316,12 @@ ext4_mb_normalize_request(struct ext4_allocation_context *ac, struct ext4_allocation_request *ar) @@ -345,71 +306,56 @@ @@ -3315,7 +3456,6 @@ } BUG_ON(start + size <= ac->ac_o_ex.fe_logical && - start > ac->ac_o_ex.fe_logical); -- BUG_ON(size <= 0 || size >= EXT4_BLOCKS_PER_GROUP(ac->ac_sb)); - + start > ac->ac_o_ex.fe_logical); +- BUG_ON(size <= 0 || size > EXT4_BLOCKS_PER_GROUP(ac->ac_sb)); + /* now prepare goal request */ -@@ -4236,22 +4376,32 @@ - { - struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); - int bsbits = ac->ac_sb->s_blocksize_bits; -- loff_t size, isize; -+ loff_t size; - +@@ -4236,6 +4376,14 @@ if (!(ac->ac_flags & EXT4_MB_HINT_DATA)) return; -- size = ac->ac_o_ex.fe_logical + ac->ac_o_ex.fe_len; -- isize = i_size_read(ac->ac_inode) >> bsbits; -- size = max(size, isize); -- -- /* don't use group allocation for large files */ -- if (size >= sbi->s_mb_stream_request) + if (ac->ac_o_ex.fe_len >= sbi->s_mb_small_req) - return; - - if (unlikely(ac->ac_flags & EXT4_MB_HINT_GOAL_ONLY)) - return; - ++ return; ++ + /* request is so large that we don't care about + * streaming - it overweights any possible seek */ + if (ac->ac_o_ex.fe_len >= sbi->s_mb_large_req) + return; + -+ size = ac->ac_o_ex.fe_logical + ac->ac_o_ex.fe_len; -+ size = size << bsbits; -+ if (size < i_size_read(ac->ac_inode)) -+ size = i_size_read(ac->ac_inode); -+ size = (size + ac->ac_sb->s_blocksize - 1) >> bsbits; -+ -+ /* don't use group allocation for large files */ -+ if (size >= sbi->s_mb_large_req) -+ return; -+ - BUG_ON(ac->ac_lg != NULL); - /* - * locality group prealloc space are per cpu. The reason for having -Index: linux-2.6.27.21-0.1/fs/ext4/inode.c + if (unlikely(ac->ac_flags & EXT4_MB_HINT_GOAL_ONLY)) + return; + +@@ -4237,7 +4377,7 @@ + + /* don't use group allocation for large files */ + size = max(size, isize); +- if (size > sbi->s_mb_stream_request) { ++ if (size > sbi->s_mb_large_req) { + ac->ac_flags |= EXT4_MB_STREAM_ALLOC; + return; + } +Index: linux-2.6.27.21-0.1/fs/ext4/super.c =================================================================== ---- linux-2.6.27.21-0.1.orig/fs/ext4/inode.c 2009-05-28 11:12:42.000000000 +0530 -+++ linux-2.6.27.21-0.1/fs/ext4/inode.c 2009-05-28 11:16:48.000000000 +0530 -@@ -2442,14 +2442,14 @@ - return -EROFS; - - /* -- * Make sure nr_to_write is >= sbi->s_mb_stream_request -+ * Make sure nr_to_write is >= sbi->s_mb_small_req - * This make sure small files blocks are allocated in - * single attempt. This ensure that small files - * get less fragmented. - */ -- if (wbc->nr_to_write < sbi->s_mb_stream_request) { -- nr_to_writebump = sbi->s_mb_stream_request - wbc->nr_to_write; -- wbc->nr_to_write = sbi->s_mb_stream_request; -+ if (wbc->nr_to_write < sbi->s_mb_small_req) { -+ nr_to_writebump = sbi->s_mb_small_req - wbc->nr_to_write; -+ wbc->nr_to_write = sbi->s_mb_small_req; - } - if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) - range_whole = 1; +--- linux-2.6.27.21-0.1.orig/fs/ext4/super.c 2009-05-28 11:13:24.000000000 +0530 ++++ linux-2.6.27.21-0.1/fs/ext4/super.c 2009-05-28 11:16:48.000000000 +0530 +@@ -109,7 +109,8 @@ + EXT4_RW_ATTR_SBI_UI(mb_max_to_scan, s_mb_max_to_scan); + EXT4_RW_ATTR_SBI_UI(mb_min_to_scan, s_mb_min_to_scan); + EXT4_RW_ATTR_SBI_UI(mb_order2_req, s_mb_order2_reqs); +-EXT4_RW_ATTR_SBI_UI(mb_stream_req, s_mb_stream_request); ++EXT4_RW_ATTR_SBI_UI(mb_large_req, s_mb_large_req); ++EXT4_RW_ATTR_SBI_UI(mb_small_req, s_mb_small_req); + EXT4_RW_ATTR_SBI_UI(mb_group_prealloc, s_mb_group_prealloc); + EXT4_RW_ATTR_SBI_UI(max_writeback_mb_bump, s_max_writeback_mb_bump); + EXT4_RW_ATTR_SBI_UI(max_dir_size, s_max_dir_size); +@@ -1109,7 +1109,8 @@ + ATTR_LIST(mb_max_to_scan), + ATTR_LIST(mb_min_to_scan), + ATTR_LIST(mb_order2_req), +- ATTR_LIST(mb_stream_req), ++ ATTR_LIST(mb_large_req), ++ ATTR_LIST(mb_small_req), + ATTR_LIST(mb_group_prealloc), + ATTR_LIST(max_writeback_mb_bump), + ATTR_LIST(max_dir_size), diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-remove-extents-warning-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-remove-extents-warning-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-remove-extents-warning-rhel5.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-remove-extents-warning-rhel5.patch 2010-09-01 09:17:44.000000000 +0200 @@ -0,0 +1,15 @@ +Index: linux-stage/fs/ext4/super.c +=================================================================== +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -2564,10 +2564,6 @@ static int ext4_fill_super(struct super_ + */ + if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_EXTENTS)) + set_opt(sbi->s_mount_opt, EXTENTS); +- else +- ext4_warning(sb, __func__, +- "extents feature not enabled on this filesystem, " +- "use tune2fs."); + + /* + * enable delayed allocation by default diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-remove-extents-warning-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-remove-extents-warning-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-remove-extents-warning-sles11.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-remove-extents-warning-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,15 @@ +Index: linux-stage/fs/ext4/super.c +=================================================================== +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -2485,10 +2485,6 @@ static int ext4_fill_super(struct super_ + */ + if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_EXTENTS)) + set_opt(sbi->s_mount_opt, EXTENTS); +- else +- ext4_warning(sb, __func__, +- "extents feature not enabled on this filesystem, " +- "use tune2fs.\n"); + + if (!parse_options((char *) data, sb, &journal_inum, &journal_devnum, + NULL, 0)) diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-wantedi-2.6-rhel5.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-wantedi-2.6-rhel5.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-wantedi-2.6-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-wantedi-2.6-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -1,55 +1,8 @@ -Index: linux-stage/fs/ext4/ialloc.c +Index: linux-2.6.18-194.3.1/fs/ext4/namei.c =================================================================== ---- linux-stage.orig/fs/ext4/ialloc.c -+++ linux-stage/fs/ext4/ialloc.c -@@ -675,7 +675,8 @@ err_ret: - * For other inodes, search forward from the parent directory's block - * group to find a free inode. - */ --struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode) -+struct inode *ext4_new_inode_goal(handle_t *handle, struct inode *dir, -+ int mode, unsigned goal) - { - struct super_block *sb; - struct buffer_head *inode_bitmap_bh = NULL; -@@ -706,6 +707,14 @@ struct inode *ext4_new_inode(handle_t *h - sbi = EXT4_SB(sb); - es = sbi->s_es; - -+ if (goal && goal <= le32_to_cpu(es->s_inodes_count)) { -+ group = (goal - 1) / EXT4_INODES_PER_GROUP(sb); -+ ino = (goal - 1) % EXT4_INODES_PER_GROUP(sb); -+ -+ ret2 = 0; -+ goto got_group; -+ } -+ - if (sbi->s_log_groups_per_flex) { - ret2 = find_group_flex(sb, dir, &group); - goto got_group; -@@ -724,7 +733,7 @@ got_group: - if (ret2 == -1) - goto out; - -- for (i = 0; i < sbi->s_groups_count; i++) { -+ for (i = 0; i < sbi->s_groups_count; i++, ino = 0) { - err = -EIO; - - gdp = ext4_get_group_desc(sb, group, &group_desc_bh); -@@ -736,8 +745,6 @@ got_group: - if (!inode_bitmap_bh) - goto fail; - -- ino = 0; -- - repeat_in_this_group: - ino = ext4_find_next_zero_bit((unsigned long *) - inode_bitmap_bh->b_data, -Index: linux-stage/fs/ext4/namei.c -=================================================================== ---- linux-stage.orig/fs/ext4/namei.c -+++ linux-stage/fs/ext4/namei.c -@@ -149,6 +149,17 @@ struct dx_map_entry +--- linux-2.6.18-194.3.1.orig/fs/ext4/namei.c ++++ linux-2.6.18-194.3.1/fs/ext4/namei.c +@@ -148,6 +148,17 @@ struct dx_map_entry u16 size; }; @@ -67,7 +20,7 @@ static inline ext4_lblk_t dx_get_block(struct dx_entry *entry); static void dx_set_block(struct dx_entry *entry, ext4_lblk_t value); static inline unsigned dx_get_hash(struct dx_entry *entry); -@@ -1716,6 +1727,19 @@ static int ext4_add_nondir(handle_t *han +@@ -1761,6 +1772,19 @@ static int ext4_add_nondir(handle_t *han return err; } @@ -87,108 +40,45 @@ /* * By the time this is called, we already have created * the directory cache entry for the new file, but it -@@ -1741,7 +1766,8 @@ retry: +@@ -1786,7 +1810,8 @@ retry: if (IS_DIRSYNC(dir)) - handle->h_sync = 1; + ext4_handle_sync(handle); -- inode = ext4_new_inode (handle, dir, mode); -+ inode = ext4_new_inode_goal(handle, dir, mode, -+ ext4_dentry_goal(dir->i_sb, dentry)); +- inode = ext4_new_inode(handle, dir, mode, &dentry->d_name, 0); ++ inode = ext4_new_inode(handle, dir, mode, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); err = PTR_ERR(inode); if (!IS_ERR(inode)) { inode->i_op = &ext4_file_inode_operations; -@@ -1775,7 +1800,8 @@ retry: +@@ -1820,7 +1845,8 @@ retry: if (IS_DIRSYNC(dir)) - handle->h_sync = 1; + ext4_handle_sync(handle); -- inode = ext4_new_inode(handle, dir, mode); -+ inode = ext4_new_inode_goal(handle, dir, mode, -+ ext4_dentry_goal(dir->i_sb, dentry)); +- inode = ext4_new_inode(handle, dir, mode, &dentry->d_name, 0); ++ inode = ext4_new_inode(handle, dir, mode, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); err = PTR_ERR(inode); if (!IS_ERR(inode)) { init_special_inode(inode, inode->i_mode, rdev); -@@ -1811,7 +1836,8 @@ retry: +@@ -1857,8 +1883,8 @@ retry: if (IS_DIRSYNC(dir)) - handle->h_sync = 1; + ext4_handle_sync(handle); -- inode = ext4_new_inode(handle, dir, S_IFDIR | mode); -+ inode = ext4_new_inode_goal(handle, dir, S_IFDIR | mode, -+ ext4_dentry_goal(dir->i_sb, dentry)); +- inode = ext4_new_inode(handle, dir, S_IFDIR | mode, +- &dentry->d_name, 0); ++ inode = ext4_new_inode(handle, dir, S_IFDIR | mode, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); err = PTR_ERR(inode); if (IS_ERR(inode)) goto out_stop; -@@ -2211,7 +2236,8 @@ retry: +@@ -2270,8 +2296,8 @@ retry: if (IS_DIRSYNC(dir)) - handle->h_sync = 1; + ext4_handle_sync(handle); -- inode = ext4_new_inode(handle, dir, S_IFLNK|S_IRWXUGO); -+ inode = ext4_new_inode_goal(handle, dir, S_IFLNK|S_IRWXUGO, -+ ext4_dentry_goal(dir->i_sb, dentry)); +- inode = ext4_new_inode(handle, dir, S_IFLNK|S_IRWXUGO, +- &dentry->d_name, 0); ++ inode = ext4_new_inode(handle, dir, S_IFLNK|S_IRWXUGO, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); err = PTR_ERR(inode); if (IS_ERR(inode)) goto out_stop; -Index: linux-stage/fs/ext4/ext4.h -=================================================================== ---- linux-stage.orig/fs/ext4/ext4.h -+++ linux-stage/fs/ext4/ext4.h -@@ -1032,7 +1032,14 @@ extern int ext4fs_dirhash(const char *na - dx_hash_info *hinfo); - - /* ialloc.c */ --extern struct inode * ext4_new_inode(handle_t *, struct inode *, int); -+extern struct inode *ext4_new_inode_goal(handle_t *handle, struct inode *dir, -+ int mode, unsigned goal); -+static inline struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, -+ int mode) -+{ -+ return ext4_new_inode_goal(handle, dir, mode, -+ EXT4_SB(dir->i_sb)->s_inode_goal); -+} - extern void ext4_free_inode(handle_t *, struct inode *); - extern struct inode * ext4_orphan_get(struct super_block *, unsigned long); - extern unsigned long ext4_count_free_inodes(struct super_block *); -Index: linux-stage/fs/ext4/super.c -=================================================================== ---- linux-stage.orig/fs/ext4/super.c -+++ linux-stage/fs/ext4/super.c -@@ -560,6 +560,7 @@ static void ext4_put_super(struct super_ - } - if (sbi->s_proc) { - remove_proc_entry("inode_readahead_blks", sbi->s_proc); -+ remove_proc_entry("inode_goal", sbi->s_proc); - remove_proc_entry(sb->s_id, ext4_proc_root); - } - -@@ -2274,6 +2275,11 @@ static int ext4_fill_super(struct super_ - p->proc_fops = &ext4_ui_proc_fops; - p->data = &sbi->s_inode_readahead_blks; - } -+ p = create_proc_entry("inode_goal", 0644, sbi->s_proc); -+ if (p) { -+ p->proc_fops = &ext4_ui_proc_fops, -+ p->data = &sbi->s_inode_goal; -+ } - } - #endif - -@@ -2553,6 +2558,7 @@ failed_mount2: - failed_mount: - if (sbi->s_proc) { - remove_proc_entry("inode_readahead_blks", sbi->s_proc); -+ remove_proc_entry("inode_goal", sbi->s_proc); - remove_proc_entry(sb->s_id, ext4_proc_root); - } - #ifdef CONFIG_QUOTA -Index: linux-stage/fs/ext4/ext4_sb.h -=================================================================== ---- linux-stage.orig/fs/ext4/ext4_sb.h -+++ linux-stage/fs/ext4/ext4_sb.h -@@ -53,6 +53,7 @@ struct ext4_sb_info { - int s_inode_size; - int s_first_ino; - unsigned int s_inode_readahead_blks; -+ unsigned int s_inode_goal; - spinlock_t s_next_gen_lock; - u32 s_next_generation; - u32 s_hash_seed[4]; - diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-wantedi-2.6-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-wantedi-2.6-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/ext4-wantedi-2.6-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/ext4-wantedi-2.6-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -1,50 +1,3 @@ -Index: linux-stage/fs/ext4/ialloc.c -=================================================================== ---- linux-stage.orig/fs/ext4/ialloc.c -+++ linux-stage/fs/ext4/ialloc.c -@@ -675,7 +675,8 @@ err_ret: - * For other inodes, search forward from the parent directory's block - * group to find a free inode. - */ --struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode) -+struct inode *ext4_new_inode_goal(handle_t *handle, struct inode *dir, -+ int mode, unsigned goal) - { - struct super_block *sb; - struct buffer_head *inode_bitmap_bh = NULL; -@@ -706,6 +707,14 @@ struct inode *ext4_new_inode(handle_t *h - sbi = EXT4_SB(sb); - es = sbi->s_es; - -+ if (goal && goal <= le32_to_cpu(es->s_inodes_count)) { -+ group = (goal - 1) / EXT4_INODES_PER_GROUP(sb); -+ ino = (goal - 1) % EXT4_INODES_PER_GROUP(sb); -+ -+ ret2 = 0; -+ goto got_group; -+ } -+ - if (sbi->s_log_groups_per_flex) { - ret2 = find_group_flex(sb, dir, &group); - goto got_group; -@@ -724,7 +733,7 @@ got_group: - if (ret2 == -1) - goto out; - -- for (i = 0; i < sbi->s_groups_count; i++) { -+ for (i = 0; i < sbi->s_groups_count; i++, ino = 0) { - err = -EIO; - - gdp = ext4_get_group_desc(sb, group, &group_desc_bh); -@@ -736,8 +745,6 @@ got_group: - if (!inode_bitmap_bh) - goto fail; - -- ino = 0; -- - repeat_in_this_group: - ino = ext4_find_next_zero_bit((unsigned long *) - inode_bitmap_bh->b_data, Index: linux-stage/fs/ext4/namei.c =================================================================== --- linux-stage.orig/fs/ext4/namei.c @@ -71,7 +24,7 @@ return err; } -+static unsigned ext4_dentry_goal(struct super_block *sb, struct dentry *dentry) ++static u32 ext4_dentry_goal(struct super_block *sb, struct dentry *dentry) +{ + unsigned inum = EXT4_SB(sb)->s_inode_goal; + @@ -89,110 +42,43 @@ * the directory cache entry for the new file, but it @@ -1741,7 +1766,8 @@ retry: if (IS_DIRSYNC(dir)) - handle->h_sync = 1; + ext4_handle_sync(handle); -- inode = ext4_new_inode (handle, dir, mode); -+ inode = ext4_new_inode_goal(handle, dir, mode, -+ ext4_dentry_goal(dir->i_sb, dentry)); +- inode = ext4_new_inode(handle, dir, mode, &dentry->d_name, 0); ++ inode = ext4_new_inode(handle, dir, mode, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); err = PTR_ERR(inode); if (!IS_ERR(inode)) { inode->i_op = &ext4_file_inode_operations; @@ -1775,7 +1800,8 @@ retry: if (IS_DIRSYNC(dir)) - handle->h_sync = 1; + ext4_handle_sync(handle); -- inode = ext4_new_inode(handle, dir, mode); -+ inode = ext4_new_inode_goal(handle, dir, mode, -+ ext4_dentry_goal(dir->i_sb, dentry)); +- inode = ext4_new_inode(handle, dir, mode, &dentry->d_name, 0); ++ inode = ext4_new_inode(handle, dir, mode, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); err = PTR_ERR(inode); if (!IS_ERR(inode)) { init_special_inode(inode, inode->i_mode, rdev); -@@ -1811,7 +1836,8 @@ retry: +@@ -1811,8 +1836,8 @@ retry: if (IS_DIRSYNC(dir)) - handle->h_sync = 1; - -- inode = ext4_new_inode(handle, dir, S_IFDIR | mode); -+ inode = ext4_new_inode_goal(handle, dir, S_IFDIR | mode, -+ ext4_dentry_goal(dir->i_sb, dentry)); + ext4_handle_sync(handle); + +- inode = ext4_new_inode(handle, dir, S_IFDIR | mode, +- &dentry->d_name, 0); ++ inode = ext4_new_inode(handle, dir, S_IFDIR | mode, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); err = PTR_ERR(inode); if (IS_ERR(inode)) goto out_stop; -@@ -2211,7 +2236,8 @@ retry: +@@ -2211,8 +2236,8 @@ retry: if (IS_DIRSYNC(dir)) - handle->h_sync = 1; - -- inode = ext4_new_inode(handle, dir, S_IFLNK|S_IRWXUGO); -+ inode = ext4_new_inode_goal(handle, dir, S_IFLNK|S_IRWXUGO, -+ ext4_dentry_goal(dir->i_sb, dentry)); + ext4_handle_sync(handle); + +- inode = ext4_new_inode(handle, dir, S_IFLNK|S_IRWXUGO, +- &dentry->d_name, 0); ++ inode = ext4_new_inode(handle, dir, S_IFLNK|S_IRWXUGO, &dentry->d_name, ++ ext4_dentry_goal(dir->i_sb, dentry)); err = PTR_ERR(inode); if (IS_ERR(inode)) goto out_stop; -Index: linux-stage/fs/ext4/ext4.h -=================================================================== ---- linux-stage.orig/fs/ext4/ext4.h -+++ linux-stage/fs/ext4/ext4.h -@@ -1032,7 +1032,14 @@ extern int ext4fs_dirhash(const char *na - dx_hash_info *hinfo); - - /* ialloc.c */ --extern struct inode * ext4_new_inode(handle_t *, struct inode *, int); -+extern struct inode *ext4_new_inode_goal(handle_t *handle, struct inode *dir, -+ int mode, unsigned goal); -+static inline struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, -+ int mode) -+{ -+ return ext4_new_inode_goal(handle, dir, mode, -+ EXT4_SB(dir->i_sb)->s_inode_goal); -+} - extern void ext4_free_inode(handle_t *, struct inode *); - extern struct inode * ext4_orphan_get(struct super_block *, unsigned long); - extern unsigned long ext4_count_free_inodes(struct super_block *); -Index: linux-stage/fs/ext4/super.c -=================================================================== ---- linux-stage.orig/fs/ext4/super.c -+++ linux-stage/fs/ext4/super.c -@@ -560,6 +560,7 @@ static void ext4_put_super(struct super_ - } - if (sbi->s_proc) { - remove_proc_entry("inode_readahead_blks", sbi->s_proc); -+ remove_proc_entry("inode_goal", sbi->s_proc); - remove_proc_entry(sb->s_id, ext4_proc_root); - } - -@@ -2274,10 +2275,14 @@ static int ext4_fill_super(struct super_ - if (ext4_proc_root) - sbi->s_proc = proc_mkdir(sb->s_id, ext4_proc_root); - -- if (sbi->s_proc) -+ if (sbi->s_proc) { - proc_create_data("inode_readahead_blks", 0644, sbi->s_proc, - &ext4_ui_proc_fops, - &sbi->s_inode_readahead_blks); -+ proc_create_data("inode_goal", 0644, sbi->s_proc, -+ &ext4_ui_proc_fops, -+ &sbi->s_inode_goal); -+ } - #endif - - bgl_lock_init(&sbi->s_blockgroup_lock); -@@ -2553,6 +2558,7 @@ failed_mount2: - failed_mount: - if (sbi->s_proc) { - remove_proc_entry("inode_readahead_blks", sbi->s_proc); -+ remove_proc_entry("inode_goal", sbi->s_proc); - remove_proc_entry(sb->s_id, ext4_proc_root); - } - #ifdef CONFIG_QUOTA -Index: linux-stage/fs/ext4/ext4_sb.h -=================================================================== ---- linux-stage.orig/fs/ext4/ext4_sb.h -+++ linux-stage/fs/ext4/ext4_sb.h -@@ -53,6 +53,7 @@ struct ext4_sb_info { - int s_inode_size; - int s_first_ino; - unsigned int s_inode_readahead_blks; -+ unsigned int s_inode_goal; - spinlock_t s_next_gen_lock; - u32 s_next_generation; - u32 s_hash_seed[4]; - diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/iopen-2.6.18-rhel5-ext4.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/iopen-2.6.18-rhel5-ext4.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/iopen-2.6.18-rhel5-ext4.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/iopen-2.6.18-rhel5-ext4.patch 2010-11-17 04:31:48.000000000 +0100 @@ -345,9 +345,9 @@ --- linux-2.6.18-128.1.6.orig/fs/ext4/super.c +++ linux-2.6.18-128.1.6/fs/ext4/super.c @@ -888,7 +888,8 @@ enum { - Opt_usrquota, Opt_grpquota, Opt_i_version, Opt_stripe, Opt_delalloc, Opt_nodelalloc, + Opt_block_validity, Opt_noblock_validity, - Opt_inode_readahead_blks, Opt_journal_ioprio + Opt_inode_readahead_blks, Opt_journal_ioprio, + Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, @@ -491,24 +491,23 @@ +++ linux-2.6.18-128.1.6/fs/ext4/Makefile @@ -4,7 +4,7 @@ - obj-$(CONFIG_EXT4DEV_FS) += ext4dev.o + obj-$(CONFIG_EXT4_FS) += ext4.o -ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \ +ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o iopen.o \ - ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \ - ext4_jbd2.o migrate.o mballoc.o + ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \ + ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o Index: linux-2.6.18-128.1.6/fs/ext4/ext4.h =================================================================== --- linux-2.6.18-128.1.6.orig/fs/ext4/ext4.h +++ linux-2.6.18-128.1.6/fs/ext4/ext4.h @@ -537,6 +538,8 @@ do { \ - #define EXT4_MOUNT_JOURNAL_ASYNC_COMMIT 0x1000000 /* Journal Async Commit */ - #define EXT4_MOUNT_I_VERSION 0x2000000 /* i_version support */ #define EXT4_MOUNT_DELALLOC 0x8000000 /* Delalloc support */ #define EXT4_MOUNT_DATA_ERR_ABORT 0x10000000 /* Abort on file data write */ -+#define EXT4_MOUNT_IOPEN 0x20000000 /* Allow access via iopen */ -+#define EXT4_MOUNT_IOPEN_NOPRIV 0x40000000 /* Make iopen world-readable */ + #define EXT4_MOUNT_BLOCK_VALIDITY 0x20000000 /* Block validity checking */ ++#define EXT4_MOUNT_IOPEN 0x40000000 /* Allow access via iopen */ ++#define EXT4_MOUNT_IOPEN_NOPRIV 0x80000000 /* Make iopen world-readable */ /* Compatibility, for having both ext2_fs.h and ext4_fs.h included at once */ #ifndef _LINUX_EXT2_FS_H diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/patches/iopen-sles11.patch lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/iopen-sles11.patch --- lustre-1.8.3/ldiskfs/kernel_patches/patches/iopen-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/patches/iopen-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -345,12 +345,10 @@ =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/super.c +++ linux-2.6.27.21-0.1/fs/ext4/super.c -@@ -955,7 +955,8 @@ enum { - Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota, - Opt_grpquota, Opt_extents, Opt_noextents, Opt_i_version, - Opt_stripe, Opt_delalloc, Opt_nodelalloc, -- Opt_inode_readahead_blks -+ Opt_inode_readahead_blks, +@@ -955,6 +955,7 @@ enum { + Opt_block_validity, Opt_noblock_validity, + Opt_inode_readahead_blks, Opt_journal_ioprio, + Opt_discard, Opt_nodiscard, + Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, }; @@ -370,16 +368,16 @@ clear_opt(sbi->s_mount_opt, BARRIER); break; + case Opt_iopen: -+ set_opt (sbi->s_mount_opt, IOPEN); -+ clear_opt (sbi->s_mount_opt, IOPEN_NOPRIV); ++ set_opt(sbi->s_mount_opt, IOPEN); ++ clear_opt(sbi->s_mount_opt, IOPEN_NOPRIV); + break; + case Opt_noiopen: -+ clear_opt (sbi->s_mount_opt, IOPEN); -+ clear_opt (sbi->s_mount_opt, IOPEN_NOPRIV); ++ clear_opt(sbi->s_mount_opt, IOPEN); ++ clear_opt(sbi->s_mount_opt, IOPEN_NOPRIV); + break; + case Opt_iopen_nopriv: -+ set_opt (sbi->s_mount_opt, IOPEN); -+ set_opt (sbi->s_mount_opt, IOPEN_NOPRIV); ++ set_opt(sbi->s_mount_opt, IOPEN); ++ set_opt(sbi->s_mount_opt, IOPEN_NOPRIV); + break; case Opt_ignore: break; @@ -422,18 +420,18 @@ ext4_mark_inode_dirty(handle, inode); - d_instantiate(dentry, inode); + iopen_d_instantiate(dentry, inode); + unlock_new_inode(inode); return 0; } - drop_nlink(inode); @@ -1876,7 +1881,7 @@ out_clear_inode: ext4_inc_count(handle, dir); ext4_update_dx_flag(dir); ext4_mark_inode_dirty(handle, dir); - d_instantiate(dentry, inode); + iopen_d_instantiate(dentry, inode); + unlock_new_inode(inode); out_stop: ext4_journal_stop(handle); - if (err == -ENOSPC && ext4_should_retry_alloc(dir->i_sb, &retries)) @@ -2142,10 +2147,6 @@ static int ext4_rmdir(struct inode *dir, inode->i_nlink); inode->i_version++; @@ -469,11 +467,18 @@ static int ext4_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) { -@@ -2301,7 +2319,8 @@ retry: +@@ -2301,14 +2319,8 @@ retry: ext4_inc_count(handle, inode); atomic_inc(&inode->i_count); -- err = ext4_add_nondir(handle, dentry, inode); +- err = ext4_add_entry(handle, dentry, inode); +- if (!err) { +- ext4_mark_inode_dirty(handle, inode); +- d_instantiate(dentry, inode); +- } else { +- drop_nlink(inode); +- iput(inode); +- } + err = ext4_add_link(handle, dentry, inode); + ext4_orphan_del(handle, inode); ext4_journal_stop(handle); @@ -485,23 +490,23 @@ +++ linux-2.6.27.21-0.1/fs/ext4/Makefile @@ -4,7 +4,7 @@ - obj-$(CONFIG_EXT4DEV_FS) += ext4dev.o + obj-$(CONFIG_EXT4_FS) += ext4.o --ext4dev-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \ -+ext4dev-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o iopen.o \ - ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \ - ext4_jbd2.o migrate.o mballoc.o +-ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \ ++ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o iopen.o \ + ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \ + ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o Index: linux-2.6.27.21-0.1/fs/ext4/ext4.h =================================================================== --- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h +++ linux-2.6.27.21-0.1/fs/ext4/ext4.h @@ -540,6 +540,8 @@ do { \ - #define EXT4_MOUNT_JOURNAL_ASYNC_COMMIT 0x1000000 /* Journal Async Commit */ - #define EXT4_MOUNT_I_VERSION 0x2000000 /* i_version support */ - #define EXT4_MOUNT_DELALLOC 0x8000000 /* Delalloc support */ -+#define EXT4_MOUNT_IOPEN 0x10000000 /* Allow access via iopen */ -+#define EXT4_MOUNT_IOPEN_NOPRIV 0x20000000 /* Make iopen world-readable */ - /* Compatibility, for having both ext2_fs.h and ext4_fs.h included at once */ - #ifndef _LINUX_EXT2_FS_H + #define EXT4_MOUNT_DATA_ERR_ABORT 0x10000000 /* Abort on file data write */ + #define EXT4_MOUNT_BLOCK_VALIDITY 0x20000000 /* Block validity checking */ + #define EXT4_MOUNT_DISCARD 0x40000000 /* Issue DISCARD requests */ ++#define EXT4_MOUNT_IOPEN 0x80000000 /* Allow access via iopen */ ++#define EXT4_MOUNT_IOPEN_NOPRIV 0x100000000ULL /* Make iopen world-readable */ + #define clear_opt(o, opt) o &= ~EXT4_MOUNT_##opt + #define set_opt(o, opt) o |= EXT4_MOUNT_##opt diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-debian.series lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-debian.series --- lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-debian.series 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-debian.series 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -ext3-wantedi-2.6-rhel4.patch -iopen-2.6-fc5.patch -ext3-map_inode_page-2.6.18.patch -export-ext3-2.6-rhel4.patch -ext3-include-fixes-2.6-rhel4.patch -ext3-extents-2.6.18-vanilla.patch -ext3-mballoc3-core.patch -ext3-mballoc3-2.6.18.patch -ext3-nlinks-2.6.9.patch -ext3-ialloc-2.6.patch -ext3-remove-cond_resched-calls-2.6.12.patch -ext3-filterdata-sles10.patch -ext3-16tb-overflow-fixes.patch -ext3-uninit-2.6.18.patch -ext3-nanosecond-2.6.18-vanilla.patch -ext3-inode-version-2.6.18-vanilla.patch -ext3-ea-expand-lose-block.patch -ext3-mmp-2.6.18-vanilla.patch -ext3-fiemap-2.6.18-vanilla.patch -ext3-lookup-dotdot-2.6.9.patch diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5-ext4.series lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5-ext4.series --- lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5-ext4.series 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5-ext4.series 2010-11-17 04:31:48.000000000 +0100 @@ -3,9 +3,7 @@ iopen-2.6.18-rhel5-ext4.patch ext4-map_inode_page-2.6.18-rhel5.patch export-ext4-2.6-rhel5.patch -ext4-include-fixes-2.6-rhel5.patch ext4-remove-cond_resched-calls-rhel5.patch -ext4-filterdata-rhel5.patch ext4-inode-version-rhel5.patch ext4-mmp-rhel5.patch ext4-lookup-dotdot-rhel5.patch @@ -17,15 +15,21 @@ ext4-big-endian-check-2.6-rhel5.patch ext4-alloc-policy-2.6-rhel5.patch ext4-misc-rhel5.patch -ext4-convert-group-lock-rhel5.patch ext4-force_over_16tb-rhel5.patch -ext4-pdir-fix.patch +ext4-pdir-fix-rhel5.patch ext4-osd-iop-common.patch ext4-osd-iam-exports.patch ext4-dynlocks-common.patch ext4-dynlocks-2.6-rhel5.patch ext4-hash-indexed-dir-dotdot-update-rhel5.patch -ext4-ext_generation-sles11.patch +ext4-ext_generation-rhel5.patch ext4-kill-dx_root.patch +ext4_data_in_dirent.patch ext4-extents-mount-option-rhel5.patch ext4-fiemap-2.6-rhel5.patch +ext4-mballoc-skip-grps.patch +ext4-back-dquot-to-rhel54.patch +ext4-disable-mb-cache-rhel5.patch +ext4-remove-extents-warning-rhel5.patch +ext4-disable-delalloc-rhel5.patch +ext4-failed-mount-b23368.patch diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series --- lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series 2010-11-17 04:31:48.000000000 +0100 @@ -9,7 +9,6 @@ ext3-mballoc3-2.6.18.patch ext3-nlinks-2.6-rhel5.patch ext3-remove-cond_resched-calls-2.6.12.patch -ext3-filterdata-sles10.patch ext3-uninit-2.6.18.patch ext3-nanosecond-2.6.18-vanilla.patch ext3-inode-version-2.6.18-vanilla.patch @@ -34,4 +33,6 @@ ext3-hash-indexed-dir-dotdot-update.patch ext3-corrupted-orphans-2.6.patch ext3-kill-dx_root.patch +ext3_data_in_dirent.patch ext3-fiemap-2.6-rhel5.patch +ext3-disable-mb-cache.patch diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series --- lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series 2010-11-17 04:31:48.000000000 +0100 @@ -12,7 +12,6 @@ ext3-mballoc3-sles10.patch ext3-nlinks-2.6.9.patch ext3-remove-cond_resched-calls-2.6.12.patch -ext3-filterdata-sles10.patch ext3-disable-write-bar-by-default-2.6-sles10.patch ext3-uninit-2.6-sles10.patch ext3-nanosecond-2.6-sles10.patch @@ -39,3 +38,4 @@ ext3-dynlocks-2.6-rhel5.patch ext3-hash-indexed-dir-dotdot-update.patch ext3-corrupted-orphans-2.6.patch +ext3-disable-mb-cache.patch diff -Nru lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles11.series lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles11.series --- lustre-1.8.3/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles11.series 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles11.series 2010-11-17 04:31:48.000000000 +0100 @@ -2,11 +2,8 @@ iopen-sles11.patch ext4-map_inode_page-sles11.patch export-ext4-2.6-sles11.patch -ext4-include-fixes-2.6-sles11.patch ext4-remove-cond_resched-calls-sles11.patch -ext4-filterdata-sles11.patch ext4-mmp-sles11.patch -ext4-fiemap-2.6-sles11.patch ext4-lookup-dotdot-sles11.patch ext4-max-dir-size-sles11.patch ext4-print-inum-in-htree-warning-sles11.patch @@ -20,16 +17,15 @@ ext4-alloc-policy-2.6-sles11.patch ext4-disable-delalloc-sles11.patch ext4-lustre-i_version.patch -ext4-lock-cached_extent.patch -ext4-convert-group-lock-sles11.patch ext4-force_over_8tb-sles11.patch -ext4-claim_inode-free_inode-race.patch -ext4_ext_search_right-fix.patch -ext4-pa_lock-typo.patch ext4-pdir-fix.patch ext4-osd-iop-common-sles11.patch ext4-osd-iam-exports.patch ext4-dynlocks-common-sles11.patch -ext4-dynlocks-2.6-rhel5.patch +ext4-dynlocks-2.6.patch ext4-hash-indexed-dir-dotdot-update.patch ext4-disable-write-bar-by-default.patch +ext4-mballoc-skip-grps.patch +ext4-disable-mb-cache-sles11.patch +ext4-bug23780-remove-i_data_sem-from-walk_space.patch +ext4-fiemap-2.6-rhel5.patch diff -Nru lustre-1.8.3/ldiskfs/ldiskfs/autoMakefile.am lustre-1.8.5+dfsg/ldiskfs/ldiskfs/autoMakefile.am --- lustre-1.8.3/ldiskfs/ldiskfs/autoMakefile.am 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/ldiskfs/autoMakefile.am 2010-11-17 04:31:48.000000000 +0100 @@ -24,13 +24,17 @@ series := @top_srcdir@/kernel_patches/series/ldiskfs-$(LDISKFS_SERIES) patches := @top_srcdir@/kernel_patches/patches -sources: $(backfs_sources) $(backfs_headers) $(linux_headers) $(series) - rm -rf linux-stage linux sources $(ldiskfs_SOURCES) +sources: $(backfs_sources) $(backfs_headers) $(linux_headers) $(series) $(trace_headers) + rm -rf linux-stage linux sources trace $(ldiskfs_SOURCES) mkdir -p linux-stage/fs/@BACKFS@ linux-stage/include/linux cp $(backfs_sources) $(backfs_headers) $(backfs_extra) linux-stage/fs/@BACKFS@ if test -n "$(linux_headers)" ; then \ cp $(linux_headers) linux-stage/include/linux; \ fi + if test -n "$(trace_headers)" ; then \ + mkdir -p linux-stage/include/trace/events; \ + cp $(trace_headers) linux-stage/include/trace/events; \ + fi if USE_QUILT ln -s ../$(patches) linux-stage/patches ln -s ../$(series) linux-stage/series @@ -43,7 +47,7 @@ done @echo endif - mkdir linux + mkdir -p linux trace/events @echo -n "Replacing '@BACKFS@' with 'ldiskfs':" for i in $(notdir $(backfs_headers) $(backfs_sources)) $(new_sources) ; do \ echo -n " $$i" ; \ @@ -62,6 +66,12 @@ linux-stage/include/linux/@BACKFS@$$i \ > linux/ldiskfs$$i ; \ done + for i in $(subst @BACKFS@,,$(notdir $(trace_headers))) ; do \ + echo -n " @BACKFS@$$i" ; \ + sed $(strip $(ldiskfs_sed_flags)) \ + linux-stage/include/trace/events/@BACKFS@$$i \ + > trace/events/ldiskfs$$i ; \ + done sed $(strip $(ldiskfs_sed_flags)) \ linux-stage/include/linux/dynlocks.h \ > linux/dynlocks.h @@ -79,7 +89,7 @@ @echo "ldiskfs_LDADD: $(ldiskfs_LDADD)" MOSTLYCLEANFILES := @MOSTLYCLEANFILES@ -CLEANFILES = sources $(notdir $(linux_headers) $(backfs_headers) $(backfs_sources) $(new_sources) $(new_headers)) +CLEANFILES = sources $(notdir $(linux_headers) $(backfs_headers) $(backfs_sources) $(new_sources) $(new_headers) $(trace_headers)) clean: clean-am - rm -rf linux linux-stage ldiskfs*.h + rm -rf linux linux-stage ldiskfs*.h trace diff -Nru lustre-1.8.3/ldiskfs/ldiskfs/autoMakefile.in lustre-1.8.5+dfsg/ldiskfs/ldiskfs/autoMakefile.in --- lustre-1.8.3/ldiskfs/ldiskfs/autoMakefile.in 2010-04-10 02:29:18.000000000 +0200 +++ lustre-1.8.5+dfsg/ldiskfs/ldiskfs/autoMakefile.in 2010-11-17 04:32:09.000000000 +0100 @@ -177,7 +177,7 @@ series := @top_srcdir@/kernel_patches/series/ldiskfs-$(LDISKFS_SERIES) patches := @top_srcdir@/kernel_patches/patches -CLEANFILES = sources $(notdir $(linux_headers) $(backfs_headers) $(backfs_sources) $(new_sources) $(new_headers)) +CLEANFILES = sources $(notdir $(linux_headers) $(backfs_headers) $(backfs_sources) $(new_sources) $(new_headers) $(trace_headers)) subdir = ldiskfs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -351,13 +351,17 @@ linux/ldiskfs%.h: linux-stage/include/linux/@BACKFS@%.h sed $(strip $(ldiskfs_sed_flags)) $< > $@ -sources: $(backfs_sources) $(backfs_headers) $(linux_headers) $(series) - rm -rf linux-stage linux sources $(ldiskfs_SOURCES) +sources: $(backfs_sources) $(backfs_headers) $(linux_headers) $(series) $(trace_headers) + rm -rf linux-stage linux sources trace $(ldiskfs_SOURCES) mkdir -p linux-stage/fs/@BACKFS@ linux-stage/include/linux cp $(backfs_sources) $(backfs_headers) $(backfs_extra) linux-stage/fs/@BACKFS@ if test -n "$(linux_headers)" ; then \ cp $(linux_headers) linux-stage/include/linux; \ fi + if test -n "$(trace_headers)" ; then \ + mkdir -p linux-stage/include/trace/events; \ + cp $(trace_headers) linux-stage/include/trace/events; \ + fi @USE_QUILT_TRUE@ ln -s ../$(patches) linux-stage/patches @USE_QUILT_TRUE@ ln -s ../$(series) linux-stage/series @USE_QUILT_TRUE@ cd linux-stage && quilt push -a -q @@ -367,7 +371,7 @@ @USE_QUILT_FALSE@ patch -s -p1 < ../$(patches)/$$i || exit 1 ; \ @USE_QUILT_FALSE@ done @USE_QUILT_FALSE@ @echo - mkdir linux + mkdir -p linux trace/events @echo -n "Replacing '@BACKFS@' with 'ldiskfs':" for i in $(notdir $(backfs_headers) $(backfs_sources)) $(new_sources) ; do \ echo -n " $$i" ; \ @@ -386,6 +390,12 @@ linux-stage/include/linux/@BACKFS@$$i \ > linux/ldiskfs$$i ; \ done + for i in $(subst @BACKFS@,,$(notdir $(trace_headers))) ; do \ + echo -n " @BACKFS@$$i" ; \ + sed $(strip $(ldiskfs_sed_flags)) \ + linux-stage/include/trace/events/@BACKFS@$$i \ + > trace/events/ldiskfs$$i ; \ + done sed $(strip $(ldiskfs_sed_flags)) \ linux-stage/include/linux/dynlocks.h \ > linux/dynlocks.h @@ -402,7 +412,7 @@ @echo "ldiskfs_LDADD: $(ldiskfs_LDADD)" clean: clean-am - rm -rf linux linux-stage ldiskfs*.h + rm -rf linux linux-stage ldiskfs*.h trace # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -Nru lustre-1.8.3/ldiskfs/ldiskfs/Makefile.in lustre-1.8.5+dfsg/ldiskfs/ldiskfs/Makefile.in --- lustre-1.8.3/ldiskfs/ldiskfs/Makefile.in 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/ldiskfs/Makefile.in 2010-11-17 04:31:48.000000000 +0100 @@ -7,6 +7,7 @@ backfs_headers := $(wildcard @LINUX@/fs/@BACKFS@/*.h) linux_headers := $(wildcard @LINUX@/include/linux/@BACKFS@*.h) +trace_headers := $(wildcard @LINUX@/include/trace/events/@BACKFS@*.h) backfs_sources := $(filter-out %.mod.c,$(wildcard @LINUX@/fs/@BACKFS@/*.c)) diff -Nru lustre-1.8.3/ldiskfs/lustre-ldiskfs.spec.in lustre-1.8.5+dfsg/ldiskfs/lustre-ldiskfs.spec.in --- lustre-1.8.3/ldiskfs/lustre-ldiskfs.spec.in 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/ldiskfs/lustre-ldiskfs.spec.in 2010-11-17 04:31:48.000000000 +0100 @@ -16,6 +16,9 @@ Provides the ldiskfs backend file system kernel module, used by servers in the Lustre file system, for Linux %{kversion}. +%if 0%{?suse_version} +%debug_package +%endif %prep %setup -q @@ -45,7 +48,7 @@ make install DESTDIR=$RPM_BUILD_ROOT %files -%attr(-, root, root) /lib/modules/%{kversion}/kernel/fs/lustre-ldiskfs +%attr(-, root, root) /lib/modules/%{kversion}/updates/kernel/fs/lustre-ldiskfs %post if [ -f /boot/System.map-%{kversion} ]; then diff -Nru lustre-1.8.3/libsysio/Makefile.in lustre-1.8.5+dfsg/libsysio/Makefile.in --- lustre-1.8.3/libsysio/Makefile.in 2010-04-10 02:29:14.000000000 +0200 +++ lustre-1.8.5+dfsg/libsysio/Makefile.in 2010-11-17 04:32:05.000000000 +0100 @@ -698,7 +698,7 @@ || exit 1; \ fi; \ done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + -find $(distdir) -type d ! -perm -755 -exec chmod a+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ diff -Nru lustre-1.8.3/lnet/autoconf/lustre-lnet.m4 lustre-1.8.5+dfsg/lnet/autoconf/lustre-lnet.m4 --- lustre-1.8.3/lnet/autoconf/lustre-lnet.m4 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/autoconf/lustre-lnet.m4 2010-11-17 04:31:48.000000000 +0100 @@ -1065,12 +1065,17 @@ # LN_FUNC_SHOW_TASK # # we export show_task(), but not all kernels have it (yet) +# also check sched_show_task() in here, since 2.6.27. # AC_DEFUN([LN_FUNC_SHOW_TASK], [LB_CHECK_SYMBOL_EXPORT([show_task], [kernel/ksyms.c kernel/sched.c],[ AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported]) ],[ + LB_CHECK_SYMBOL_EXPORT([sched_show_task], + [kernel/ksyms.c kernel/sched.c],[ + AC_DEFINE(HAVE_SCHED_SHOW_TASK, 1, [sched_show_task is exported]) + ],[]) ]) ]) @@ -1103,6 +1108,7 @@ tmp_flags="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE([ + #include #include #include int main(void) { @@ -1128,6 +1134,7 @@ tmp_flags="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE([ + #include #include #include int main(void) { @@ -1152,6 +1159,7 @@ tmp_flags="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE([ + #include #include #include int main(void) { @@ -1339,7 +1347,7 @@ # AC_DEFUN([LN_FUNC_DUMP_TRACE], [LB_CHECK_SYMBOL_EXPORT([dump_trace], -[kernel/ksyms.c arch/${LINUX_ARCH%_64}/kernel/traps_64.c],[ +[kernel/ksyms.c arch/${LINUX_ARCH%_64}/kernel/traps_64.c arch/x86/kernel/dumpstack_32.c arch/x86/kernel/dumpstack_64.c],[ tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" AC_MSG_CHECKING([whether we can really use dump_trace]) @@ -1510,6 +1518,50 @@ EXTRA_KCFLAGS="$tmp_flags" ]) +# See if sysctl proc_handler wants only 5 arguments (since 2.6.32) +AC_DEFUN([LN_5ARGS_SYSCTL_PROC_HANDLER], +[AC_MSG_CHECKING([if sysctl proc_handler wants 5 args]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct ctl_table *table = NULL; + int write = 1; + void __user *buffer = NULL; + size_t *lenp = NULL; + loff_t *ppos = NULL; + + proc_handler *proc_handler; + proc_handler(table, write, buffer, lenp, ppos); + +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_5ARGS_SYSCTL_PROC_HANDLER, 1, + [sysctl proc_handler wants 5 args]) +],[ + AC_MSG_RESULT(no) +]) +]) + +# +# LN_HAVE_IS_COMPAT_TASK +# +# Added in 2.6.17, it wasn't until 2.6.29 that all +# Linux architectures have is_compat_task() +# +AC_DEFUN([LN_HAVE_IS_COMPAT_TASK], +[AC_MSG_CHECKING([if is_compat_task() is declared]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + int i = is_compat_task(); +],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_IS_COMPAT_TASK, 1, [is_compat_task() is available]) +],[ + AC_MSG_RESULT([no]) +]) +]) + # # LN_PROG_LINUX # @@ -1544,6 +1596,7 @@ LN_TASK_RCU # 2.6.18 LN_TASKLIST_LOCK +LN_HAVE_IS_COMPAT_TASK # 2.6.19 LN_KMEM_CACHE_DESTROY_INT LN_ATOMIC_PANIC_NOTIFIER @@ -1567,6 +1620,8 @@ LN_STRUCT_CRED_IN_TASK # 2.6.30 LN_FUNC_UNSHARE_FS_STRUCT +# 2.6.32 +LN_5ARGS_SYSCTL_PROC_HANDLER ]) # diff -Nru lustre-1.8.3/lnet/ChangeLog lustre-1.8.5+dfsg/lnet/ChangeLog --- lustre-1.8.3/lnet/ChangeLog 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/ChangeLog 2010-11-17 04:31:48.000000000 +0100 @@ -1,3 +1,62 @@ +2010-10-29 Oracle, Inc. + * version 1.8.5 + * Support for networks: + socklnd - any kernel supported by Lustre, + qswlnd - Qsnet kernel modules 5.20 and later, + openiblnd - IbGold 1.8.2, + o2iblnd - OFED 1.3, 1.4.1, 1.4.2, 1.5.1 and 1.5.2 + viblnd - Voltaire ibhost 3.4.5 and later, + ciblnd - Topspin 3.2.0, + iiblnd - Infiniserv 3.3 + PathBits patch, + gmlnd - GM 2.1.22 and later, + mxlnd - MX 1.2.10 or later, + ptllnd - Portals 3.3 / UNICOS/lc 1.5.x, 2.0.x + +Severity : normal +Bugzilla : 23179 +Description: MDS node unresponsive +Details : improve hash distribution, doubled hash size for the lnet cookie + hash. + +------------------------------------------------------------------------------- + +2010-07-31 Oracle, Inc. + * version 1.8.4 + * Support for networks: + socklnd - any kernel supported by Lustre, + qswlnd - Qsnet kernel modules 5.20 and later, + openiblnd - IbGold 1.8.2, + o2iblnd - OFED 1.3, 1.4.1, 1.4.2 and 1.5.1 + viblnd - Voltaire ibhost 3.4.5 and later, + ciblnd - Topspin 3.2.0, + iiblnd - Infiniserv 3.3 + PathBits patch, + gmlnd - GM 2.1.22 and later, + mxlnd - MX 1.2.10 or later, + ptllnd - Portals 3.3 / UNICOS/lc 1.5.x, 2.0.x + +Severity : normal +Bugzilla : 23076 +Description: With peer health detection, o2iblnd makes only one attempt to + reconnect which is not enough with nodes running lustre 1.6 + because of proto version mismatch. Fix o2iblnd to retry one more + time. + +Severity : enhancement +Bugzilla : 16909 +Description: Quiet some LNET messages + +Severity : enhancement +Bugzilla : 22787 +Description: Add OFED 1.5.1 support + +Severity : enhancement +Bugzilla : 21678 +Description: The peer health code lacked some important debugging info in + lnd_query code paths. We've added necessary debug prints, + not just for bug 21678, but also for future troubleshooting. + +------------------------------------------------------------------------------- + 2010-04-30 Oracle, Inc. * version 1.8.3 * Support for networks: @@ -12,6 +71,43 @@ mxlnd - MX 1.2.10 or later, ptllnd - Portals 3.3 / UNICOS/lc 1.5.x, 2.0.x +Severity : normal +Bugzilla : 22556 +Description: lst: check # of remained RPCs before aborting +Details : lstcon_rpc_trans_postwait() calls lstcon_rpc_trans_abort() only + when the transaction is timeout, so if we got "end_session" to + interrupt waiting on transaction, then we can hit the assertion + failure ASSERTION(crpc->crp_stamp != 0) + +Severity : normal +Bugzilla : 20615 +Description: print more debug info for timedout ZC-req +Details : Print more information for timedout ZC-req and partial + received connection. Close connection for timedout ZC-req + Always send ZC_ACK on non-blocking connection(BULK_IN) + +Severity : normal +Bugzilla : 21945 +Description: Adding WIRE_ATTR attribute to LNET types +Details : LST nodes on different platforms might not communicate well + due to the lack of WIRE_ATTR attribute in some LNET structures + traversing network. The patch fixes the problem by adding + WIRE_ATTR where needed. + +Severity : normal +Bugzilla : 21619 +Description: hash MEs on RDMA portal +Details : RDMA portal can have very long ME list on client side, which + will trigger soft lockup because of long searching on list. + Hash MEs on RDMA portal can resolve this problem. + +Severity : normal +Bugzilla : 21911 +Description: fix for double release of ibc_lock in o2iblnd +Details : Re-acquire ibc_lock in kiblnd_post_tx_locked(). Add extra + reference to conn before calling kiblnd_post_tx_locked() + to avoid scenario when conn disappears inside + kiblnd_post_tx_locked(). ------------------------------------------------------------------------------- 2010-01-29 Sun Microsystems, Inc. diff -Nru lustre-1.8.3/lnet/include/libcfs/curproc.h lustre-1.8.5+dfsg/lnet/include/libcfs/curproc.h --- lustre-1.8.3/lnet/include/libcfs/curproc.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/libcfs/curproc.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -76,6 +76,9 @@ typedef __u32 cfs_cap_t; +/* check if task is running in compat mode.*/ +int cfs_curproc_is_32bit(void); + #define CFS_CAP_CHOWN 0 #define CFS_CAP_DAC_OVERRIDE 1 #define CFS_CAP_DAC_READ_SEARCH 2 diff -Nru lustre-1.8.3/lnet/include/libcfs/darwin/darwin-prim.h lustre-1.8.5+dfsg/lnet/include/libcfs/darwin/darwin-prim.h --- lustre-1.8.3/lnet/include/libcfs/darwin/darwin-prim.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/libcfs/darwin/darwin-prim.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -286,6 +286,11 @@ * unefficient and can be harmful if we have many elements to process */ #define cfs_cond_resched() cfs_schedule_timeout(CFS_TASK_INTERRUPTIBLE, 1) +static inline int cfs_cond_resched_lock(cfs_spinlock_t *lock) +{ + return 0; +} + #define __wait_event(wq, condition) \ do { \ struct cfs_waitlink __wait; \ diff -Nru lustre-1.8.3/lnet/include/libcfs/linux/libcfs.h lustre-1.8.5+dfsg/lnet/include/libcfs/linux/libcfs.h --- lustre-1.8.3/lnet/include/libcfs/linux/libcfs.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/libcfs/linux/libcfs.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -50,8 +50,8 @@ #include #include #include -#include #include +#include #include #include diff -Nru lustre-1.8.3/lnet/include/libcfs/linux/linux-prim.h lustre-1.8.5+dfsg/lnet/include/libcfs/linux/linux-prim.h --- lustre-1.8.3/lnet/include/libcfs/linux/linux-prim.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/libcfs/linux/linux-prim.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -159,14 +159,17 @@ #define cfs_schedule() schedule() #define cfs_kthread_run(fn, data, fmt, arg...) kthread_run(fn, data, fmt, ##arg) -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -static inline void cfs_cond_resched(void) +#define cfs_cond_resched() cond_resched() + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12)) +/* cond_resched_lock() is bogus for kernels prior to 2.6.12, + * see bug 23039 */ +static inline int cfs_cond_resched_lock(cfs_spinlock_t *lock) { - if (current->need_resched) - schedule(); + return 0; } #else -#define cfs_cond_resched() cond_resched() +#define cfs_cond_resched_lock(lock) cond_resched_lock(lock) #endif /* Kernel thread */ @@ -301,53 +304,7 @@ #define cfs_waitq_wait_event_timeout wait_event_timeout #endif -#ifndef wait_event_interruptible_timeout /* Only for RHEL3 2.4.21 kernel */ -#define __wait_event_interruptible_timeout(wq, condition, timeout, ret) \ -do { \ - int __ret = 0; \ - if (!(condition)) { \ - wait_queue_t __wait; \ - unsigned long expire; \ - \ - init_waitqueue_entry(&__wait, current); \ - expire = timeout + jiffies; \ - add_wait_queue(&wq, &__wait); \ - for (;;) { \ - set_current_state(TASK_INTERRUPTIBLE); \ - if (condition) \ - break; \ - if (jiffies > expire) { \ - ret = jiffies - expire; \ - break; \ - } \ - if (!signal_pending(current)) { \ - schedule_timeout(timeout); \ - continue; \ - } \ - ret = -ERESTARTSYS; \ - break; \ - } \ - current->state = TASK_RUNNING; \ - remove_wait_queue(&wq, &__wait); \ - } \ -} while (0) - -/* - retval == 0; condition met; we're good. - retval < 0; interrupted by signal. - retval > 0; timed out. -*/ -#define cfs_waitq_wait_event_interruptible_timeout(wq, condition, timeout) \ -({ \ - int __ret = 0; \ - if (!(condition)) \ - __wait_event_interruptible_timeout(wq, condition, \ - timeout, __ret); \ - __ret; \ -}) -#else #define cfs_waitq_wait_event_interruptible_timeout wait_event_interruptible_timeout -#endif #define cfs_wait_event_interruptible_exclusive(wq, condition, rc) \ ({ \ diff -Nru lustre-1.8.3/lnet/include/libcfs/linux/portals_compat25.h lustre-1.8.5+dfsg/lnet/include/libcfs/linux/portals_compat25.h --- lustre-1.8.3/lnet/include/libcfs/linux/portals_compat25.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/libcfs/linux/portals_compat25.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -145,6 +145,18 @@ void __user *buffer, size_t *lenp) #define DECLARE_LL_PROC_PPOS_DECL loff_t *ppos = &filp->f_pos #else +#ifdef HAVE_5ARGS_SYSCTL_PROC_HANDLER +#define ll_proc_dointvec(table, write, filp, buffer, lenp, ppos) \ + proc_dointvec(table, write, buffer, lenp, ppos); + +#define ll_proc_dolongvec(table, write, filp, buffer, lenp, ppos) \ + proc_doulongvec_minmax(table, write, buffer, lenp, ppos); +#define ll_proc_dostring(table, write, filp, buffer, lenp, ppos) \ + proc_dostring(table, write, buffer, lenp, ppos); +#define LL_PROC_PROTO(name) \ + name(cfs_sysctl_table_t *table, int write, \ + void __user *buffer, size_t *lenp, loff_t *ppos) +#else #define ll_proc_dointvec(table, write, filp, buffer, lenp, ppos) \ proc_dointvec(table, write, filp, buffer, lenp, ppos); #define ll_proc_dostring(table, write, filp, buffer, lenp, ppos) \ @@ -152,6 +164,7 @@ #define LL_PROC_PROTO(name) \ name(cfs_sysctl_table_t *table, int write, struct file *filp, \ void __user *buffer, size_t *lenp, loff_t *ppos) +#endif #define DECLARE_LL_PROC_PPOS_DECL #endif diff -Nru lustre-1.8.3/lnet/include/libcfs/user-bitops.h lustre-1.8.5+dfsg/lnet/include/libcfs/user-bitops.h --- lustre-1.8.3/lnet/include/libcfs/user-bitops.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/libcfs/user-bitops.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -84,11 +84,11 @@ return 0; #if BITS_PER_LONG == 64 - pos += 32; - - if ((data & 0xFFFFFFFF) == 0) { - data <<= 32; - pos -= 32; + /* If any bit of the high 32 bits are set, shift the high + * 32 bits down and pretend like it is a 32-bit value. */ + if ((data & 0xFFFFFFFF00000000llu)) { + data >>= 32; + pos += 32; } #endif diff -Nru lustre-1.8.3/lnet/include/libcfs/user-prim.h lustre-1.8.5+dfsg/lnet/include/libcfs/user-prim.h --- lustre-1.8.3/lnet/include/libcfs/user-prim.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/libcfs/user-prim.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -99,7 +99,8 @@ cfs_waitlink_t l; \ cfs_waitq_timedwait(&l, s, t); \ } while (0) -#define cfs_cond_resched() do {} while(0) +#define cfs_cond_resched() do {} while(0) +#define cfs_cond_resched_lock(l) (0) #define CFS_TASK_INTERRUPTIBLE (0) #define CFS_TASK_UNINT (0) diff -Nru lustre-1.8.3/lnet/include/lnet/lib-lnet.h lustre-1.8.5+dfsg/lnet/include/lnet/lib-lnet.h --- lustre-1.8.3/lnet/include/lnet/lib-lnet.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/lnet/lib-lnet.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lnet/include/lnet/lib-types.h lustre-1.8.5+dfsg/lnet/include/lnet/lib-types.h --- lustre-1.8.3/lnet/include/lnet/lib-types.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/lnet/lib-types.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -304,7 +304,8 @@ #define LNET_COOKIE_TYPE_MD 1 #define LNET_COOKIE_TYPE_ME 2 #define LNET_COOKIE_TYPE_EQ 3 -#define LNET_COOKIE_TYPES 4 +#define LNET_COOKIE_TYPE_BITS 2 +#define LNET_COOKIE_TYPES (1 << LNET_COOKIE_TYPE_BITS) /* LNET_COOKIE_TYPES must be a power of 2, so the cookie type can be * extracted by masking with (LNET_COOKIE_TYPES - 1) */ diff -Nru lustre-1.8.3/lnet/include/lnet/lnetst.h lustre-1.8.5+dfsg/lnet/include/lnet/lnetst.h --- lustre-1.8.3/lnet/include/lnet/lnetst.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/include/lnet/lnetst.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lnet/klnds/o2iblnd/o2iblnd.c lustre-1.8.5+dfsg/lnet/klnds/o2iblnd/o2iblnd.c --- lustre-1.8.3/lnet/klnds/o2iblnd/o2iblnd.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/klnds/o2iblnd/o2iblnd.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -1078,6 +1078,7 @@ kiblnd_query (lnet_ni_t *ni, lnet_nid_t nid, cfs_time_t *when) { cfs_time_t last_alive = 0; + cfs_time_t now = cfs_time_current(); rwlock_t *glock = &kiblnd_data.kib_global_lock; kib_peer_t *peer; unsigned long flags; @@ -1101,6 +1102,10 @@ * and connection establishment with a NULL tx */ if (peer == NULL) kiblnd_launch_tx(ni, NULL, nid); + + CDEBUG(D_NET, "Peer %s %p, alive %ld secs ago\n", + libcfs_nid2str(nid), peer, + last_alive ? cfs_duration_sec(now - last_alive) : -1); return; } diff -Nru lustre-1.8.3/lnet/klnds/o2iblnd/o2iblnd_cb.c lustre-1.8.5+dfsg/lnet/klnds/o2iblnd/o2iblnd_cb.c --- lustre-1.8.3/lnet/klnds/o2iblnd/o2iblnd_cb.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/klnds/o2iblnd/o2iblnd_cb.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -2348,8 +2348,12 @@ write_lock_irqsave(&kiblnd_data.kib_global_lock, flags); /* retry connection if it's still needed and no other connection - * attempts (active or passive) are in progress */ - if (!list_empty(&peer->ibp_tx_queue) && + * attempts (active or passive) are in progress + * NB: reconnect is still needed even when ibp_tx_queue is + * empty if ibp_version != version because reconnect may be + * initiated by kiblnd_query() */ + if ((!list_empty(&peer->ibp_tx_queue) || + peer->ibp_version != version) && peer->ibp_connecting == 1 && peer->ibp_accepting == 0) { retry = 1; diff -Nru lustre-1.8.3/lnet/klnds/ptllnd/ptllnd_peer.c lustre-1.8.5+dfsg/lnet/klnds/ptllnd/ptllnd_peer.c --- lustre-1.8.3/lnet/klnds/ptllnd/ptllnd_peer.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/klnds/ptllnd/ptllnd_peer.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lnet/klnds/socklnd/socklnd.c lustre-1.8.5+dfsg/lnet/klnds/socklnd/socklnd.c --- lustre-1.8.3/lnet/klnds/socklnd/socklnd.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/klnds/socklnd/socklnd.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -1810,6 +1810,7 @@ { int connect = 1; cfs_time_t last_alive = 0; + cfs_time_t now = cfs_time_current(); ksock_peer_t *peer = NULL; rwlock_t *glock = &ksocknal_data.ksnd_global_lock; lnet_process_id_t id = {.nid = nid, .pid = LUSTRE_SRV_LNET_PID}; @@ -1830,7 +1831,7 @@ /* something got ACKed */ conn->ksnc_tx_deadline = cfs_time_shift(*ksocknal_tunables.ksnd_timeout); - peer->ksnp_last_alive = cfs_time_current(); + peer->ksnp_last_alive = now; conn->ksnc_tx_bufnob = bufnob; } } @@ -1845,6 +1846,11 @@ if (last_alive != 0) *when = last_alive; + CDEBUG(D_NET, "Peer %s %p, alive %ld secs ago, connect %d\n", + libcfs_nid2str(nid), peer, + last_alive ? cfs_duration_sec(now - last_alive) : -1, + connect); + if (!connect) return; diff -Nru lustre-1.8.3/lnet/klnds/socklnd/socklnd_cb.c lustre-1.8.5+dfsg/lnet/klnds/socklnd/socklnd_cb.c --- lustre-1.8.3/lnet/klnds/socklnd/socklnd_cb.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/klnds/socklnd/socklnd_cb.c 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * * Author: Zach Brown * Author: Peter J. Braam @@ -780,6 +780,7 @@ ksock_route_t * ksocknal_find_connectable_route_locked (ksock_peer_t *peer) { + cfs_time_t now = cfs_time_current(); struct list_head *tmp; ksock_route_t *route; @@ -795,11 +796,17 @@ if ((ksocknal_route_mask() & ~route->ksnr_connected) == 0) continue; - /* too soon to retry this guy? */ if (!(route->ksnr_retry_interval == 0 || /* first attempt */ - cfs_time_aftereq (cfs_time_current(), - route->ksnr_timeout))) + cfs_time_aftereq(now, route->ksnr_timeout))) { + CDEBUG(D_NET, + "Too soon to retry route %u.%u.%u.%u " + "(cnted %d, interval %ld, %ld secs later)\n", + HIPQUAD(route->ksnr_ipaddr), + route->ksnr_connected, + route->ksnr_retry_interval, + cfs_duration_sec(route->ksnr_timeout - now)); continue; + } return (route); } diff -Nru lustre-1.8.3/lnet/klnds/socklnd/socklnd.h lustre-1.8.5+dfsg/lnet/klnds/socklnd/socklnd.h --- lustre-1.8.3/lnet/klnds/socklnd/socklnd.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/klnds/socklnd/socklnd.h 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * * Author: Zach Brown * Author: Peter J. Braam diff -Nru lustre-1.8.3/lnet/klnds/socklnd/socklnd_modparams.c lustre-1.8.5+dfsg/lnet/klnds/socklnd/socklnd_modparams.c --- lustre-1.8.3/lnet/klnds/socklnd/socklnd_modparams.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/klnds/socklnd/socklnd_modparams.c 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * * Author: Eric Barton * diff -Nru lustre-1.8.3/lnet/libcfs/autoMakefile.am lustre-1.8.5+dfsg/lnet/libcfs/autoMakefile.am --- lustre-1.8.3/lnet/libcfs/autoMakefile.am 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/libcfs/autoMakefile.am 2010-11-17 04:31:48.000000000 +0100 @@ -25,7 +25,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved +# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. # Use is subject to license terms. # diff -Nru lustre-1.8.3/lnet/libcfs/autoMakefile.in lustre-1.8.5+dfsg/lnet/libcfs/autoMakefile.in --- lustre-1.8.3/lnet/libcfs/autoMakefile.in 2010-04-10 02:29:09.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/libcfs/autoMakefile.in 2010-11-17 04:32:00.000000000 +0100 @@ -41,7 +41,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved +# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. # Use is subject to license terms. # diff -Nru lustre-1.8.3/lnet/libcfs/debug.c lustre-1.8.5+dfsg/lnet/libcfs/debug.c --- lustre-1.8.3/lnet/libcfs/debug.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/libcfs/debug.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lnet/libcfs/linux/linux-curproc.c lustre-1.8.5+dfsg/lnet/libcfs/linux/linux-curproc.c --- lustre-1.8.3/lnet/libcfs/linux/linux-curproc.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/libcfs/linux/linux-curproc.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -42,6 +42,8 @@ #include #include +#include +#include #define DEBUG_SUBSYSTEM S_LNET @@ -207,6 +209,22 @@ return capable(cfs_cap_unpack(cap)); } +/* Check if task is running in 32-bit API mode, for the purpose of + * userspace binary interfaces. On 32-bit Linux this is (unfortunately) + * always true, even if the application is using LARGEFILE64 and 64-bit + * APIs, because Linux provides no way for the filesystem to know if it + * is called via 32-bit or 64-bit APIs. Other clients may vary. On + * 64-bit systems, this will only be true if the binary is calling a + * 32-bit system call. */ +int cfs_curproc_is_32bit(void) +{ +#ifdef HAVE_IS_COMPAT_TASK + return is_compat_task(); +#else + return (BITS_PER_LONG == 32); +#endif +} + EXPORT_SYMBOL(cfs_curproc_uid); EXPORT_SYMBOL(cfs_curproc_pid); EXPORT_SYMBOL(cfs_curproc_euid); @@ -227,6 +245,7 @@ EXPORT_SYMBOL(cfs_curproc_cap_pack); EXPORT_SYMBOL(cfs_curproc_cap_unpack); EXPORT_SYMBOL(cfs_capable); +EXPORT_SYMBOL(cfs_curproc_is_32bit); /* * Local variables: diff -Nru lustre-1.8.3/lnet/libcfs/linux/linux-fs.c lustre-1.8.5+dfsg/lnet/libcfs/linux/linux-fs.c --- lustre-1.8.3/lnet/libcfs/linux/linux-fs.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/libcfs/linux/linux-fs.c 2010-11-17 04:31:48.000000000 +0100 @@ -72,6 +72,10 @@ { mm_segment_t fs; ssize_t size = 0; + loff_t off = 0; + + if (!offset) + offset = &off; fs = get_fs(); set_fs(KERNEL_DS); diff -Nru lustre-1.8.3/lnet/libcfs/linux/linux-proc.c lustre-1.8.5+dfsg/lnet/libcfs/linux/linux-proc.c --- lustre-1.8.3/lnet/libcfs/linux/linux-proc.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/libcfs/linux/linux-proc.c 2010-11-17 04:31:48.000000000 +0100 @@ -76,7 +76,9 @@ #include #include "tracefile.h" +#ifdef CONFIG_SYSCTL static cfs_sysctl_table_header_t *lnet_table_header = NULL; +#endif extern char lnet_upcall[1024]; /** * The path of debug log dump upcall script. @@ -488,6 +490,7 @@ {0} }; +#ifdef CONFIG_SYSCTL static cfs_sysctl_table_t top_table[] = { { .ctl_name = CTL_LNET, @@ -504,7 +507,6 @@ int insert_proc(void) { -#ifdef CONFIG_SYSCTL if (lnet_table_header == NULL) lnet_table_header = cfs_register_sysctl_table(top_table, 0); #endif diff -Nru lustre-1.8.3/lnet/libcfs/module.c lustre-1.8.5+dfsg/lnet/libcfs/module.c --- lustre-1.8.3/lnet/libcfs/module.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/libcfs/module.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -222,7 +222,7 @@ static int libcfs_ioctl(struct cfs_psdev_file *pfile, unsigned long cmd, void *arg) { - char buf[1024]; + char buf[1000]; int err = -EINVAL; struct libcfs_ioctl_data *data; ENTRY; @@ -251,7 +251,7 @@ RETURN(0); #if LWT_SUPPORT case IOC_LIBCFS_LWT_CONTROL: - err = lwt_control ((data->ioc_flags & 1) != 0, + err = lwt_control ((data->ioc_flags & 1) != 0, (data->ioc_flags & 2) != 0); break; @@ -323,7 +323,7 @@ err = hand->handle_ioctl(cmd, data); if (err != -EINVAL) { if (err == 0) - err = libcfs_ioctl_popdata(arg, + err = libcfs_ioctl_popdata(arg, data, sizeof (*data)); break; } diff -Nru lustre-1.8.3/lnet/libcfs/tracefile.c lustre-1.8.5+dfsg/lnet/libcfs/tracefile.c --- lustre-1.8.3/lnet/libcfs/tracefile.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/libcfs/tracefile.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lnet/lnet/api-ni.c lustre-1.8.5+dfsg/lnet/lnet/api-ni.c --- lustre-1.8.3/lnet/lnet/api-ni.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/lnet/api-ni.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -513,7 +513,7 @@ /* Arbitrary choice of hash table size */ #ifdef __KERNEL__ - the_lnet.ln_lh_hash_size = CFS_PAGE_SIZE / sizeof (struct list_head); + the_lnet.ln_lh_hash_size = (2 * CFS_PAGE_SIZE) / sizeof (struct list_head); #else the_lnet.ln_lh_hash_size = (MAX_MES + MAX_MDS + MAX_EQS)/4; #endif @@ -551,7 +551,7 @@ if ((cookie & (LNET_COOKIE_TYPES - 1)) != type) return (NULL); - hash = ((unsigned int)cookie) % the_lnet.ln_lh_hash_size; + hash = ((unsigned int)(cookie >> LNET_COOKIE_TYPE_BITS)) % the_lnet.ln_lh_hash_size; list = &the_lnet.ln_lh_hash_table[hash]; list_for_each (el, list) { @@ -575,7 +575,7 @@ lh->lh_cookie = the_lnet.ln_next_object_cookie | type; the_lnet.ln_next_object_cookie += LNET_COOKIE_TYPES; - hash = ((unsigned int)lh->lh_cookie) % the_lnet.ln_lh_hash_size; + hash = ((unsigned int)(lh->lh_cookie >> LNET_COOKIE_TYPE_BITS)) % the_lnet.ln_lh_hash_size; list_add (&lh->lh_hash_chain, &the_lnet.ln_lh_hash_table[hash]); } diff -Nru lustre-1.8.3/lnet/lnet/lib-me.c lustre-1.8.5+dfsg/lnet/lnet/lib-me.c --- lustre-1.8.3/lnet/lnet/lib-me.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/lnet/lib-me.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lnet/lnet/lib-move.c lustre-1.8.5+dfsg/lnet/lnet/lib-move.c --- lustre-1.8.3/lnet/lnet/lib-move.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/lnet/lib-move.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -1332,8 +1332,9 @@ src_ni = lnet_nid2ni_locked(src_nid); if (src_ni == NULL) { LNET_UNLOCK(); - CERROR("Can't send to %s: src %s is not a local nid\n", - libcfs_nid2str(dst_nid), libcfs_nid2str(src_nid)); + LCONSOLE_WARN("Can't send to %s: src %s is not a " + "local nid\n", libcfs_nid2str(dst_nid), + libcfs_nid2str(src_nid)); return -EINVAL; } LASSERT (!msg->msg_routing); @@ -1352,8 +1353,9 @@ lnet_ni_decref_locked(local_ni); lnet_ni_decref_locked(src_ni); LNET_UNLOCK(); - CERROR("No route to %s via from %s\n", - libcfs_nid2str(dst_nid), libcfs_nid2str(src_nid)); + LCONSOLE_WARN("No route to %s via from %s\n", + libcfs_nid2str(dst_nid), + libcfs_nid2str(src_nid)); return -EINVAL; } @@ -1376,8 +1378,8 @@ lnet_ni_decref_locked(src_ni); /* lp has ref on src_ni; lose mine */ if (rc != 0) { LNET_UNLOCK(); - CERROR("Error %d finding peer %s\n", rc, - libcfs_nid2str(dst_nid)); + LCONSOLE_WARN("Error %d finding peer %s\n", rc, + libcfs_nid2str(dst_nid)); /* ENOMEM or shutting down */ return rc; } @@ -1402,7 +1404,8 @@ if (src_ni != NULL) lnet_ni_decref_locked(src_ni); LNET_UNLOCK(); - CERROR("No route to %s\n", libcfs_id2str(msg->msg_target)); + LCONSOLE_WARN("No route to %s\n", + libcfs_id2str(msg->msg_target)); return -EHOSTUNREACH; } @@ -1428,9 +1431,10 @@ lnet_ni_decref_locked(src_ni); LNET_UNLOCK(); - CERROR("No route to %s via %s (all routers down)\n", - libcfs_id2str(msg->msg_target), - libcfs_nid2str(src_nid)); + LCONSOLE_WARN("No route to %s via %s " + "(all routers down)\n", + libcfs_id2str(msg->msg_target), + libcfs_nid2str(src_nid)); return -EHOSTUNREACH; } @@ -2437,7 +2441,7 @@ rc = lnet_send(self, msg); if (rc != 0) { - CERROR("Error sending PUT to %s: %d\n", + CNETERR("Error sending PUT to %s: %d\n", libcfs_id2str(target), rc); lnet_finalize (NULL, msg, rc); } @@ -2614,7 +2618,7 @@ rc = lnet_send(self, msg); if (rc < 0) { - CERROR("error sending GET to %s: %d\n", + CNETERR( "Error sending GET to %s: %d\n", libcfs_id2str(target), rc); lnet_finalize (NULL, msg, rc); } diff -Nru lustre-1.8.3/lnet/lnet/router_proc.c lustre-1.8.5+dfsg/lnet/lnet/router_proc.c --- lustre-1.8.3/lnet/lnet/router_proc.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/lnet/router_proc.c 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * * This file is part of Portals * http://sourceforge.net/projects/sandiaportals/ @@ -51,6 +51,40 @@ #define PSDEV_LNET_NIS CTL_UNNUMBERED #endif +/* + * NB: we don't use the highest bit of *ppos because it's signed; + * next 9 bits is used to stash idx (assuming that + * LNET_PEER_HASHSIZE < 512) + */ +#define LNET_LOFFT_BITS (sizeof(loff_t) * 8) +#define LNET_VERSION_BITS MAX(((MIN(LNET_LOFFT_BITS, 64)) / 4), 8) +#define LNET_PHASH_IDX_BITS 9 +#define LNET_PHASH_NUM_BITS (LNET_LOFFT_BITS - 1 -\ + LNET_VERSION_BITS - LNET_PHASH_IDX_BITS) +#define LNET_PHASH_BITS (LNET_PHASH_IDX_BITS + LNET_PHASH_NUM_BITS) + +#define LNET_VERSION_BITMASK ((1ULL << LNET_VERSION_BITS) - 1) +#define LNET_PHASH_IDX_BITMASK ((1ULL << LNET_PHASH_IDX_BITS) - 1) +#define LNET_PHASH_NUM_BITMASK ((1ULL << LNET_PHASH_NUM_BITS) - 1) + +#define LNET_VERSION_MASK (LNET_VERSION_BITMASK << LNET_PHASH_BITS) +#define LNET_PHASH_IDX_MASK (LNET_PHASH_IDX_BITMASK << LNET_PHASH_NUM_BITS) +#define LNET_PHASH_NUM_MASK (LNET_PHASH_NUM_BITMASK) + +#define LNET_VERSION_GET(pos) (int)(((pos) & LNET_VERSION_MASK) >> \ + LNET_PHASH_BITS) +#define LNET_PHASH_IDX_GET(pos) (int)(((pos) & LNET_PHASH_IDX_MASK) >> \ + LNET_PHASH_NUM_BITS) +#define LNET_PHASH_NUM_GET(pos) (int)((pos) & LNET_PHASH_NUM_MASK) +#define LNET_VERSION_VALID_MASK(ver) \ + ((unsigned int)((ver) & LNET_VERSION_BITMASK)) +#define LNET_PHASH_POS_MAKE(ver, idx, num) \ + (((((loff_t)(ver)) & LNET_VERSION_BITMASK) << \ + LNET_PHASH_BITS) | \ + ((((loff_t)(idx)) & LNET_PHASH_IDX_BITMASK) <<\ + LNET_PHASH_NUM_BITS) | \ + ((num) & LNET_PHASH_NUM_BITMASK)) + static int __proc_lnet_stats(void *data, int write, loff_t pos, void *buffer, int nob) { @@ -113,10 +147,14 @@ char *s; const int tmpsiz = 256; int len; - int *ver_p = (unsigned int *)(&filp->private_data); + int ver; + int num; DECLARE_LL_PROC_PPOS_DECL; + num = LNET_PHASH_NUM_GET(*ppos); + ver = LNET_VERSION_GET(*ppos); + LASSERT (!write); if (*lenp == 0) @@ -138,18 +176,19 @@ LASSERT (tmpstr + tmpsiz - s > 0); LNET_LOCK(); - *ver_p = (unsigned int)the_lnet.ln_remote_nets_version; + ver = (unsigned int)the_lnet.ln_remote_nets_version; LNET_UNLOCK(); + *ppos = LNET_PHASH_POS_MAKE(ver, 0, num); } else { struct list_head *n; struct list_head *r; lnet_route_t *route = NULL; lnet_remotenet_t *rnet = NULL; - int skip = *ppos - 1; + int skip = num - 1; LNET_LOCK(); - if (*ver_p != (unsigned int)the_lnet.ln_remote_nets_version) { + if (ver != LNET_VERSION_VALID_MASK(the_lnet.ln_remote_nets_version)) { LNET_UNLOCK(); LIBCFS_FREE(tmpstr, tmpsiz); return -ESTALE; @@ -199,8 +238,10 @@ } else if (len > 0) { /* wrote something */ if (copy_to_user(buffer, tmpstr, len)) rc = -EFAULT; - else - *ppos += 1; + else { + num += 1; + *ppos = LNET_PHASH_POS_MAKE(ver, 0, num); + } } LIBCFS_FREE(tmpstr, tmpsiz); @@ -218,10 +259,14 @@ char *s; const int tmpsiz = 256; int len; - int *ver_p = (unsigned int *)(&filp->private_data); + int ver; + int num; DECLARE_LL_PROC_PPOS_DECL; + num = LNET_PHASH_NUM_GET(*ppos); + ver = LNET_VERSION_GET(*ppos); + LASSERT (!write); if (*lenp == 0) @@ -241,16 +286,17 @@ LASSERT (tmpstr + tmpsiz - s > 0); LNET_LOCK(); - *ver_p = (unsigned int)the_lnet.ln_routers_version; + ver = (unsigned int)the_lnet.ln_routers_version; LNET_UNLOCK(); + *ppos = LNET_PHASH_POS_MAKE(ver, 0, num); } else { struct list_head *r; lnet_peer_t *peer = NULL; - int skip = *ppos - 1; + int skip = num - 1; LNET_LOCK(); - if (*ver_p != (unsigned int)the_lnet.ln_routers_version) { + if (ver != LNET_VERSION_VALID_MASK(the_lnet.ln_routers_version)) { LNET_UNLOCK(); LIBCFS_FREE(tmpstr, tmpsiz); return -ESTALE; @@ -313,8 +359,10 @@ } else if (len > 0) { /* wrote something */ if (copy_to_user(buffer, tmpstr, len)) rc = -EFAULT; - else - *ppos += 1; + else { + num += 1; + *ppos = LNET_PHASH_POS_MAKE(ver, 0, num); + } } LIBCFS_FREE(tmpstr, tmpsiz); @@ -325,23 +373,6 @@ return rc; } -/* - * NB: we don't use the highest bit of *ppos because it's signed; - * next 9 bits is used to stash idx (assuming that - * LNET_PEER_HASHSIZE < 512) - */ -#define LNET_LOFFT_BITS (sizeof(loff_t) * 8) -#define LNET_PHASH_BITS 9 -#define LNET_PHASH_IDX_MASK (((1ULL << LNET_PHASH_BITS) - 1) << \ - (LNET_LOFFT_BITS - LNET_PHASH_BITS - 1)) -#define LNET_PHASH_NUM_MASK ((1ULL << \ - (LNET_LOFFT_BITS - LNET_PHASH_BITS -1)) - 1) -#define LNET_PHASH_IDX_GET(pos) (int)(((pos) & LNET_PHASH_IDX_MASK) >> \ - (LNET_LOFFT_BITS - LNET_PHASH_BITS -1)) -#define LNET_PHASH_NUM_GET(pos) (int)((pos) & LNET_PHASH_NUM_MASK) -#define LNET_PHASH_POS_MAKE(idx, num) ((((loff_t)idx) << (LNET_LOFFT_BITS - \ - LNET_PHASH_BITS -1)) | (num)) - int LL_PROC_PROTO(proc_lnet_peers) { int rc = 0; @@ -349,7 +380,7 @@ char *s; const int tmpsiz = 256; int len; - int *ver_p = (unsigned int *)(&filp->private_data); + int ver; int idx; int num; @@ -357,8 +388,9 @@ idx = LNET_PHASH_IDX_GET(*ppos); num = LNET_PHASH_NUM_GET(*ppos); + ver = LNET_VERSION_GET(*ppos); - CLASSERT ((1 << LNET_PHASH_BITS) > LNET_PEER_HASHSIZE); + CLASSERT ((1ULL << LNET_PHASH_BITS) > LNET_PEER_HASHSIZE); LASSERT (!write); @@ -379,8 +411,9 @@ LASSERT (tmpstr + tmpsiz - s > 0); LNET_LOCK(); - *ver_p = (unsigned int)the_lnet.ln_peertable_version; + ver = (unsigned int)the_lnet.ln_peertable_version; LNET_UNLOCK(); + *ppos = LNET_PHASH_POS_MAKE(ver, idx, num); num++; } else { @@ -390,7 +423,7 @@ LNET_LOCK(); - if (*ver_p != (unsigned int)the_lnet.ln_peertable_version) { + if (ver != LNET_VERSION_VALID_MASK(the_lnet.ln_peertable_version)) { LNET_UNLOCK(); LIBCFS_FREE(tmpstr, tmpsiz); return -ESTALE; @@ -466,7 +499,7 @@ if (copy_to_user(buffer, tmpstr, len)) rc = -EFAULT; else - *ppos = LNET_PHASH_POS_MAKE(idx, num); + *ppos = LNET_PHASH_POS_MAKE(ver, idx, num); } LIBCFS_FREE(tmpstr, tmpsiz); diff -Nru lustre-1.8.3/lnet/selftest/conrpc.c lustre-1.8.5+dfsg/lnet/selftest/conrpc.c --- lustre-1.8.3/lnet/selftest/conrpc.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/selftest/conrpc.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lnet/selftest/framework.c lustre-1.8.5+dfsg/lnet/selftest/framework.c --- lustre-1.8.3/lnet/selftest/framework.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/selftest/framework.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lnet/selftest/selftest.h lustre-1.8.5+dfsg/lnet/selftest/selftest.h --- lustre-1.8.3/lnet/selftest/selftest.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/selftest/selftest.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lnet/utils/lst.c lustre-1.8.5+dfsg/lnet/utils/lst.c --- lustre-1.8.3/lnet/utils/lst.c 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lnet/utils/lst.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -1995,7 +1995,7 @@ list_for_each_entry(srp, &head, srp_link) { rc = lst_stat_ioctl(srp->srp_name, srp->srp_count, - srp->srp_ids, 5, &srp->srp_result[0]); + srp->srp_ids, 10, &srp->srp_result[0]); if (rc == -1) { lst_print_error(srp->srp_name, "Failed to show errors of %s: %s\n", diff -Nru lustre-1.8.3/lustre/autoconf/lustre-core.m4 lustre-1.8.5+dfsg/lustre/autoconf/lustre-core.m4 --- lustre-1.8.3/lustre/autoconf/lustre-core.m4 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/autoconf/lustre-core.m4 2010-11-17 04:31:48.000000000 +0100 @@ -420,6 +420,7 @@ [LB_CHECK_FILE([$LINUX/include/linux/posix_acl_xattr.h],[ AC_MSG_CHECKING([if linux/posix_acl_xattr.h can be compiled]) LB_LINUX_TRY_COMPILE([ + #include #include ],[],[ AC_MSG_RESULT([yes]) @@ -435,18 +436,6 @@ ]) # -# LC_EXPORT___IGET -# starting from 2.6.19 linux kernel exports __iget() -# -AC_DEFUN([LC_EXPORT___IGET], -[LB_CHECK_SYMBOL_EXPORT([__iget], -[fs/inode.c],[ - AC_DEFINE(HAVE_EXPORT___IGET, 1, [kernel exports __iget]) -],[ -]) -]) - -# # only for Lustre-patched kernels # AC_DEFUN([LC_LUSTRE_VERSION_H], @@ -568,6 +557,30 @@ ]) # +# LC_FLUSH_OWNER_ID +# starting from 2.6.18 the file_operations .flush +# method has a new "fl_owner_t id" parameter +# +AC_DEFUN([LC_FLUSH_OWNER_ID], +[AC_MSG_CHECKING([if file_operations .flush has an fl_owner_t id]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct file_operations *fops = NULL; + fl_owner_t id; + int i; + + i = fops->flush(NULL, id); +],[ + AC_DEFINE(HAVE_FLUSH_OWNER_ID, 1, + [file_operations .flush method has an fl_owner_t id]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# # LC_STATFS_DENTRY_PARAM # starting from 2.6.18 linux kernel uses dentry instead of # super_block for first vfs_statfs argument @@ -1492,15 +1505,21 @@ ]) ]) -# 2.6.27 sles11 move the quotaio_v1.h to fs +# +# 2.6.27 sles11 move the quotaio_v1{2}.h from include/linux to fs +# 2.6.32 move the quotaio_v1{2}.h from fs to fs/quota AC_DEFUN([LC_HAVE_QUOTAIO_V1_H], [LB_CHECK_FILE([$LINUX/include/linux/quotaio_v1.h],[ AC_DEFINE(HAVE_QUOTAIO_V1_H, 1, [kernel has include/linux/quotaio_v1.h]) +],[LB_CHECK_FILE([$LINUX/fs/quota/quotaio_v1.h],[ + AC_DEFINE(HAVE_FS_QUOTA_QUOTAIO_V1_H, 1, + [kernel has fs/quota/quotaio_v1.h]) ],[ AC_MSG_RESULT([no]) ]) ]) +]) # sles10 sp2 need 5 parameter for vfs_symlink AC_DEFUN([LC_VFS_SYMLINK_5ARGS], @@ -1630,6 +1649,16 @@ ]) ]) +# 2.6.27 has bdi_init()/bdi_destroy() functions. +AC_DEFUN([LC_EXPORT_BDI_INIT], +[LB_CHECK_SYMBOL_EXPORT([bdi_init], +[mm/backing-dev.c],[ + AC_DEFINE(HAVE_BDI_INIT, 1, + [bdi_init/bdi_destroy functions are present]) +],[ +]) +]) + # 2.6.29 change prepare/commit_write to write_begin/end AC_DEFUN([LC_WRITE_BEGIN_END], [AC_MSG_CHECKING([if kernel has .write_begin/end]) @@ -1735,6 +1764,74 @@ ]) ]) +# 2.6.32 has new BDI interface. +AC_DEFUN([LC_NEW_BACKING_DEV_INFO], +[AC_MSG_CHECKING([if backing_dev_info has a bdi_list field]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct backing_dev_info bdi; + memset(&bdi.bdi_list, 0x00, sizeof(bdi.bdi_list)); +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_NEW_BACKING_DEV_INFO, 1, + [backing_dev_info has a bdi_list field]) +],[ + AC_MSG_RESULT(no) +]) +]) + +# LC_WALK_SPACE_HAS_DATA_SEM +# +# 2.6.33 ext4_ext_walk_space() takes i_data_sem internally. +# Not a very robust check, but it will hopefully last long +# enough until it can avoid being conditional. +# +AC_DEFUN([LC_WALK_SPACE_HAS_DATA_SEM], +[AC_MSG_CHECKING([if ext4_ext_walk_space() takes i_data_sem]) +WALK_SPACE_DATA_SEM="$(awk '/ext4_ext_walk_space/,/ext4_ext_find_extent/' $LINUX/fs/ext4/extents.c | grep -c 'down_read.*i_data_sem')" +if test "$WALK_SPACE_DATA_SEM" != 0 ; then + AC_DEFINE(WALK_SPACE_HAS_DATA_SEM, 1, + [ext4_ext_walk_space takes i_data_sem]) + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +]) + +# 2.6.32 without DQUOT_INIT defined. +AC_DEFUN([LC_DQUOT_INIT], +[AC_MSG_CHECKING([if DQUOT_INIT is defined]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + DQUOT_INIT(NULL); +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DQUOT_INIT, 1, + [DQUOT_INIT is defined]) +],[ + AC_MSG_RESULT(no) +]) +]) + +# 2.6.32 add a limits member in struct request_queue. +AC_DEFUN([LC_REQUEST_QUEUE_LIMITS], +[AC_MSG_CHECKING([if request_queue has a limits field]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct request_queue rq; + rq.limits.io_min = 0; +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_REQUEST_QUEUE_LIMITS, 1, + [request_queue has a limits field]) +],[ + AC_MSG_RESULT(no) +]) +]) + # # LC_PROG_LINUX # @@ -1775,7 +1872,6 @@ LC_XATTR_ACL LC_STRUCT_INTENT_FILE LC_POSIX_ACL_XATTR_H - LC_EXPORT___IGET LC_FUNC_MS_FLOCK_LOCK LC_FUNC_HAVE_CAN_SLEEP_ARG LC_FUNC_F_OP_FLOCK @@ -1783,7 +1879,6 @@ LC_COOKIE_FOLLOW_LINK LC_FUNC_RCU LC_PERCPU_COUNTER - LC_QUOTA64 LC_4ARGS_VFS_SYMLINK # does the kernel have VFS intent patches? @@ -1815,6 +1910,7 @@ LC_UMOUNTBEGIN_HAS_VFSMOUNT LC_INODE_IPRIVATE LC_EXPORT_FILEMAP_FDATAWRITE_RANGE + LC_FLUSH_OWNER_ID if test x$enable_server = xyes ; then LC_EXPORT_INVALIDATE_MAPPING_PAGES fi @@ -1881,6 +1977,7 @@ LC_VFS_SYMLINK_5ARGS LC_SB_ANY_QUOTA_ACTIVE LC_SB_HAS_QUOTA_ACTIVE + LC_EXPORT_BDI_INIT #2.6.29 LC_WRITE_BEGIN_END @@ -1890,6 +1987,19 @@ # 2.6.31 LC_BLK_QUEUE_LOG_BLK_SIZE + + # 2.6.32 + LC_NEW_BACKING_DEV_INFO + if test x$enable_server = xyes ; then + LC_WALK_SPACE_HAS_DATA_SEM + fi + LC_DQUOT_INIT + LC_REQUEST_QUEUE_LIMITS + + # + if test x$enable_server = xyes ; then + LC_QUOTA64 # must after LC_HAVE_QUOTAIO_V1_H + fi ]) # @@ -2148,37 +2258,34 @@ # linux kernel may have 64-bit limits support # AC_DEFUN([LC_QUOTA64], -if test x$enable_server = xyes ; then [AC_MSG_CHECKING([if kernel has 64-bit quota limits support]) +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-I$LINUX/fs" LB_LINUX_TRY_COMPILE([ #include #include - #include + #ifdef HAVE_QUOTAIO_V1_H + # include int versions[] = V2_INITQVERSIONS_R1; struct v2_disk_dqblk_r1 dqblk_r1; + #else + # ifdef HAVE_FS_QUOTA_QUOTAIO_V1_H + # include + # else + # include + # endif + struct v2r1_disk_dqblk dqblk_r1; + #endif ],[],[ AC_DEFINE(HAVE_QUOTA64, 1, [have quota64]) AC_MSG_RESULT([yes]) ],[ - tmp_flags="$EXTRA_KCFLAGS" - EXTRA_KCFLAGS="-I $LINUX/fs" - LB_LINUX_TRY_COMPILE([ - #include - #include - #include - struct v2r1_disk_dqblk dqblk_r1; - ],[],[ - AC_DEFINE(HAVE_QUOTA64, 1, [have quota64]) - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - AC_MSG_WARN([4 TB (or larger) block quota limits can only be used with OSTs not larger than 4 TB.]) - AC_MSG_WARN([Continuing with limited quota support.]) - AC_MSG_WARN([quotacheck is needed for filesystems with recent quota versions.]) - ]) - EXTRA_KCFLAGS=$tmp_flags + AC_MSG_RESULT([no]) + AC_MSG_WARN([4 TB (or larger) block quota limits can only be used with OSTs not larger than 4 TB.]) + AC_MSG_WARN([Continuing with limited quota support.]) + AC_MSG_WARN([quotacheck is needed for filesystems with recent quota versions.]) ]) -fi +EXTRA_KCFLAGS=$tmp_flags ]) # LC_SECURITY_PLUG # for SLES10 SP2 diff -Nru lustre-1.8.3/lustre/autoconf/lustre-version.ac lustre-1.8.5+dfsg/lustre/autoconf/lustre-version.ac --- lustre-1.8.3/lustre/autoconf/lustre-version.ac 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/autoconf/lustre-version.ac 2010-11-17 04:31:48.000000000 +0100 @@ -1,14 +1,14 @@ m4_define([LUSTRE_MAJOR],[1]) m4_define([LUSTRE_MINOR],[8]) -m4_define([LUSTRE_PATCH],[3]) +m4_define([LUSTRE_PATCH],[5]) m4_define([LUSTRE_FIX],[0]) # Note: we're starting prerelease versions at 50 this time. dnl # don't forget to update the service tags info -m4_define([CLIENT_URN],["LUSTRE-183-CLT"]) -m4_define([MDS_URN],["LUSTRE-183-MDS"]) -m4_define([MGS_URN],["LUSTRE-183-MGS"]) -m4_define([OSS_URN],["LUSTRE-183-OSS"]) +m4_define([CLIENT_URN],["LUSTRE-185-CLT"]) +m4_define([MDS_URN],["LUSTRE-185-MDS"]) +m4_define([MGS_URN],["LUSTRE-185-MGS"]) +m4_define([OSS_URN],["LUSTRE-185-OSS"]) dnl # liblustre delta is 0.0.1.32 , next version with fixes is ok, but dnl # after following release candidate/beta would spill this warning already. diff -Nru lustre-1.8.3/lustre/autoMakefile.am lustre-1.8.5+dfsg/lustre/autoMakefile.am --- lustre-1.8.3/lustre/autoMakefile.am 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/autoMakefile.am 2010-11-17 04:31:48.000000000 +0100 @@ -25,7 +25,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved +# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. # Use is subject to license terms. # diff -Nru lustre-1.8.3/lustre/autoMakefile.in lustre-1.8.5+dfsg/lustre/autoMakefile.in --- lustre-1.8.3/lustre/autoMakefile.in 2010-04-10 02:29:10.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/autoMakefile.in 2010-11-17 04:32:01.000000000 +0100 @@ -41,7 +41,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved +# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. # Use is subject to license terms. # diff -Nru lustre-1.8.3/lustre/ChangeLog lustre-1.8.5+dfsg/lustre/ChangeLog --- lustre-1.8.3/lustre/ChangeLog 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ChangeLog 2010-11-17 04:31:48.000000000 +0100 @@ -1,3 +1,437 @@ +2010-10-29 Oracle, Inc. + * version 1.8.5 + * Support for kernels: + 2.6.16.60-0.69.1 (SLES 10), + 2.6.32.19-0.2.1 (SLES11), + 2.6.18-194.17.1.el5 (RHEL 5) + 2.6.18-194.17.1.0.1.el5 (OEL 5) + * Client support for unpatched kernels: + (see http://wiki.lustre.org/index.php?title=Patchless_Client) + 2.6.16 - 2.6.32 vanilla (kernel.org) + * Recommended e2fsprogs version: 1.41.10-sun2 + * The async journal commit feature (bug 19128) and the cancel + lock before replay feature (bug 16774) are disabled by default. + +Severity : normal +Bugzilla : 23766 +Description: atime is not properly updated on an MDS + +Severity : enhancement +Bugzilla : 22514 +Description: Update to RHEL5.5 kernel 2.6.19-194.17.1.el5. + Update to OEL5.5 kernel 2.6.19-194.17.1.0.1.el5. + +Severity : enhancement +Bugzilla : 20744 +Description: Update to SLES10 SP3 kernel 2.6.16.60-0.69.1. + +Severity : normal +Frequency : only with SLES10 +Bugzilla : 20744 +Description: Use OFED "KMP" provided by Novell +Details : SLES10 SP3 ships with OFED in a separate "KMP" package. + Lustre is now built against this package. That means you need to + install the ofed-kmp package from Novell for the patchless client + and from our download site for the server. Note that the ofed-kmp + that Novell ships may not exactly match the kernel version but + should still be compatible. + +Severity : enhancement +Bugzilla : 21610 +Description: Update SLES11 SP1 kernel to 2.6.32.19-0.2.1. + +Severity : normal +Bugzilla : 21174 +Description: Enabling quotas fails with non-consecutive OST numbering. + +Severity : normal +Bugzilla : 23645 +Description: Fix kernel warning due to lookup_on_len() called without i_mutex + hold. + +Severity : normal +Bugzilla : 23596 +Description: Account direct i/o inflight rpcs separately from non-direct i/o so + that direct i/o, which is limited by max_rpcs_in_flight, should not + block non-direct i/o, which is not limited by max_rpcs_in_flight. + +Severity : normal +Bugzilla : 23827 +Description: Fix per-NID reporting on outstanding writes + +Severity : normal +Bugzilla : 23701 +Description: Reduce stack pressure by uninlining some mds and ptlrpc functions. + +Severity : normal +Bugzilla : 22770 +Description: Remove LASSERT in lprocfs_rd_conn_uuid() since conn == NULL is a + legitimate case. + +Severity : normal +Bugzilla : 23781 +Description: fix obdo leak issue in ll_setattr_raw() + +Severity : normal +Bugzilla : 22117 +Description: limit MMP interval + +Severity : enhancement +Bugzilla : 20101 +Description: add several lfs ost enhancements + +Severity : normal +Bugzilla : 22820 +Description: Too many default ACLs break directory access on new directories + +Severity : normal +Bugzilla : 23174 +Description: Lustre inode size is not coherent across nodes. +Details : Update lvbo from disk when AST fails with EINVAL. Lvbo is updated + on EINVAL error in ldlm_handle_ast_error(). The updates in + filter_intent_policy() and ldlm_cb_interpret() have been removed as + redundant. + +Severity : normal +Bugzilla : 23503 +Description: Oops at __percpu_counter_add+0x1b +Details : Use bdi_init()/bdi_destroy() to proper initialize backing_dev_info + structure. + +Severity : normal +Bugzilla : 20563 +Description: add mount option to generate 32bit ino, this can be used for 32bit + application compatibility. + +Severity : normal +Bugzilla : 22935 +Description: keep reference count for "lli_sai" to prevent it to be released + when "statahead_enter()" + +Severity : normal +Bugzilla : 21174 +Description: allow quotacheck over OSTs with sparse indices + +Severity : normal +Bugzilla : 22891 +Description: Objects not getting deleted for files which have been removed +Details : ll_have_md_lock() should differentiate between CR and CW OPEN + locks. + +Severity : normal +Bugzilla : 22107 +Description: pin object's inode in memory to avoid certain timeouts + +Severity : normal +Bugzilla : 21745 +Description: fix LBUG when obdfilter-survey is interrupted. + +------------------------------------------------------------------------------- + +2010-07-31 Oracle, Inc. + * version 1.8.4 + * Support for kernels: + 2.6.16.60-0.42.8 (SLES 10), + 2.6.27.39-0.3.1 (SLES11), + 2.6.18-194.3.1.el5 (RHEL 5) + 2.6.18-194.3.1.0.1.el5 (OEL 5) + * Client support for unpatched kernels: + (see http://wiki.lustre.org/index.php?title=Patchless_Client) + 2.6.16 - 2.6.30 vanilla (kernel.org) + * Recommended e2fsprogs version: 1.41.10-sun2 + * The async journal commit feature (bug 19128) and the cancel + lock before replay feature (bug 16774) are disabled by default. + +Severity : enhancement +Bugzilla : 22514 +Description: Update RHEL5.5 kernel to 2.6.18-194.8.1.el5 and OEL5.5 kernel to + 2.6.18-194.8.1.0.1.el5. + +Severity : enhancement +Bugzilla : 22514 +Description: using inkernel OFED stack for rhel5 & oel5. + +Severity : enhancement +Bugzilla : 22481 +Description: Add "lfs_migrate" script from manual into lustre/scripts and RPMs +Details : lfs_migrate does a "poor man's" migration of files from their + current OST layout to a new OST layout as chosen by the MDS. + +Severity : normal +Bugzilla : 22679 +Description: mds_orphan_add_link()) error linking orphan to PENDING +Details : quota limits might disallow linking orphans to PENDING + when unlinking a file - temporary raise threads' privileges + when processing unlinks. + +Severity : enhancement +Bugzilla : 15253 +Description: add conf-param -d option to remove permanent settings. +Details : Add the ability to remove permanent lctl conf_param settings. + (Previously conf_param settings could only be changed, not + removed.) This also provides a method to change failover + nid locations. Improve lctl man page. + +Severity : enhancement +Bugzilla : 22455 +Description: add list_param to b1_8 and add "-R" option to list params + recursively + +Severity : enhancement +Bugzilla : 22194 +Description: lfs quota output is not very convenient for awk/sed-parsing +Details : Some positions in lfs quota output table could be empty or + non-empty which made it hard to parse it with scripts, now a dash + is put instead of space where there is not supposed to be any data. + +Severity : enhancement +Bugzilla : 15685 +Description: fix obdfilter-survey script to work properly with remote oss-s + +Severity : enhancement +Bugzilla : 22402 +Description: add new OBDFILTER_SURVEY test suite + +Severity : enhancement +Bugzilla : 20326 +Description: add new multiple mount protection (MMP) test suite + +Severity : enhancement +Bugzilla : 21647 +Description: add support for async journal commit in echo client + +Severity : enhancement +Bugzilla : 21244 +Description: allow userland programs to include + from stardard include directories + +Severity : enhancement +Bugzilla : 18399 +Description: The prune-icache-use-trylock is no longer needed now that + the patch from bug 20008 is landed. + +Severity : normal +Bugzilla : 22755 +Description: The shrink grant feature is still active on the client although the + connect flag is not set. + +Severity : normal +Bugzilla : 22755 +Description: Don't leak grant space if the write failed with quota exceeded. + +Severity : normal +Bugzilla : 22755 +Description: Don't consume grant space twice on recoverable resent. + +Severity : normal +Bugzilla : 22610 +Description: a race condition could lead to SIGBUS being sent to an + application using mmap-ped files from Lustre +Details : truncate_complete_page implementation for the patchless + client could arbitrarily unset PG_Uptodate flag for a + page being kicked from the page cache, an uptodate check + right after a readpage call in filemap_fault could fail + because of that as though the page read had been unsuccessful. + +Severity : normal +Bugzilla : 22476 +Description: dlm lock slab shrinking is not efficient +Details : The dlm_locks slab can grow significantly and consumes a lot of + memory on the server. Set a hardlimit to grant_plan. + +Severity : normal +Bugzilla : 22850 +Description: Lustre does not do 1MB IOs to HW RAID +Details : Bump MAX_PHYS/HW_SEGMENTS and SG_ALL to 256 in the RHEL5 kernel. + This is what we do already for SLES kernels. + +Severity : normal +Bugzilla : 22223 +Description: bump maximum number of phys/hw segments in the SLES11 kernel + until s/g chaining works properly. + +Severity : normal +Severity : normal +Bugzilla : 17086 +Description: LSI Fusion MPT driver hacks to improve performance +Details : Set CONFIG_FUSION_MAX_SGE to 256 for RHEL5 + +Severity : enhancement +Bugzilla : 22509 +Description: increase default md stripe_cache_size to 16k + +Severity : normal +Bugzilla : 15587/21439 +Description: don't handle security.capability xattr +Details : CONFIG_SECURITY_FILE_CAPABILITIES is enabled by default on SLES11. + This results in additional getxattr calls, causing VBR test + failures as well as a preformance drop when writing. + +Severity : normal +Bugzilla : 22749 +Description: obdfilter-survey is no longer working +Details : revert patch from bug 20355 to resolve an issue with lctl --threads + not working correctly with $(PTHREAD_LIBS) being linked to lctl. + +Severity : normal +Bugzilla : 22786 +Description: ll_shrink_cache does not handle __GFP_FS properly + +Severity : normal +Bugzilla : 19102 +Description: lfs getstripe shows wrong info for directories +Details : Set correct LOVEA default values for filesystem-wide. + +Severity : normal +Bugzilla : 11742 +Description: FSX checksum false positves due to mmap IO +Details : Use OBD_FL_MMAP flag for IOs on a memory mapped file. Do not print + checksum errors, if the flag is set on a request. + +Severity : normal +Bugzilla : 22360 +Description: file operations after eviction have successful return values +Details : use vfs ->flush callback to return any pending async errors + on file close. + +Severity : normal +Bugzilla : 20433 +Description: mdsrate fails to write after 1.3+M files opened +Details : decrease memory usage on clients by recycling dentries and + inodes. + +Severity : normal +Bugzilla : 17382 +Description: obdfilter-survey gives unreasonably high numbers +Details : Wait for all threads to complete when running test_brw. + +Severity : normal +Bugzilla : 22299 +Description: do not set lustre read_only device when server umount and keep + client records for recoverable ones + +Severity : normal +Bugzilla : 22241 +Description: move sync_on_lock_cancel tunable to the obdfilter layer +Details : move the tunable to trigger a journal flush on lock cancel from + the ost layer to the obdfilter layer. This tunable is useful + when using the async journal commit feature. + +Severity : normal +Bugzilla : 21871 +Description: exp->exp_nid_stats == NULL in filter_tally() +Details : fix race with per-nid stats by delaying procfs cleanup until + exp_refcount == 0 + +Severity : normal +Bugzilla : 21556 +Description: extent lock cancellation on client can keep the cpu busy for too + long. + +Severity : normal +Bugzilla : 22658 +Description: Do not fail OST activation when a llog is not found, just + issue an error message. + +Severity : normal +Bugzilla : 22911 +Description: Don't enable extents by default for MDT. + +Severity : normal +Bugzilla : 21877 +Description: Protect bitfield access to ptlrpc_request's rq_flags, since + the AT code can access it concurrently while sending early + replies. + +Severity : normal +Bugzilla : 23175 +Description: Disable lockless truncate by default since it is sometimes flawed + and causes the write_disjoint test to fail. + +Severity : normal +Bugzilla : 23139 +Description: OSSs which don't have the patch from bug 20278 can trigger an + LBUG on 1.8 clients. + +Severity : enhancement +Bugzilla : 21528 +Description: don't print message to the console when we have not managed to + cancel all locks. + +Severity : normal +Bugzilla : 23305 +Description: The MDS fails to synchronize OSTs which registered with the MGS + after the MDT. The problem is that OBD_NOTIFY_CREATE events are + raised too early and thus discarded by the MDT stack. + The fix consists of issuing OBD_NOTIFY_CREATE event in the lov + layer. + +Severity : normal +Bugzilla : 23192 +Description: Fix race when the ping evictor and a service thread execute + target_recovery_check_and_stop() concurrently. + +Severity : normal +Bugzilla : 23196 +Description: quota broadcast can trigger a LBUG on the MDT if there are + inactive OSCs. + +Severity : normal +Bugzilla : 17485 +Description: Resetting the lov_objid values to last_id reported by the OST + during orphan recovery is incorrect and can cause the same + objects to be allocated twice. + +Severity : enhancement +Bugzilla : 21452 +Description: "weak-modules" support +Details : Implement "weak-modules" support which enables kernel modules + to be used with any kernel that implements the same kABI. In + order to achieve this modules are now installed in + /lib/modules/$(uname -r)/updates/kernel on all distributions. + +Severity : enhancement +Bugzilla : 22464 +Description: add writeconf as mount option + +Severity : enhancement +Bugzilla : 22846 +Description: produce debuginfo packages for SLES. + +Severity : enhancement +Bugzilla : 15253 +Description: add failover nidlist to the import proc file. + +Severity : enhancement +Bugzilla : 20563 +Description: fix LUSTRE_SEQ_MAX_WIDTH for interoperability between 1.8 + clients and 2.0 servers. + +Severity : enhancement +Bugzilla : 22938 +Description: lfs find -s does not work correctly because of a bug in + find_value_cmp(). + +Severity : normal +Bugzilla : 22309 +Description: ll_read_ahead_page() must validate the dlm lock before using + it. + +Severity : normal +Bugzilla : 22656 +Description: Prevent failover nids from registering with MGS first. + +Severity : normal +Bugzilla : 11063 +Description: fix lock inversion in ll_setattr_raw(). + +Severity : normal +Bugzilla : 22884 +Description: object allocation is not balanced across OSTs. +Details : osc_precreate() should return 0, if there are enough objects left. + +------------------------------------------------------------------------------- + 2010-04-30 Oracle, Inc. * version 1.8.3 * Support for kernels: @@ -12,6 +446,215 @@ * The async journal commit feature (bug 19128) and the cancel lock before replay feature (bug 16774) are disabled by default. +Severity : major +Bugzilla : 22177 +Description: open-unlinked directories trigger MDS LBUG +Details : Fix regression introduced by the patch from bug 19640. + ext3_inc_count() can reset nlink to 1 when the directory + is indexed and inode->i_nlink == 2. Work around the problem + by incrementing nlink by 2 instead of 1. + +Severity : major +Bugzilla : 22423 +Description: Reconnects are not throttled +Details : Don't wake up pinger on reconnect failures and rely on regular + pings to trigger the next reconnection. Please note that the + pinger already uses a smaller interval if the import is + disconnected. + +Severity : normal +Frequency : only with NFS export +Bugzilla : 22307 +Description: Console flooded with error message from ll_inode_from_lock() + during NFS tests +Details : in mds_open, initialize the child_res_id before enqueuing + the OPEN lock for the child inode, then to avoid senting + wrong ldlm_res_id to client. + +Severity : normal +Bugzilla : 22252 +Description: allow multiple instances of the same nid in NID hash +Details : Case of multiple separate clients from the same NID (as + with liblustre) is legitimate and so we should allow + multiple instances of the same NID in nid hash. + +Severity : normal +Bugzilla : 22307 +Description: the readahead code can sleep on a semaphore while holding a + spinlock +Details : in ras_update, "lov_get_info" could be called during increasing + readahead windows, which tries to get the mutex lock "lov_lock" + while holding the spin_lock "ras_lock", then causes system + lockup. + +Severity : normal +Bugzilla : 20278 +Description: ASSERTION(cli->cl_avail_grant >= 0) failed +Details : fix assertion failure in the grant code. + +Severity : normal +Bugzilla : 20805 +Description: Use CNETERR (which is rate limited) in specific places in + the portal's LNET driver to avoid flooding the console. + +Severity : normal +Bugzilla : 22108 +Description: include last created object in precreate slow case + +Severity : normal +Bugzilla : 20373 +Description: don't do rep-ack if not created anything +Details : mds_open currently always put a lock into a rep-ack regardless + if something was created or not. This is pointless and only + creates needless contention. In fact the entire idea was to do + this for real creates as a recovery protection. + +Severity : normal +Bugzilla : 22409 +Description: Spurious error messages from smp_processor_id() on preemptible + kernel +Details : Disable a preemption by grabbing the lock in fs_trace_get_tcd() + first. The function fs_trace_get_tcd() was moved up. + +Severity : normal +Bugzilla : 22181 +Description: interval_erase() fix +Details : interval_erase() calls update_maxhigh() properly when child + == NULL + +Severity : normal +Bugzilla : 22327 +Description: "lfs df" does not print stats for all mountpoints +Details : Print all mounted lustre filesystems with "lfs df" + +Severity : normal +Bugzilla : 19919 +Description: lfs setstripe -p not longer work with a relative pathname +Details : Use realpath() to provide absolute pathname. + +Severity : normal +Bugzilla : 21486 +Description: fix for truncated reply buffer +Details : reply buffer could be referred by reply_in_callback after released + + +Severity : normal +Bugzilla : 22301 +Description: lustre.lov error when backing up symlinks with extended attributes +Details : Improved logic in ll_listxattr() + +Severity : major +Bugzilla : 22187 +Description: properly handle null value for setattr -n lustre.lov +Details : Running "setfattr -n trusted.lov ." causes a NULL dereference + in ll_setxattr() due to no checking if "value" is NULL. + This command now resets to the default striping when executed + against a directory. + +Severity : normal +Bugzilla : 22241 +Description: stack overflow on lock cancellation due to fsync call +Details : sync_on_lock_cancel is needed for recovery when async journal + is enabled, but we actually just need to make sure that + metadata blocks have hit the journal, so doing a fs sync + should be enough and should consume less stack (just create an + empty handle and commmit it). + +Severity : normal +Bugzilla : 22035 +Description: using current->journal_info to store per-thread data leads + to problem under memory pressure +Details : disable the per-thread data (current->journal_info) containing + the lock info during I/O to work around the issue for short tem + +Severity : normal +Bugzilla : 19933 +Description: control DCACHE_LUSTRE_INVALID flag with MDS_INODELOCK_LOOKUP lock +Details : DCACHE_LUSTRE_INVALID is controlled by MDS_INODELOCK_LOOKUP + lock which is corresponding to "IT_LOOKUP", do not skip invalidate + for other intent. + +Severity : normal +Bugzilla : 20997 +Description: Cannot send after transport shutdown +Details : Clear imp_vbr_failed flag upon eviction + +Severity : normal +Bugzilla : 21938 +Description: soft lock in request set code during recovery +Details : during recovery, uses req->rq_set itself to replay the request + instead of ptlrpcd_recovery_pc + +Severity : normal +Bugzilla : 21983 +Description: Use CFS_ALLOC_IO instead of _STD in llap_from_page_with_lockh +Details : During an ll_readahead under ll_readpage, we have seen the the + OBD_SLAB_ALLOC hang under ldlm_pools_shrink when trying to lock + a page that is already locked by the readahead code. + + +Severity : normal +Bugzilla : 21726 +Description: stop waitting for next replay transno if shutdown +Details : if the system is shutting down, wake up service thread blocked + to wait for next replay transno during recovery, then all the + references held by queued requests can be dropped and device + can be stopped. + +Severity : normal +Bugzilla : 20989 +Description: lov_merge_lvb()) ASSERTION(spin_is_locked(&lsm->lsm_lock)) failed +Details : Protect lli->lli_smd pointer updates with lli->lli_lock. + +Severity : normal +Bugzilla : 21815 +Description: per-nid stats should not access lustre-hash internal structures + directly. + +Severity : normal +Bugzilla : 22097 +Description: mount.lustre fails to pass some options to mount() + + +Severity : major +Bugzilla : 21137 +Description: ext4 extent allocation is slower than in ext3 +Details : Increase the default value of MB_DEFAULT_ORDER2_REQS to 8, + enlarge ext4 preallocation table for 2048 4K blocks extents + creation. + +Severity : normal +Bugzilla : 22074 +Description: incorrect triggering of synchronous IO +Details : The OSC can mistakenly fall back to synchronous IO when the + max_dirty_mb limit is reached and no write requests have yet + been issued. This can occur when the dirty pages are spread + over many files all of which are below the optimal request size. + +Severity : normal +Bugzilla : 21919 +Description: Optimize quota_ctl operations by sending requests in parallel +Details : Send MDS->OST quota_ctl requests in parallel, do not resend. + Compiled from two attachments in the ticket. + +Severity : normal +Bugzilla : 18030 +Description: ordering issue between transaction start & i_mutex +Details : start the transaction earlier in llog_lvfs_destroy to get + transaction start and inode mutex lock nested properly. + +Severity : normal +Bugzilla : 21882 +Description: lru resize SLV can get stuck +Details : calculate SLV with a greater precision to not lose small + changes due to interger math truncation; round up SLV only + if the amount of granted locks less than the limit to not + get stuck with this SLV + +Severity : normal +Bugzilla : 21966 +Description: avoid divide-by-zero in lprocfs_rd_import() + Severity : normal Bugzilla : 21816 Description: lfs quota failed when OSTs are down @@ -31,12 +674,15 @@ Severity : enhancement Bugzilla : 21632 -Description: Update RHEL5.4 kernel to 2.6.18-164.11.1.el5 and - OEL5.4 kernel to 2.6.18-164.11.1.0.1.el5. +Description: Update RHEL5.4 kernel to 2.6.18-164.11.1.el5 and OEL5.4 kernel to + 2.6.18-164.11.1.0.1.el5. Severity : enhancement Bugzilla : 16909 -Description: Simplify MDT/OST service start message. +Description: error message improvements +Details : Use INFO/WARN instead of WARN/ERROR for the slow messages. + Simplify MDT/OST service start message. + Suppress "changing the import ..." warning. Severity : normal Bugzilla : 21961/17914 @@ -50,6 +696,10 @@ lead to certain inconsistencies when accessing it using non-atomic bit operations like __set_bit in do_set_dqblk. +Severity : normal +Bugzilla : 22360 +Description: return any pending async errors in close(2) using flush callback + ------------------------------------------------------------------------------- 2010-01-29 Sun Microsystems, Inc. @@ -321,8 +971,8 @@ Severity : enhancement Bugzilla : 18690 Description: smaller hash bucket sizes, cleanups -Details : increase hash table sizes and enabled rehashing for pools, uuid, - nid & per-nid stats. +Details : increase hash table sizes and enabled rehashing for pools, quota, + uuid, nid & per-nid stats. Severity : enhancement Bugzilla : 19673 diff -Nru lustre-1.8.3/lustre/conf/Makefile.am lustre-1.8.5+dfsg/lustre/conf/Makefile.am --- lustre-1.8.3/lustre/conf/Makefile.am 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/conf/Makefile.am 2010-08-20 09:23:59.000000000 +0200 @@ -25,7 +25,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved +# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. # Use is subject to license terms. # diff -Nru lustre-1.8.3/lustre/conf/Makefile.in lustre-1.8.5+dfsg/lustre/conf/Makefile.in --- lustre-1.8.3/lustre/conf/Makefile.in 2010-04-10 02:29:10.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/conf/Makefile.in 2010-11-17 04:32:01.000000000 +0100 @@ -41,7 +41,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved +# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. # Use is subject to license terms. # diff -Nru lustre-1.8.3/lustre/doc/lctl.8 lustre-1.8.5+dfsg/lustre/doc/lctl.8 --- lustre-1.8.3/lustre/doc/lctl.8 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/doc/lctl.8 2010-11-17 04:31:48.000000000 +0100 @@ -11,14 +11,14 @@ .B lctl is used to directly control Lustre via an ioctl interface, allowing various configuration, maintenance, and debugging features to be accessed. - + .B lctl can be invoked in interactive mode by issuing lctl command. After that, commands are issued as below. The most common commands in lctl are .B dl , -.B device +.B device , -.B network +.B network .I , .B list_nids @@ -33,12 +33,12 @@ To get a complete listing of available commands, type .B help at the lctl prompt. To get basic help on the meaning and syntax of a -command, type -.B help +command, type +.B help .I command -. Command completion is activated with the TAB key, and command history is available via the up- and down-arrow keys. +. Command completion is activated with the TAB key, and command history is available via the up- and down-arrow keys. -For non-interactive use, one uses the second invocation, which runs command after connecting to the device. +For non-interactive use, one uses the second invocation, which runs command after connecting to the device. .SS Network Configuration .TP @@ -58,52 +58,85 @@ Check LNET connectivity via an LNET ping. This will use the fabric appropriate to the specified NID. .TP -.BI interface_list -Print the network interface information for a given +.BI interface_list +Print the network interface information for a given .B network type. .TP -.BI peer_list -Print the known peers for a given +.BI peer_list +Print the known peers for a given .B network type. .TP -.BI conn_list +.BI conn_list Print all the connected remote NIDs for a given .B network type. .TP -.BI active_tx +.BI active_tx This command should print active transmits, and it is only used for elan network type. -.TP -.BI route_list +.TP +.BI route_list Print the complete routing table. .PP .SS Device Selection -.TP -.BI device " " -This will select the specified OBD device. All other commands depend on the device being set. -.TP -.BI device_list -Show all the local Lustre OBDs. AKA +.TP +.BI device " " +This will select the specified OBD device. All other commands depend on the device being set. +.TP +.BI device_list +Show all the local Lustre OBDs. AKA .B dl .PP .SS Device Operations -.TP -.BI conf_param " " +.TP +.BI conf_param " [-d] .=" Set a permanent configuration parameter for any device via the MGS. This -command must be run on the MGS node. -.TP -.BI activate -Reactivate an import after deactivating, below. -.TP -.BI deactivate +command must be run on the MGS node. +.br +.B -d . +Delete a parameter setting (use the default value at the next restart). A null value for also deletes the parameter setting. +.br +.B Parameters: +.br +All of the writable parameters under +.B lctl list_param +(e.g. +.I lctl list_param -F osc.*.* | grep = +) can be permanently set using +.B lctl conf_param +, but the format is slightly different. For conf_param, the device is specified first, then the obdtype. (See examples below.) Wildcards are not supported. +.br +Additionally, failover nodes may be added (or removed), and some system-wide parameters may be set as well (sys.at_max, sys.at_min, sys.at_extra, sys.at_early_margin, sys.at_history, sys.timeout, sys.ldlm_timeout.) is ignored for system wide parameters. +.br +.B Examples: +.br +# lctl conf_param testfs.sys.at_max=1200 +.br +# lctl conf_param testfs.llite.max_read_ahead_mb=16 +.br +# lctl conf_param testfs-MDT0000.lov.stripesize=2M +.br +# lctl conf_param lustre-OST0001.osc.active=0 +.br +# lctl conf_param testfs-OST0000.osc.max_dirty_mb=29.15 +.br +# lctl conf_param testfs-OST0000.ost.client_cache_seconds=15 +.br +# lctl conf_param testfs-OST0000.failover.node=1.2.3.4@tcp1 +.TP +.BI activate +Reactivate an import after deactivating, below. This setting is only effective until the next restart (see +.B conf_param +). +.TP +.BI deactivate Deactivate an import, in particular meaning do not assign new file stripes to an OSC. This command should be used on the OSC in the MDT LOV corresponding to a failed OST device, to prevent further attempts at communication with the failed OST. -.TP -.BI abort_recovery +.TP +.BI abort_recovery Abort the recovery process on a restarting MDT or OST device .PP .SS Virtual Block Device Operation @@ -119,45 +152,45 @@ Acquire which lustre file was attached to the device node. .PP .SS Debug -.TP -.BI debug_daemon +.TP +.BI debug_daemon Start and stop the debug daemon, and control the output filename and size. -.TP -.BI debug_kernel " [file] [raw]" +.TP +.BI debug_kernel " [file] [raw]" Dump the kernel debug buffer to stdout or file. -.TP +.TP .BI debug_file " [output]" Convert kernel-dumped debug log from binary to plain text format. -.TP -.BI clear +.TP +.BI clear Clear the kernel debug buffer. -.TP -.BI mark " " +.TP +.BI mark " " Insert marker text in the kernel debug buffer. -.TP -.BI filter " " +.TP +.BI filter " " Filter kernel debug messages by subsystem or mask. -.TP -.BI show " " +.TP +.BI show " " Show specific type of messages. -.TP -.BI debug_list " " +.TP +.BI debug_list " " List all the subsystem and debug types. .TP -.BI modules " " +.BI modules " " Provide gdb-friendly module information. .SH OPTIONS -The following options can be used to invoke lctl. +The following options can be used to invoke lctl. .TP -.B --device +.B --device The device to be used for the operation. This can be specified by name or -number. See +number. See .B device_list .TP -.B --ignore_errors | ignore_errors +.B --ignore_errors | ignore_errors Ignore errors during script processing -.TP + .SH EXAMPLES # lctl .br @@ -170,15 +203,13 @@ Debug log: 87 lines, 87 kept, 0 dropped. .br lctl > quit -.PP -# lctl conf_param testfs-MDT0000 sys.timeout=40 .SH BUGS Please report all bugs to Sun Microsystems, Inc. http://bugzilla.lustre.org/ .SH AVAILABILITY .B lctl -is part of the -.BR Lustre (7) +is part of the +.BR Lustre (7) filesystem package and is available from Sun Microsystems, Inc. .br http://www.sun.com/software/products/lustre/index.xml diff -Nru lustre-1.8.3/lustre/doc/lfs.1 lustre-1.8.5+dfsg/lustre/doc/lfs.1 --- lustre-1.8.3/lustre/doc/lfs.1 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/doc/lfs.1 2010-11-17 04:31:48.000000000 +0100 @@ -15,18 +15,19 @@ \fB[[!] --size|-S [-+]N[kMGTPE]] [--type |-t {bcdflpsD}] \fB[[!] --gid|-g|--group|-G |] \fB[[!] --uid|-u|--user|-U |] - \fB\fR + \fB\fR .br .B lfs osts +.RB [ path ] .br .B lfs getstripe [--obd|-O ] [--quiet|-q] [--verbose|-v] - \fB[--count | -c ] [--size | -s ] [--index | -i ] - \fB[--offset | -o ] [--pool | -p ] [--directory | -d ] - \fB[--recursive|-r] \fR + \fB[--count | -c ] [--index | -i | --offset | -o ] + \fB[--size | -s ] [--pool | -p ] [--directory | -d ] + \fB[--recursive|-r] ...\fR .br .B lfs setstripe [--size|-s stripe-size] [--count|-c stripe-cnt] - \fB[--offset|-o start-ost] [--pool|-p ] - \fB\fR + \fB[--index|-i|--offset|-o start_ost_index ] [--pool|-p ] + \fB\fR .br .B lfs setstripe -d .br @@ -89,47 +90,87 @@ To search the directory tree rooted at the given dir/file name for the files that match the given parameters: \fB--atime\fR (file was last accessed N*24 hours ago), \fB--ctime\fR (file's status was last changed N*24 hours ago), \fB--mtime\fR (file's data was last modified N*24 hours ago), \fB--obd\fR (file has an object on a specific OST or OSTs), \fB--size\fR (file has size in bytes, or \fBk\fRilo-, \fBM\fRega-, \fBG\fRiga-, \fBT\fRera-, \fBP\fReta-, or \fBE\fRxabytes if a suffix is given), \fB--type\fR (file has the type: \fBb\fRlock, \fBc\fRharacter, \fBd\fRirectory, \fBp\fRipe, \fBf\fRile, sym\fBl\fRink, \fBs\fRocket, or \fBD\fRoor (Solaris)), \fB--uid\fR (file has specific numeric user ID), \fB--user\fR (file owned by specific user, numeric user ID allowed), \fB--gid\fR (file has specific group ID), \fB--group\fR (file belongs to specific group, numeric group ID allowed). The option \fB--maxdepth\fR limits find to decend at most N levels of directory tree. The options \fB--print\fR and \fB--print0\fR print full file name, followed by a newline or NUL character correspondingly. Using \fB!\fR before an option negates its meaning (\fIfiles NOT matching the parameter\fR). Using \fB+\fR before a numeric value means \fIfiles with the parameter OR MORE\fR, while \fB-\fR before a numeric value means \fIfiles with the parameter OR LESS\fR. .TP .B osts -List all the OSTs for the filesystem +.RB [ path ] +List all the OSTs for all mounted filesystems. If a \fBpath\fR is provided +that is located on a lustre mounted file system then only the OSTs belonging +to that filesystem are displayed. .TP .B getstripe [--obd|-O ] [--quiet|-q] [--verbose|-v] \fB[--count | -c ] [--size | -s ] [--index | -i ] \fB[--offset | -o ] [--pool | -p ] [--directory | -d ] \fB[--recursive|-r] \fR .br -To list the striping information for a given filename or directory. By default the stripe count, size, and offset will be returned. If you only want specific striping information then the options of \fB--count\fR,\fB--size\fR,\fB--index\fR or \fB--offset\fR plus various combinations of these options can be used to retrieve only what you want. What pools a file belong to can also be obtained with \fB--pool\fR. In the case where you only want details about the files object id information then the \fB--quiet\fR option is used. Additional information available about striping can be displayed with \fB--verbose\fR. The default behavior of lfs getstripe used to retrieve data about a directory is to list all the contents of that directory. If you wish to inquire only about that directory then \fB--directory\fR,can be used to list directory entries instead of its contents in the same manner as ls -d. This can be expanded with \fB--recursive\fR which will recurse into all subdirectories. You can filter the search to return only files that has a object on a specific OST with \fB--obd\fR. +List the striping information for a given filename or directory tree. +By default the stripe count, size, and offset will be returned. If you +only want specific striping information then the options of +.BR --count , +.BR --size , +.BR --index , +.BR --offset , +or +.B --pool +can be used to return only the specific fields. +.br +In the case where you only want details about the files' object id +information then the +.B --quiet +option is used. Additional information available about striping can be +displayed with +.BR --verbose . +The default behavior when a directory is specified is to list the striping +information for all files within the specified directory (like +.RB ' "ls -l" ') . +This can be expanded with +.B --recursive +which will recurse into all subdirectories. +If you wish to get striping information for only the specified directory, then +.B --directory +can be used to limit the information, like +.RB ' "ls -d" '). +You can limit the returned files to those with objects on a specific OST with +.BR --obd . .TP .B setstripe [--size stripe-size] [--count stripe-cnt] - \fB[--offset start-ost] [--pool ]\fR + \fB[--offset start-ost] [--pool ] {directory|filename}\fR .br To create a new file, or set the directory default, with the specified striping parameters. The -.I stripe-count +.I stripe_count is the number of OSTs to stripe a file over. A -.I stripe-count +.I stripe_count of 0 means to use the filesystem-wide default stripe count (default 1), and a -.I stripe-count +.I stripe_count of -1 means to stripe over all available OSTs. The -.I stripe-size +.I stripe_size is the number of bytes to store on each OST before moving to the next OST. A -.I stripe-size +.I stripe_size of 0 means to use the filesystem-wide default stripe size (default 1MB). The -.I start-ost -is the OST index (base 10, starting at 0) on which to start striping for this file. A -.I start-ost +.I start_ost_index +is the OST index (starting at 0) on which to start striping for this file. A +.I start_ost_index of -1 allows the MDS to choose the starting index and it is strongly recommended, as this allows space and load balancing to be done by the MDS as needed. The -.I pool +.I poolname is the name of a predefined pool of OSTs (see -.I lctl +.B lctl ) that will be used for striping. The -.I stripe-count, stripe-size, start-ost +.IR stripe_count , +.IR stripe_size , +and +.I start_ost_index will be used as well; the -.I start-ost +.I start_ost_index must be part of the pool or an error will be returned. .TP .B setstripe -d Delete the default striping on the specified directory. .TP -.B poollist [.] | -List the pools in \fBfilesystem\fR or \fBpathname\fR, or the OSTs in \fBfilesystem.pool\fR +.B poollist +.RI { filesystem }[ .poolname "] | {" pathname } +List the pools in +.I filesystem +or +.IR pathname , +or the OSTs in +.IR filesystem.pool . .TP .B quotachown To change files' owner and group on OSTs of the specified filesystem diff -Nru lustre-1.8.3/lustre/doc/llapi_quotactl.3 lustre-1.8.5+dfsg/lustre/doc/llapi_quotactl.3 --- lustre-1.8.3/lustre/doc/llapi_quotactl.3 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/doc/llapi_quotactl.3 2010-11-17 04:31:48.000000000 +0100 @@ -69,12 +69,15 @@ is USRQUOTA, GRPQUOTA or UGQUOTA (both user and group quotas). The quota files must exist; they are normally created with the .BR llapi_quotacheck (3) -call. This call is restricted to the super-user. +call. + +This call is restricted to the super-user. .TP .SB LUSTRE_Q_QUOTAOFF Turn off quotas for a Lustre filesystem. .I qc_type is USRQUOTA, GRPQUOTA or UGQUOTA (both user and group quotas). + This call is restricted to the super-user. .TP .SB LUSTRE_Q_GETQUOTA @@ -92,6 +95,11 @@ is zero then clusterwide limits and usage are returned. On return .I obd_dqblk contains the requested information (block limits unit is kilobyte). +.I dqb_btime +and +.I dqb_itime +are the block and inode softlimit grace period expiration timestamps for the requested user or group. + Quotas must be turned on before using this command. .TP .SB LUSTRE_Q_SETQUOTA @@ -105,6 +113,7 @@ must be filled with limits values (as set in .I dqb_valid , block limits unit is kilobyte). + Quotas must be turned on before using this command. .TP .SB LUSTRE_Q_GETINFO @@ -112,9 +121,9 @@ .I qc_type is either USRQUOTA or GRPQUOTA. On return .I dqi_igrace -is inode grace time (in seconds), +is the default inode grace period duration for all users or all groups (in seconds), .I dqi_bgrace -is block grace time (in seconds), +is the default block grace period duration for all users or all groups (in seconds), .I dqi_flags is not used by the current Lustre version. .TP diff -Nru lustre-1.8.3/lustre/doc/tunefs.lustre.8 lustre-1.8.5+dfsg/lustre/doc/tunefs.lustre.8 --- lustre-1.8.3/lustre/doc/tunefs.lustre.8 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/doc/tunefs.lustre.8 2010-11-17 04:31:48.000000000 +0100 @@ -1,5 +1,5 @@ .\" -*- nroff -*- -.\" Copyright 2008 by Sun Microsystems, Inc. All Rights Reserved. +.\" Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. .\" This file may be copied under the terms of the GNU Public License, v2. .\" .TH tunefs.lustre 8 "2008 Mar 15" Lustre "configuration utilities" @@ -68,13 +68,21 @@ Print more information. .TP .BI \--writeconf -Erase all config logs for the filesystem that this MDT is part of, and -regenerate them. This is very dangerous. All clients and servers should -be stopped. -All targets must then be restarted to regenerate the logs. +Erase the configuration logs for the filesystem that this server is part of, and regenerate them. This is very dangerous. All clients must be unmounted and servers for this filesystem should be stopped. +All targets (OSTs/MDTs) must then be restarted to regenerate the logs. No clients should be started until all targets have restarted. -In general this should be executed on the MDT only, not the OSTs. - +.br +Correct order of operations is: +.br +* Unmount all clients of this filesystem +.br +* Unmount MDT and all OSTs of this filesystem +.br +* Run \fBtunefs.lustre --writeconf \fR on every server +.br +* Mount MDT and OSTs +.br +* Mount clients .SH EXAMPLES .TP .B tunefs.lustre --erase-param --mgsnode= --writeconf /dev/sda diff -Nru lustre-1.8.3/lustre/include/class_hash.h lustre-1.8.5+dfsg/lustre/include/class_hash.h --- lustre-1.8.3/lustre/include/class_hash.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/class_hash.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/include/liblustre.h lustre-1.8.5+dfsg/lustre/include/liblustre.h --- lustre-1.8.3/lustre/include/liblustre.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/liblustre.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -306,6 +306,7 @@ struct rcu_head { }; typedef struct { } spinlock_t; +typedef spinlock_t cfs_spinlock_t; typedef __u64 kdev_t; #define SPIN_LOCK_UNLOCKED (spinlock_t) { } diff -Nru lustre-1.8.3/lustre/include/linux/lustre_compat25.h lustre-1.8.5+dfsg/lustre/include/linux/lustre_compat25.h --- lustre-1.8.3/lustre/include/linux/lustre_compat25.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/linux/lustre_compat25.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -452,8 +452,11 @@ #endif #ifndef HAVE_SYNCHRONIZE_RCU +/* Linux 2.6.32 provides define when !CONFIG_TREE_PREEMPT_RCU */ +#ifndef synchronize_rcu #define synchronize_rcu() synchronize_kernel() #endif +#endif #ifdef HAVE_SECURITY_PLUG #define ll_vfs_rmdir(dir,entry,mnt) vfs_rmdir(dir,entry,mnt) @@ -658,5 +661,20 @@ #define blk_queue_logical_block_size(q, sz) blk_queue_hardsect_size(q, sz) #endif +#ifdef HAVE_DQUOT_INIT +#define ll_vfs_dq_init DQUOT_INIT +#define ll_vfs_dq_drop DQUOT_DROP +#else +#define ll_vfs_dq_init vfs_dq_init +#define ll_vfs_dq_drop vfs_dq_drop +#endif + +#ifndef HAVE_REQUEST_QUEUE_LIMITS +#define queue_max_sectors(rq) ((rq)->max_sectors) +#define queue_max_hw_sectors(rq) ((rq)->max_hw_sectors) +#define queue_max_hw_segments(rq) ((rq)->max_hw_segments) +#define queue_max_phys_segments(rq) ((rq)->max_phys_segments) +#endif + #endif /* __KERNEL__ */ #endif /* _COMPAT25_H */ diff -Nru lustre-1.8.3/lustre/include/linux/lustre_fsfilt.h lustre-1.8.5+dfsg/lustre/include/linux/lustre_fsfilt.h --- lustre-1.8.3/lustre/include/linux/lustre_fsfilt.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/linux/lustre_fsfilt.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/include/linux/lustre_patchless_compat.h lustre-1.8.5+dfsg/lustre/include/linux/lustre_patchless_compat.h --- lustre-1.8.3/lustre/include/linux/lustre_patchless_compat.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/linux/lustre_patchless_compat.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -86,7 +86,6 @@ #else clear_page_dirty(page); #endif - ClearPageUptodate(page); ClearPageMappedToDisk(page); ll_remove_from_page_cache(page); page_cache_release(page); /* pagecache ref */ diff -Nru lustre-1.8.3/lustre/include/lprocfs_status.h lustre-1.8.5+dfsg/lustre/include/lprocfs_status.h --- lustre-1.8.3/lustre/include/lprocfs_status.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lprocfs_status.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/include/lustre/liblustreapi.h lustre-1.8.5+dfsg/lustre/include/lustre/liblustreapi.h --- lustre-1.8.3/lustre/include/lustre/liblustreapi.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre/liblustreapi.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -124,7 +124,11 @@ check_gid:1, check_uid:1, check_pool:1, - exclude_pool:1; + exclude_pool:1, + exclude_size:1, + exclude_atime:1, + exclude_mtime:1, + exclude_ctime:1; int verbose; int quiet; diff -Nru lustre-1.8.3/lustre/include/lustre/lustre_idl.h lustre-1.8.5+dfsg/lustre/include/lustre/lustre_idl.h --- lustre-1.8.3/lustre/include/lustre/lustre_idl.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre/lustre_idl.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -95,11 +95,8 @@ /* Defn's shared with user-space. */ #include -#include #include -#include - /* * this file contains all data structures used in Lustre interfaces: * - obdo and obd_request records @@ -359,6 +356,9 @@ #define OBD_CONNECT_LOV_V3 0x100000000ULL /*client supports LOV v3 EA */ #define OBD_CONNECT_GRANT_SHRINK 0x200000000ULL /* support grant shrink */ #define OBD_CONNECT_SKIP_ORPHAN 0x400000000ULL /* don't reuse orphan objids */ +#define OBD_CONNECT_MAX_EASIZE 0x800000000ULL /* preserved for large EA */ +#define OBD_CONNECT_FULL20 0x1000000000ULL /* it is 2.0 client */ +#define OBD_CONNECT_LAYOUTLOCK 0x2000000000ULL /* client supports layout lock */ /* also update obd_connect_names[] for lprocfs_rd_connect_flags() * and lustre/utils/wirecheck.c */ @@ -415,13 +415,8 @@ extern void lustre_swab_connect(struct obd_connect_data *ocd); -/* b1_6 has smaller body. The defines below is for interoperability */ -#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2,0,0,0) #define PTLRPC_INTEROP_1_6 1 #define PTLRPC_BODY_MIN_SIZE offsetof(struct ptlrpc_body, pb_pre_versions) -#else -#define PTLRPC_BODY_MIN_SIZE sizeof(struct ptlrpc_body) -#endif /* * Supported checksum algorithms. Up to 32 checksum types are supported. @@ -497,6 +492,8 @@ OBD_FL_CKSUM_RSVD2 = 0x00008000, /* for future cksum types */ OBD_FL_CKSUM_RSVD3 = 0x00010000, /* for future cksum types */ OBD_FL_SHRINK_GRANT = 0x00020000, /* object shrink the grant */ + OBD_FL_MMAP = 0x00040000, /* object is mmapped on the client */ + OBD_FL_RECOV_RESEND = 0x00080000, /* recoverable resent */ OBD_FL_CKSUM_ALL = OBD_FL_CKSUM_CRC32 | OBD_FL_CKSUM_ADLER, @@ -850,7 +847,7 @@ /* * This is how may FIDs may be allocated in one sequence. */ - LUSTRE_SEQ_MAX_WIDTH = 0x0000000000004000ULL, + LUSTRE_SEQ_MAX_WIDTH = 0x0000000000020000ULL, }; enum lu_cli_type { @@ -2081,13 +2078,19 @@ static inline void lustre_get_wire_obdo(struct obdo *lobdo, struct obdo *wobdo) { - obd_flag local_flags = lobdo->o_flags & OBD_FL_LOCAL_MASK; + obd_flag local_flags = 0; + + if (lobdo->o_valid & OBD_MD_FLFLAGS) + local_flags = lobdo->o_flags & OBD_FL_LOCAL_MASK; LASSERT(!(wobdo->o_flags & OBD_FL_LOCAL_MASK)); memcpy(lobdo, wobdo, sizeof(*lobdo)); - lobdo->o_flags &= ~OBD_FL_LOCAL_MASK; - lobdo->o_flags |= local_flags; + if (local_flags != 0) { + lobdo->o_valid |= OBD_MD_FLFLAGS; + lobdo->o_flags &= ~OBD_FL_LOCAL_MASK; + lobdo->o_flags |= local_flags; + } } extern void lustre_swab_obdo (struct obdo *o); @@ -2148,7 +2151,6 @@ #define QDATA_CLR_GRP(qdata) ((qdata)->qd_flags &= ~LQUOTA_FLAGS_GRP) #define QDATA_CLR_CHANGE_QS(qdata) ((qdata)->qd_flags &= ~LQUOTA_FLAGS_CHG_QS) -#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(1, 9, 0, 0) /* this will be used when OBD_CONNECT_QUOTA64 is set */ struct qunit_data_old2 { __u32 qd_id; /* ID appiles to (uid, gid) */ @@ -2156,16 +2158,9 @@ * Block quota or file quota occupy one bit */ __u64 qd_count; /* acquire/release count (bytes for block quota) */ }; -#else -#warning "remove quota code above for format absolete in new release" -#endif extern void lustre_swab_qdata(struct qunit_data *d); -#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(1, 9, 0, 0) extern void lustre_swab_qdata_old2(struct qunit_data_old2 *d); -#else -#warning "remove quota code above for format absolete in new release" -#endif extern int quota_get_qdata(void*req, struct qunit_data *qdata, int is_req, int is_exp); extern int quota_copy_qdata(void *request, struct qunit_data *qdata, diff -Nru lustre-1.8.3/lustre/include/lustre/lustre_user.h lustre-1.8.5+dfsg/lustre/include/lustre/lustre_user.h --- lustre-1.8.3/lustre/include/lustre/lustre_user.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre/lustre_user.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -115,6 +115,7 @@ #define LL_IOC_LOV_GETSTRIPE _IOW ('f', 155, long) #define LL_IOC_LOV_SETEA _IOW ('f', 156, long) #define LL_IOC_RECREATE_OBJ _IOW ('f', 157, long) +#define LL_IOC_RECREATE_FID _IOW ('f', 157, struct lu_fid) #define LL_IOC_GROUP_LOCK _IOW ('f', 158, long) #define LL_IOC_GROUP_UNLOCK _IOW ('f', 159, long) #define LL_IOC_QUOTACHECK _IOW ('f', 160, int) @@ -186,7 +187,7 @@ __u16 lmm_stripe_count; /* num stripes in use for this object */ __u16 lmm_stripe_offset; /* starting stripe offset in lmm_objects */ struct lov_user_ost_data_v1 lmm_objects[0]; /* per-stripe data */ -} __attribute__((packed)); +} __attribute__((packed, __may_alias__)); struct lov_user_md_v3 { /* LOV EA user data (host-endian) */ __u32 lmm_magic; /* magic number = LOV_USER_MAGIC_V3 */ diff -Nru lustre-1.8.3/lustre/include/lustre_disk.h lustre-1.8.5+dfsg/lustre/include/lustre_disk.h --- lustre-1.8.3/lustre/include/lustre_disk.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre_disk.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -63,7 +63,7 @@ #define LDD_F_SV_TYPE_MGS 0x0004 #define LDD_F_NEED_INDEX 0x0010 /* need an index assignment */ #define LDD_F_VIRGIN 0x0020 /* never registered */ -#define LDD_F_UPDATE 0x0040 /* update all related config logs */ +#define LDD_F_UPDATE 0x0040 /* update config for this server */ #define LDD_F_REWRITE_LDD 0x0080 /* rewrite the LDD */ #define LDD_F_WRITECONF 0x0100 /* regenerate all logs for this fs */ #define LDD_F_UPGRADE14 0x0200 /* COMPAT_14 */ @@ -172,6 +172,7 @@ no other services */ #define LMD_FLG_NOMGS 0x0020 /* Only start target for servers, reusing existing MGS services */ +#define LMD_FLG_WRITECONF 0x0040 /* Rewrite config log */ #define lmd_is_client(x) ((x)->lmd_flags & LMD_FLG_CLIENT) @@ -296,6 +297,7 @@ struct ll_sb_info *lsi_llsbi; /* add'l client sbi info */ struct vfsmount *lsi_srv_mnt; /* the one server mount */ atomic_t lsi_mounts; /* references to the srv_mnt */ + struct backing_dev_info bdi; /* Each client mountpoint needs own backing_dev_info */ }; #define LSI_SERVER 0x00000001 diff -Nru lustre-1.8.3/lustre/include/lustre_dlm.h lustre-1.8.5+dfsg/lustre/include/lustre_dlm.h --- lustre-1.8.3/lustre/include/lustre_dlm.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre_dlm.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -368,6 +368,7 @@ int (*lvbo_init)(struct ldlm_resource *res); int (*lvbo_update)(struct ldlm_resource *res, struct ptlrpc_request *r, int buf_idx, int increase); + int (*lvbo_free)(struct ldlm_resource *res); }; typedef enum { @@ -608,6 +609,8 @@ /* when the resource was considered as contended */ cfs_time_t lr_contention_time; + + struct inode *lr_lvb_inode; }; struct ldlm_ast_work { @@ -696,8 +699,8 @@ ldlm_res_iterator_t iter, void *closure); int ldlm_replay_locks(struct obd_import *imp); -void ldlm_resource_iterate(struct ldlm_namespace *, struct ldlm_res_id *, - ldlm_iterator_t iter, void *data); +int ldlm_resource_iterate(struct ldlm_namespace *, struct ldlm_res_id *, + ldlm_iterator_t iter, void *data); /* ldlm_flock.c */ int ldlm_flock_completion_ast(struct ldlm_lock *lock, int flags, void *data); diff -Nru lustre-1.8.3/lustre/include/lustre_lib.h lustre-1.8.5+dfsg/lustre/include/lustre_lib.h --- lustre-1.8.3/lustre/include/lustre_lib.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre_lib.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -528,6 +528,10 @@ * we define this to be 2T - 4k, which is the ext3 maxbytes. */ #define LUSTRE_STRIPE_MAXBYTES 0x1fffffff000ULL +/* Special values for remove LOV EA from disk */ +#define LOVEA_DELETE_VALUES(size, count, offset) (size == 0 && count == 0 && \ + offset == (typeof(offset))(-1)) + /* #define POISON_BULK 0 */ /* diff -Nru lustre-1.8.3/lustre/include/lustre_mds.h lustre-1.8.5+dfsg/lustre/include/lustre_mds.h --- lustre-1.8.3/lustre/include/lustre_mds.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre_mds.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -184,6 +184,8 @@ void mdc_set_lock_data(__u64 *lockh, void *data, __u32 *lockbits); int mdc_change_cbdata(struct obd_export *exp, struct ll_fid *fid, ldlm_iterator_t it, void *data); +int mdc_find_cbdata(struct obd_export *exp, struct ll_fid *fid, + ldlm_iterator_t it, void *data); int mdc_revalidate_lock(struct obd_export *exp, struct lookup_intent *it, struct ll_fid *fid); diff -Nru lustre-1.8.3/lustre/include/lustre_net.h lustre-1.8.5+dfsg/lustre/include/lustre_net.h --- lustre-1.8.3/lustre/include/lustre_net.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre_net.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -835,6 +835,7 @@ void ptlrpc_restart_req(struct ptlrpc_request *req); void ptlrpc_abort_inflight(struct obd_import *imp); void ptlrpc_cleanup_imp(struct obd_import *imp); +void ptlrpc_evict_imp(struct obd_import *imp); void ptlrpc_abort_set(struct ptlrpc_request_set *set); struct ptlrpc_request_set *ptlrpc_prep_set(void); diff -Nru lustre-1.8.3/lustre/include/lustre_param.h lustre-1.8.5+dfsg/lustre/include/lustre_param.h --- lustre-1.8.3/lustre/include/lustre_param.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre_param.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -63,7 +63,9 @@ ... testfs.llite.max_read_ahead_mb=16 */ -/* System global or special params not handled in obd's proc */ +/* System global or special params not handled in obd's proc + * See mgs_write_log_sys() + */ #define PARAM_TIMEOUT "timeout=" /* global */ #define PARAM_LDLM_TIMEOUT "ldlm_timeout=" /* global */ #define PARAM_AT_MIN "at_min=" /* global */ @@ -71,10 +73,10 @@ #define PARAM_AT_EXTRA "at_extra=" /* global */ #define PARAM_AT_EARLY_MARGIN "at_early_margin=" /* global */ #define PARAM_AT_HISTORY "at_history=" /* global */ -#define PARAM_MGSNODE "mgsnode=" /* during mount */ -#define PARAM_FAILNODE "failover.node=" /* llog generation */ -#define PARAM_FAILMODE "failover.mode=" /* llog generation */ -#define PARAM_ACTIVE "active=" /* llog generation */ +#define PARAM_MGSNODE "mgsnode=" /* only at mounttime */ +#define PARAM_FAILNODE "failover.node=" /* add failover nid */ +#define PARAM_FAILMODE "failover.mode=" /* initial mount only */ +#define PARAM_ACTIVE "active=" /* activate/deactivate */ #define PARAM_MDT_UPCALL "mdt.group_upcall=" /* mds group upcall */ /* Prefixes for parameters handled by obd's proc methods (XXX_process_config) */ diff -Nru lustre-1.8.3/lustre/include/lustre_ver.h lustre-1.8.5+dfsg/lustre/include/lustre_ver.h --- lustre-1.8.3/lustre/include/lustre_ver.h 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/lustre_ver.h 2010-11-17 04:32:17.000000000 +0100 @@ -6,13 +6,13 @@ #define LUSTRE_MAJOR 1 #define LUSTRE_MINOR 8 -#define LUSTRE_PATCH 3 +#define LUSTRE_PATCH 5 #define LUSTRE_FIX 0 -#define LUSTRE_VERSION_STRING "1.8.3" -#define CLIENT_URN "LUSTRE-183-CLT" -#define MDS_URN "LUSTRE-183-MDS" -#define MGS_URN "LUSTRE-183-MGS" -#define OSS_URN "LUSTRE-183-OSS" +#define LUSTRE_VERSION_STRING "1.8.5" +#define CLIENT_URN "LUSTRE-185-CLT" +#define MDS_URN "LUSTRE-185-MDS" +#define MGS_URN "LUSTRE-185-MGS" +#define OSS_URN "LUSTRE-185-OSS" #define LUSTRE_VERSION_CODE OBD_OCD_VERSION(LUSTRE_MAJOR,LUSTRE_MINOR,LUSTRE_PATCH,LUSTRE_FIX) diff -Nru lustre-1.8.3/lustre/include/obd_class.h lustre-1.8.5+dfsg/lustre/include/obd_class.h --- lustre-1.8.3/lustre/include/obd_class.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/obd_class.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -1425,6 +1425,20 @@ RETURN(rc); } +static inline int obd_find_cbdata(struct obd_export *exp, + struct lov_stripe_md *lsm, + ldlm_iterator_t it, void *data) +{ + int rc; + ENTRY; + + EXP_CHECK_OP(exp, find_cbdata); + EXP_COUNTER_INCREMENT(exp, find_cbdata); + + rc = OBP(exp->exp_obd, find_cbdata)(exp, lsm, it, data); + RETURN(rc); +} + static inline int obd_cancel(struct obd_export *exp, struct lov_stripe_md *ea, __u32 mode, struct lustre_handle *lockh, int flags, obd_off end) @@ -1510,6 +1524,19 @@ EXIT; } +static inline int obd_llog_connect(struct obd_export *exp, + struct llogd_conn_body *body) +{ + int rc; + ENTRY; + + OBD_CHECK_OP(exp->exp_obd, llog_connect, 0); + EXP_COUNTER_INCREMENT(exp, llog_connect); + + rc = OBP(exp->exp_obd, llog_connect)(exp, body); + RETURN(rc); +} + static inline int obd_notify(struct obd_device *obd, struct obd_device *watched, enum obd_notify_event ev, void *data) @@ -1741,7 +1768,7 @@ #define OBDO_ALLOC(ptr) \ do { \ - OBD_SLAB_ALLOC_PTR((ptr), obdo_cachep); \ + OBD_SLAB_ALLOC_PTR_GFP((ptr), obdo_cachep, CFS_ALLOC_IO); \ } while(0) #define OBDO_FREE(ptr) \ diff -Nru lustre-1.8.3/lustre/include/obd.h lustre-1.8.5+dfsg/lustre/include/obd.h --- lustre-1.8.3/lustre/include/obd.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/obd.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -349,7 +349,9 @@ unsigned long fo_read_cache:1, /* read-only cache */ fo_writethrough_cache:1, /* writetrhough cache */ fo_syncjournal:1, /* sync journal on writes */ - fo_raid_degraded:1; /* RAID device degraded */ + fo_sync_lock_cancel:2, /* sync on lock cancel */ + fo_raid_degraded:1, /* RAID device degraded */ + fo_mds_ost_sync:1; /**< MDS-OST orphan recovery*/ struct obd_import *fo_mdc_imp; struct obd_uuid fo_mdc_uuid; @@ -401,6 +403,14 @@ #define OSC_MAX_DIRTY_MB_MAX 2048 /* arbitrary, but < MAX_LONG bytes */ #define OSC_DEFAULT_RESENDS 10 +/* possible values for fo_sync_lock_cancel */ +enum { + NEVER_SYNC_ON_CANCEL = 0, + BLOCKING_SYNC_ON_CANCEL = 1, + ALWAYS_SYNC_ON_CANCEL = 2, + NUM_SYNC_ON_CANCEL_STATES +}; + #define MDC_MAX_RIF_DEFAULT 8 #define MDC_MAX_RIF_MAX 512 @@ -499,6 +509,8 @@ struct list_head cl_loi_read_list; int cl_r_in_flight; int cl_w_in_flight; + int cl_dio_r_in_flight; + int cl_dio_w_in_flight; /* just a sum of the loi/lop pending numbers to be exported by /proc */ int cl_pending_w_pages; int cl_pending_r_pages; @@ -553,6 +565,7 @@ #define CL_NOT_QUOTACHECKED 1 /* client->cl_qchk_stat init value */ struct mgs_obd { + struct obd_device_target mgs_obt; struct ptlrpc_service *mgs_service; struct vfsmount *mgs_vfsmnt; struct super_block *mgs_sb; @@ -657,7 +670,6 @@ struct ptlrpc_service *ost_create_service; struct ptlrpc_service *ost_io_service; struct semaphore ost_health_sem; - int ost_sync_on_lock_cancel; }; struct echo_client_obd { @@ -1108,6 +1120,7 @@ #define KEY_MAX_EASIZE "max_ea_size" #define KEY_FIEMAP "fiemap" #define KEY_CONNECT_FLAG "connect_flags" +#define KEY_SYNC_LOCK_CANCEL "sync_lock_cancel" /* XXX unused */ #define KEY_ASYNC "async" #define KEY_CAPA_KEY "capa_key" @@ -1259,6 +1272,8 @@ struct lustre_handle *lockh, int *n_matches); int (*o_change_cbdata)(struct obd_export *, struct lov_stripe_md *, ldlm_iterator_t it, void *data); + int (*o_find_cbdata)(struct obd_export *, struct lov_stripe_md *, + ldlm_iterator_t it, void *data); int (*o_cancel)(struct obd_export *, struct lov_stripe_md *md, __u32 mode, struct lustre_handle *, int flags, obd_off end); @@ -1275,6 +1290,7 @@ int (*o_llog_init)(struct obd_device *obd, struct obd_device *disk_obd, int *idx); int (*o_llog_finish)(struct obd_device *obd, int count); + int (*o_llog_connect)(struct obd_export *, struct llogd_conn_body *); /* metadata-only methods */ int (*o_pin)(struct obd_export *, struct ll_fid *, diff -Nru lustre-1.8.3/lustre/include/obd_support.h lustre-1.8.5+dfsg/lustre/include/obd_support.h --- lustre-1.8.3/lustre/include/obd_support.h 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/include/obd_support.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -41,6 +41,7 @@ #include #include #include +#include /* global variables */ extern struct lprocfs_stats *obd_memory; @@ -677,6 +678,8 @@ OBD_SLAB_ALLOC((ptr), (slab), CFS_ALLOC_STD, sizeof *(ptr)) #define OBD_SLAB_FREE_PTR(ptr, slab) \ OBD_SLAB_FREE((ptr), (slab), sizeof *(ptr)) +#define OBD_SLAB_ALLOC_PTR_GFP(ptr, slab, gfp) \ + OBD_SLAB_ALLOC((ptr), (slab), (gfp), sizeof *(ptr)) #define KEY_IS(str) \ (keylen >= (sizeof(str) - 1) && memcmp(key, str, sizeof(str) - 1) == 0) diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686-bigsmp.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686-bigsmp.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686-bigsmp.config 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686-bigsmp.config 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.16.60 -# Wed May 21 20:30:49 2008 +# Tue Oct 12 22:25:05 2010 # CONFIG_X86_32=y CONFIG_SEMAPHORE_SLEEPERS=y @@ -22,11 +22,11 @@ # # General setup # -CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION="-bigsmp" CONFIG_LOCALVERSION_AUTO=y CONFIG_SUSE_KERNEL=y CONFIG_SLE_VERSION=10 -CONFIG_SLE_SP=2 +CONFIG_SLE_SP=3 CONFIG_SLE_SP_SUBLEVEL=0 CONFIG_SWAP=y CONFIG_SYSVIPC=y @@ -36,6 +36,7 @@ CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y CONFIG_SYSCTL=y CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y @@ -94,10 +95,10 @@ CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y # CONFIG_DEFAULT_AS is not set -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_DEFAULT_IOSCHED="deadline" # # Processor type and features @@ -158,8 +159,8 @@ CONFIG_NR_CPUS=128 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y -CONFIG_PREEMPT_NONE=y -# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y # CONFIG_PREEMPT is not set # CONFIG_PREEMPT_BKL is not set CONFIG_X86_LOCAL_APIC=y @@ -197,6 +198,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y # CONFIG_SPARSEMEM_STATIC is not set CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_DEFAULT_MMAP_MIN_ADDR=0 CONFIG_HIGHPTE=y # CONFIG_MATH_EMULATION is not set CONFIG_MTRR=y @@ -221,8 +223,7 @@ CONFIG_PM=y CONFIG_PM_LEGACY=y # CONFIG_PM_DEBUG is not set -CONFIG_SOFTWARE_SUSPEND=y -CONFIG_PM_STD_PARTITION="" +# CONFIG_SOFTWARE_SUSPEND is not set CONFIG_SUSPEND_SMP=y # @@ -1202,17 +1203,17 @@ # CONFIG_SCSI_SPI_ATTRS=m CONFIG_SCSI_FC_ATTRS=m -# CONFIG_SCSI_ISCSI_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=m CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m -# CONFIG_SCSI_SAS_ATA is not set +CONFIG_SCSI_SAS_ATA=y # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_ISCSI_TARGET=m # # SCSI low-level drivers # -# CONFIG_ISCSI_TCP is not set +CONFIG_ISCSI_TCP=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_7000FASST=m @@ -1235,7 +1236,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_AIC79XX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC94XX=m -CONFIG_AIC94XX_DEBUG=y +# CONFIG_AIC94XX_DEBUG is not set CONFIG_SCSI_DPT_I2O=m CONFIG_SCSI_ADVANSYS=m CONFIG_SCSI_IN2000=m @@ -1245,6 +1246,9 @@ CONFIG_MEGARAID_MAILBOX=m CONFIG_MEGARAID_LEGACY=m CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +# CONFIG_SCSI_MPT2SAS_LOGGING is not set CONFIG_SCSI_HPTIOP=m CONFIG_SCSI_BUSLOGIC=m # CONFIG_SCSI_OMIT_FLASHPOINT is not set @@ -1282,8 +1286,9 @@ CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m -# CONFIG_SCSI_QLA_ISCSI is not set +CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m +CONFIG_SCSI_BFA_FC=m CONFIG_SCSI_SYM53C416=m CONFIG_SCSI_DC395x=m CONFIG_SCSI_DC390T=m @@ -1299,11 +1304,16 @@ # # PCMCIA SCSI adapter support # -# CONFIG_PCMCIA_AHA152X is not set +CONFIG_PCMCIA_AHA152X=m CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_NINJA_SCSI=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m # # Serial ATA (prod) and Parallel ATA (experimental) drivers @@ -1399,10 +1409,6 @@ CONFIG_DM_MIRROR=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m -CONFIG_DM_MULTIPATH_EMC=m -CONFIG_DM_MULTIPATH_HP_SW=m -CONFIG_DM_MULTIPATH_RDAC=m -CONFIG_DM_MULTIPATH_ALUA=m CONFIG_DM_NL_EVT=y CONFIG_FUSION=y CONFIG_FUSION_SPI=m @@ -1412,7 +1418,7 @@ CONFIG_FUSION_MAX_FC_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m -# CONFIG_FUSION_LOGGING is not set +CONFIG_FUSION_LOGGING=y # # IEEE 1394 (FireWire) support @@ -1564,6 +1570,7 @@ CONFIG_APRICOT=m CONFIG_B44=m CONFIG_FORCEDETH=m +CONFIG_FORCEDETH_NEW=m CONFIG_CS89x0=m CONFIG_DGRS=m CONFIG_EEPRO100=m @@ -1598,12 +1605,13 @@ CONFIG_E1000=m CONFIG_E1000_NAPI=y # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_E1000E=m CONFIG_IGB=m CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m CONFIG_R8169=m -# CONFIG_R8169_NAPI is not set +CONFIG_R8169_NAPI=y CONFIG_R8169_VLAN=y CONFIG_SIS190=m CONFIG_SKGE=m @@ -1619,15 +1627,22 @@ # Ethernet (10000 Mbit) # CONFIG_CHELSIO_T1=m -# CONFIG_CHELSIO_T3 is not set +CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m -# CONFIG_IXGBE_NAPI is not set +CONFIG_IXGBE_NAPI=y CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y CONFIG_NETXEN_NIC=m +CONFIG_NIU=m +CONFIG_QLGE=m +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_BNA=m CONFIG_MYRI10GE=m +CONFIG_BE2NET=m # # Token Ring devices @@ -2083,8 +2098,8 @@ CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CS=m # CONFIG_SERIAL_8250_ACPI is not set -CONFIG_SERIAL_8250_NR_UARTS=8 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_NR_UARTS=16 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_SHARE_IRQ=y @@ -3143,7 +3158,14 @@ # # InfiniBand support # -# CONFIG_INFINIBAND is not set +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_SRP=m # # DMA Engine support @@ -3310,8 +3332,10 @@ CONFIG_CIFS=m CONFIG_CIFS_STATS=y CONFIG_CIFS_STATS2=y +CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DFS_UPCALL=y # CONFIG_CIFS_EXPERIMENTAL is not set CONFIG_NCP_FS=m CONFIG_NCPFS_PACKET_SIGNING=y @@ -3324,8 +3348,7 @@ CONFIG_NCPFS_EXTRAS=y CONFIG_CODA_FS=m # CONFIG_CODA_FS_OLD_API is not set -CONFIG_AFS_FS=m -CONFIG_RXRPC=m +# CONFIG_AFS_FS is not set CONFIG_9P_FS=m CONFIG_GENERIC_ACL=y @@ -3428,10 +3451,6 @@ CONFIG_EARLY_PRINTK=y CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_STACK_USAGE is not set - -# -# Page alloc debug is incompatible with Software Suspend on i386 -# # CONFIG_DEBUG_RODATA is not set # CONFIG_4KSTACKS is not set CONFIG_X86_FIND_SMP_CONFIG=y @@ -3441,7 +3460,8 @@ # # Security options # -# CONFIG_KEYS is not set +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y # CONFIG_SECURITY_NETWORK_XFRM is not set diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686.config 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-i686.config 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.16.60 -# Wed May 21 20:31:52 2008 +# Tue Oct 12 22:25:05 2010 # CONFIG_X86_32=y CONFIG_SEMAPHORE_SLEEPERS=y @@ -22,11 +22,11 @@ # # General setup # -CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION="-bigsmp" CONFIG_LOCALVERSION_AUTO=y CONFIG_SUSE_KERNEL=y CONFIG_SLE_VERSION=10 -CONFIG_SLE_SP=2 +CONFIG_SLE_SP=3 CONFIG_SLE_SP_SUBLEVEL=0 CONFIG_SWAP=y CONFIG_SYSVIPC=y @@ -36,6 +36,7 @@ CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y CONFIG_SYSCTL=y CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y @@ -94,10 +95,10 @@ CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y # CONFIG_DEFAULT_AS is not set -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_DEFAULT_IOSCHED="deadline" # # Processor type and features @@ -158,8 +159,8 @@ CONFIG_NR_CPUS=128 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y -CONFIG_PREEMPT_NONE=y -# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y # CONFIG_PREEMPT is not set # CONFIG_PREEMPT_BKL is not set CONFIG_X86_LOCAL_APIC=y @@ -197,6 +198,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y # CONFIG_SPARSEMEM_STATIC is not set CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_DEFAULT_MMAP_MIN_ADDR=0 CONFIG_HIGHPTE=y # CONFIG_MATH_EMULATION is not set CONFIG_MTRR=y @@ -221,8 +223,7 @@ CONFIG_PM=y CONFIG_PM_LEGACY=y # CONFIG_PM_DEBUG is not set -CONFIG_SOFTWARE_SUSPEND=y -CONFIG_PM_STD_PARTITION="" +# CONFIG_SOFTWARE_SUSPEND is not set CONFIG_SUSPEND_SMP=y # @@ -1202,17 +1203,17 @@ # CONFIG_SCSI_SPI_ATTRS=m CONFIG_SCSI_FC_ATTRS=m -# CONFIG_SCSI_ISCSI_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=m CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m -# CONFIG_SCSI_SAS_ATA is not set +CONFIG_SCSI_SAS_ATA=y # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_ISCSI_TARGET=m # # SCSI low-level drivers # -# CONFIG_ISCSI_TCP is not set +CONFIG_ISCSI_TCP=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_7000FASST=m @@ -1235,7 +1236,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_AIC79XX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC94XX=m -CONFIG_AIC94XX_DEBUG=y +# CONFIG_AIC94XX_DEBUG is not set CONFIG_SCSI_DPT_I2O=m CONFIG_SCSI_ADVANSYS=m CONFIG_SCSI_IN2000=m @@ -1245,6 +1246,9 @@ CONFIG_MEGARAID_MAILBOX=m CONFIG_MEGARAID_LEGACY=m CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +# CONFIG_SCSI_MPT2SAS_LOGGING is not set CONFIG_SCSI_HPTIOP=m CONFIG_SCSI_BUSLOGIC=m # CONFIG_SCSI_OMIT_FLASHPOINT is not set @@ -1282,8 +1286,9 @@ CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m -# CONFIG_SCSI_QLA_ISCSI is not set +CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m +CONFIG_SCSI_BFA_FC=m CONFIG_SCSI_SYM53C416=m CONFIG_SCSI_DC395x=m CONFIG_SCSI_DC390T=m @@ -1299,11 +1304,16 @@ # # PCMCIA SCSI adapter support # -# CONFIG_PCMCIA_AHA152X is not set +CONFIG_PCMCIA_AHA152X=m CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_NINJA_SCSI=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m # # Serial ATA (prod) and Parallel ATA (experimental) drivers @@ -1399,10 +1409,6 @@ CONFIG_DM_MIRROR=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m -CONFIG_DM_MULTIPATH_EMC=m -CONFIG_DM_MULTIPATH_HP_SW=m -CONFIG_DM_MULTIPATH_RDAC=m -CONFIG_DM_MULTIPATH_ALUA=m CONFIG_DM_NL_EVT=y CONFIG_FUSION=y CONFIG_FUSION_SPI=m @@ -1412,7 +1418,7 @@ CONFIG_FUSION_MAX_FC_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m -# CONFIG_FUSION_LOGGING is not set +CONFIG_FUSION_LOGGING=y # # IEEE 1394 (FireWire) support @@ -1564,6 +1570,7 @@ CONFIG_APRICOT=m CONFIG_B44=m CONFIG_FORCEDETH=m +CONFIG_FORCEDETH_NEW=m CONFIG_CS89x0=m CONFIG_DGRS=m CONFIG_EEPRO100=m @@ -1598,12 +1605,13 @@ CONFIG_E1000=m CONFIG_E1000_NAPI=y # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_E1000E=m CONFIG_IGB=m CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m CONFIG_R8169=m -# CONFIG_R8169_NAPI is not set +CONFIG_R8169_NAPI=y CONFIG_R8169_VLAN=y CONFIG_SIS190=m CONFIG_SKGE=m @@ -1619,15 +1627,22 @@ # Ethernet (10000 Mbit) # CONFIG_CHELSIO_T1=m -# CONFIG_CHELSIO_T3 is not set +CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m -# CONFIG_IXGBE_NAPI is not set +CONFIG_IXGBE_NAPI=y CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y CONFIG_NETXEN_NIC=m +CONFIG_NIU=m +CONFIG_QLGE=m +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_BNA=m CONFIG_MYRI10GE=m +CONFIG_BE2NET=m # # Token Ring devices @@ -2083,8 +2098,8 @@ CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CS=m # CONFIG_SERIAL_8250_ACPI is not set -CONFIG_SERIAL_8250_NR_UARTS=8 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_NR_UARTS=16 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_SHARE_IRQ=y @@ -3143,7 +3158,14 @@ # # InfiniBand support # -# CONFIG_INFINIBAND is not set +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_SRP=m # # DMA Engine support @@ -3310,8 +3332,10 @@ CONFIG_CIFS=m CONFIG_CIFS_STATS=y CONFIG_CIFS_STATS2=y +CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DFS_UPCALL=y # CONFIG_CIFS_EXPERIMENTAL is not set CONFIG_NCP_FS=m CONFIG_NCPFS_PACKET_SIGNING=y @@ -3324,8 +3348,7 @@ CONFIG_NCPFS_EXTRAS=y CONFIG_CODA_FS=m # CONFIG_CODA_FS_OLD_API is not set -CONFIG_AFS_FS=m -CONFIG_RXRPC=m +# CONFIG_AFS_FS is not set CONFIG_9P_FS=m CONFIG_GENERIC_ACL=y @@ -3428,10 +3451,6 @@ CONFIG_EARLY_PRINTK=y CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_STACK_USAGE is not set - -# -# Page alloc debug is incompatible with Software Suspend on i386 -# # CONFIG_DEBUG_RODATA is not set # CONFIG_4KSTACKS is not set CONFIG_X86_FIND_SMP_CONFIG=y @@ -3441,7 +3460,8 @@ # # Security options # -# CONFIG_KEYS is not set +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y # CONFIG_SECURITY_NETWORK_XFRM is not set @@ -3455,11 +3475,11 @@ # Cryptographic options # CONFIG_CRYPTO=y -CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ABLKCIPHER=m CONFIG_CRYPTO_BLKCIPHER=m -CONFIG_CRYPTO_HASH=m -CONFIG_CRYPTO_MANAGER=m +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_XCBC=m CONFIG_CRYPTO_NULL=m diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64.config 2010-11-17 04:31:48.000000000 +0100 @@ -1835,7 +1835,16 @@ # # InfiniBand support # -# CONFIG_INFINIBAND is not set +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_SRP=m + # # DMA Engine support diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64-ppc64.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64-ppc64.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64-ppc64.config 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64-ppc64.config 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,2199 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_PPC64=y +CONFIG_64BIT=y +CONFIG_PPC_MERGE=y +CONFIG_MMU=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_PPC=y +CONFIG_EARLY_PRINTK=y +CONFIG_COMPAT=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_PPC_OF=y +CONFIG_PPC_UDBG_16550=y +CONFIG_GENERIC_TBSYNC=y +CONFIG_AUDIT_ARCH=y +# CONFIG_DEFAULT_UIMAGE is not set + +# +# Processor support +# +# CONFIG_POWER4_ONLY is not set +CONFIG_POWER3=y +CONFIG_POWER4=y +CONFIG_PPC_FPU=y +CONFIG_ALTIVEC=y +CONFIG_PPC_STD_MMU=y +CONFIG_VIRT_CPU_ACCOUNTING=y +CONFIG_SMP=y +CONFIG_NR_CPUS=128 + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 + +# +# General setup +# +CONFIG_LOCALVERSION="-ppc64" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_SUSE_KERNEL=y +CONFIG_SLE_VERSION=10 +CONFIG_SLE_SP=2 +CONFIG_SLE_SP_SUBLEVEL=0 +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_SYSCTL=y +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_CPUSETS=y +CONFIG_RELAY=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_EMBEDDED is not set +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SHMEM=y +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_SLAB=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +# CONFIG_SLOB is not set +CONFIG_OBSOLETE_INTERMODULE=m + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_KMOD=y +CONFIG_STOP_MACHINE=y + +# +# Block layer +# +CONFIG_BLK_DEV_IO_TRACE=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="deadline" + +# +# Platform support +# +CONFIG_PPC_MULTIPLATFORM=y +# CONFIG_PPC_ISERIES is not set +# CONFIG_EMBEDDED6xx is not set +# CONFIG_APUS is not set +CONFIG_PPC_PSERIES=y +CONFIG_PPC_PMAC=y +CONFIG_PPC_PMAC64=y +CONFIG_PPC_MAPLE=y +CONFIG_PPC_CELL=y +CONFIG_XICS=y +CONFIG_U3_DART=y +CONFIG_MPIC=y +CONFIG_PPC_RTAS=y +CONFIG_RTAS_ERROR_LOGGING=y +CONFIG_RTAS_PROC=y +CONFIG_RTAS_FLASH=y +CONFIG_MMIO_NVRAM=y +CONFIG_MPIC_BROKEN_U3=y +CONFIG_CELL_IIC=y +CONFIG_IBMVIO=y +CONFIG_IBMEBUS=y +# CONFIG_PPC_MPC106 is not set +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_DEBUG=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +CONFIG_CPU_FREQ_PMAC64=y +# CONFIG_WANT_EARLY_SERIAL is not set + +# +# Cell Broadband Engine options +# +CONFIG_SPU_FS=m + +# +# Kernel options +# +CONFIG_HZ_100=y +# CONFIG_HZ_250 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=100 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_BKL is not set +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_FORCE_MAX_ZONEORDER=13 +CONFIG_IOMMU_VMERGE=y +CONFIG_HOTPLUG_CPU=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_KEXEC=y +# CONFIG_CRASH_DUMP is not set +CONFIG_IRQ_ALL_CPUS=y +CONFIG_PPC_SPLPAR=y +CONFIG_EEH=y +CONFIG_SCANLOG=m +CONFIG_LPARCFG=y +CONFIG_NUMA=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_HAVE_MEMORY_PRESENT=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_MIGRATION=y +CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y +CONFIG_ARCH_MEMORY_PROBE=y +# CONFIG_PPC_64K_PAGES is not set +CONFIG_SCHED_SMT=y +CONFIG_PROC_DEVICETREE=y +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_PM is not set +CONFIG_SECCOMP=y +CONFIG_ISA_DMA_API=y + +# +# Bus options +# +CONFIG_GENERIC_ISA_DMA=y +CONFIG_PPC_I8259=y +# CONFIG_PPC_INDIRECT_PCI is not set +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCIEPORTBUS=y +# CONFIG_HOTPLUG_PCI_PCIE is not set +CONFIG_PCI_MSI=y +# CONFIG_PCI_LEGACY_PROC is not set +# CONFIG_PCI_DEBUG is not set + +# +# PCCARD (PCMCIA/CardBus) support +# +# CONFIG_PCCARD is not set + +# +# PCI Hotplug Support +# +CONFIG_HOTPLUG_PCI=y +# CONFIG_HOTPLUG_PCI_FAKE is not set +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HOTPLUG_PCI_RPA=y +CONFIG_HOTPLUG_PCI_RPA_DLPAR=y +CONFIG_KERNEL_START=0xc000000000000000 + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +# CONFIG_NETDEBUG is not set +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_ASK_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_FWMARK is not set +CONFIG_IP_ROUTE_MULTIPATH=y +# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_TCP_CONG_ADVANCED=y + +# +# TCP congestion control +# +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_SCALABLE=m + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_IPV6_TUNNEL=m +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +# CONFIG_IP_NF_CT_ACCT is not set +CONFIG_IP_NF_CONNTRACK_MARK=y +CONFIG_IP_NF_CONNTRACK_EVENTS=y +CONFIG_IP_NF_CONNTRACK_NETLINK=m +CONFIG_IP_NF_CT_PROTO_SCTP=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_NETBIOS_NS=m +CONFIG_IP_NF_TFTP=m +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_PPTP=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +CONFIG_IP_NF_MATCH_POLICY=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m + +# +# IPv6: Netfilter Configuration (EXPERIMENTAL) +# +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_POLICY=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_RAW=m + +# +# Bridge: Netfilter Configuration +# +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_ULOG=m + +# +# DCCP Configuration (EXPERIMENTAL) +# +CONFIG_IP_DCCP=m +CONFIG_INET_DCCP_DIAG=m + +# +# DCCP CCIDs Configuration (EXPERIMENTAL) +# +CONFIG_IP_DCCP_CCID3=m +CONFIG_IP_DCCP_TFRC_LIB=m + +# +# DCCP Kernel Hacking +# +# CONFIG_IP_DCCP_DEBUG is not set +# CONFIG_IP_DCCP_UNLOAD_HACK is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_HMAC_NONE=y +# CONFIG_SCTP_HMAC_SHA1 is not set +# CONFIG_SCTP_HMAC_MD5 is not set + +# +# TIPC Configuration (EXPERIMENTAL) +# +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +CONFIG_BRIDGE=m +CONFIG_VLAN_8021Q=m +# CONFIG_DECNET is not set +CONFIG_LLC=y +CONFIG_LLC2=m +CONFIG_IPX=m +CONFIG_IPX_INTERN=y +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +# 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 + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CLK_JIFFIES=y +# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set +# CONFIG_NET_SCH_CLK_CPU is not set + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_INGRESS=m + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_CLS_IND=y +CONFIG_NET_ESTIMATOR=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +# CONFIG_BT_HCIUART is not set +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_IEEE80211=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=m +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_SYS_HYPERVISOR is not set + +# +# Connector - unified userspace <-> kernelspace linker +# +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_NOT_PC=y +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_1284=y + +# +# Plug and Play support +# + +# +# Block devices +# +CONFIG_BLK_DEV_FD=m +# CONFIG_PARIDE 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_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_NBD=m +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=123456 +CONFIG_BLK_DEV_INITRD=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +CONFIG_CDROM_PKTCDVD_WCACHE=y +CONFIG_CIPHER_TWOFISH=m +CONFIG_ATA_OVER_ETH=m + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECD=m +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +CONFIG_BLK_DEV_IDESCSI=m +CONFIG_IDE_TASK_IOCTL=y + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_IDEPCI_SHARE_IRQ=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_GENERIC is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_SL82C105 is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_IDEDMA_FORCED=y +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +# 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_CS5530 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 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_SVWKS is not set +CONFIG_BLK_DEV_SIIMAGE=y +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +CONFIG_BLK_DEV_IDE_PMAC=y +CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y +CONFIG_BLK_DEV_IDEDMA_PMAC=y +# CONFIG_BLK_DEV_IDE_PMAC_BLINK is not set +# CONFIG_IDE_ARM is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_IVB is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI device support +# +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_IOSTATS=y +CONFIG_CHR_DEV_ST=m +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y + +# +# SCSI Transport Attributes +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +# CONFIG_SCSI_ISCSI_ATTRS is not set +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set +CONFIG_ISCSI_TARGET=m + +# +# SCSI low-level drivers +# +# CONFIG_ISCSI_TCP is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_ACARD 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_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +CONFIG_MEGARAID_SAS=m +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_IPS is not set +CONFIG_SCSI_IBMVSCSI=m +CONFIG_SCSI_IBMVSCSIS=m +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPR_DUMP=y +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +CONFIG_SCSI_QLA_FC=m +# CONFIG_SCSI_QLA_ISCSI is not set +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DC390T is not set +CONFIG_SCSI_DEBUG=m + +# +# Serial ATA (prod) and Parallel ATA (experimental) drivers +# +CONFIG_ATA=m +CONFIG_SATA_AHCI=m +CONFIG_SATA_SVW=m +# CONFIG_ATA_PIIX is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SX4 is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIL24 is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +CONFIG_SATA_VITESSE=m +CONFIG_SATA_INTEL_COMBINED=y +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CS5530 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_SC1200 is not set +# CONFIG_PATA_SERVERWORKS is not set +CONFIG_PATA_PDC2027X=m +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_VIA is not set +CONFIG_PATA_WINBOND=m + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_EMC=m +CONFIG_DM_MULTIPATH_HP_SW=m +CONFIG_DM_MULTIPATH_RDAC=m +CONFIG_DM_MULTIPATH_ALUA=m +CONFIG_DM_NL_EVT=y +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_MAX_FC_SGE=256 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_LOGGING=y + +# +# IEEE 1394 (FireWire) support +# +CONFIG_IEEE1394=m + +# +# Subsystem Options +# +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +# CONFIG_IEEE1394_OUI_DB is not set +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y +CONFIG_IEEE1394_EXPORT_FULL_API=y + +# +# Device Drivers +# +# CONFIG_IEEE1394_PCILYNX is not set +CONFIG_IEEE1394_OHCI1394=m + +# +# Protocol Drivers +# +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_RAWIO=m + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# Macintosh device drivers +# +CONFIG_ADB=y +CONFIG_ADB_PMU=y +CONFIG_PMAC_SMU=y +CONFIG_INPUT_ADBHID=y +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_THERM_PM72=y +CONFIG_WINDFARM=y +CONFIG_WINDFARM_PM81=y +CONFIG_WINDFARM_PM91=y +CONFIG_WINDFARM_PM112=y + +# +# Network device support +# +CONFIG_NETDEVICES=y +CONFIG_IFB=m +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set + +# +# PHY device support +# +CONFIG_PHYLIB=m + +# +# MII PHY device drivers +# +CONFIG_MARVELL_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_LXT_PHY=m +CONFIG_CICADA_PHY=m + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +# CONFIG_HAPPYMEAL is not set +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_VORTEX=m +CONFIG_TYPHOON=m + +# +# Tulip family network device support +# +CONFIG_NET_TULIP=y +# CONFIG_DE2104X is not set +CONFIG_TULIP=m +CONFIG_TULIP_MWI=y +CONFIG_TULIP_MMIO=y +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +# CONFIG_HP100 is not set +CONFIG_IBMVETH=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_AMD8111E_NAPI=y +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_B44 is not set +# CONFIG_FORCEDETH is not set +# CONFIG_DGRS is not set +# CONFIG_EEPRO100 is not set +CONFIG_E100=m +# 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_VIA_RHINE is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +CONFIG_ACENIC=m +CONFIG_ACENIC_OMIT_TIGON_I=y +# CONFIG_DL2K is not set +CONFIG_E1000=m +CONFIG_E1000_NAPI=y +# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_IGB=m +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_R8169=m +CONFIG_R8169_NAPI=y +CONFIG_R8169_VLAN=y +CONFIG_SIS190=m +# CONFIG_SKGE is not set +CONFIG_SKY2=m +# CONFIG_SK98LIN is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_TIGON3=m +CONFIG_BNX2=m +CONFIG_BNX2X=m +CONFIG_SPIDER_NET=m +# CONFIG_MV643XX_ETH is not set +CONFIG_QLA3XXX=m + +# +# Ethernet (10000 Mbit) +# +CONFIG_CHELSIO_T1=m +CONFIG_EHEA=m +# CONFIG_CHELSIO_T3 is not set +CONFIG_IXGBE=m +CONFIG_IXGBE_NAPI=y +CONFIG_IXGB=m +CONFIG_IXGB_NAPI=y +CONFIG_S2IO=m +CONFIG_S2IO_NAPI=y +CONFIG_NETXEN_NIC=m +CONFIG_MYRI10GE=m + +# +# Token Ring devices +# +CONFIG_TR=y +CONFIG_IBMOL=m +# CONFIG_3C359 is not set +# CONFIG_TMS380TR is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +# CONFIG_SLIP_MODE_SLIP6 is not set +CONFIG_NET_FC=y +CONFIG_SHAPER=m +CONFIG_NETCONSOLE=m +CONFIG_NETPOLL=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NET_POLL_CONTROLLER=y + +# +# ISDN subsystem +# +# CONFIG_ISDN 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 is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_TSDEV=m +CONFIG_INPUT_TSDEV_SCREEN_X=240 +CONFIG_INPUT_TSDEV_SCREEN_Y=320 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_EVBUG=m + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_SERIAL=m +# CONFIG_MOUSE_VSXXXAA is not set +CONFIG_INPUT_JOYSTICK=y +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_A3D is not set +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_GRIP_MP is not set +# CONFIG_JOYSTICK_GUILLEMOT is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_TMDC is not set +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +# CONFIG_JOYSTICK_DB9 is not set +# CONFIG_JOYSTICK_GAMECON is not set +# CONFIG_JOYSTICK_TURBOGRAFX is not set +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_UINPUT=m + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +# CONFIG_GAMEPORT_NS558 is not set +# CONFIG_GAMEPORT_L4 is not set +# CONFIG_GAMEPORT_EMU10K1 is not set +# CONFIG_GAMEPORT_FM801 is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +CONFIG_SERIAL_ICOM=m +CONFIG_SERIAL_JSM=m +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=64 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set +# CONFIG_TIPAR is not set +CONFIG_HVC_CONSOLE=y +CONFIG_HVC_RTAS=y +CONFIG_HVCS=m + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_WATCHDOG_RTAS=m + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +# CONFIG_RTC is not set +CONFIG_GEN_RTC=y +# CONFIG_GEN_RTC_X is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +CONFIG_AGP=m +CONFIG_AGP_UNINORTH=m +CONFIG_DRM=m +# CONFIG_DRM_TDFX is not set +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +# CONFIG_DRM_MGA is not set +# CONFIG_DRM_SIS is not set +# CONFIG_DRM_VIA is not set +# CONFIG_DRM_SAVAGE is not set +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=4096 +CONFIG_HANGCHECK_TIMER=m + +# +# TPM devices +# +CONFIG_TCG_TPM=m +CONFIG_TCG_TIS=m +CONFIG_TCG_ATMEL=m +# CONFIG_TELCLOCK is not set +CONFIG_CRASHER=m + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m + +# +# I2C Algorithms +# +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_ALGOPCA is not set + +# +# I2C Hardware Bus support +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +CONFIG_I2C_AMD8111=m +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_I810 is not set +# CONFIG_I2C_PIIX4 is not set +CONFIG_I2C_POWERMAC=y +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_PARPORT is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_PROSAVAGE is not set +# CONFIG_I2C_SAVAGE4 is not set +# CONFIG_SCx200_ACB is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set +# CONFIG_I2C_VOODOO3 is not set +# CONFIG_I2C_PCA_ISA is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_SENSORS_DS1337 is not set +# CONFIG_SENSORS_DS1374 is not set +# CONFIG_SENSORS_EEPROM is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_RTC8564 is not set +# CONFIG_SENSORS_MAX6875 is not set +# CONFIG_RTC_X1205_I2C is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set + +# +# SPI support +# +CONFIG_SPI=y +CONFIG_SPI_DEBUG=y +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m + +# +# SPI Protocol Masters +# + +# +# Dallas's 1-wire bus +# +# CONFIG_W1 is not set + +# +# Hardware Monitoring support +# +# CONFIG_HWMON is not set +# CONFIG_HWMON_VID is not set + +# +# Misc devices +# +# CONFIG_TIFM_CORE is not set + +# +# Multimedia Capabilities Port drivers +# + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=m + +# +# Video For Linux +# + +# +# Video Adapters +# +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_SAA6588=m +# CONFIG_VIDEO_BWQCAM is not set +# CONFIG_VIDEO_CQCAM is not set +# CONFIG_VIDEO_W9966 is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_SAA5246A is not set +# CONFIG_VIDEO_SAA5249 is not set +# CONFIG_TUNER_3036 is not set +# CONFIG_VIDEO_STRADIS is not set +# CONFIG_VIDEO_ZORAN is not set +# CONFIG_VIDEO_SAA7134 is not set +# CONFIG_VIDEO_MXB is not set +# CONFIG_VIDEO_DPC is not set +# CONFIG_VIDEO_HEXIUM_ORION is not set +# CONFIG_VIDEO_HEXIUM_GEMINI is not set +# CONFIG_VIDEO_CX88 is not set +# CONFIG_VIDEO_EM28XX is not set +# CONFIG_VIDEO_OVCAMCHIP is not set +# CONFIG_VIDEO_AUDIO_DECODER is not set +# CONFIG_VIDEO_DECODER is not set + +# +# Radio Adapters +# +# CONFIG_RADIO_GEMTEK_PCI is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_MAESTRO is not set + +# +# Digital Video Broadcasting Devices +# +# CONFIG_DVB is not set +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m + +# +# Graphics support +# +CONFIG_FB=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_MACMODES=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_OF=y +# CONFIG_FB_CONTROL is not set +# CONFIG_FB_PLATINUM is not set +# CONFIG_FB_VALKYRIE is not set +# CONFIG_FB_CT65550 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_VGA16 is not set +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_NVIDIA=y +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_RIVA is not set +CONFIG_FB_MATROX=y +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_MATROX_MULTIHEAD=y +# CONFIG_FB_RADEON_OLD is not set +CONFIG_FB_RADEON=y +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_DEBUG is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Logo configuration +# +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +CONFIG_LOGO_LINUX_VGA16=y +# CONFIG_LOGO_LINUX_CLUT224 is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_DEVICE=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_DEVICE=y + +# +# Bootsplash configuration +# + +# +# Sound +# +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_DETECT is not set + +# +# Generic devices +# +CONFIG_SND_MPU401_UART=m +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m + +# +# PCI devices +# +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_HDA_INTEL is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set + +# +# ALSA PowerMac devices +# +CONFIG_SND_POWERMAC=m +CONFIG_SND_POWERMAC_AUTO_DRC=y + +# +# USB devices +# +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set + +# +# USB support +# +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_BANDWIDTH=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_UHCI_HCD=m +# CONFIG_USB_SL811_HCD is not set + +# +# USB Device Class drivers +# +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# may also be needed; see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_JUMPSHOT=y +CONFIG_USB_STORAGE_ALAUDA=y +CONFIG_USB_STORAGE_ONETOUCH=y +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDINPUT_POWERBOOK is not set +CONFIG_HID_FF=y +CONFIG_HID_PID=y +CONFIG_LOGITECH_FF=y +CONFIG_THRUSTMASTER_FF=y +CONFIG_USB_HIDDEV=y +CONFIG_USB_AIPTEK=m +CONFIG_USB_WACOM=m +CONFIG_USB_ACECAD=m +CONFIG_USB_KBTAB=m +CONFIG_USB_POWERMATE=m +CONFIG_USB_MTOUCH=m +CONFIG_USB_ITMTOUCH=m +CONFIG_USB_EGALAX=m +CONFIG_USB_YEALINK=m +CONFIG_USB_XPAD=m +CONFIG_USB_ATI_REMOTE=m +CONFIG_USB_ATI_REMOTE2=m +CONFIG_USB_KEYSPAN_REMOTE=m +CONFIG_USB_APPLETOUCH=m + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m + +# +# USB Multimedia devices +# +CONFIG_USB_DABUSB=m +CONFIG_USB_VICAM=m +CONFIG_USB_DSBR=m +CONFIG_USB_ET61X251=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_OV511=m +CONFIG_USB_SE401=m +CONFIG_USB_SN9C102=m +CONFIG_USB_STV680=m +CONFIG_USB_PWC=m + +# +# USB Network Adapters +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_MON is not set + +# +# USB port drivers +# +CONFIG_USB_USS720=m + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRPRIME=m +CONFIG_USB_SERIAL_ANYDATA=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP2101=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_EZUSB=y + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_AUERSWALD=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_BERRY_CHARGE=m +CONFIG_USB_LED=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +# CONFIG_USB_TEST is not set + +# +# USB DSL modem support +# + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC 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=y +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_SRP=m + + +# +# DMA Engine support +# +# CONFIG_DMA_ENGINE is not set + +# +# DMA Clients +# + +# +# DMA Devices +# + +# +# File systems +# +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_PROC_INFO=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=m +CONFIG_XFS_DMAPI=m +CONFIG_XFS_SECURITY=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_DEBUG is not set +# CONFIG_XFS_TRACE is not set +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_MINIX_FS=m +CONFIG_ROMFS_FS=m +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_DMAPI=m +# CONFIG_DMAPI_DEBUG is not set +CONFIG_QUOTA=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_DNOTIFY=y +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m +CONFIG_FUSE_FS=m + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_RAMFS=y +CONFIG_CONFIGFS_FS=m + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_CRAMFS=m +# 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=m + +# +# Network File Systems +# +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_RPCSEC_GSS_SPKM3=m +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +CONFIG_CIFS=m +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_EXPERIMENTAL is not set +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_9P_FS=m +CONFIG_GENERIC_ACL=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m + +# +# Library routines +# +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +CONFIG_CRC32=y +CONFIG_LIBCRC32C=m +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m + +# +# Instrumentation Support +# +CONFIG_PROFILING=y +CONFIG_OPROFILE=y +CONFIG_KPROBES=y + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +CONFIG_LOG_BUF_SHIFT=19 +# CONFIG_DETECT_SOFTLOCKUP is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_VM is not set +CONFIG_FORCED_INLINING=y +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_LKCD_DUMP is not set +CONFIG_DEBUG_STACKOVERFLOW=y +CONFIG_DEBUG_STACK_USAGE=y +CONFIG_HCALL_STATS=y +CONFIG_DEBUGGER=y +CONFIG_XMON=y +# CONFIG_XMON_DEFAULT is not set +CONFIG_IRQSTACKS=y +CONFIG_BOOTX_TEXT=y +# CONFIG_PPC_EARLY_DEBUG_LPAR is not set +# CONFIG_PPC_EARLY_DEBUG_G5 is not set +# CONFIG_PPC_EARLY_DEBUG_RTAS is not set +# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set +# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set + +# +# Security options +# +CONFIG_KEYS=y +CONFIG_KEYS_DEBUG_PROC_KEYS=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +CONFIG_SECURITY_CAPABILITIES=m +CONFIG_SECURITY_ROOTPLUG=m +CONFIG_SECURITY_SECLVL=m +# CONFIG_SECURITY_SELINUX is not set +CONFIG_SECURITY_APPARMOR=m +CONFIG_KEYS_COMPAT=y + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ABLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_TEST=m + +# +# Hardware crypto devices +# diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64-smp.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64-smp.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64-smp.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-ppc64-smp.config 1970-01-01 01:00:00.000000000 +0100 @@ -1,2190 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_PPC64=y -CONFIG_64BIT=y -CONFIG_PPC_MERGE=y -CONFIG_MMU=y -CONFIG_GENERIC_HARDIRQS=y -CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_PPC=y -CONFIG_EARLY_PRINTK=y -CONFIG_COMPAT=y -CONFIG_SYSVIPC_COMPAT=y -CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y -CONFIG_ARCH_MAY_HAVE_PC_FDC=y -CONFIG_PPC_OF=y -CONFIG_PPC_UDBG_16550=y -CONFIG_GENERIC_TBSYNC=y -CONFIG_AUDIT_ARCH=y -# CONFIG_DEFAULT_UIMAGE is not set - -# -# Processor support -# -# CONFIG_POWER4_ONLY is not set -CONFIG_POWER3=y -CONFIG_POWER4=y -CONFIG_PPC_FPU=y -CONFIG_ALTIVEC=y -CONFIG_PPC_STD_MMU=y -CONFIG_VIRT_CPU_ACCOUNTING=y -CONFIG_SMP=y -CONFIG_NR_CPUS=128 - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_LOCK_KERNEL=y -CONFIG_INIT_ENV_ARG_LIMIT=32 - -# -# General setup -# -CONFIG_LOCALVERSION="-ppc64" -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_SUSE_KERNEL=y -CONFIG_SLE_VERSION=10 -CONFIG_SLE_SP=2 -CONFIG_SLE_SP_SUBLEVEL=0 -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASKSTATS=y -CONFIG_TASK_DELAY_ACCT=y -CONFIG_TASK_XACCT=y -CONFIG_SYSCTL=y -CONFIG_AUDIT=y -CONFIG_AUDITSYSCALL=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_CPUSETS=y -CONFIG_RELAY=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -# CONFIG_EMBEDDED is not set -CONFIG_KALLSYMS=y -CONFIG_KALLSYMS_ALL=y -# CONFIG_KALLSYMS_EXTRA_PASS is not set -CONFIG_HOTPLUG=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_SHMEM=y -CONFIG_CC_ALIGN_FUNCTIONS=0 -CONFIG_CC_ALIGN_LABELS=0 -CONFIG_CC_ALIGN_LOOPS=0 -CONFIG_CC_ALIGN_JUMPS=0 -CONFIG_SLAB=y -# CONFIG_TINY_SHMEM is not set -CONFIG_BASE_SMALL=0 -# CONFIG_SLOB is not set -CONFIG_OBSOLETE_INTERMODULE=m - -# -# Loadable module support -# -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -# CONFIG_MODULE_FORCE_UNLOAD is not set -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_KMOD=y -CONFIG_STOP_MACHINE=y - -# -# Block layer -# -CONFIG_BLK_DEV_IO_TRACE=y - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_DEFAULT_AS is not set -CONFIG_DEFAULT_DEADLINE=y -# CONFIG_DEFAULT_CFQ is not set -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="deadline" - -# -# Platform support -# -CONFIG_PPC_MULTIPLATFORM=y -# CONFIG_PPC_ISERIES is not set -# CONFIG_EMBEDDED6xx is not set -# CONFIG_APUS is not set -CONFIG_PPC_PSERIES=y -CONFIG_PPC_PMAC=y -CONFIG_PPC_PMAC64=y -CONFIG_PPC_MAPLE=y -CONFIG_PPC_CELL=y -CONFIG_XICS=y -CONFIG_U3_DART=y -CONFIG_MPIC=y -CONFIG_PPC_RTAS=y -CONFIG_RTAS_ERROR_LOGGING=y -CONFIG_RTAS_PROC=y -CONFIG_RTAS_FLASH=y -CONFIG_MMIO_NVRAM=y -CONFIG_MPIC_BROKEN_U3=y -CONFIG_CELL_IIC=y -CONFIG_IBMVIO=y -CONFIG_IBMEBUS=y -# CONFIG_PPC_MPC106 is not set -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_TABLE=y -CONFIG_CPU_FREQ_DEBUG=y -CONFIG_CPU_FREQ_STAT=m -CONFIG_CPU_FREQ_STAT_DETAILS=y -CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=m -CONFIG_CPU_FREQ_GOV_USERSPACE=m -CONFIG_CPU_FREQ_GOV_ONDEMAND=m -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m -CONFIG_CPU_FREQ_PMAC64=y -# CONFIG_WANT_EARLY_SERIAL is not set - -# -# Cell Broadband Engine options -# -CONFIG_SPU_FS=m - -# -# Kernel options -# -CONFIG_HZ_100=y -# CONFIG_HZ_250 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=100 -CONFIG_PREEMPT_NONE=y -# CONFIG_PREEMPT_VOLUNTARY is not set -# CONFIG_PREEMPT is not set -# CONFIG_PREEMPT_BKL is not set -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=m -CONFIG_FORCE_MAX_ZONEORDER=13 -CONFIG_IOMMU_VMERGE=y -CONFIG_HOTPLUG_CPU=y -CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y -CONFIG_KEXEC=y -# CONFIG_CRASH_DUMP is not set -CONFIG_IRQ_ALL_CPUS=y -CONFIG_PPC_SPLPAR=y -CONFIG_EEH=y -CONFIG_SCANLOG=m -CONFIG_LPARCFG=y -CONFIG_NUMA=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_SPARSEMEM_DEFAULT=y -CONFIG_SELECT_MEMORY_MODEL=y -# CONFIG_FLATMEM_MANUAL is not set -# CONFIG_DISCONTIGMEM_MANUAL is not set -CONFIG_SPARSEMEM_MANUAL=y -CONFIG_SPARSEMEM=y -CONFIG_NEED_MULTIPLE_NODES=y -CONFIG_HAVE_MEMORY_PRESENT=y -# CONFIG_SPARSEMEM_STATIC is not set -CONFIG_SPARSEMEM_EXTREME=y -CONFIG_MEMORY_HOTPLUG=y -CONFIG_SPLIT_PTLOCK_CPUS=4 -CONFIG_MIGRATION=y -CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y -CONFIG_ARCH_MEMORY_PROBE=y -# CONFIG_PPC_64K_PAGES is not set -CONFIG_SCHED_SMT=y -CONFIG_PROC_DEVICETREE=y -# CONFIG_CMDLINE_BOOL is not set -# CONFIG_PM is not set -CONFIG_SECCOMP=y -CONFIG_ISA_DMA_API=y - -# -# Bus options -# -CONFIG_GENERIC_ISA_DMA=y -CONFIG_PPC_I8259=y -# CONFIG_PPC_INDIRECT_PCI is not set -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCIEPORTBUS=y -# CONFIG_HOTPLUG_PCI_PCIE is not set -CONFIG_PCI_MSI=y -# CONFIG_PCI_LEGACY_PROC is not set -# CONFIG_PCI_DEBUG is not set - -# -# PCCARD (PCMCIA/CardBus) support -# -# CONFIG_PCCARD is not set - -# -# PCI Hotplug Support -# -CONFIG_HOTPLUG_PCI=y -# CONFIG_HOTPLUG_PCI_FAKE is not set -# CONFIG_HOTPLUG_PCI_CPCI is not set -# CONFIG_HOTPLUG_PCI_SHPC is not set -CONFIG_HOTPLUG_PCI_RPA=y -CONFIG_HOTPLUG_PCI_RPA_DLPAR=y -CONFIG_KERNEL_START=0xc000000000000000 - -# -# Networking -# -CONFIG_NET=y - -# -# Networking options -# -# CONFIG_NETDEBUG is not set -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_UNIX=y -CONFIG_XFRM=y -CONFIG_XFRM_USER=m -CONFIG_NET_KEY=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_ASK_IP_FIB_HASH=y -# CONFIG_IP_FIB_TRIE is not set -CONFIG_IP_FIB_HASH=y -CONFIG_IP_MULTIPLE_TABLES=y -# CONFIG_IP_ROUTE_FWMARK is not set -CONFIG_IP_ROUTE_MULTIPATH=y -# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set -CONFIG_IP_ROUTE_VERBOSE=y -# CONFIG_IP_PNP is not set -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE=m -CONFIG_NET_IPGRE_BROADCAST=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -# CONFIG_ARPD is not set -CONFIG_SYN_COOKIES=y -CONFIG_INET_AH=m -CONFIG_INET_ESP=m -CONFIG_INET_IPCOMP=m -CONFIG_INET_TUNNEL=m -CONFIG_INET_DIAG=m -CONFIG_INET_TCP_DIAG=m -CONFIG_TCP_CONG_ADVANCED=y - -# -# TCP congestion control -# -CONFIG_TCP_CONG_BIC=m -CONFIG_TCP_CONG_CUBIC=m -CONFIG_TCP_CONG_WESTWOOD=m -CONFIG_TCP_CONG_HTCP=m -CONFIG_TCP_CONG_HSTCP=m -CONFIG_TCP_CONG_HYBLA=m -CONFIG_TCP_CONG_VEGAS=m -CONFIG_TCP_CONG_SCALABLE=m - -# -# IP: Virtual Server Configuration -# -# CONFIG_IP_VS is not set -CONFIG_IPV6=m -CONFIG_IPV6_PRIVACY=y -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -CONFIG_INET6_IPCOMP=m -CONFIG_INET6_TUNNEL=m -CONFIG_IPV6_TUNNEL=m -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_BRIDGE_NETFILTER=y - -# -# Core Netfilter Configuration -# -CONFIG_NETFILTER_NETLINK=m -CONFIG_NETFILTER_NETLINK_QUEUE=m -CONFIG_NETFILTER_NETLINK_LOG=m -CONFIG_NETFILTER_XTABLES=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m - -# -# IP: Netfilter Configuration -# -CONFIG_IP_NF_CONNTRACK=m -# CONFIG_IP_NF_CT_ACCT is not set -CONFIG_IP_NF_CONNTRACK_MARK=y -CONFIG_IP_NF_CONNTRACK_EVENTS=y -CONFIG_IP_NF_CONNTRACK_NETLINK=m -CONFIG_IP_NF_CT_PROTO_SCTP=m -CONFIG_IP_NF_FTP=m -CONFIG_IP_NF_IRC=m -CONFIG_IP_NF_NETBIOS_NS=m -CONFIG_IP_NF_TFTP=m -CONFIG_IP_NF_AMANDA=m -CONFIG_IP_NF_PPTP=m -CONFIG_IP_NF_QUEUE=m -CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_IPRANGE=m -CONFIG_IP_NF_MATCH_MULTIPORT=m -CONFIG_IP_NF_MATCH_TOS=m -CONFIG_IP_NF_MATCH_RECENT=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_DSCP=m -CONFIG_IP_NF_MATCH_AH_ESP=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_MATCH_OWNER=m -CONFIG_IP_NF_MATCH_ADDRTYPE=m -CONFIG_IP_NF_MATCH_HASHLIMIT=m -CONFIG_IP_NF_MATCH_POLICY=m -CONFIG_IP_NF_MATCH_IPV4OPTIONS=m -CONFIG_IP_NF_FILTER=m -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_LOG=m -CONFIG_IP_NF_TARGET_ULOG=m -CONFIG_IP_NF_TARGET_TCPMSS=m -CONFIG_IP_NF_NAT=m -CONFIG_IP_NF_NAT_NEEDED=y -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_SAME=m -CONFIG_IP_NF_NAT_SNMP_BASIC=m -CONFIG_IP_NF_NAT_IRC=m -CONFIG_IP_NF_NAT_FTP=m -CONFIG_IP_NF_NAT_TFTP=m -CONFIG_IP_NF_NAT_AMANDA=m -CONFIG_IP_NF_NAT_PPTP=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_TOS=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_DSCP=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m - -# -# IPv6: Netfilter Configuration (EXPERIMENTAL) -# -CONFIG_IP6_NF_QUEUE=m -CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_MATCH_OPTS=m -CONFIG_IP6_NF_MATCH_FRAG=m -CONFIG_IP6_NF_MATCH_HL=m -CONFIG_IP6_NF_MATCH_MULTIPORT=m -CONFIG_IP6_NF_MATCH_OWNER=m -CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_AHESP=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_MATCH_POLICY=m -CONFIG_IP6_NF_FILTER=m -CONFIG_IP6_NF_TARGET_LOG=m -CONFIG_IP6_NF_TARGET_REJECT=m -CONFIG_IP6_NF_MANGLE=m -CONFIG_IP6_NF_TARGET_HL=m -CONFIG_IP6_NF_RAW=m - -# -# Bridge: Netfilter Configuration -# -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_ULOG=m - -# -# DCCP Configuration (EXPERIMENTAL) -# -CONFIG_IP_DCCP=m -CONFIG_INET_DCCP_DIAG=m - -# -# DCCP CCIDs Configuration (EXPERIMENTAL) -# -CONFIG_IP_DCCP_CCID3=m -CONFIG_IP_DCCP_TFRC_LIB=m - -# -# DCCP Kernel Hacking -# -# CONFIG_IP_DCCP_DEBUG is not set -# CONFIG_IP_DCCP_UNLOAD_HACK is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -CONFIG_IP_SCTP=m -# CONFIG_SCTP_DBG_MSG is not set -# CONFIG_SCTP_DBG_OBJCNT is not set -CONFIG_SCTP_HMAC_NONE=y -# CONFIG_SCTP_HMAC_SHA1 is not set -# CONFIG_SCTP_HMAC_MD5 is not set - -# -# TIPC Configuration (EXPERIMENTAL) -# -# CONFIG_TIPC is not set -# CONFIG_ATM is not set -CONFIG_BRIDGE=m -CONFIG_VLAN_8021Q=m -# CONFIG_DECNET is not set -CONFIG_LLC=y -CONFIG_LLC2=m -CONFIG_IPX=m -CONFIG_IPX_INTERN=y -CONFIG_ATALK=m -CONFIG_DEV_APPLETALK=y -CONFIG_IPDDP=m -CONFIG_IPDDP_ENCAP=y -CONFIG_IPDDP_DECAP=y -# 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 - -# -# QoS and/or fair queueing -# -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CLK_JIFFIES=y -# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set -# CONFIG_NET_SCH_CLK_CPU is not set - -# -# Queueing/Scheduling -# -CONFIG_NET_SCH_CBQ=m -CONFIG_NET_SCH_HTB=m -CONFIG_NET_SCH_HFSC=m -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m -CONFIG_NET_SCH_NETEM=m -CONFIG_NET_SCH_INGRESS=m - -# -# Classification -# -CONFIG_NET_CLS=y -CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_TCINDEX=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_ROUTE=y -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -CONFIG_CLS_U32_PERF=y -CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m -CONFIG_NET_EMATCH=y -CONFIG_NET_EMATCH_STACK=32 -CONFIG_NET_EMATCH_CMP=m -CONFIG_NET_EMATCH_NBYTE=m -CONFIG_NET_EMATCH_U32=m -CONFIG_NET_EMATCH_META=m -CONFIG_NET_EMATCH_TEXT=m -CONFIG_NET_CLS_ACT=y -CONFIG_NET_ACT_POLICE=m -CONFIG_NET_ACT_GACT=m -CONFIG_GACT_PROB=y -CONFIG_NET_ACT_MIRRED=m -CONFIG_NET_ACT_IPT=m -CONFIG_NET_ACT_PEDIT=m -CONFIG_NET_ACT_SIMP=m -CONFIG_NET_CLS_IND=y -CONFIG_NET_ESTIMATOR=y - -# -# Network testing -# -CONFIG_NET_PKTGEN=m -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -CONFIG_BT=m -CONFIG_BT_L2CAP=m -CONFIG_BT_SCO=m -CONFIG_BT_RFCOMM=m -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=m -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=m - -# -# Bluetooth device drivers -# -CONFIG_BT_HCIUSB=m -CONFIG_BT_HCIUSB_SCO=y -# CONFIG_BT_HCIUART is not set -CONFIG_BT_HCIBCM203X=m -CONFIG_BT_HCIBPA10X=m -CONFIG_BT_HCIBFUSB=m -CONFIG_BT_HCIVHCI=m -CONFIG_IEEE80211=m -# CONFIG_IEEE80211_DEBUG is not set -CONFIG_IEEE80211_CRYPT_WEP=m -CONFIG_IEEE80211_CRYPT_CCMP=m - -# -# Device Drivers -# - -# -# Generic Driver Options -# -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=m -# CONFIG_DEBUG_DRIVER is not set -# CONFIG_SYS_HYPERVISOR is not set - -# -# Connector - unified userspace <-> kernelspace linker -# -CONFIG_CONNECTOR=y -CONFIG_PROC_EVENTS=y - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Parallel port support -# -CONFIG_PARPORT=m -CONFIG_PARPORT_PC=m -CONFIG_PARPORT_SERIAL=m -CONFIG_PARPORT_PC_FIFO=y -# CONFIG_PARPORT_PC_SUPERIO is not set -CONFIG_PARPORT_NOT_PC=y -# CONFIG_PARPORT_GSC is not set -CONFIG_PARPORT_1284=y - -# -# Plug and Play support -# - -# -# Block devices -# -CONFIG_BLK_DEV_FD=m -# CONFIG_PARIDE 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_COW_COMMON is not set -CONFIG_BLK_DEV_LOOP=m -CONFIG_BLK_DEV_CRYPTOLOOP=m -CONFIG_BLK_DEV_NBD=m -# CONFIG_BLK_DEV_SX8 is not set -# CONFIG_BLK_DEV_UB is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=16 -CONFIG_BLK_DEV_RAM_SIZE=123456 -CONFIG_BLK_DEV_INITRD=y -CONFIG_CDROM_PKTCDVD=m -CONFIG_CDROM_PKTCDVD_BUFFERS=8 -CONFIG_CDROM_PKTCDVD_WCACHE=y -CONFIG_CIPHER_TWOFISH=m -CONFIG_ATA_OVER_ETH=m - -# -# ATA/ATAPI/MFM/RLL support -# -CONFIG_IDE=y -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECD=m -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -CONFIG_BLK_DEV_IDESCSI=m -CONFIG_IDE_TASK_IOCTL=y - -# -# IDE chipset support/bugfixes -# -CONFIG_IDE_GENERIC=y -CONFIG_BLK_DEV_IDEPCI=y -CONFIG_IDEPCI_SHARE_IRQ=y -# CONFIG_BLK_DEV_OFFBOARD is not set -# CONFIG_BLK_DEV_GENERIC is not set -# CONFIG_BLK_DEV_OPTI621 is not set -# CONFIG_BLK_DEV_SL82C105 is not set -CONFIG_BLK_DEV_IDEDMA_PCI=y -CONFIG_BLK_DEV_IDEDMA_FORCED=y -CONFIG_IDEDMA_PCI_AUTO=y -# CONFIG_IDEDMA_ONLYDISK is not set -# CONFIG_BLK_DEV_AEC62XX is not set -# CONFIG_BLK_DEV_ALI15X3 is not set -CONFIG_BLK_DEV_AMD74XX=y -# 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_CS5530 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 is not set -# CONFIG_BLK_DEV_IT821X is not set -# CONFIG_BLK_DEV_NS87415 is not set -# CONFIG_BLK_DEV_PDC202XX_OLD is not set -# CONFIG_BLK_DEV_PDC202XX_NEW is not set -# CONFIG_BLK_DEV_SVWKS is not set -CONFIG_BLK_DEV_SIIMAGE=y -# CONFIG_BLK_DEV_SLC90E66 is not set -# CONFIG_BLK_DEV_TRM290 is not set -# CONFIG_BLK_DEV_VIA82CXXX is not set -CONFIG_BLK_DEV_IDE_PMAC=y -CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y -CONFIG_BLK_DEV_IDEDMA_PMAC=y -# CONFIG_BLK_DEV_IDE_PMAC_BLINK is not set -# CONFIG_IDE_ARM is not set -CONFIG_BLK_DEV_IDEDMA=y -# CONFIG_IDEDMA_IVB is not set -CONFIG_IDEDMA_AUTO=y -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI device support -# -CONFIG_RAID_ATTRS=m -CONFIG_SCSI=m -CONFIG_SCSI_NETLINK=y -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=m -CONFIG_SD_IOSTATS=y -CONFIG_CHR_DEV_ST=m -# CONFIG_CHR_DEV_OSST is not set -CONFIG_BLK_DEV_SR=m -CONFIG_BLK_DEV_SR_VENDOR=y -CONFIG_CHR_DEV_SG=m -CONFIG_CHR_DEV_SCH=m - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -CONFIG_SCSI_MULTI_LUN=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_LOGGING=y - -# -# SCSI Transport Attributes -# -CONFIG_SCSI_SPI_ATTRS=m -CONFIG_SCSI_FC_ATTRS=m -# CONFIG_SCSI_ISCSI_ATTRS is not set -CONFIG_SCSI_SAS_ATTRS=m -CONFIG_SCSI_SAS_LIBSAS=m -CONFIG_SCSI_SAS_ATA=y -# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set -CONFIG_ISCSI_TARGET=m - -# -# SCSI low-level drivers -# -# CONFIG_ISCSI_TCP is not set -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_ACARD 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_AIC94XX=m -# CONFIG_AIC94XX_DEBUG is not set -# CONFIG_SCSI_ARCMSR is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -CONFIG_MEGARAID_SAS=m -# CONFIG_SCSI_HPTIOP is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_EATA is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_IPS is not set -CONFIG_SCSI_IBMVSCSI=m -CONFIG_SCSI_IBMVSCSIS=m -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_PPA is not set -# CONFIG_SCSI_IMM is not set -CONFIG_SCSI_SYM53C8XX_2=m -CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 -CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 -CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 -CONFIG_SCSI_SYM53C8XX_MMIO=y -CONFIG_SCSI_IPR=m -CONFIG_SCSI_IPR_TRACE=y -CONFIG_SCSI_IPR_DUMP=y -# CONFIG_SCSI_QLOGIC_FC is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -CONFIG_SCSI_QLA_FC=m -# CONFIG_SCSI_QLA_ISCSI is not set -CONFIG_SCSI_LPFC=m -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_DC390T is not set -CONFIG_SCSI_DEBUG=m - -# -# Serial ATA (prod) and Parallel ATA (experimental) drivers -# -CONFIG_ATA=m -CONFIG_SATA_AHCI=m -CONFIG_SATA_SVW=m -# CONFIG_ATA_PIIX is not set -# CONFIG_SATA_MV is not set -# CONFIG_SATA_NV is not set -# CONFIG_PDC_ADMA is not set -# CONFIG_SATA_QSTOR is not set -# CONFIG_SATA_PROMISE is not set -# CONFIG_SATA_SX4 is not set -# CONFIG_SATA_SIL is not set -# CONFIG_SATA_SIL24 is not set -# CONFIG_SATA_SIS is not set -# CONFIG_SATA_ULI is not set -# CONFIG_SATA_VIA is not set -CONFIG_SATA_VITESSE=m -CONFIG_SATA_INTEL_COMBINED=y -# CONFIG_PATA_ALI is not set -# CONFIG_PATA_AMD is not set -# CONFIG_PATA_ARTOP is not set -# CONFIG_PATA_ATIIXP is not set -# CONFIG_PATA_CMD64X is not set -# CONFIG_PATA_CS5520 is not set -# CONFIG_PATA_CS5530 is not set -# CONFIG_PATA_CYPRESS is not set -# CONFIG_PATA_EFAR is not set -# CONFIG_ATA_GENERIC is not set -# CONFIG_PATA_HPT366 is not set -# CONFIG_PATA_HPT37X is not set -# CONFIG_PATA_HPT3X2N is not set -# CONFIG_PATA_HPT3X3 is not set -# CONFIG_PATA_IT821X is not set -# CONFIG_PATA_IT8213 is not set -# CONFIG_PATA_JMICRON is not set -# CONFIG_PATA_TRIFLEX is not set -# CONFIG_PATA_MARVELL is not set -# CONFIG_PATA_MPIIX is not set -# CONFIG_PATA_OLDPIIX is not set -# CONFIG_PATA_NETCELL is not set -# CONFIG_PATA_NS87410 is not set -# CONFIG_PATA_OPTI is not set -# CONFIG_PATA_OPTIDMA is not set -# CONFIG_PATA_PDC_OLD is not set -# CONFIG_PATA_RADISYS is not set -# CONFIG_PATA_RZ1000 is not set -# CONFIG_PATA_SC1200 is not set -# CONFIG_PATA_SERVERWORKS is not set -CONFIG_PATA_PDC2027X=m -# CONFIG_PATA_SIL680 is not set -# CONFIG_PATA_SIS is not set -# CONFIG_PATA_VIA is not set -CONFIG_PATA_WINBOND=m - -# -# Multi-device support (RAID and LVM) -# -CONFIG_MD=y -CONFIG_BLK_DEV_MD=y -CONFIG_MD_LINEAR=m -CONFIG_MD_RAID0=m -CONFIG_MD_RAID1=m -CONFIG_MD_RAID10=m -CONFIG_MD_RAID5=m -CONFIG_MD_RAID6=m -CONFIG_MD_MULTIPATH=m -CONFIG_MD_FAULTY=m -CONFIG_BLK_DEV_DM=m -CONFIG_DM_CRYPT=m -CONFIG_DM_SNAPSHOT=m -CONFIG_DM_MIRROR=m -CONFIG_DM_ZERO=m -CONFIG_DM_MULTIPATH=m -CONFIG_DM_MULTIPATH_EMC=m -CONFIG_DM_MULTIPATH_HP_SW=m -CONFIG_DM_MULTIPATH_RDAC=m -CONFIG_DM_MULTIPATH_ALUA=m -CONFIG_DM_NL_EVT=y -CONFIG_FUSION=y -CONFIG_FUSION_SPI=m -CONFIG_FUSION_FC=m -CONFIG_FUSION_SAS=m -CONFIG_FUSION_MAX_SGE=128 -CONFIG_FUSION_MAX_FC_SGE=256 -CONFIG_FUSION_CTL=m -CONFIG_FUSION_LAN=m -CONFIG_FUSION_LOGGING=y - -# -# IEEE 1394 (FireWire) support -# -CONFIG_IEEE1394=m - -# -# Subsystem Options -# -# CONFIG_IEEE1394_VERBOSEDEBUG is not set -# CONFIG_IEEE1394_OUI_DB is not set -CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y -CONFIG_IEEE1394_CONFIG_ROM_IP1394=y -CONFIG_IEEE1394_EXPORT_FULL_API=y - -# -# Device Drivers -# -# CONFIG_IEEE1394_PCILYNX is not set -CONFIG_IEEE1394_OHCI1394=m - -# -# Protocol Drivers -# -CONFIG_IEEE1394_VIDEO1394=m -CONFIG_IEEE1394_SBP2=m -# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set -CONFIG_IEEE1394_ETH1394=m -CONFIG_IEEE1394_DV1394=m -CONFIG_IEEE1394_RAWIO=m - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# Macintosh device drivers -# -CONFIG_ADB=y -CONFIG_ADB_PMU=y -CONFIG_PMAC_SMU=y -CONFIG_INPUT_ADBHID=y -CONFIG_MAC_EMUMOUSEBTN=y -CONFIG_THERM_PM72=y -CONFIG_WINDFARM=y -CONFIG_WINDFARM_PM81=y -CONFIG_WINDFARM_PM91=y -CONFIG_WINDFARM_PM112=y - -# -# Network device support -# -CONFIG_NETDEVICES=y -CONFIG_IFB=m -CONFIG_DUMMY=m -CONFIG_BONDING=m -CONFIG_EQUALIZER=m -CONFIG_TUN=m - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set - -# -# PHY device support -# -CONFIG_PHYLIB=m - -# -# MII PHY device drivers -# -CONFIG_MARVELL_PHY=m -CONFIG_DAVICOM_PHY=m -CONFIG_QSEMI_PHY=m -CONFIG_LXT_PHY=m -CONFIG_CICADA_PHY=m - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_MII=m -# CONFIG_HAPPYMEAL is not set -CONFIG_SUNGEM=m -CONFIG_CASSINI=m -CONFIG_NET_VENDOR_3COM=y -CONFIG_VORTEX=m -CONFIG_TYPHOON=m - -# -# Tulip family network device support -# -CONFIG_NET_TULIP=y -# CONFIG_DE2104X is not set -CONFIG_TULIP=m -CONFIG_TULIP_MWI=y -CONFIG_TULIP_MMIO=y -CONFIG_TULIP_NAPI=y -CONFIG_TULIP_NAPI_HW_MITIGATION=y -CONFIG_DE4X5=m -CONFIG_WINBOND_840=m -CONFIG_DM9102=m -CONFIG_ULI526X=m -# CONFIG_HP100 is not set -CONFIG_IBMVETH=m -CONFIG_NET_PCI=y -CONFIG_PCNET32=m -CONFIG_AMD8111_ETH=m -CONFIG_AMD8111E_NAPI=y -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_B44 is not set -# CONFIG_FORCEDETH is not set -# CONFIG_DGRS is not set -# CONFIG_EEPRO100 is not set -CONFIG_E100=m -# 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_VIA_RHINE is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -CONFIG_ACENIC=m -CONFIG_ACENIC_OMIT_TIGON_I=y -# CONFIG_DL2K is not set -CONFIG_E1000=m -CONFIG_E1000_NAPI=y -# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set -CONFIG_IGB=m -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -CONFIG_R8169=m -CONFIG_R8169_NAPI=y -CONFIG_R8169_VLAN=y -CONFIG_SIS190=m -# CONFIG_SKGE is not set -CONFIG_SKY2=m -# CONFIG_SK98LIN is not set -# CONFIG_VIA_VELOCITY is not set -CONFIG_TIGON3=m -CONFIG_BNX2=m -CONFIG_BNX2X=m -CONFIG_SPIDER_NET=m -# CONFIG_MV643XX_ETH is not set -CONFIG_QLA3XXX=m - -# -# Ethernet (10000 Mbit) -# -CONFIG_CHELSIO_T1=m -CONFIG_EHEA=m -# CONFIG_CHELSIO_T3 is not set -CONFIG_IXGBE=m -CONFIG_IXGBE_NAPI=y -CONFIG_IXGB=m -CONFIG_IXGB_NAPI=y -CONFIG_S2IO=m -CONFIG_S2IO_NAPI=y -CONFIG_NETXEN_NIC=m -CONFIG_MYRI10GE=m - -# -# Token Ring devices -# -CONFIG_TR=y -CONFIG_IBMOL=m -# CONFIG_3C359 is not set -# CONFIG_TMS380TR is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=m -CONFIG_PPP_MULTILINK=y -CONFIG_PPP_FILTER=y -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_MPPE=m -CONFIG_PPPOE=m -CONFIG_SLIP=m -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLIP_SMART=y -# CONFIG_SLIP_MODE_SLIP6 is not set -CONFIG_NET_FC=y -CONFIG_SHAPER=m -CONFIG_NETCONSOLE=m -CONFIG_NETPOLL=y -CONFIG_NETPOLL_TRAP=y -CONFIG_NET_POLL_CONTROLLER=y - -# -# ISDN subsystem -# -# CONFIG_ISDN 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 is not set -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -CONFIG_INPUT_JOYDEV=m -CONFIG_INPUT_TSDEV=m -CONFIG_INPUT_TSDEV_SCREEN_X=240 -CONFIG_INPUT_TSDEV_SCREEN_Y=320 -CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_EVBUG=m - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -CONFIG_KEYBOARD_ATKBD=y -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_LKKBD is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_NEWTON is not set -CONFIG_INPUT_MOUSE=y -CONFIG_MOUSE_PS2=y -CONFIG_MOUSE_SERIAL=m -# CONFIG_MOUSE_VSXXXAA is not set -CONFIG_INPUT_JOYSTICK=y -# CONFIG_JOYSTICK_ANALOG is not set -# CONFIG_JOYSTICK_A3D is not set -# CONFIG_JOYSTICK_ADI is not set -# CONFIG_JOYSTICK_COBRA is not set -# CONFIG_JOYSTICK_GF2K is not set -# CONFIG_JOYSTICK_GRIP is not set -# CONFIG_JOYSTICK_GRIP_MP is not set -# CONFIG_JOYSTICK_GUILLEMOT is not set -# CONFIG_JOYSTICK_INTERACT is not set -# CONFIG_JOYSTICK_SIDEWINDER is not set -# CONFIG_JOYSTICK_TMDC is not set -CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=y -CONFIG_JOYSTICK_IFORCE_232=y -CONFIG_JOYSTICK_WARRIOR=m -CONFIG_JOYSTICK_MAGELLAN=m -CONFIG_JOYSTICK_SPACEORB=m -CONFIG_JOYSTICK_SPACEBALL=m -CONFIG_JOYSTICK_STINGER=m -CONFIG_JOYSTICK_TWIDJOY=m -# CONFIG_JOYSTICK_DB9 is not set -# CONFIG_JOYSTICK_GAMECON is not set -# CONFIG_JOYSTICK_TURBOGRAFX is not set -CONFIG_JOYSTICK_JOYDUMP=m -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ADS7846=m -# CONFIG_TOUCHSCREEN_GUNZE is not set -# CONFIG_TOUCHSCREEN_ELO is not set -# CONFIG_TOUCHSCREEN_MTOUCH is not set -# CONFIG_TOUCHSCREEN_MK712 is not set -CONFIG_INPUT_MISC=y -CONFIG_INPUT_PCSPKR=m -CONFIG_INPUT_UINPUT=m - -# -# Hardware I/O ports -# -CONFIG_SERIO=y -CONFIG_SERIO_I8042=y -CONFIG_SERIO_SERPORT=m -# CONFIG_SERIO_PARKBD is not set -# CONFIG_SERIO_PCIPS2 is not set -CONFIG_SERIO_LIBPS2=y -CONFIG_SERIO_RAW=m -CONFIG_GAMEPORT=m -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set -# CONFIG_GAMEPORT_EMU10K1 is not set -# CONFIG_GAMEPORT_FM801 is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_HW_CONSOLE=y -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_NOZOMI is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=4 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 -# CONFIG_SERIAL_8250_EXTENDED is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_SERIAL_PMACZILOG=y -CONFIG_SERIAL_PMACZILOG_CONSOLE=y -CONFIG_SERIAL_ICOM=m -CONFIG_SERIAL_JSM=m -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=64 -CONFIG_PRINTER=m -# CONFIG_LP_CONSOLE is not set -# CONFIG_PPDEV is not set -# CONFIG_TIPAR is not set -CONFIG_HVC_CONSOLE=y -CONFIG_HVC_RTAS=y -CONFIG_HVCS=m - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -CONFIG_WATCHDOG=y -# CONFIG_WATCHDOG_NOWAYOUT is not set - -# -# Watchdog Device Drivers -# -CONFIG_SOFT_WATCHDOG=m -CONFIG_WATCHDOG_RTAS=m - -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set -# CONFIG_RTC is not set -CONFIG_GEN_RTC=y -# CONFIG_GEN_RTC_X is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -CONFIG_AGP=m -CONFIG_AGP_UNINORTH=m -CONFIG_DRM=m -# CONFIG_DRM_TDFX is not set -CONFIG_DRM_R128=m -CONFIG_DRM_RADEON=m -# CONFIG_DRM_MGA is not set -# CONFIG_DRM_SIS is not set -# CONFIG_DRM_VIA is not set -# CONFIG_DRM_SAVAGE is not set -CONFIG_RAW_DRIVER=m -CONFIG_MAX_RAW_DEVS=4096 -CONFIG_HANGCHECK_TIMER=m - -# -# TPM devices -# -CONFIG_TCG_TPM=m -CONFIG_TCG_TIS=m -CONFIG_TCG_ATMEL=m -# CONFIG_TELCLOCK is not set -CONFIG_CRASHER=m - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=m - -# -# I2C Algorithms -# -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_ALGOPCF is not set -# CONFIG_I2C_ALGOPCA is not set - -# -# I2C Hardware Bus support -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -CONFIG_I2C_AMD8111=m -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_I810 is not set -# CONFIG_I2C_PIIX4 is not set -CONFIG_I2C_POWERMAC=y -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_PARPORT is not set -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_PROSAVAGE is not set -# CONFIG_I2C_SAVAGE4 is not set -# CONFIG_SCx200_ACB is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_STUB is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set -# CONFIG_I2C_VOODOO3 is not set -# CONFIG_I2C_PCA_ISA is not set - -# -# Miscellaneous I2C Chip support -# -# CONFIG_SENSORS_DS1337 is not set -# CONFIG_SENSORS_DS1374 is not set -# CONFIG_SENSORS_EEPROM is not set -# CONFIG_SENSORS_PCF8574 is not set -# CONFIG_SENSORS_PCA9539 is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_SENSORS_RTC8564 is not set -# CONFIG_SENSORS_MAX6875 is not set -# CONFIG_RTC_X1205_I2C is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set - -# -# SPI support -# -CONFIG_SPI=y -CONFIG_SPI_DEBUG=y -CONFIG_SPI_MASTER=y - -# -# SPI Master Controller Drivers -# -CONFIG_SPI_BITBANG=m -CONFIG_SPI_BUTTERFLY=m - -# -# SPI Protocol Masters -# - -# -# Dallas's 1-wire bus -# -# CONFIG_W1 is not set - -# -# Hardware Monitoring support -# -# CONFIG_HWMON is not set -# CONFIG_HWMON_VID is not set - -# -# Misc devices -# -# CONFIG_TIFM_CORE is not set - -# -# Multimedia Capabilities Port drivers -# - -# -# Multimedia devices -# -CONFIG_VIDEO_DEV=m - -# -# Video For Linux -# - -# -# Video Adapters -# -# CONFIG_VIDEO_ADV_DEBUG is not set -CONFIG_VIDEO_BT848=m -CONFIG_VIDEO_SAA6588=m -# CONFIG_VIDEO_BWQCAM is not set -# CONFIG_VIDEO_CQCAM is not set -# CONFIG_VIDEO_W9966 is not set -# CONFIG_VIDEO_CPIA is not set -# CONFIG_VIDEO_SAA5246A is not set -# CONFIG_VIDEO_SAA5249 is not set -# CONFIG_TUNER_3036 is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_VIDEO_ZORAN is not set -# CONFIG_VIDEO_SAA7134 is not set -# CONFIG_VIDEO_MXB is not set -# CONFIG_VIDEO_DPC is not set -# CONFIG_VIDEO_HEXIUM_ORION is not set -# CONFIG_VIDEO_HEXIUM_GEMINI is not set -# CONFIG_VIDEO_CX88 is not set -# CONFIG_VIDEO_EM28XX is not set -# CONFIG_VIDEO_OVCAMCHIP is not set -# CONFIG_VIDEO_AUDIO_DECODER is not set -# CONFIG_VIDEO_DECODER is not set - -# -# Radio Adapters -# -# CONFIG_RADIO_GEMTEK_PCI is not set -# CONFIG_RADIO_MAXIRADIO is not set -# CONFIG_RADIO_MAESTRO is not set - -# -# Digital Video Broadcasting Devices -# -# CONFIG_DVB is not set -CONFIG_VIDEO_TUNER=m -CONFIG_VIDEO_BUF=m -CONFIG_VIDEO_BTCX=m -CONFIG_VIDEO_IR=m -CONFIG_VIDEO_TVEEPROM=m - -# -# Graphics support -# -CONFIG_FB=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_MACMODES=y -CONFIG_FB_MODE_HELPERS=y -CONFIG_FB_TILEBLITTING=y -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_OF=y -# CONFIG_FB_CONTROL is not set -# CONFIG_FB_PLATINUM is not set -# CONFIG_FB_VALKYRIE is not set -# CONFIG_FB_CT65550 is not set -# CONFIG_FB_ASILIANT is not set -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_VGA16 is not set -# CONFIG_FB_S1D13XXX is not set -CONFIG_FB_NVIDIA=y -CONFIG_FB_NVIDIA_I2C=y -# CONFIG_FB_RIVA is not set -CONFIG_FB_MATROX=y -CONFIG_FB_MATROX_MILLENIUM=y -CONFIG_FB_MATROX_MYSTIQUE=y -CONFIG_FB_MATROX_G=y -CONFIG_FB_MATROX_I2C=m -CONFIG_FB_MATROX_MAVEN=m -CONFIG_FB_MATROX_MULTIHEAD=y -# CONFIG_FB_RADEON_OLD is not set -CONFIG_FB_RADEON=y -CONFIG_FB_RADEON_I2C=y -# CONFIG_FB_RADEON_DEBUG is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_KYRO is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_VIRTUAL is not set - -# -# Console display driver support -# -# CONFIG_VGA_CONSOLE is not set -CONFIG_DUMMY_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y - -# -# Logo configuration -# -CONFIG_LOGO=y -# CONFIG_LOGO_LINUX_MONO is not set -CONFIG_LOGO_LINUX_VGA16=y -# CONFIG_LOGO_LINUX_CLUT224 is not set -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_BACKLIGHT_CLASS_DEVICE=m -CONFIG_BACKLIGHT_DEVICE=y -CONFIG_LCD_CLASS_DEVICE=m -CONFIG_LCD_DEVICE=y - -# -# Bootsplash configuration -# - -# -# Sound -# -CONFIG_SOUND=m - -# -# Advanced Linux Sound Architecture -# -CONFIG_SND=m -CONFIG_SND_TIMER=m -CONFIG_SND_PCM=m -CONFIG_SND_HWDEP=m -CONFIG_SND_RAWMIDI=m -CONFIG_SND_SEQUENCER=m -CONFIG_SND_SEQ_DUMMY=m -CONFIG_SND_OSSEMUL=y -CONFIG_SND_MIXER_OSS=m -CONFIG_SND_PCM_OSS=m -CONFIG_SND_PCM_OSS_PLUGINS=y -CONFIG_SND_SEQUENCER_OSS=y -CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_SUPPORT_OLD_API=y -CONFIG_SND_VERBOSE_PROCFS=y -CONFIG_SND_VERBOSE_PRINTK=y -CONFIG_SND_DEBUG=y -# CONFIG_SND_DEBUG_DETECT is not set - -# -# Generic devices -# -CONFIG_SND_MPU401_UART=m -CONFIG_SND_DUMMY=m -CONFIG_SND_VIRMIDI=m -CONFIG_SND_MTPAV=m -CONFIG_SND_SERIAL_U16550=m -CONFIG_SND_MPU401=m - -# -# PCI devices -# -# CONFIG_SND_AD1889 is not set -# CONFIG_SND_ALS4000 is not set -# CONFIG_SND_ALI5451 is not set -# CONFIG_SND_ATIIXP is not set -# CONFIG_SND_ATIIXP_MODEM is not set -# CONFIG_SND_AU8810 is not set -# CONFIG_SND_AU8820 is not set -# CONFIG_SND_AU8830 is not set -# CONFIG_SND_AZT3328 is not set -# CONFIG_SND_BT87X is not set -# CONFIG_SND_CA0106 is not set -# CONFIG_SND_CMIPCI is not set -# CONFIG_SND_CS4281 is not set -# CONFIG_SND_CS46XX is not set -CONFIG_SND_DARLA20=m -CONFIG_SND_GINA20=m -CONFIG_SND_LAYLA20=m -CONFIG_SND_DARLA24=m -CONFIG_SND_GINA24=m -CONFIG_SND_LAYLA24=m -CONFIG_SND_MONA=m -CONFIG_SND_MIA=m -CONFIG_SND_ECHO3G=m -CONFIG_SND_INDIGO=m -CONFIG_SND_INDIGOIO=m -CONFIG_SND_INDIGODJ=m -# CONFIG_SND_EMU10K1 is not set -# CONFIG_SND_EMU10K1X is not set -# CONFIG_SND_ENS1370 is not set -# CONFIG_SND_ENS1371 is not set -# CONFIG_SND_ES1938 is not set -# CONFIG_SND_ES1968 is not set -# CONFIG_SND_FM801 is not set -# CONFIG_SND_HDA_INTEL is not set -# CONFIG_SND_HDSP is not set -# CONFIG_SND_HDSPM is not set -# CONFIG_SND_ICE1712 is not set -# CONFIG_SND_ICE1724 is not set -# CONFIG_SND_INTEL8X0 is not set -# CONFIG_SND_INTEL8X0M is not set -# CONFIG_SND_KORG1212 is not set -# CONFIG_SND_MAESTRO3 is not set -# CONFIG_SND_MIXART is not set -# CONFIG_SND_NM256 is not set -# CONFIG_SND_PCXHR is not set -# CONFIG_SND_RME32 is not set -# CONFIG_SND_RME96 is not set -# CONFIG_SND_RME9652 is not set -# CONFIG_SND_SONICVIBES is not set -# CONFIG_SND_TRIDENT is not set -# CONFIG_SND_VIA82XX is not set -# CONFIG_SND_VIA82XX_MODEM is not set -# CONFIG_SND_VX222 is not set -# CONFIG_SND_YMFPCI is not set - -# -# ALSA PowerMac devices -# -CONFIG_SND_POWERMAC=m -CONFIG_SND_POWERMAC_AUTO_DRC=y - -# -# USB devices -# -CONFIG_SND_USB_AUDIO=m -CONFIG_SND_USB_USX2Y=m - -# -# Open Sound System -# -# CONFIG_SOUND_PRIME is not set - -# -# USB support -# -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB_ARCH_HAS_OHCI=y -CONFIG_USB=y -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -CONFIG_USB_BANDWIDTH=y -# CONFIG_USB_DYNAMIC_MINORS is not set -# CONFIG_USB_OTG is not set - -# -# USB Host Controller Drivers -# -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_SPLIT_ISO=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -# CONFIG_USB_ISP116X_HCD is not set -CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_BIG_ENDIAN is not set -CONFIG_USB_OHCI_LITTLE_ENDIAN=y -CONFIG_USB_UHCI_HCD=m -# CONFIG_USB_SL811_HCD is not set - -# -# USB Device Class drivers -# -# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set -CONFIG_USB_ACM=m -CONFIG_USB_PRINTER=m - -# -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -# - -# -# may also be needed; see USB_STORAGE Help for more information -# -CONFIG_USB_STORAGE=m -# CONFIG_USB_STORAGE_DEBUG is not set -CONFIG_USB_STORAGE_DATAFAB=y -CONFIG_USB_STORAGE_FREECOM=y -CONFIG_USB_STORAGE_ISD200=y -CONFIG_USB_STORAGE_DPCM=y -CONFIG_USB_STORAGE_USBAT=y -CONFIG_USB_STORAGE_SDDR09=y -CONFIG_USB_STORAGE_SDDR55=y -CONFIG_USB_STORAGE_JUMPSHOT=y -CONFIG_USB_STORAGE_ALAUDA=y -CONFIG_USB_STORAGE_ONETOUCH=y -# CONFIG_USB_LIBUSUAL is not set - -# -# USB Input Devices -# -CONFIG_USB_HID=y -CONFIG_USB_HIDINPUT=y -# CONFIG_USB_HIDINPUT_POWERBOOK is not set -CONFIG_HID_FF=y -CONFIG_HID_PID=y -CONFIG_LOGITECH_FF=y -CONFIG_THRUSTMASTER_FF=y -CONFIG_USB_HIDDEV=y -CONFIG_USB_AIPTEK=m -CONFIG_USB_WACOM=m -CONFIG_USB_ACECAD=m -CONFIG_USB_KBTAB=m -CONFIG_USB_POWERMATE=m -CONFIG_USB_MTOUCH=m -CONFIG_USB_ITMTOUCH=m -CONFIG_USB_EGALAX=m -CONFIG_USB_YEALINK=m -CONFIG_USB_XPAD=m -CONFIG_USB_ATI_REMOTE=m -CONFIG_USB_ATI_REMOTE2=m -CONFIG_USB_KEYSPAN_REMOTE=m -CONFIG_USB_APPLETOUCH=m - -# -# USB Imaging devices -# -CONFIG_USB_MDC800=m -CONFIG_USB_MICROTEK=m - -# -# USB Multimedia devices -# -CONFIG_USB_DABUSB=m -CONFIG_USB_VICAM=m -CONFIG_USB_DSBR=m -CONFIG_USB_ET61X251=m -CONFIG_USB_IBMCAM=m -CONFIG_USB_KONICAWC=m -CONFIG_USB_OV511=m -CONFIG_USB_SE401=m -CONFIG_USB_SN9C102=m -CONFIG_USB_STV680=m -CONFIG_USB_PWC=m - -# -# USB Network Adapters -# -CONFIG_USB_CATC=m -CONFIG_USB_KAWETH=m -CONFIG_USB_PEGASUS=m -CONFIG_USB_RTL8150=m -CONFIG_USB_USBNET=m -CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_CDCETHER=m -CONFIG_USB_NET_GL620A=m -CONFIG_USB_NET_NET1080=m -CONFIG_USB_NET_PLUSB=m -CONFIG_USB_NET_RNDIS_HOST=m -CONFIG_USB_NET_CDC_SUBSET=m -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_NET_ZAURUS=m -# CONFIG_USB_MON is not set - -# -# USB port drivers -# -CONFIG_USB_USS720=m - -# -# USB Serial Converter support -# -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_AIRPRIME=m -CONFIG_USB_SERIAL_ANYDATA=m -CONFIG_USB_SERIAL_BELKIN=m -CONFIG_USB_SERIAL_WHITEHEAT=m -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -CONFIG_USB_SERIAL_CP2101=m -CONFIG_USB_SERIAL_CYPRESS_M8=m -CONFIG_USB_SERIAL_EMPEG=m -CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_FUNSOFT=m -CONFIG_USB_SERIAL_VISOR=m -CONFIG_USB_SERIAL_IPAQ=m -CONFIG_USB_SERIAL_IR=m -CONFIG_USB_SERIAL_EDGEPORT=m -CONFIG_USB_SERIAL_EDGEPORT_TI=m -CONFIG_USB_SERIAL_GARMIN=m -CONFIG_USB_SERIAL_IPW=m -CONFIG_USB_SERIAL_KEYSPAN_PDA=m -CONFIG_USB_SERIAL_KEYSPAN=m -CONFIG_USB_SERIAL_KEYSPAN_MPR=y -CONFIG_USB_SERIAL_KEYSPAN_USA28=y -CONFIG_USB_SERIAL_KEYSPAN_USA28X=y -CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y -CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y -CONFIG_USB_SERIAL_KEYSPAN_USA19=y -CONFIG_USB_SERIAL_KEYSPAN_USA18X=y -CONFIG_USB_SERIAL_KEYSPAN_USA19W=y -CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y -CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y -CONFIG_USB_SERIAL_KEYSPAN_USA49W=y -CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y -CONFIG_USB_SERIAL_KLSI=m -CONFIG_USB_SERIAL_KOBIL_SCT=m -CONFIG_USB_SERIAL_MCT_U232=m -CONFIG_USB_SERIAL_NAVMAN=m -CONFIG_USB_SERIAL_PL2303=m -CONFIG_USB_SERIAL_HP4X=m -CONFIG_USB_SERIAL_SAFE=m -CONFIG_USB_SERIAL_SAFE_PADDED=y -CONFIG_USB_SERIAL_SIERRAWIRELESS=m -CONFIG_USB_SERIAL_TI=m -CONFIG_USB_SERIAL_CYBERJACK=m -CONFIG_USB_SERIAL_XIRCOM=m -CONFIG_USB_SERIAL_OMNINET=m -CONFIG_USB_EZUSB=y - -# -# USB Miscellaneous drivers -# -CONFIG_USB_EMI62=m -CONFIG_USB_EMI26=m -CONFIG_USB_AUERSWALD=m -CONFIG_USB_RIO500=m -CONFIG_USB_LEGOTOWER=m -CONFIG_USB_LCD=m -CONFIG_USB_BERRY_CHARGE=m -CONFIG_USB_LED=m -CONFIG_USB_CYTHERM=m -CONFIG_USB_PHIDGETKIT=m -CONFIG_USB_PHIDGETSERVO=m -CONFIG_USB_IDMOUSE=m -CONFIG_USB_SISUSBVGA=m -CONFIG_USB_SISUSBVGA_CON=y -CONFIG_USB_LD=m -# CONFIG_USB_TEST is not set - -# -# USB DSL modem support -# - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set - -# -# MMC/SD Card support -# -# CONFIG_MMC is not set - -# -# InfiniBand support -# -# CONFIG_INFINIBAND is not set - -# -# DMA Engine support -# -# CONFIG_DMA_ENGINE is not set - -# -# DMA Clients -# - -# -# DMA Devices -# - -# -# File systems -# -CONFIG_EXT2_FS=y -CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_POSIX_ACL=y -CONFIG_EXT2_FS_SECURITY=y -# CONFIG_EXT2_FS_XIP is not set -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_XATTR=y -CONFIG_EXT3_FS_POSIX_ACL=y -CONFIG_EXT3_FS_SECURITY=y -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -CONFIG_FS_MBCACHE=y -CONFIG_REISERFS_FS=m -# CONFIG_REISERFS_CHECK is not set -CONFIG_REISERFS_PROC_INFO=y -CONFIG_REISERFS_FS_XATTR=y -CONFIG_REISERFS_FS_POSIX_ACL=y -CONFIG_REISERFS_FS_SECURITY=y -CONFIG_JFS_FS=m -CONFIG_JFS_POSIX_ACL=y -CONFIG_JFS_SECURITY=y -# CONFIG_JFS_DEBUG is not set -CONFIG_JFS_STATISTICS=y -CONFIG_FS_POSIX_ACL=y -CONFIG_XFS_FS=m -CONFIG_XFS_QUOTA=m -CONFIG_XFS_DMAPI=m -CONFIG_XFS_SECURITY=y -CONFIG_XFS_POSIX_ACL=y -CONFIG_XFS_RT=y -# CONFIG_XFS_DEBUG is not set -# CONFIG_XFS_TRACE is not set -CONFIG_OCFS2_FS=m -CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m -CONFIG_MINIX_FS=m -CONFIG_ROMFS_FS=m -CONFIG_INOTIFY=y -CONFIG_INOTIFY_USER=y -CONFIG_DMAPI=m -# CONFIG_DMAPI_DEBUG is not set -CONFIG_QUOTA=y -CONFIG_QFMT_V1=m -CONFIG_QFMT_V2=m -CONFIG_QUOTACTL=y -CONFIG_DNOTIFY=y -CONFIG_AUTOFS_FS=m -CONFIG_AUTOFS4_FS=m -CONFIG_FUSE_FS=m - -# -# CD-ROM/DVD Filesystems -# -CONFIG_ISO9660_FS=m -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_ZISOFS_FS=m -CONFIG_UDF_FS=m -CONFIG_UDF_NLS=y - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=m -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -CONFIG_NTFS_FS=m -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_PROC_KCORE=y -CONFIG_SYSFS=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_HUGETLBFS=y -CONFIG_HUGETLB_PAGE=y -CONFIG_RAMFS=y -CONFIG_CONFIGFS_FS=m - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -CONFIG_HFS_FS=m -CONFIG_HFSPLUS_FS=m -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_CRAMFS=m -# 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=m - -# -# Network File Systems -# -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_RPCSEC_GSS_SPKM3=m -CONFIG_SMB_FS=m -# CONFIG_SMB_NLS_DEFAULT is not set -CONFIG_CIFS=m -CONFIG_CIFS_STATS=y -# CONFIG_CIFS_STATS2 is not set -CONFIG_CIFS_XATTR=y -CONFIG_CIFS_POSIX=y -# CONFIG_CIFS_EXPERIMENTAL is not set -CONFIG_NCP_FS=m -CONFIG_NCPFS_PACKET_SIGNING=y -CONFIG_NCPFS_IOCTL_LOCKING=y -CONFIG_NCPFS_STRONG=y -CONFIG_NCPFS_NFS_NS=y -CONFIG_NCPFS_OS2_NS=y -CONFIG_NCPFS_SMALLDOS=y -CONFIG_NCPFS_NLS=y -CONFIG_NCPFS_EXTRAS=y -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set -CONFIG_9P_FS=m -CONFIG_GENERIC_ACL=y - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -CONFIG_OSF_PARTITION=y -CONFIG_AMIGA_PARTITION=y -CONFIG_ATARI_PARTITION=y -CONFIG_MAC_PARTITION=y -CONFIG_MSDOS_PARTITION=y -CONFIG_BSD_DISKLABEL=y -CONFIG_MINIX_SUBPARTITION=y -CONFIG_SOLARIS_X86_PARTITION=y -CONFIG_UNIXWARE_DISKLABEL=y -CONFIG_LDM_PARTITION=y -# CONFIG_LDM_DEBUG is not set -CONFIG_SGI_PARTITION=y -CONFIG_ULTRIX_PARTITION=y -CONFIG_SUN_PARTITION=y -CONFIG_KARMA_PARTITION=y -CONFIG_EFI_PARTITION=y - -# -# Native Language Support -# -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_737=m -CONFIG_NLS_CODEPAGE_775=m -CONFIG_NLS_CODEPAGE_850=m -CONFIG_NLS_CODEPAGE_852=m -CONFIG_NLS_CODEPAGE_855=m -CONFIG_NLS_CODEPAGE_857=m -CONFIG_NLS_CODEPAGE_860=m -CONFIG_NLS_CODEPAGE_861=m -CONFIG_NLS_CODEPAGE_862=m -CONFIG_NLS_CODEPAGE_863=m -CONFIG_NLS_CODEPAGE_864=m -CONFIG_NLS_CODEPAGE_865=m -CONFIG_NLS_CODEPAGE_866=m -CONFIG_NLS_CODEPAGE_869=m -CONFIG_NLS_CODEPAGE_936=m -CONFIG_NLS_CODEPAGE_950=m -CONFIG_NLS_CODEPAGE_932=m -CONFIG_NLS_CODEPAGE_949=m -CONFIG_NLS_CODEPAGE_874=m -CONFIG_NLS_ISO8859_8=m -CONFIG_NLS_CODEPAGE_1250=m -CONFIG_NLS_CODEPAGE_1251=m -CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_ISO8859_2=m -CONFIG_NLS_ISO8859_3=m -CONFIG_NLS_ISO8859_4=m -CONFIG_NLS_ISO8859_5=m -CONFIG_NLS_ISO8859_6=m -CONFIG_NLS_ISO8859_7=m -CONFIG_NLS_ISO8859_9=m -CONFIG_NLS_ISO8859_13=m -CONFIG_NLS_ISO8859_14=m -CONFIG_NLS_ISO8859_15=m -CONFIG_NLS_KOI8_R=m -CONFIG_NLS_KOI8_U=m -CONFIG_NLS_UTF8=m - -# -# Library routines -# -CONFIG_CRC_CCITT=m -CONFIG_CRC16=m -CONFIG_CRC32=y -CONFIG_LIBCRC32C=m -CONFIG_ZLIB_INFLATE=m -CONFIG_ZLIB_DEFLATE=m -CONFIG_TEXTSEARCH=y -CONFIG_TEXTSEARCH_KMP=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m - -# -# Instrumentation Support -# -CONFIG_PROFILING=y -CONFIG_OPROFILE=y -CONFIG_KPROBES=y - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_KERNEL=y -CONFIG_LOG_BUF_SHIFT=19 -# CONFIG_DETECT_SOFTLOCKUP is not set -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_KOBJECT is not set -CONFIG_DEBUG_INFO=y -CONFIG_DEBUG_FS=y -# CONFIG_DEBUG_VM is not set -CONFIG_FORCED_INLINING=y -# CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_LKCD_DUMP is not set -CONFIG_DEBUG_STACKOVERFLOW=y -CONFIG_DEBUG_STACK_USAGE=y -CONFIG_HCALL_STATS=y -CONFIG_DEBUGGER=y -CONFIG_XMON=y -# CONFIG_XMON_DEFAULT is not set -CONFIG_IRQSTACKS=y -CONFIG_BOOTX_TEXT=y -# CONFIG_PPC_EARLY_DEBUG_LPAR is not set -# CONFIG_PPC_EARLY_DEBUG_G5 is not set -# CONFIG_PPC_EARLY_DEBUG_RTAS is not set -# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set -# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set - -# -# Security options -# -CONFIG_KEYS=y -CONFIG_KEYS_DEBUG_PROC_KEYS=y -CONFIG_SECURITY=y -CONFIG_SECURITY_NETWORK=y -# CONFIG_SECURITY_NETWORK_XFRM is not set -CONFIG_SECURITY_CAPABILITIES=m -CONFIG_SECURITY_ROOTPLUG=m -CONFIG_SECURITY_SECLVL=m -# CONFIG_SECURITY_SELINUX is not set -CONFIG_SECURITY_APPARMOR=m -CONFIG_KEYS_COMPAT=y - -# -# Cryptographic options -# -CONFIG_CRYPTO=y -CONFIG_CRYPTO_ALGAPI=y -CONFIG_CRYPTO_ABLKCIPHER=m -CONFIG_CRYPTO_BLKCIPHER=m -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_MANAGER=y -CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_XCBC=m -CONFIG_CRYPTO_NULL=m -CONFIG_CRYPTO_MD4=m -CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_SHA1=m -CONFIG_CRYPTO_SHA256=m -CONFIG_CRYPTO_SHA512=m -CONFIG_CRYPTO_WP512=m -CONFIG_CRYPTO_TGR192=m -CONFIG_CRYPTO_GF128MUL=m -CONFIG_CRYPTO_ECB=m -CONFIG_CRYPTO_CBC=m -CONFIG_CRYPTO_PCBC=m -CONFIG_CRYPTO_LRW=m -CONFIG_CRYPTO_CRYPTD=m -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_FCRYPT=m -CONFIG_CRYPTO_BLOWFISH=m -CONFIG_CRYPTO_TWOFISH=m -CONFIG_CRYPTO_TWOFISH_COMMON=m -CONFIG_CRYPTO_SERPENT=m -CONFIG_CRYPTO_AES=m -CONFIG_CRYPTO_CAST5=m -CONFIG_CRYPTO_CAST6=m -CONFIG_CRYPTO_TEA=m -CONFIG_CRYPTO_ARC4=m -CONFIG_CRYPTO_KHAZAD=m -CONFIG_CRYPTO_ANUBIS=m -CONFIG_CRYPTO_DEFLATE=m -CONFIG_CRYPTO_MICHAEL_MIC=m -CONFIG_CRYPTO_CRC32C=m -CONFIG_CRYPTO_CAMELLIA=m -CONFIG_CRYPTO_TEST=m - -# -# Hardware crypto devices -# diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64.config 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64.config 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.16.60 -# Wed May 21 20:29:32 2008 +# Wed Aug 25 00:08:21 2010 # CONFIG_X86_64=y CONFIG_64BIT=y @@ -22,17 +22,17 @@ # Code maturity level options # CONFIG_EXPERIMENTAL=y -CONFIG_BROKEN_ON_SMP=y +CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 # # General setup # -CONFIG_LOCALVERSION="" -CONFIG_LOCALVERSION_AUTO=y +CONFIG_LOCALVERSION="-smp" +# CONFIG_LOCALVERSION_AUTO is not set CONFIG_SUSE_KERNEL=y CONFIG_SLE_VERSION=10 -CONFIG_SLE_SP=2 +CONFIG_SLE_SP=3 CONFIG_SLE_SP_SUBLEVEL=0 CONFIG_SWAP=y CONFIG_SYSVIPC=y @@ -42,11 +42,13 @@ CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y CONFIG_SYSCTL=y CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_CPUSETS=y CONFIG_RELAY=y CONFIG_INITRAMFS_SOURCE="" CONFIG_UID16=y @@ -83,6 +85,7 @@ CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y CONFIG_KMOD=y +CONFIG_STOP_MACHINE=y # # Block layer @@ -98,10 +101,10 @@ CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y # CONFIG_DEFAULT_AS is not set -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_DEFAULT_IOSCHED="deadline" # # Processor type and features @@ -119,23 +122,38 @@ CONFIG_MICROCODE=m CONFIG_X86_MSR=m CONFIG_X86_CPUID=m +CONFIG_X86_HT=y CONFIG_X86_IO_APIC=y CONFIG_X86_LOCAL_APIC=y CONFIG_MTRR=y -# CONFIG_SMP is not set +CONFIG_SMP=y +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_BKL is not set +CONFIG_NUMA=y +CONFIG_K8_NUMA=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_NUMA_EMU=y +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_FLATMEM_MANUAL=y -# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_DISCONTIGMEM_MANUAL=y # CONFIG_SPARSEMEM_MANUAL is not set -CONFIG_FLATMEM=y +CONFIG_DISCONTIGMEM=y CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_NEED_MULTIPLE_NODES=y # CONFIG_SPARSEMEM_STATIC is not set CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_MIGRATION=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=0 +CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y +CONFIG_NR_CPUS=128 +CONFIG_HOTPLUG_CPU=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y @@ -157,6 +175,7 @@ CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_ISA_DMA_API=y +CONFIG_GENERIC_PENDING_IRQ=y # # Power management options @@ -166,6 +185,7 @@ # CONFIG_PM_DEBUG is not set CONFIG_SOFTWARE_SUSPEND=y CONFIG_PM_STD_PARTITION="" +CONFIG_SUSPEND_SMP=y # # ACPI (Advanced Configuration and Power Interface) Support @@ -182,7 +202,9 @@ CONFIG_ACPI_FAN=m CONFIG_ACPI_DOCK=m CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_NUMA=y CONFIG_ACPI_ASUS=m CONFIG_ACPI_IBM=m CONFIG_ACPI_TOSHIBA=m @@ -708,7 +730,6 @@ # # Old SIR device drivers # -# CONFIG_IRPORT_SIR is not set # # Old Serial dongle support @@ -1076,17 +1097,17 @@ # CONFIG_SCSI_SPI_ATTRS=m CONFIG_SCSI_FC_ATTRS=m -# CONFIG_SCSI_ISCSI_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=m CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m -# CONFIG_SCSI_SAS_ATA is not set +CONFIG_SCSI_SAS_ATA=y # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_ISCSI_TARGET=m # # SCSI low-level drivers # -# CONFIG_ISCSI_TCP is not set +CONFIG_ISCSI_TCP=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1106,13 +1127,16 @@ CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_AIC79XX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC94XX=m -CONFIG_AIC94XX_DEBUG=y +# CONFIG_AIC94XX_DEBUG is not set CONFIG_SCSI_ARCMSR=m CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=m CONFIG_MEGARAID_MAILBOX=m CONFIG_MEGARAID_LEGACY=m CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +# CONFIG_SCSI_MPT2SAS_LOGGING is not set CONFIG_SCSI_HPTIOP=m CONFIG_SCSI_BUSLOGIC=m # CONFIG_SCSI_OMIT_FLASHPOINT is not set @@ -1140,8 +1164,9 @@ CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m -# CONFIG_SCSI_QLA_ISCSI is not set +CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m +CONFIG_SCSI_BFA_FC=m CONFIG_SCSI_DC395x=m CONFIG_SCSI_DC390T=m CONFIG_SCSI_DEBUG=m @@ -1152,6 +1177,11 @@ CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m # # Serial ATA (prod) and Parallel ATA (experimental) drivers @@ -1230,10 +1260,6 @@ CONFIG_DM_MIRROR=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m -CONFIG_DM_MULTIPATH_EMC=m -CONFIG_DM_MULTIPATH_HP_SW=m -CONFIG_DM_MULTIPATH_RDAC=m -CONFIG_DM_MULTIPATH_ALUA=m CONFIG_DM_NL_EVT=y CONFIG_FUSION=y CONFIG_FUSION_SPI=m @@ -1243,7 +1269,7 @@ CONFIG_FUSION_MAX_FC_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m -# CONFIG_FUSION_LOGGING is not set +CONFIG_FUSION_LOGGING=y # # IEEE 1394 (FireWire) support @@ -1353,7 +1379,6 @@ CONFIG_DM9102=m CONFIG_ULI526X=m CONFIG_PCMCIA_XIRCOM=m -# CONFIG_PCMCIA_XIRTULIP is not set CONFIG_HP100=m CONFIG_NET_PCI=y CONFIG_PCNET32=m @@ -1363,6 +1388,7 @@ CONFIG_ADAPTEC_STARFIRE_NAPI=y CONFIG_B44=m CONFIG_FORCEDETH=m +CONFIG_FORCEDETH_NEW=m CONFIG_DGRS=m CONFIG_EEPRO100=m CONFIG_E100=m @@ -1392,12 +1418,13 @@ CONFIG_E1000=m CONFIG_E1000_NAPI=y # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_E1000E=m CONFIG_IGB=m CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m CONFIG_R8169=m -# CONFIG_R8169_NAPI is not set +CONFIG_R8169_NAPI=y CONFIG_R8169_VLAN=y CONFIG_SIS190=m CONFIG_SKGE=m @@ -1413,15 +1440,22 @@ # Ethernet (10000 Mbit) # CONFIG_CHELSIO_T1=m -# CONFIG_CHELSIO_T3 is not set +CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m -# CONFIG_IXGBE_NAPI is not set +CONFIG_IXGBE_NAPI=y CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y CONFIG_NETXEN_NIC=m +CONFIG_NIU=m +CONFIG_QLGE=m +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_BNA=m CONFIG_MYRI10GE=m +CONFIG_BE2NET=m # # Token Ring devices @@ -1553,7 +1587,6 @@ # # ISDN feature submodules # -# CONFIG_ISDN_DRV_LOOP is not set CONFIG_ISDN_DIVERSION=m # @@ -1620,7 +1653,6 @@ # # Active cards # -# CONFIG_HYSDN is not set # # CAPI subsystem @@ -1763,13 +1795,10 @@ CONFIG_SYNCLINKMP=m CONFIG_SYNCLINK_GT=m CONFIG_N_HDLC=m -# CONFIG_RISCOM8 is not set CONFIG_SPECIALIX=m # CONFIG_SPECIALIX_RTSCTS is not set CONFIG_SX=m CONFIG_STALDRV=y -# CONFIG_STALLION is not set -# CONFIG_ISTALLION is not set CONFIG_NOZOMI=m # @@ -1779,8 +1808,8 @@ CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CS=m # CONFIG_SERIAL_8250_ACPI is not set -CONFIG_SERIAL_8250_NR_UARTS=4 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_NR_UARTS=16 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 # CONFIG_SERIAL_8250_EXTENDED is not set # @@ -1860,7 +1889,6 @@ # # Ftape, the floppy tape device driver # -# CONFIG_FTAPE is not set CONFIG_AGP=y CONFIG_AGP_AMD64=y CONFIG_AGP_INTEL=m @@ -2706,7 +2734,14 @@ # # InfiniBand support # -# CONFIG_INFINIBAND is not set +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_SRP=m # # DMA Engine support @@ -2880,8 +2915,10 @@ CONFIG_CIFS=m CONFIG_CIFS_STATS=y CONFIG_CIFS_STATS2=y +CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DFS_UPCALL=y # CONFIG_CIFS_EXPERIMENTAL is not set CONFIG_NCP_FS=m CONFIG_NCPFS_PACKET_SIGNING=y @@ -2894,8 +2931,7 @@ CONFIG_NCPFS_EXTRAS=y CONFIG_CODA_FS=m # CONFIG_CODA_FS_OLD_API is not set -CONFIG_AFS_FS=m -CONFIG_RXRPC=m +# CONFIG_AFS_FS is not set CONFIG_9P_FS=m CONFIG_GENERIC_ACL=y @@ -3000,7 +3036,8 @@ # # Security options # -# CONFIG_KEYS is not set +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y # CONFIG_SECURITY_NETWORK_XFRM is not set @@ -3014,11 +3051,11 @@ # Cryptographic options # CONFIG_CRYPTO=y -CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ABLKCIPHER=m CONFIG_CRYPTO_BLKCIPHER=m -CONFIG_CRYPTO_HASH=m -CONFIG_CRYPTO_MANAGER=m +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_XCBC=m CONFIG_CRYPTO_NULL=m diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64-smp.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64-smp.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64-smp.config 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.16-2.6-sles10-x86_64-smp.config 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.16.60 -# Wed May 21 20:28:50 2008 +# Wed Aug 25 00:08:21 2010 # CONFIG_X86_64=y CONFIG_64BIT=y @@ -28,11 +28,11 @@ # # General setup # -CONFIG_LOCALVERSION="" -CONFIG_LOCALVERSION_AUTO=y +CONFIG_LOCALVERSION="-smp" +# CONFIG_LOCALVERSION_AUTO is not set CONFIG_SUSE_KERNEL=y CONFIG_SLE_VERSION=10 -CONFIG_SLE_SP=2 +CONFIG_SLE_SP=3 CONFIG_SLE_SP_SUBLEVEL=0 CONFIG_SWAP=y CONFIG_SYSVIPC=y @@ -42,6 +42,7 @@ CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y CONFIG_SYSCTL=y CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y @@ -100,10 +101,10 @@ CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y # CONFIG_DEFAULT_AS is not set -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_DEFAULT_IOSCHED="deadline" # # Processor type and features @@ -149,6 +150,7 @@ # CONFIG_SPARSEMEM_STATIC is not set CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_MIGRATION=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=0 CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y CONFIG_NR_CPUS=128 CONFIG_HOTPLUG_CPU=y @@ -1095,17 +1097,17 @@ # CONFIG_SCSI_SPI_ATTRS=m CONFIG_SCSI_FC_ATTRS=m -# CONFIG_SCSI_ISCSI_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=m CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m -# CONFIG_SCSI_SAS_ATA is not set +CONFIG_SCSI_SAS_ATA=y # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_ISCSI_TARGET=m # # SCSI low-level drivers # -# CONFIG_ISCSI_TCP is not set +CONFIG_ISCSI_TCP=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1125,13 +1127,16 @@ CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_AIC79XX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC94XX=m -CONFIG_AIC94XX_DEBUG=y +# CONFIG_AIC94XX_DEBUG is not set CONFIG_SCSI_ARCMSR=m CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=m CONFIG_MEGARAID_MAILBOX=m CONFIG_MEGARAID_LEGACY=m CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +# CONFIG_SCSI_MPT2SAS_LOGGING is not set CONFIG_SCSI_HPTIOP=m CONFIG_SCSI_BUSLOGIC=m # CONFIG_SCSI_OMIT_FLASHPOINT is not set @@ -1159,8 +1164,9 @@ CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m -# CONFIG_SCSI_QLA_ISCSI is not set +CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m +CONFIG_SCSI_BFA_FC=m CONFIG_SCSI_DC395x=m CONFIG_SCSI_DC390T=m CONFIG_SCSI_DEBUG=m @@ -1171,6 +1177,11 @@ CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m # # Serial ATA (prod) and Parallel ATA (experimental) drivers @@ -1249,10 +1260,6 @@ CONFIG_DM_MIRROR=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m -CONFIG_DM_MULTIPATH_EMC=m -CONFIG_DM_MULTIPATH_HP_SW=m -CONFIG_DM_MULTIPATH_RDAC=m -CONFIG_DM_MULTIPATH_ALUA=m CONFIG_DM_NL_EVT=y CONFIG_FUSION=y CONFIG_FUSION_SPI=m @@ -1262,7 +1269,7 @@ CONFIG_FUSION_MAX_FC_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m -# CONFIG_FUSION_LOGGING is not set +CONFIG_FUSION_LOGGING=y # # IEEE 1394 (FireWire) support @@ -1381,6 +1388,7 @@ CONFIG_ADAPTEC_STARFIRE_NAPI=y CONFIG_B44=m CONFIG_FORCEDETH=m +CONFIG_FORCEDETH_NEW=m CONFIG_DGRS=m CONFIG_EEPRO100=m CONFIG_E100=m @@ -1410,12 +1418,13 @@ CONFIG_E1000=m CONFIG_E1000_NAPI=y # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_E1000E=m CONFIG_IGB=m CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m CONFIG_R8169=m -# CONFIG_R8169_NAPI is not set +CONFIG_R8169_NAPI=y CONFIG_R8169_VLAN=y CONFIG_SIS190=m CONFIG_SKGE=m @@ -1431,15 +1440,22 @@ # Ethernet (10000 Mbit) # CONFIG_CHELSIO_T1=m -# CONFIG_CHELSIO_T3 is not set +CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m -# CONFIG_IXGBE_NAPI is not set +CONFIG_IXGBE_NAPI=y CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y CONFIG_NETXEN_NIC=m +CONFIG_NIU=m +CONFIG_QLGE=m +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_BNA=m CONFIG_MYRI10GE=m +CONFIG_BE2NET=m # # Token Ring devices @@ -1792,8 +1808,8 @@ CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CS=m # CONFIG_SERIAL_8250_ACPI is not set -CONFIG_SERIAL_8250_NR_UARTS=4 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_NR_UARTS=16 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 # CONFIG_SERIAL_8250_EXTENDED is not set # @@ -2718,7 +2734,14 @@ # # InfiniBand support # -# CONFIG_INFINIBAND is not set +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_SRP=m # # DMA Engine support @@ -2892,8 +2915,10 @@ CONFIG_CIFS=m CONFIG_CIFS_STATS=y CONFIG_CIFS_STATS2=y +CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DFS_UPCALL=y # CONFIG_CIFS_EXPERIMENTAL is not set CONFIG_NCP_FS=m CONFIG_NCPFS_PACKET_SIGNING=y @@ -2906,8 +2931,7 @@ CONFIG_NCPFS_EXTRAS=y CONFIG_CODA_FS=m # CONFIG_CODA_FS_OLD_API is not set -CONFIG_AFS_FS=m -CONFIG_RXRPC=m +# CONFIG_AFS_FS is not set CONFIG_9P_FS=m CONFIG_GENERIC_ACL=y @@ -3012,7 +3036,8 @@ # # Security options # -# CONFIG_KEYS is not set +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y # CONFIG_SECURITY_NETWORK_XFRM is not set diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-i686.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-i686.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-i686.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-i686.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:05:37 2009 +# Tue Jun 22 23:34:01 2010 # CONFIG_X86_32=y CONFIG_GENERIC_TIME=y @@ -58,6 +58,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -259,9 +260,11 @@ CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m # CONFIG_ACPI_IBM is not set CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=1999 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -270,6 +273,7 @@ CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_SBS=m +CONFIG_DELL_WMI=m CONFIG_THINKPAD_ACPI=m # CONFIG_THINKPAD_ACPI_DEBUG is not set CONFIG_THINKPAD_ACPI_BAY=y @@ -346,9 +350,13 @@ CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_DOMAINS=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set @@ -825,31 +833,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -857,6 +855,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -1185,6 +1185,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1246,6 +1247,8 @@ # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1256,6 +1259,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1494,6 +1498,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1512,13 +1517,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1529,6 +1539,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m +CONFIG_SFC_MTD=y # # Token Ring devices @@ -1543,6 +1555,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1593,6 +1606,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1609,41 +1623,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1862,6 +1868,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -2175,27 +2182,34 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -2207,21 +2221,31 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set # @@ -2470,6 +2494,7 @@ CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2707,6 +2732,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2820,6 +2846,7 @@ CONFIG_EDAC_E752X=m CONFIG_EDAC_I82875P=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5400=m CONFIG_EDAC_I82860=m @@ -2902,6 +2929,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3126,6 +3154,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -3176,7 +3207,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-i686-smp.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-i686-smp.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-i686-smp.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-i686-smp.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:05:37 2009 +# Tue Jun 22 23:34:01 2010 # CONFIG_X86_32=y CONFIG_GENERIC_TIME=y @@ -58,6 +58,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -259,9 +260,11 @@ CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m # CONFIG_ACPI_IBM is not set CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=1999 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -270,6 +273,7 @@ CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_SBS=m +CONFIG_DELL_WMI=m CONFIG_THINKPAD_ACPI=m # CONFIG_THINKPAD_ACPI_DEBUG is not set CONFIG_THINKPAD_ACPI_BAY=y @@ -346,9 +350,13 @@ CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_DOMAINS=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set @@ -825,31 +833,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -857,6 +855,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -1185,6 +1185,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1246,6 +1247,8 @@ # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1256,6 +1259,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1494,6 +1498,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1512,13 +1517,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1529,6 +1539,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m +CONFIG_SFC_MTD=y # # Token Ring devices @@ -1543,6 +1555,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1593,6 +1606,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1609,41 +1623,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1862,6 +1868,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -2175,27 +2182,34 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -2207,21 +2221,31 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set # @@ -2470,6 +2494,7 @@ CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2707,6 +2732,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2820,6 +2846,7 @@ CONFIG_EDAC_E752X=m CONFIG_EDAC_I82875P=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5400=m CONFIG_EDAC_I82860=m @@ -2902,6 +2929,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3126,6 +3154,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -3176,7 +3207,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-ia64.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-ia64.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-ia64.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-ia64.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:06:18 2009 +# Tue Jun 22 23:38:27 2010 # CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" @@ -45,6 +45,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -208,6 +209,8 @@ CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y +CONFIG_ACPI_WMI=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -245,6 +248,9 @@ CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set CONFIG_PCI_STUB=y @@ -707,31 +713,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m CONFIG_IEEE80211_DEBUG=y CONFIG_IEEE80211_CRYPT_WEP=m @@ -739,6 +735,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -959,6 +957,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1013,6 +1012,8 @@ CONFIG_SCSI_DC395x=m # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1021,6 +1022,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1247,6 +1249,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1265,13 +1268,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1282,6 +1290,7 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m # # Token Ring devices @@ -1295,6 +1304,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1337,6 +1347,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1347,41 +1358,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1588,6 +1591,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -1861,26 +1865,26 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m -CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m -CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m -CONFIG_SENSORS_FSCHER=m -CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -1892,18 +1896,27 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m # CONFIG_HWMON_DEBUG_CHIP is not set @@ -2134,6 +2147,7 @@ CONFIG_SND_CS4281=m CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2370,6 +2384,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2547,6 +2562,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -2791,6 +2807,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -2829,7 +2848,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-ia64-smp.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-ia64-smp.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-ia64-smp.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-ia64-smp.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:06:18 2009 +# Tue Jun 22 23:38:27 2010 # CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" @@ -45,6 +45,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -208,6 +209,8 @@ CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y +CONFIG_ACPI_WMI=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -245,6 +248,9 @@ CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set CONFIG_PCI_STUB=y @@ -707,31 +713,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m CONFIG_IEEE80211_DEBUG=y CONFIG_IEEE80211_CRYPT_WEP=m @@ -739,6 +735,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -959,6 +957,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1013,6 +1012,8 @@ CONFIG_SCSI_DC395x=m # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1021,6 +1022,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1247,6 +1249,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1265,13 +1268,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1282,6 +1290,7 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m # # Token Ring devices @@ -1295,6 +1304,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1337,6 +1347,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1347,41 +1358,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1588,6 +1591,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -1861,26 +1865,26 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m -CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m -CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m -CONFIG_SENSORS_FSCHER=m -CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -1892,18 +1896,27 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m # CONFIG_HWMON_DEBUG_CHIP is not set @@ -2134,6 +2147,7 @@ CONFIG_SND_CS4281=m CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2370,6 +2384,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2547,6 +2562,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -2791,6 +2807,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -2829,7 +2848,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-x86_64.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-x86_64.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-x86_64.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-x86_64.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:02:58 2009 +# Tue Jun 22 23:40:18 2010 # CONFIG_X86_64=y CONFIG_64BIT=y @@ -64,6 +64,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -232,9 +233,11 @@ CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y +CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m # CONFIG_ACPI_IBM is not set CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -244,6 +247,7 @@ CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_MEMORY=m CONFIG_ACPI_SBS=m +CONFIG_DELL_WMI=m CONFIG_THINKPAD_ACPI=m # CONFIG_THINKPAD_ACPI_DEBUG is not set CONFIG_THINKPAD_ACPI_BAY=y @@ -290,6 +294,7 @@ CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m CONFIG_IOMMU_API=y CONFIG_DMAR=y # CONFIG_DMAR_DEFAULT_ON is not set @@ -298,6 +303,9 @@ CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_DOMAINS=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set @@ -770,31 +778,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -802,6 +800,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -1126,6 +1126,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1184,6 +1185,8 @@ CONFIG_SCSI_DC395x=m # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1192,6 +1195,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1428,6 +1432,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1446,13 +1451,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1463,6 +1473,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m +CONFIG_SFC_MTD=y # # Token Ring devices @@ -1476,6 +1488,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1526,6 +1539,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1542,41 +1556,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1784,6 +1790,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -2086,27 +2093,34 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -2118,21 +2132,31 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set # @@ -2373,6 +2397,7 @@ CONFIG_SND_CS4281=m CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2610,6 +2635,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2721,9 +2747,11 @@ CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_E752X=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5400=m CONFIG_EDAC_K8=m +CONFIG_EDAC_AMD64=m CONFIG_EDAC_POLL=y # @@ -2810,6 +2838,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3038,6 +3067,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -3078,7 +3110,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-x86_64-smp.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-x86_64-smp.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-x86_64-smp.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-oel5-x86_64-smp.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:02:58 2009 +# Tue Jun 22 23:40:18 2010 # CONFIG_X86_64=y CONFIG_64BIT=y @@ -64,6 +64,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -232,9 +233,11 @@ CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y +CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m # CONFIG_ACPI_IBM is not set CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -244,6 +247,7 @@ CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_MEMORY=m CONFIG_ACPI_SBS=m +CONFIG_DELL_WMI=m CONFIG_THINKPAD_ACPI=m # CONFIG_THINKPAD_ACPI_DEBUG is not set CONFIG_THINKPAD_ACPI_BAY=y @@ -290,6 +294,7 @@ CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m CONFIG_IOMMU_API=y CONFIG_DMAR=y # CONFIG_DMAR_DEFAULT_ON is not set @@ -298,6 +303,9 @@ CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_DOMAINS=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set @@ -770,31 +778,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -802,6 +800,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -1126,6 +1126,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1184,6 +1185,8 @@ CONFIG_SCSI_DC395x=m # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1192,6 +1195,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1428,6 +1432,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1446,13 +1451,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1463,6 +1473,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m +CONFIG_SFC_MTD=y # # Token Ring devices @@ -1476,6 +1488,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1526,6 +1539,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1542,41 +1556,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1784,6 +1790,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -2086,27 +2093,34 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -2118,21 +2132,31 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set # @@ -2373,6 +2397,7 @@ CONFIG_SND_CS4281=m CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2610,6 +2635,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2721,9 +2747,11 @@ CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_E752X=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5400=m CONFIG_EDAC_K8=m +CONFIG_EDAC_AMD64=m CONFIG_EDAC_POLL=y # @@ -2810,6 +2838,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3038,6 +3067,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -3078,7 +3110,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-i686.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-i686.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-i686.config 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-i686.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:05:37 2009 +# Tue Jun 22 23:34:01 2010 # CONFIG_X86_32=y CONFIG_GENERIC_TIME=y @@ -58,6 +58,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -259,9 +260,11 @@ CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m # CONFIG_ACPI_IBM is not set CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=1999 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -270,6 +273,7 @@ CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_SBS=m +CONFIG_DELL_WMI=m CONFIG_THINKPAD_ACPI=m # CONFIG_THINKPAD_ACPI_DEBUG is not set CONFIG_THINKPAD_ACPI_BAY=y @@ -346,9 +350,13 @@ CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_DOMAINS=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set @@ -825,31 +833,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -857,6 +855,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -1185,6 +1185,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1246,6 +1247,8 @@ # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1256,6 +1259,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1494,6 +1498,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1512,13 +1517,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1529,6 +1539,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m +CONFIG_SFC_MTD=y # # Token Ring devices @@ -1543,6 +1555,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1593,6 +1606,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1609,41 +1623,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1862,6 +1868,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -2175,27 +2182,34 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -2207,21 +2221,31 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set # @@ -2470,6 +2494,7 @@ CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2707,6 +2732,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2820,6 +2846,7 @@ CONFIG_EDAC_E752X=m CONFIG_EDAC_I82875P=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5400=m CONFIG_EDAC_I82860=m @@ -2902,6 +2929,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3126,6 +3154,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -3176,7 +3207,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-i686-smp.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-i686-smp.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-i686-smp.config 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-i686-smp.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:05:37 2009 +# Tue Jun 22 23:34:01 2010 # CONFIG_X86_32=y CONFIG_GENERIC_TIME=y @@ -58,6 +58,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -259,9 +260,11 @@ CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m # CONFIG_ACPI_IBM is not set CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=1999 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -270,6 +273,7 @@ CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_SBS=m +CONFIG_DELL_WMI=m CONFIG_THINKPAD_ACPI=m # CONFIG_THINKPAD_ACPI_DEBUG is not set CONFIG_THINKPAD_ACPI_BAY=y @@ -346,9 +350,13 @@ CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_DOMAINS=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set @@ -825,31 +833,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -857,6 +855,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -1185,6 +1185,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1246,6 +1247,8 @@ # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1256,6 +1259,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1494,6 +1498,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1512,13 +1517,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1529,6 +1539,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m +CONFIG_SFC_MTD=y # # Token Ring devices @@ -1543,6 +1555,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1593,6 +1606,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1609,41 +1623,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1862,6 +1868,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -2175,27 +2182,34 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -2207,21 +2221,31 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set # @@ -2470,6 +2494,7 @@ CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2707,6 +2732,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2820,6 +2846,7 @@ CONFIG_EDAC_E752X=m CONFIG_EDAC_I82875P=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5400=m CONFIG_EDAC_I82860=m @@ -2902,6 +2929,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3126,6 +3154,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -3176,7 +3207,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-ia64.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-ia64.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-ia64.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-ia64.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:06:18 2009 +# Tue Jun 22 23:38:27 2010 # CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" @@ -45,6 +45,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -208,6 +209,8 @@ CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y +CONFIG_ACPI_WMI=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -245,6 +248,9 @@ CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set CONFIG_PCI_STUB=y @@ -707,31 +713,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m CONFIG_IEEE80211_DEBUG=y CONFIG_IEEE80211_CRYPT_WEP=m @@ -739,6 +735,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -959,6 +957,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1013,6 +1012,8 @@ CONFIG_SCSI_DC395x=m # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1021,6 +1022,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1247,6 +1249,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1265,13 +1268,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1282,6 +1290,7 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m # # Token Ring devices @@ -1295,6 +1304,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1337,6 +1347,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1347,41 +1358,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1588,6 +1591,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -1861,26 +1865,26 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m -CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m -CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m -CONFIG_SENSORS_FSCHER=m -CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -1892,18 +1896,27 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m # CONFIG_HWMON_DEBUG_CHIP is not set @@ -2134,6 +2147,7 @@ CONFIG_SND_CS4281=m CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2370,6 +2384,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2547,6 +2562,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -2791,6 +2807,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -2829,7 +2848,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-ia64-smp.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-ia64-smp.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-ia64-smp.config 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-ia64-smp.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:06:18 2009 +# Tue Jun 22 23:38:27 2010 # CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" @@ -45,6 +45,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -208,6 +209,8 @@ CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y +CONFIG_ACPI_WMI=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -245,6 +248,9 @@ CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set CONFIG_PCI_STUB=y @@ -707,31 +713,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m CONFIG_IEEE80211_DEBUG=y CONFIG_IEEE80211_CRYPT_WEP=m @@ -739,6 +735,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -959,6 +957,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1013,6 +1012,8 @@ CONFIG_SCSI_DC395x=m # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1021,6 +1022,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1247,6 +1249,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1265,13 +1268,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1282,6 +1290,7 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m # # Token Ring devices @@ -1295,6 +1304,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1337,6 +1347,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1347,41 +1358,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1588,6 +1591,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -1861,26 +1865,26 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m -CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m -CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m -CONFIG_SENSORS_FSCHER=m -CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -1892,18 +1896,27 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m # CONFIG_HWMON_DEBUG_CHIP is not set @@ -2134,6 +2147,7 @@ CONFIG_SND_CS4281=m CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2370,6 +2384,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2547,6 +2562,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -2791,6 +2807,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -2829,7 +2848,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-x86_64.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-x86_64.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-x86_64.config 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-x86_64.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:02:58 2009 +# Tue Jun 22 23:40:18 2010 # CONFIG_X86_64=y CONFIG_64BIT=y @@ -64,6 +64,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -232,9 +233,11 @@ CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y +CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m # CONFIG_ACPI_IBM is not set CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -244,6 +247,7 @@ CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_MEMORY=m CONFIG_ACPI_SBS=m +CONFIG_DELL_WMI=m CONFIG_THINKPAD_ACPI=m # CONFIG_THINKPAD_ACPI_DEBUG is not set CONFIG_THINKPAD_ACPI_BAY=y @@ -290,6 +294,7 @@ CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m CONFIG_IOMMU_API=y CONFIG_DMAR=y # CONFIG_DMAR_DEFAULT_ON is not set @@ -298,6 +303,9 @@ CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_DOMAINS=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set @@ -770,31 +778,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -802,6 +800,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -1126,6 +1126,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1184,6 +1185,8 @@ CONFIG_SCSI_DC395x=m # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1192,6 +1195,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1428,6 +1432,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1446,13 +1451,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1463,6 +1473,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m +CONFIG_SFC_MTD=y # # Token Ring devices @@ -1476,6 +1488,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1526,6 +1539,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1542,41 +1556,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1784,6 +1790,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -2086,27 +2093,34 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -2118,21 +2132,31 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set # @@ -2373,6 +2397,7 @@ CONFIG_SND_CS4281=m CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2610,6 +2635,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2721,9 +2747,11 @@ CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_E752X=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5400=m CONFIG_EDAC_K8=m +CONFIG_EDAC_AMD64=m CONFIG_EDAC_POLL=y # @@ -2810,6 +2838,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3038,6 +3067,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -3078,7 +3110,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-x86_64-smp.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-x86_64-smp.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-x86_64-smp.config 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.18-2.6-rhel5-x86_64-smp.config 2010-11-04 05:39:37.000000000 +0100 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.18-prep -# Thu Nov 5 09:02:58 2009 +# Tue Jun 22 23:40:18 2010 # CONFIG_X86_64=y CONFIG_64BIT=y @@ -64,6 +64,7 @@ CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y @@ -232,9 +233,11 @@ CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y +CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m # CONFIG_ACPI_IBM is not set CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_POWER_METER=m CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y @@ -244,6 +247,7 @@ CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_MEMORY=m CONFIG_ACPI_SBS=m +CONFIG_DELL_WMI=m CONFIG_THINKPAD_ACPI=m # CONFIG_THINKPAD_ACPI_DEBUG is not set CONFIG_THINKPAD_ACPI_BAY=y @@ -290,6 +294,7 @@ CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m CONFIG_IOMMU_API=y CONFIG_DMAR=y # CONFIG_DMAR_DEFAULT_ON is not set @@ -298,6 +303,9 @@ CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_PCIE_ECRC=y +CONFIG_PCIEAER_INJECT=m CONFIG_PCI_DOMAINS=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set @@ -770,31 +778,21 @@ # Wireless # CONFIG_CFG80211=m -CONFIG_NL80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_WIRELESS_EXT=y -CONFIG_NET_WIRELESS_RTNETLINK=y +CONFIG_WIRELESS_COMPAT=m CONFIG_MAC80211=m - -# -# Rate control algorithm selection -# -CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# -CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -802,6 +800,8 @@ CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_SOFTMAC=m CONFIG_IEEE80211_SOFTMAC_DEBUG=y +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y # # Device Drivers @@ -1126,6 +1126,7 @@ CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m @@ -1184,6 +1185,8 @@ CONFIG_SCSI_DC395x=m # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_PMCRAID=m # # PCMCIA SCSI adapter support @@ -1192,6 +1195,7 @@ # CONFIG_PCMCIA_QLOGIC is not set # CONFIG_PCMCIA_SYM53C500 is not set CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m @@ -1428,6 +1432,7 @@ CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGBVF=m +CONFIG_IGB_DCA=y CONFIG_NS83820=m # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set @@ -1446,13 +1451,18 @@ # # Ethernet (10000 Mbit) # +CONFIG_MDIO=m CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T3=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBEVF=m CONFIG_IXGB=m CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_MYRI10GE=m CONFIG_ENIC=m CONFIG_NETXEN_NIC=m @@ -1463,6 +1473,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_BE2NET=m +CONFIG_SFC=m +CONFIG_SFC_MTD=y # # Token Ring devices @@ -1476,6 +1488,7 @@ # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y +CONFIG_NET_WIRELESS_RTNETLINK=y # # Obsolete Wireless cards support (pre-802.11) @@ -1526,6 +1539,7 @@ CONFIG_USB_ZD1201=m CONFIG_RTL8180=m CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1542,41 +1556,33 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y +CONFIG_ATH_COMMON=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set CONFIG_IWLWIFI=m -CONFIG_IWLCORE=m -CONFIG_IWLWIFI_LEDS=y -# CONFIG_IWLWIFI_RFKILL is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m -CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y -CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m -# CONFIG_IWL3945_RFKILL is not set CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y -CONFIG_IWL3945_LEDS=y -# CONFIG_IWL3945_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2400PCI=m -# CONFIG_RT2400PCI_RFKILL is not set -# CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m -# CONFIG_RT2500PCI_RFKILL is not set -# CONFIG_RT2500PCI_LEDS is not set CONFIG_RT61PCI=m -# CONFIG_RT61PCI_RFKILL is not set -# CONFIG_RT61PCI_LEDS is not set CONFIG_RT2500USB=m -# CONFIG_RT2500USB_LEDS is not set CONFIG_RT73USB=m -# CONFIG_RT73USB_LEDS is not set +# CONFIG_RT2800USB is not set +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1784,6 +1790,7 @@ # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_POLLDEV=m # # Userland interfaces @@ -2086,27 +2093,34 @@ # Dallas's 1-wire bus # # CONFIG_W1 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -2118,21 +2132,31 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set # @@ -2373,6 +2397,7 @@ CONFIG_SND_CS4281=m CONFIG_SND_CS46XX=m CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m @@ -2610,6 +2635,7 @@ CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m CONFIG_USB_SERIAL_SAFE_PADDED=y @@ -2721,9 +2747,11 @@ CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_E752X=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5400=m CONFIG_EDAC_K8=m +CONFIG_EDAC_AMD64=m CONFIG_EDAC_POLL=y # @@ -2810,6 +2838,7 @@ CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_DEBUG=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3038,6 +3067,9 @@ CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_SCHEDSTATS=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -3078,7 +3110,7 @@ CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set # CONFIG_SECURITY_SECLVL is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_LSM_MMAP_MIN_ADDR=4096 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-i686.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-i686.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-i686.config 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-i686.config 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,5187 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32.19 +# Fri Sep 17 16:09:11 2010 +# +# CONFIG_64BIT is not set +CONFIG_X86_32=y +# CONFIG_X86_64 is not set +CONFIG_X86=y +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_MMU=y +CONFIG_ZONE_DMA=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_GPIO=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +# CONFIG_GENERIC_TIME_VSYSCALL is not set +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEFAULT_IDLE=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_ZONE_DMA32 is not set +CONFIG_ARCH_POPULATES_NODE_MAP=y +# CONFIG_AUDIT_ARCH is not set +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_USE_GENERIC_SMP_HELPERS=y +CONFIG_X86_32_SMP=y +CONFIG_X86_HT=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_X86_32_LAZY_GS=y +CONFIG_KTIME_SCALAR=y +CONFIG_SUSE_KERNEL=y +CONFIG_ENTERPRISE_SUPPORT=y +CONFIG_SPLIT_PACKAGE=y +# CONFIG_KERNEL_DESKTOP is not set +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="-0.5-default" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_RCU_TRACE is not set +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_TREE_RCU_TRACE is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_RT_GROUP_SCHED=y +# CONFIG_USER_SCHED is not set +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_NS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_CGROUP_MEM_RES_CTLR=y +# CONFIG_CGROUP_MEM_RES_CTLR_SWAP is not set +CONFIG_MM_OWNER=y +# CONFIG_SYSFS_DEPRECATED_V2 is not set +CONFIG_RELAY=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +# CONFIG_EMBEDDED is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +CONFIG_PERF_COUNTERS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y +CONFIG_COMPAT_BRK=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_DEFAULT_VM_DIRTY_RATIO=40 +CONFIG_PROFILING=y +CONFIG_OPROFILE=m +CONFIG_OPROFILE_IBS=y +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set +CONFIG_HAVE_OPROFILE=y +CONFIG_KPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_API_DEBUG=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_FAIR_SLEEPERS_ON_BY_DEFAULT=y +CONFIG_SLOW_WORK=y +CONFIG_SLOW_WORK_DEBUG=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_STOP_MACHINE=y +# CONFIG_UTRACE is not set +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_INTEGRITY=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_FREEZER=y + +# +# Processor type and features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_SMP=y +CONFIG_SPARSE_IRQ=y +CONFIG_X86_MPPARSE=y +# CONFIG_X86_XEN is not set +CONFIG_X86_BIGSMP=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_ELAN is not set +CONFIG_X86_MRST=y +# CONFIG_X86_RDC321X is not set +CONFIG_X86_32_NON_STANDARD=y +# CONFIG_X86_NUMAQ is not set +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_X86_SUMMIT is not set +CONFIG_X86_ES7000=y +CONFIG_PARAVIRT_GUEST=y +# CONFIG_VMI is not set +CONFIG_KVM_CLOCK=y +CONFIG_KVM_GUEST=y +# CONFIG_KVM_MMU is not set +# CONFIG_LGUEST_GUEST is not set +CONFIG_PARAVIRT=y +# CONFIG_PARAVIRT_SPINLOCKS is not set +# CONFIG_PARAVIRT_CPU is not set +CONFIG_PARAVIRT_TIME=y +# CONFIG_PARAVIRT_IRQ is not set +# CONFIG_PARAVIRT_APIC is not set +# CONFIG_PARAVIRT_MMU is not set +# CONFIG_PARAVIRT_ALL is not set +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_MEMTEST=y +CONFIG_X86_CYCLONE_TIMER=y +# CONFIG_M386 is not set +# CONFIG_M486 is not set +# CONFIG_M586 is not set +CONFIG_M586TSC=y +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +# CONFIG_GENERIC_CPU is not set +CONFIG_X86_GENERIC=y +CONFIG_X86_CPU=y +CONFIG_X86_L1_CACHE_BYTES=128 +CONFIG_X86_INTERNODE_CACHE_BYTES=128 +CONFIG_X86_CMPXCHG=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_XADD=y +# CONFIG_X86_PPRO_FENCE is not set +CONFIG_X86_F00F_BUG=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_TSC=y +CONFIG_X86_MINIMUM_CPU_FAMILY=4 +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +# CONFIG_IOMMU_HELPER is not set +CONFIG_IOMMU_API=y +CONFIG_NR_CPUS=32 +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_XEON75XX=m +CONFIG_X86_MCE_AMD=y +# CONFIG_X86_ANCIENT_MCE is not set +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MCE_INJECT=m +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_VM86=y +CONFIG_TOSHIBA=m +CONFIG_I8K=m +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_MICROCODE=m +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_HIGHMEM=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ILLEGAL_POINTER_VALUE=0 +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_HAVE_MLOCK=y +CONFIG_HAVE_MLOCKED_PAGE_BIT=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +CONFIG_HWPOISON_INJECT=m +CONFIG_HIGHPTE=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_RESERVE_LOW_64K=y +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_EFI=y +CONFIG_SECCOMP=y +# CONFIG_SECCOMP_DISABLE_TSC is not set +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_KEXEC=y +CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set +CONFIG_PHYSICAL_START=0x200000 +CONFIG_RELOCATABLE=y +CONFIG_X86_NEED_RELOCS=y +CONFIG_PHYSICAL_ALIGN=0x200000 +CONFIG_HOTPLUG_CPU=y +CONFIG_COMPAT_VDSO=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y + +# +# Power management and ACPI options +# +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION_NVS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_RUNTIME=y +CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_PROCFS=y +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_POWER_METER=m +CONFIG_ACPI_SYSFS_POWER=y +CONFIG_ACPI_PROC_EVENT=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_BLACKLIST_YEAR=0 +CONFIG_ACPI_DEBUG=y +# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set +CONFIG_ACPI_PCI_SLOT=m +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_CONTAINER=m +CONFIG_ACPI_SBS=m +CONFIG_SFI=y +CONFIG_X86_APM_BOOT=y +CONFIG_APM=m +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_DO_ENABLE=y +# CONFIG_APM_CPU_IDLE is not set +CONFIG_APM_DISPLAY_BLANK=y +CONFIG_APM_ALLOW_INTS=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_DEBUG=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m + +# +# CPUFreq processor drivers +# +CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_POWERNOW_K7_ACPI=y +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_GX_SUSPMOD=m +# CONFIG_X86_SPEEDSTEP_CENTRINO is not set +CONFIG_X86_SPEEDSTEP_ICH=m +CONFIG_X86_SPEEDSTEP_SMI=m +# CONFIG_X86_P4_CLOCKMOD is not set +CONFIG_X86_CPUFREQ_NFORCE2=m +CONFIG_X86_LONGRUN=m +CONFIG_X86_LONGHAUL=m +CONFIG_X86_E_POWERSAVER=m + +# +# shared options +# +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Bus options (PCI etc.) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOOLPC is not set +# CONFIG_PCI_GOXEN_FE is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_OLPC=y +CONFIG_PCI_DOMAINS=y +CONFIG_DMAR=y +# CONFIG_DMAR_DEFAULT_ON is not set +CONFIG_DMAR_FLOPPY_WA=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=m +CONFIG_PCIEAER=y +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEAER_INJECT=m +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_PCI_MSI=y +CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_STUB=y +CONFIG_HT_IRQ=y +CONFIG_PCI_IOV=y +CONFIG_ISA_DMA_API=y +CONFIG_ISA=y +# CONFIG_EISA is not set +# CONFIG_MCA is not set +CONFIG_SCx200=m +CONFIG_SCx200HR_TIMER=m +CONFIG_OLPC=y +CONFIG_K8_NB=y +CONFIG_PCCARD=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_IOCTL=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=m +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_TCIC=m +CONFIG_PCMCIA_PROBE=y +CONFIG_PCCARD_NONSTATIC=m +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_SHPC=m + +# +# Executable file formats / Emulations +# +CONFIG_BINFMT_ELF=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=m +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_ASK_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_LRO=y +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +# CONFIG_DEFAULT_BIC is not set +CONFIG_DEFAULT_CUBIC=y +# CONFIG_DEFAULT_HTCP is not set +# CONFIG_DEFAULT_VEGAS is not set +# CONFIG_DEFAULT_WESTWOOD is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +# CONFIG_IPV6_MROUTE is not set +CONFIG_NETLABEL=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ACCT=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CONNTRACK_SLP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_TPROXY=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_CONNTRACK_IPV4=m +# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_SIP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m + +# +# DECnet: Netfilter Configuration +# +# CONFIG_DECNET_NF_GRABULATOR is not set +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_IP_DCCP=m +CONFIG_INET_DCCP_DIAG=m + +# +# DCCP CCIDs Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +CONFIG_IP_DCCP_CCID3=y +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +CONFIG_IP_DCCP_CCID3_RTO=100 +CONFIG_IP_DCCP_TFRC_LIB=y + +# +# DCCP Kernel Hacking +# +# CONFIG_IP_DCCP_DEBUG is not set +# CONFIG_NET_DCCPPROBE is not set +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCTP_HMAC_MD5=y +CONFIG_RDS=m +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set +# CONFIG_TIPC is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_STP=m +CONFIG_GARP=m +CONFIG_BRIDGE=m +CONFIG_NET_DSA=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_DSA_TAG_TRAILER=y +CONFIG_NET_DSA_MV88E6XXX=y +CONFIG_NET_DSA_MV88E6060=y +CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y +CONFIG_NET_DSA_MV88E6131=y +CONFIG_NET_DSA_MV88E6123_61_65=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_DECNET=m +# CONFIG_DECNET_ROUTER is not set +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_IPX=m +CONFIG_IPX_INTERN=y +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=m +CONFIG_LTPC=m +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +CONFIG_X25=m +CONFIG_LAPB=m +# CONFIG_ECONET is not set +CONFIG_WAN_ROUTER=m +CONFIG_PHONET=m +CONFIG_IEEE802154=m +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_INGRESS=m + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_CLS_IND=y +CONFIG_NET_SCH_FIFO=y +CONFIG_DCB=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NET_TCPPROBE=m +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_SCC=m +# CONFIG_SCC_DELAY is not set +CONFIG_SCC_TRXECHO=y +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_EPP=m +CONFIG_YAM=m +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m + +# +# CAN Device Drivers +# +CONFIG_CAN_VCAN=m +CONFIG_CAN_DEV=m +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_SJA1000=m +CONFIG_CAN_SJA1000_ISA=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_KVASER_PCI=m + +# +# CAN USB interfaces +# +CONFIG_CAN_EMS_USB=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m + +# +# Dongle support +# +CONFIG_DONGLE=y +CONFIG_ESI_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_TOIM3232_DONGLE=m +CONFIG_LITELINK_DONGLE=m +CONFIG_MA600_DONGLE=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_MCP2120_DONGLE=m +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_ACT200L_DONGLE=m +CONFIG_KINGSUN_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +CONFIG_KS959_DONGLE=m + +# +# FIR device drivers +# +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_NSC_FIR=m +CONFIG_WINBOND_FIR=m +CONFIG_TOSHIBA_FIR=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_ALI_FIR=m +CONFIG_VLSI_FIR=m +CONFIG_VIA_FIR=m +CONFIG_MCS_FIR=m +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_RXKAD=m +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CFG80211_DEFAULT_PS=y +CONFIG_CFG80211_DEFAULT_PS_VALUE=1 +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_WEP=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_NET_9P=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_RDMA=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_NETVM=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +CONFIG_MTD=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_TESTS=m +CONFIG_MTD_CONCAT=m +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +CONFIG_MTD_AR7_PARTS=m + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=m +CONFIG_HAVE_MTD_OTP=y +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_FTL=m +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_INFTL=m +CONFIG_RFD_FTL=m +CONFIG_SSFDC=m +CONFIG_MTD_OOPS=m + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_MAP_BANK_WIDTH_8=y +CONFIG_MTD_MAP_BANK_WIDTH_16=y +CONFIG_MTD_MAP_BANK_WIDTH_32=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_I4=y +CONFIG_MTD_CFI_I8=y +CONFIG_MTD_OTP=y +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_RAM=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_COMPAT=y +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PHYSMAP_LEN=0 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_NETSC520=m +CONFIG_MTD_TS5500=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_PCI=m +CONFIG_MTD_GPIO_ADDR=m +CONFIG_MTD_INTEL_VR_NOR=m +CONFIG_MTD_PLATRAM=m + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_PMC551=m +CONFIG_MTD_PMC551_BUGFIX=y +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y +CONFIG_MTD_DATAFLASH_OTP=y +CONFIG_MTD_M25P80=m +CONFIG_M25PXX_USE_FAST_READ=y +CONFIG_MTD_SST25L=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m + +# +# Disk-On-Chip Device Drivers +# +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCPROBE_ADVANCED=y +CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 +CONFIG_MTD_DOCPROBE_HIGH=y +CONFIG_MTD_DOCPROBE_55AA=y +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_ECC_SMC=y +CONFIG_MTD_NAND_MUSEUM_IDS=y +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_NAND_DISKONCHIP=m +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_CS553X=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_ALAUDA=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_ONENAND_GENERIC=m +CONFIG_MTD_ONENAND_OTP=y +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_ONENAND_SIM=m + +# +# LPDDR flash memory drivers +# +CONFIG_MTD_LPDDR=m +CONFIG_MTD_QINFO_PROBE=m + +# +# UBI - Unsorted block images +# +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_RESERVE=1 +CONFIG_MTD_UBI_GLUEBI=m + +# +# UBI debugging options +# +# CONFIG_MTD_UBI_DEBUG is not set +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_AX88796=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PNP=y +# CONFIG_PNP_DEBUG_MESSAGES is not set + +# +# Protocols +# +CONFIG_ISAPNP=y +CONFIG_PNPBIOS=y +CONFIG_PNPBIOS_PROC_FS=y +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_XD=m +CONFIG_PARIDE=m + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_CISS_SCSI_TAPE=y +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_OSD=m +CONFIG_BLK_DEV_SX8=m +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=131072 +CONFIG_BLK_DEV_XIP=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +CONFIG_CDROM_PKTCDVD_WCACHE=y +CONFIG_ATA_OVER_ETH=m +CONFIG_CIPHER_TWOFISH=m +CONFIG_VIRTIO_BLK=m +# CONFIG_BLK_DEV_HD is not set +CONFIG_MISC_DEVICES=y +CONFIG_IBM_ASM=m +CONFIG_PHANTOM=m +CONFIG_SGI_IOC4=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +CONFIG_ICS932S401=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_HP_ILO=m +CONFIG_DELL_LAPTOP=m +# CONFIG_ISL29003 is not set +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEPROM_93CX6=m +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_HAVE_IDE=y +CONFIG_IDE=m + +# +# Please see Documentation/ide/ide.txt for help/info on IDE drives +# +CONFIG_IDE_XFER_MODE=y +CONFIG_IDE_TIMINGS=y +CONFIG_IDE_ATAPI=y +CONFIG_IDE_LEGACY=y +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_IDE_GD=m +CONFIG_IDE_GD_ATA=y +CONFIG_IDE_GD_ATAPI=y +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_BLK_DEV_IDEACPI=y +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_PROC_FS=y + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=m +CONFIG_BLK_DEV_PLATFORM=m +CONFIG_BLK_DEV_CMD640=m +CONFIG_BLK_DEV_CMD640_ENHANCED=y +CONFIG_BLK_DEV_IDEPNP=m +CONFIG_BLK_DEV_IDEDMA_SFF=y + +# +# PCI IDE chipsets support +# +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_OFFBOARD=y +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_OPTI621=m +CONFIG_BLK_DEV_RZ1000=m +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_AEC62XX=m +CONFIG_BLK_DEV_ALI15X3=m +CONFIG_BLK_DEV_AMD74XX=m +CONFIG_BLK_DEV_ATIIXP=m +CONFIG_BLK_DEV_CMD64X=m +CONFIG_BLK_DEV_TRIFLEX=m +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_CS5535=m +CONFIG_BLK_DEV_CS5536=m +CONFIG_BLK_DEV_HPT366=m +CONFIG_BLK_DEV_JMICRON=m +CONFIG_BLK_DEV_SC1200=m +CONFIG_BLK_DEV_PIIX=m +CONFIG_BLK_DEV_IT8172=m +CONFIG_BLK_DEV_IT8213=m +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_NS87415=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_SVWKS=m +CONFIG_BLK_DEV_SIIMAGE=m +CONFIG_BLK_DEV_SIS5513=m +CONFIG_BLK_DEV_SLC90E66=m +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BLK_DEV_TC86C001=m + +# +# Other IDE chipsets support +# + +# +# Note: most of these also require special kernel boot parameters +# +CONFIG_BLK_DEV_4DRIVES=m +CONFIG_BLK_DEV_ALI14XX=m +CONFIG_BLK_DEV_DTC2278=m +CONFIG_BLK_DEV_HT6560B=m +CONFIG_BLK_DEV_QD65XX=m +CONFIG_BLK_DEV_UMC8672=m +CONFIG_BLK_DEV_IDEDMA=y + +# +# SCSI device support +# +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=m +CONFIG_SCSI_DMA=y +CONFIG_SCSI_TGT=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_IOSTATS=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FC_TGT_ATTRS=y +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y +# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_SRP_TGT_ATTRS=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ARCMSR_AER=y +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +# CONFIG_SCSI_MPT2SAS_LOGGING is not set +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_FLASHPOINT=y +CONFIG_VMWARE_PVSCSI=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_SRP=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_ATA=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_ACPI=y +CONFIG_SATA_PMP=y +CONFIG_SATA_AHCI=m +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y +CONFIG_SATA_SVW=m +CONFIG_ATA_PIIX=m +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SX4=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SATA_INIC162X=m +CONFIG_PATA_ACPI=m +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CS5520=m +CONFIG_PATA_CS5530=m +CONFIG_PATA_CS5535=m +CONFIG_PATA_CS5536=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_ATA_GENERIC=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_ISAPNP=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_IT8213=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_LEGACY=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_QDI=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_RZ1000=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_SIS=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PATA_WINBOND_VLB=m +CONFIG_PATA_SCH=m +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +# CONFIG_MULTICORE_RAID456 is not set +CONFIG_MD_RAID6_PQ=m +CONFIG_ASYNC_RAID6_TEST=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_DELAY=m +CONFIG_DM_RAID45=m +CONFIG_DM_UEVENT=y +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_MAX_FC_SGE=256 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# You can enable one or both FireWire driver stacks. +# + +# +# See the help texts for more information. +# +# CONFIG_FIREWIRE is not set +CONFIG_IEEE1394=m +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_DV1394=m +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_I2O=m +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_BUS=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +CONFIG_IFB=m +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_MACVLAN=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_VETH=m +# CONFIG_NET_SB1000 is not set +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +# CONFIG_ARCNET_COM20020 is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +CONFIG_MARVELL_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_LXT_PHY=m +CONFIG_CICADA_PHY=m +CONFIG_VITESSE_PHY=m +CONFIG_SMSC_PHY=m +CONFIG_BROADCOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_REALTEK_PHY=m +CONFIG_NATIONAL_PHY=m +CONFIG_STE10XP=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_FIXED_PHY=y +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_GPIO=m +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRA=m +CONFIG_SMC9194=m +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ETHOC=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_DNET=m +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_ZNET=m +CONFIG_SEEQ8005=m +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +CONFIG_FORCEDETH=m +CONFIG_FORCEDETH_NAPI=y +CONFIG_CS89x0=m +CONFIG_E100=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R6040=m +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SMSC9420=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_SC92031=m +CONFIG_NET_POCKET=y +CONFIG_ATP=m +CONFIG_DE600=m +CONFIG_DE620=m +CONFIG_ATL2=m +CONFIG_NETDEV_1000=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IP1000=m +CONFIG_IGB=m +CONFIG_IGB_DCA=y +CONFIG_IGBVF=m +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_R8169_VLAN=y +CONFIG_SIS190=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +CONFIG_VIA_VELOCITY=m +CONFIG_TIGON3=m +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_QLA3XXX=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_JME=m +CONFIG_NETDEV_10000=y +CONFIG_MDIO=m +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3_DEPENDS=y +CONFIG_CHELSIO_T3=m +CONFIG_ENIC=m +CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGB=m +CONFIG_S2IO=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_NETXEN_NIC=m +CONFIG_NIU=m +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_TEHUTI=m +CONFIG_BNX2X=m +CONFIG_QLGE=m +CONFIG_SFC=m +# CONFIG_SFC_RESOURCE is not set +CONFIG_SFC_MTD=y +CONFIG_BE2NET=m +CONFIG_TR=m +CONFIG_IBMTR=m +CONFIG_IBMOL=m +CONFIG_IBMLS=m +CONFIG_3C359=m +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_SKISA=m +CONFIG_PROTEON=m +CONFIG_ABYSS=m +CONFIG_SMCTR=m +CONFIG_WLAN=y +CONFIG_WLAN_PRE80211=y +CONFIG_STRIP=m +CONFIG_ARLAN=m +CONFIG_WAVELAN=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_WLAN_80211=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_CS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_AIRO=m +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_AT76C50X_USB=m +CONFIG_AIRO_CS=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PRISM54=m +CONFIG_USB_ZD1201=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_ADM8211=m +CONFIG_MAC80211_HWSIM=m +CONFIG_MWL8K=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +CONFIG_P54_LEDS=y +CONFIG_ATH_COMMON=m +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set +CONFIG_AR9170_USB=m +CONFIG_AR9170_LEDS=y +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2100_DEBUG=y +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +CONFIG_IPW2200_DEBUG=y +CONFIG_LIBIPW=m +CONFIG_LIBIPW_DEBUG=y +CONFIG_IWLWIFI=m +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y +CONFIG_IWLWIFI_DEBUG=y +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLAGN=m +CONFIG_IWL4965=y +CONFIG_IWL5000=y +CONFIG_IWL3945=m +CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_CS=m +CONFIG_B43=m +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_PCMCIA=y +CONFIG_B43_SDIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_HWRNG=y +# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_HT=y +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +# CONFIG_RT2X00_DEBUG is not set +CONFIG_HERMES=m +CONFIG_HERMES_CACHE_FW_ON_INIT=y +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_NORTEL_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_WL12XX=m +CONFIG_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1271=m +CONFIG_IWM=m +# CONFIG_IWM_DEBUG is not set + +# +# WiMAX Wireless Broadband devices +# +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 + +# +# USB Network Adapters +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_IBMTR=m +CONFIG_WAN=y +CONFIG_HOSTESS_SV11=m +CONFIG_COSA=m +CONFIG_LANMEDIA=m +CONFIG_SEALEVEL_4021=m +CONFIG_HDLC=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_X25=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +CONFIG_PC300TOO=m +CONFIG_N2=m +CONFIG_C101=m +CONFIG_FARSYNC=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_SDLA=m +# CONFIG_WAN_ROUTER_DRIVERS is not set +CONFIG_LAPBETHER=m +CONFIG_X25_ASY=m +CONFIG_SBNI=m +CONFIG_SBNI_MULTILINE=y +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +CONFIG_ATM_ENI_TUNE_BURST=y +CONFIG_ATM_ENI_BURST_TX_16W=y +CONFIG_ATM_ENI_BURST_TX_8W=y +CONFIG_ATM_ENI_BURST_TX_4W=y +CONFIG_ATM_ENI_BURST_TX_2W=y +CONFIG_ATM_ENI_BURST_RX_16W=y +CONFIG_ATM_ENI_BURST_RX_8W=y +CONFIG_ATM_ENI_BURST_RX_4W=y +CONFIG_ATM_ENI_BURST_RX_2W=y +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_NICSTAR=m +CONFIG_ATM_NICSTAR_USE_SUNI=y +CONFIG_ATM_NICSTAR_USE_IDT77105=y +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_USE_TASKLET=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_SOLOS=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKEHARD=m +CONFIG_FDDI=m +CONFIG_DEFXX=m +CONFIG_DEFXX_MMIO=y +CONFIG_SKFP=m +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +CONFIG_ROADRUNNER_LARGE_RINGS=y +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +CONFIG_PPPOL2TP=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLHC=m +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_NET_FC=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETPOLL=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_VIRTIO_NET=m +CONFIG_VMXNET3=m +CONFIG_ISDN=y +CONFIG_ISDN_I4L=m +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +# +# mISDN hardware drivers +# +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_W6692=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y + +# +# ISDN feature submodules +# +CONFIG_ISDN_DIVERSION=m + +# +# ISDN4Linux hardware drivers +# + +# +# Passive cards +# +CONFIG_ISDN_DRV_HISAX=m + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_KEYPAD is not set +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +# CONFIG_HISAX_DEBUG is not set + +# +# HiSax PCMCIA card service modules +# +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_TELES_CS=m + +# +# HiSax sub driver modules +# +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_FRITZ_PCIPNP=m + +# +# Active cards +# +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_PCBIT=m +CONFIG_ISDN_DRV_SC=m +CONFIG_ISDN_DRV_ACT2000=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +CONFIG_ISDN_HDLC=m +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_CAPI_TRACE=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m + +# +# CAPI hardware drivers +# +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 +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_GIGASET_BASE=m +CONFIG_GIGASET_M105=m +CONFIG_GIGASET_M101=m +# CONFIG_GIGASET_DEBUG is not set +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_POLLDEV=m + +# +# 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=m +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_QT2160=m +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_OPENCORES=m +# CONFIG_KEYBOARD_STOWAWAY is not set +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_OLPC=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_INPORT=m +CONFIG_MOUSE_ATIXL=y +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_WALKERA0701=m +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_WACOM=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_ELOUSB=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_HTCPEN=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_WISTRON_BTNS=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATI_REMOTE=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_WINBOND_CIR=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_PCAP=m + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_COMPUTONE=m +CONFIG_ROCKETPORT=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +CONFIG_DIGIEPCA=m +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_ISI=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_GT=m +CONFIG_N_HDLC=m +CONFIG_RISCOM8=m +CONFIG_SPECIALIX=m +CONFIG_SX=m +CONFIG_RIO=m +CONFIG_RIO_OLDPCI=y +CONFIG_STALDRV=y +CONFIG_STALLION=m +CONFIG_ISTALLION=m +CONFIG_NOZOMI=m + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=16 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +CONFIG_UNIX98_PTYS=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_HVC_DRIVER=y +CONFIG_VIRTIO_CONSOLE=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_PANIC_EVENT=y +# CONFIG_IPMI_PANIC_STRING is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_GEODE=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_NVRAM=y +CONFIG_DTLK=m +CONFIG_R3964=m +CONFIG_APPLICOM=m +CONFIG_SONYPI=m + +# +# PCMCIA character devices +# +CONFIG_SYNCLINK_CS=m +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_IPWIRELESS=m +CONFIG_MWAVE=m +CONFIG_SCx200_GPIO=m +CONFIG_PC8736x_GPIO=m +CONFIG_NSC_GPIO=m +CONFIG_CS5535_GPIO=m +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=4096 +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_TCG_TPM=m +CONFIG_TCG_TIS=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TELCLOCK=m +CONFIG_DEVPORT=y +CONFIG_CRASHER=m +CONFIG_I2C=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m + +# +# ACPI drivers +# +CONFIG_I2C_SCMI=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_GPIO=m +CONFIG_I2C_OCORES=m +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m + +# +# Graphics adapter I2C/DDC channel drivers +# +# CONFIG_I2C_VOODOO3 is not set + +# +# Other I2C/SMBus bus drivers +# +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_STUB=m +CONFIG_SCx200_I2C=m +CONFIG_SCx200_I2C_SCL=12 +CONFIG_SCx200_I2C_SDA=13 +CONFIG_SCx200_ACB=m + +# +# Miscellaneous I2C Chip support +# +CONFIG_DS1682=m +CONFIG_SENSORS_TSL2550=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_GPIO=m +CONFIG_SPI_LM70_LLP=m + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_TLE62X0=m + +# +# PPS support +# +CONFIG_PPS=m +# CONFIG_PPS_DEBUG is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m + +# +# PCI GPIO expanders: +# +CONFIG_GPIO_LANGWELL=y + +# +# SPI GPIO expanders: +# +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MCP23S08=m +CONFIG_GPIO_MC33880=m + +# +# AC97 GPIO expanders: +# +CONFIG_GPIO_UCB1400=y +CONFIG_W1=m +CONFIG_W1_CON=y + +# +# 1-wire Bus Masters +# +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_GPIO=m + +# +# 1-wire Slaves +# +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +CONFIG_W1_SLAVE_DS2433_CRC=y +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_BQ27000=m +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PDA_POWER=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_OLPC=m +CONFIG_BATTERY_BQ27x00=m +CONFIG_BATTERY_MAX17040=m +CONFIG_HWMON=m +CONFIG_HWMON_VID=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m + +# +# ACPI drivers +# +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_THERMAL=m +CONFIG_THERMAL_HWMON=y +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_SC520_WDT=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_SC1200_WDT=m +CONFIG_SCx200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_60XX_WDT=m +CONFIG_SBC8360_WDT=m +CONFIG_SBC7240_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83697HF_WDT=m +CONFIG_W83697UG_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m + +# +# ISA-based Watchdog Cards +# +CONFIG_PCWATCHDOG=m +CONFIG_MIXCOMWD=m +CONFIG_WDT=m + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +CONFIG_SSB=m +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_PCMCIAHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SM501_GPIO=y +CONFIG_HTC_PASIC3=m +CONFIG_UCB1400_CORE=m +CONFIG_TPS65010=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_WM8400=m +# CONFIG_MFD_WM831X is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_PCF50633 is not set +CONFIG_MFD_MC13783=m +CONFIG_AB3100_CORE=m +CONFIG_AB3100_OTP=m +CONFIG_EZX_PCAP=y +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_BQ24022=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_MEDIA_SUPPORT=m + +# +# Multimedia core support +# +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L2_COMMON=m +CONFIG_VIDEO_ALLOW_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_DVB_CORE=m +CONFIG_VIDEO_MEDIA=m + +# +# Multimedia drivers +# +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L1=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_PMS=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_CPIA2=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9T031=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_TW9910=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_SOC_CAMERA_OV772X=m +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SN9C20X_EVDEV=y +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_USBVIDEO=m +CONFIG_USB_VICAM=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_QUICKCAM_MESSENGER=m +CONFIG_USB_ET61X251=m +CONFIG_VIDEO_OVCAMCHIP=m +CONFIG_USB_W9968CF=m +CONFIG_USB_OV511=m +CONFIG_USB_SE401=m +CONFIG_USB_SN9C102=m +CONFIG_USB_STV680=m +CONFIG_USB_ZC0301=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_CADET=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_ZOLTRIX=m +CONFIG_I2C_SI4713=m +CONFIG_RADIO_SI4713=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_SI470X=y +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_USB_MR800=m +CONFIG_RADIO_TEA5764=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_CAPTURE_DRIVERS=y + +# +# Supported SAA7146 based PCI Adapters +# +CONFIG_TTPCI_EEPROM=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m + +# +# Supported USB Adapters +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_SMS_SIANO_MDTV=m + +# +# Siano module components +# +CONFIG_SMS_USB_DRV=m +CONFIG_SMS_SDIO_DRV=m + +# +# Supported FlexCopII (B2C2) Adapters +# +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set + +# +# Supported BT878 Adapters +# +CONFIG_DVB_BT8XX=m + +# +# Supported Pluto2 Adapters +# +CONFIG_DVB_PLUTO2=m + +# +# Supported SDMC DM1105 Adapters +# +CONFIG_DVB_DM1105=m + +# +# Supported FireWire (IEEE 1394) Adapters +# +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_IEEE1394=y +CONFIG_DVB_FIREDTV_INPUT=y + +# +# Supported Earthsoft PT1 Adapters +# +CONFIG_DVB_PT1=m + +# +# Supported DVB Frontends +# +CONFIG_DVB_FE_CUSTOMISE=y + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +# CONFIG_DVB_STV090x is not set +# CONFIG_DVB_STV6110x is not set + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_SI21XX=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +# CONFIG_DVB_DRX397XD is not set +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_AF9013=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +# CONFIG_DVB_LGDT3304 is not set +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +# CONFIG_DVB_S921 is not set +CONFIG_DVB_DIB8000=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_LNBP21=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +# CONFIG_DVB_ISL6423 is not set +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DAB=y +CONFIG_USB_DABUSB=m + +# +# Graphics support +# +CONFIG_AGP=y +CONFIG_AGP_ALI=m +CONFIG_AGP_ATI=m +CONFIG_AGP_AMD=m +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=m +CONFIG_AGP_NVIDIA=m +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_VIA=m +CONFIG_AGP_EFFICEON=m +CONFIG_VGA_ARB=y +CONFIG_DRM=m +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_TTM=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_I810=m +CONFIG_DRM_I830=m +CONFIG_DRM_I915=m +CONFIG_DRM_I915_KMS=y +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m +CONFIG_DRM_VIA=m +CONFIG_DRM_SAVAGE=m +CONFIG_VGASTATE=m +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_DDC=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_HECUBA=m +CONFIG_FB_SVGALIB=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_ARC=m +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_VGA16=m +CONFIG_FB_UVESA=m +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +CONFIG_FB_N411=m +CONFIG_FB_HGA=m +CONFIG_FB_HGA_ACCEL=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_I2C=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_BACKLIGHT=y +CONFIG_FB_I810=m +CONFIG_FB_I810_GTF=y +CONFIG_FB_I810_I2C=y +CONFIG_FB_LE80578=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_S3=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_VIA=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +CONFIG_FB_3DFX_ACCEL=y +CONFIG_FB_3DFX_I2C=y +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_ARK=m +CONFIG_FB_PM3=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +# CONFIG_CARMINE_DRAM_CUSTOM is not set +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_LX=m +CONFIG_FB_GEODE_GX=m +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_SM501=m +CONFIG_FB_VIRTUAL=m +CONFIG_FB_METRONOME=m +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_BROADSHEET=m +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +CONFIG_LCD_PLATFORM=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_PROGEAR=m +CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_MBP_NVIDIA=m +CONFIG_BACKLIGHT_SAHARA=m + +# +# Display device support +# +CONFIG_DISPLAY_SUPPORT=m + +# +# Display hardware drivers +# + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_VGACON_SOFT_SCROLLBACK=y +CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64 +CONFIG_MDA_CONSOLE=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_LOGO is not set + +# +# Bootsplash configuration +# +CONFIG_BOOTSPLASH=y +CONFIG_SOUND=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_JACK=y +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_VERBOSE is not set +CONFIG_SND_PCM_XRUN_DEBUG=y +CONFIG_SND_VMASTER=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_RAWMIDI_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_OPL4_LIB_SEQ=m +CONFIG_SND_SBAWE_SEQ=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +# CONFIG_SND_PCSP is not set +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_WSS_LIB=m +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SB8_DSP=m +CONFIG_SND_SB16_DSP=m +CONFIG_SND_ISA=y +CONFIG_SND_ADLIB=m +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_ALS100=m +CONFIG_SND_AZT2320=m +CONFIG_SND_CMI8330=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4236=m +CONFIG_SND_DT019X=m +CONFIG_SND_ES968=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_SC6000=m +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_MIRO=m +CONFIG_SND_SB8=m +CONFIG_SND_SB16=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_SGALAXY=m +CONFIG_SND_SSCAPE=m +CONFIG_SND_WAVEFRONT=m +CONFIG_SND_MSND_PINNACLE=m +CONFIG_SND_MSND_CLASSIC=m +CONFIG_SND_PCI=y +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS5530=m +CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_JACK=y +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_CODEC_ANALOG=y +CONFIG_SND_HDA_CODEC_SIGMATEL=y +CONFIG_SND_HDA_CODEC_VIA=y +CONFIG_SND_HDA_CODEC_ATIHDMI=y +CONFIG_SND_HDA_CODEC_NVHDMI=y +CONFIG_SND_HDA_CODEC_INTELHDMI=y +CONFIG_SND_HDA_ELD=y +CONFIG_SND_HDA_CODEC_CIRRUS=y +CONFIG_SND_HDA_CODEC_CONEXANT=y +CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CMEDIA=y +CONFIG_SND_HDA_CODEC_SI3054=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_SND_HDA_POWER_SAVE=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HIFIER=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SIS7019=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_PCMCIA=y +CONFIG_SND_VXPOCKET=m +CONFIG_SND_PDAUDIOCF=m +# CONFIG_SND_SOC is not set +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_MSNDCLAS=m +CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin" +CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin" +CONFIG_SOUND_MSNDPIN=m +CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin" +CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin" +CONFIG_SOUND_OSS=m +CONFIG_SOUND_TRACEINIT=y +CONFIG_SOUND_DMAP=y +CONFIG_SOUND_SSCAPE=m +CONFIG_SOUND_VMIDI=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_MSS=m +CONFIG_SOUND_MPU401=m +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PSS=m +CONFIG_PSS_MIXER=y +# CONFIG_PSS_HAVE_BOOT is not set +# CONFIG_SOUND_SB is not set +CONFIG_SOUND_YM3812=m +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_AEDSP16=m +CONFIG_SC6600=y +CONFIG_SC6600_JOY=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0 +CONFIG_AC97_BUS=m +CONFIG_HID_SUPPORT=y +CONFIG_HID=m +CONFIG_HIDRAW=y + +# +# USB Input Devices +# +CONFIG_USB_HID=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EZKEY=m +CONFIG_HID_KYE=m +CONFIG_HID_GYRATION=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LOGITECH=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_NTRIG=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PETALYNX=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TOPSEED=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_WACOM=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +# CONFIG_USB_OTG is not set +CONFIG_USB_MON=m +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_XHCI_HCD=m +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_HCD_SSB is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_CS=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_HWA_HCD=m + +# +# Enable Host or Gadget support to see Inventra options +# + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m + +# +# USB port drivers +# +CONFIG_USB_USS720=m +CONFIG_USB_SERIAL=m +CONFIG_USB_EZUSB=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KEYSPAN_MPR_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28X_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28XA_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28XB_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA18X_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19W_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19QW_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19QI_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA49W_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC_FW=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MOTOROLA=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_SIEMENS_MPI=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_BERRY_CHARGE=m +CONFIG_USB_LED=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_PHIDGET=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETMOTORCONTROL=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +# CONFIG_USB_TEST is not set +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_VST=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m +# CONFIG_USB_GADGET is not set + +# +# OTG and related infrastructure +# +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_NOP_USB_XCEIV is not set +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_WHCI=m +CONFIG_UWB_WLP=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_I1480U_WLP=m +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=m +CONFIG_MMC_TEST=m + +# +# MMC/SD/SDIO Host Controller Drivers +# +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_RICOH_MMC=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMC_WBSD=m +# CONFIG_MMC_AT91 is not set +# CONFIG_MMC_ATMELMCI is not set +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_CB710=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set + +# +# MemoryStick drivers +# +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MSPRO_BLOCK=m + +# +# MemoryStick Host Controller Drivers +# +CONFIG_MEMSTICK_TIFM_MS=m +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m + +# +# LED drivers +# +CONFIG_LEDS_NET48XX=m +CONFIG_LEDS_WRAP=m +CONFIG_LEDS_ALIX2=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_GPIO_PLATFORM=y +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_BD2802=m + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_IDE_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_ACCESSIBILITY is not set +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set +CONFIG_MLX4_INFINIBAND=m +CONFIG_INFINIBAND_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_ISER=m +CONFIG_EDAC=y + +# +# Reporting subsystems +# +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_AMD76X=m +CONFIG_EDAC_E7XXX=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82875P=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_X38=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I82860=m +CONFIG_EDAC_R82600=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_RTC_LIB=m +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +CONFIG_RTC_DRV_TEST=m + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m + +# +# SPI RTC drivers +# +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_PCF2123=m + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_AB3100=m + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_PCAP=m +CONFIG_DMADEVICES=y + +# +# DMA Devices +# +CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y +CONFIG_INTEL_IOATDMA=m +CONFIG_DMA_ENGINE=y + +# +# DMA Clients +# +CONFIG_NET_DMA=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_DMATEST=m +CONFIG_DCA=m +CONFIG_AUXDISPLAY=y +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +CONFIG_UIO=m +CONFIG_UIO_CIF=m +CONFIG_UIO_PDRV=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SMX=m +CONFIG_UIO_AEC=m +CONFIG_UIO_SERCOS3=m +CONFIG_UIO_PCI_GENERIC=m + +# +# TI VLYNQ +# +CONFIG_STAGING=y +# CONFIG_STAGING_EXCLUDE_BUILD is not set +CONFIG_ET131X=m +# CONFIG_ET131X_DEBUG is not set +CONFIG_SLICOSS=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_GO7007_OV7640=m +CONFIG_VIDEO_GO7007_SAA7113=m +CONFIG_VIDEO_GO7007_SAA7115=m +CONFIG_VIDEO_GO7007_TW9903=m +CONFIG_VIDEO_GO7007_UDA1342=m +CONFIG_VIDEO_GO7007_SONY_TUNER=m +CONFIG_VIDEO_GO7007_TW2804=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_USB_IP_COMMON=m +CONFIG_USB_IP_VHCI_HCD=m +CONFIG_USB_IP_HOST=m +CONFIG_W35UND=m +CONFIG_PRISM2_USB=m +CONFIG_ECHO=m +CONFIG_POCH=m +CONFIG_OTUS=m +CONFIG_RT2860=m +CONFIG_RT2870=m +CONFIG_RT3090=m +# CONFIG_COMEDI is not set +CONFIG_ASUS_OLED=m +CONFIG_PANEL=m +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_ALTERA_PCIE_CHDMA=m +CONFIG_RTL8187SE=m +CONFIG_RTL8192SU=m +CONFIG_RTL8192E=m +CONFIG_TRANZPORT=m + +# +# Android +# + +# +# Qualcomm MSM Camera And Video +# + +# +# Camera Sensor Selection +# +CONFIG_INPUT_GPIO=m +CONFIG_DST=m +# CONFIG_DST_DEBUG is not set +CONFIG_POHMELFS=m +# CONFIG_POHMELFS_DEBUG is not set +CONFIG_POHMELFS_CRYPTO=y +CONFIG_B3DFG=m +CONFIG_IDE_PHISON=m +CONFIG_PLAN9AUTH=m +CONFIG_LINE6_USB=m +# CONFIG_DRM_RADEON_KMS is not set +CONFIG_USB_SERIAL_QUATECH2=m +CONFIG_USB_SERIAL_QUATECH_USB2=m +CONFIG_VT6655=m +CONFIG_VT6656=m +CONFIG_FB_UDL=m +CONFIG_HYPERV=m +CONFIG_HYPERV_STORAGE=m +CONFIG_HYPERV_BLOCK=m +CONFIG_HYPERV_NET=m +CONFIG_HYPERV_UTILS=m +CONFIG_VME_BUS=m + +# +# VME Bridge Drivers +# +CONFIG_VME_CA91CX42=m +CONFIG_VME_TSI148=m + +# +# VME Device Drivers +# +CONFIG_VME_USER=m + +# +# RAR Register Driver +# +CONFIG_RAR_REGISTER=m +CONFIG_DX_SEP=m +CONFIG_IIO=m +CONFIG_IIO_RING_BUFFER=y +CONFIG_IIO_SW_RING=m +CONFIG_IIO_TRIGGER=y + +# +# Accelerometers +# +CONFIG_KXSD9=m +CONFIG_LIS3L02DQ=m +CONFIG_SCA3000=m + +# +# Analog to digital convertors +# +CONFIG_MAX1363=m + +# +# Light sensors +# +CONFIG_TSL2561=m + +# +# Triggers - standalone +# +CONFIG_IIO_PERIODIC_RTC_TRIGGER=m +CONFIG_IIO_GPIO_TRIGGER=m +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_ACER_WMI=m +CONFIG_ACERHDF=m +CONFIG_ASUS_LAPTOP=m +CONFIG_DELL_WMI=m +CONFIG_FUJITSU_LAPTOP=m +# CONFIG_FUJITSU_LAPTOP_DEBUG is not set +CONFIG_TC1100_WMI=m +CONFIG_HP_WMI=m +CONFIG_MSI_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_THINKPAD_ACPI=m +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_INTEL_MENLOW=m +CONFIG_EEEPC_LAPTOP=m +CONFIG_ACPI_WMI=m +CONFIG_MSI_WMI=m +# CONFIG_ACPI_ASUS is not set +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_ACPI_TOSHIBA=m + +# +# Firmware Drivers +# +CONFIG_EDD=m +# CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_EFI_VARS=m +CONFIG_DELL_RBU=m +CONFIG_DCDBAS=m +CONFIG_DMIID=y +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_IBFT=m + +# +# File systems +# +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_DEFAULTS_TO_ORDERED=y +CONFIG_EXT3_DEFAULTS_TO_BARRIERS_ENABLED=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_NFS4ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=m +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +CONFIG_JBD2=m +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=m +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_DEFAULTS_TO_BARRIERS_ENABLED=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FS_NFS4ACL=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_DMAPI=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_DEBUG is not set +CONFIG_GFS2_FS=m +# CONFIG_GFS2_FS_LOCKING_DLM is not set +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_DEBUG_MASKLOG=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_NILFS2_FS=m +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_DMAPI=m +# CONFIG_DMAPI_DEBUG is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_PRINT_QUOTA_WARNING=y +CONFIG_QUOTA_TREE=m +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_GENERIC_ACL=y + +# +# Caches +# +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_DEBUG is not set +CONFIG_FSCACHE_OBJECT_LIST=y +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_CONFIGFS_FS=m +CONFIG_MISC_FILESYSTEMS=y +CONFIG_ADFS_FS=m +CONFIG_ADFS_FS_RW=y +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +CONFIG_UBIFS_FS=m +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_FS_DEBUG is not set +CONFIG_CRAMFS=m +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_VXFS_FS=m +CONFIG_MINIX_FS=m +CONFIG_OMFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +CONFIG_ROMFS_FS=m +# CONFIG_ROMFS_BACKED_BY_BLOCK is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_BACKED_BY_BOTH=y +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROMFS_ON_MTD=y +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +CONFIG_UFS_FS_WRITE=y +# CONFIG_UFS_DEBUG is not set +CONFIG_EXOFS_FS=m +# CONFIG_EXOFS_DEBUG is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +# CONFIG_NFS_V4_1 is not set +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=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_SUNRPC_XPRT_RDMA=m +CONFIG_SUNRPC_SWAP=y +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_SPKM3=m +# CONFIG_SMB_FS is not set +CONFIG_CIFS=m +CONFIG_CIFS_STATS=y +CONFIG_CIFS_STATS2=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_EXPERIMENTAL=y +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +CONFIG_CODA_FS=m +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y +CONFIG_9P_FS=m +# CONFIG_9P_FSCACHE is not set +CONFIG_NOVFS=m + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +# CONFIG_AMIGA_PARTITION is not set +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_DLM=m +CONFIG_DLM_DEBUG=y + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_PRINTK_TIME=y +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +CONFIG_STRIP_ASM_SYMS=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_DEBUG_FS=y +CONFIG_HEADERS_CHECK=y +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=0 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +# CONFIG_FRAME_POINTER is not set +CONFIG_UNWIND_INFO=y +CONFIG_STACK_UNWIND=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_DEBUG_BLOCK_EXT_DEVT=y +CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y +CONFIG_LKDTM=m +# CONFIG_FAULT_INJECTION is not set +CONFIG_LATENCYTOP=y +CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +CONFIG_PROVIDE_OHCI1394_DMA_INIT=y +CONFIG_BUILD_DOCSRC=y +CONFIG_DYNAMIC_DEBUG=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_HAVE_ARCH_KMEMCHECK=y +# CONFIG_KMEMCHECK is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_4KSTACKS is not set +CONFIG_DOUBLEFAULT=y +# CONFIG_IOMMU_STRESS is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set +CONFIG_OPTIMIZE_INLINING=y +CONFIG_KDB=y +CONFIG_KDB_MODULES=m +CONFIG_KDB_OFF=y +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 +CONFIG_KDB_USB=y +CONFIG_KDB_KDUMP=y + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_DEFAULT="apparmor" +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_FILE_CAPABILITIES=y +# CONFIG_INTEL_TXT is not set +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_NETWORK=y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_APPARMOR_DISABLE=y +# CONFIG_IMA is not set +CONFIG_XOR_BLOCKS=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_FIPS=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_TEST=m + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_VMAC=m + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CRC32C_INTEL=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m + +# +# Ciphers +# +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_AES_586=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SALSA20_586=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +# CONFIG_CRYPTO_TWOFISH is not set +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_586=m + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_ZLIB=m +CONFIG_CRYPTO_LZO=m + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_GEODE=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_KVM_APIC_ARCHITECTURE=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM_KMP=y +CONFIG_KVM=m +CONFIG_KVM_INTEL=m +CONFIG_KVM_AMD=m +# CONFIG_LGUEST is not set +CONFIG_VIRTIO=m +CONFIG_VIRTIO_RING=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +CONFIG_CRC_T10DIF=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +CONFIG_CRC7=m +CONFIG_LIBCRC32C=m +CONFIG_AUDIT_GENERIC=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_LZO_COMPRESS=m +CONFIG_LZO_DECOMPRESS=m +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_NLATTR=y diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-i686-default.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-i686-default.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-i686-default.config 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-i686-default.config 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,5187 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32.19 +# Fri Sep 17 16:09:11 2010 +# +# CONFIG_64BIT is not set +CONFIG_X86_32=y +# CONFIG_X86_64 is not set +CONFIG_X86=y +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_MMU=y +CONFIG_ZONE_DMA=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_GPIO=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +# CONFIG_GENERIC_TIME_VSYSCALL is not set +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEFAULT_IDLE=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_ZONE_DMA32 is not set +CONFIG_ARCH_POPULATES_NODE_MAP=y +# CONFIG_AUDIT_ARCH is not set +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_USE_GENERIC_SMP_HELPERS=y +CONFIG_X86_32_SMP=y +CONFIG_X86_HT=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_X86_32_LAZY_GS=y +CONFIG_KTIME_SCALAR=y +CONFIG_SUSE_KERNEL=y +CONFIG_ENTERPRISE_SUPPORT=y +CONFIG_SPLIT_PACKAGE=y +# CONFIG_KERNEL_DESKTOP is not set +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="-0.5-default" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_RCU_TRACE is not set +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_TREE_RCU_TRACE is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_RT_GROUP_SCHED=y +# CONFIG_USER_SCHED is not set +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_NS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_CGROUP_MEM_RES_CTLR=y +# CONFIG_CGROUP_MEM_RES_CTLR_SWAP is not set +CONFIG_MM_OWNER=y +# CONFIG_SYSFS_DEPRECATED_V2 is not set +CONFIG_RELAY=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +# CONFIG_EMBEDDED is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +CONFIG_PERF_COUNTERS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y +CONFIG_COMPAT_BRK=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_DEFAULT_VM_DIRTY_RATIO=40 +CONFIG_PROFILING=y +CONFIG_OPROFILE=m +CONFIG_OPROFILE_IBS=y +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set +CONFIG_HAVE_OPROFILE=y +CONFIG_KPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_API_DEBUG=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_FAIR_SLEEPERS_ON_BY_DEFAULT=y +CONFIG_SLOW_WORK=y +CONFIG_SLOW_WORK_DEBUG=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_STOP_MACHINE=y +# CONFIG_UTRACE is not set +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_INTEGRITY=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_FREEZER=y + +# +# Processor type and features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_SMP=y +CONFIG_SPARSE_IRQ=y +CONFIG_X86_MPPARSE=y +# CONFIG_X86_XEN is not set +CONFIG_X86_BIGSMP=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_ELAN is not set +CONFIG_X86_MRST=y +# CONFIG_X86_RDC321X is not set +CONFIG_X86_32_NON_STANDARD=y +# CONFIG_X86_NUMAQ is not set +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_X86_SUMMIT is not set +CONFIG_X86_ES7000=y +CONFIG_PARAVIRT_GUEST=y +# CONFIG_VMI is not set +CONFIG_KVM_CLOCK=y +CONFIG_KVM_GUEST=y +# CONFIG_KVM_MMU is not set +# CONFIG_LGUEST_GUEST is not set +CONFIG_PARAVIRT=y +# CONFIG_PARAVIRT_SPINLOCKS is not set +# CONFIG_PARAVIRT_CPU is not set +CONFIG_PARAVIRT_TIME=y +# CONFIG_PARAVIRT_IRQ is not set +# CONFIG_PARAVIRT_APIC is not set +# CONFIG_PARAVIRT_MMU is not set +# CONFIG_PARAVIRT_ALL is not set +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_MEMTEST=y +CONFIG_X86_CYCLONE_TIMER=y +# CONFIG_M386 is not set +# CONFIG_M486 is not set +# CONFIG_M586 is not set +CONFIG_M586TSC=y +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +# CONFIG_GENERIC_CPU is not set +CONFIG_X86_GENERIC=y +CONFIG_X86_CPU=y +CONFIG_X86_L1_CACHE_BYTES=128 +CONFIG_X86_INTERNODE_CACHE_BYTES=128 +CONFIG_X86_CMPXCHG=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_XADD=y +# CONFIG_X86_PPRO_FENCE is not set +CONFIG_X86_F00F_BUG=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_TSC=y +CONFIG_X86_MINIMUM_CPU_FAMILY=4 +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +# CONFIG_IOMMU_HELPER is not set +CONFIG_IOMMU_API=y +CONFIG_NR_CPUS=32 +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_XEON75XX=m +CONFIG_X86_MCE_AMD=y +# CONFIG_X86_ANCIENT_MCE is not set +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MCE_INJECT=m +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_VM86=y +CONFIG_TOSHIBA=m +CONFIG_I8K=m +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_MICROCODE=m +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_HIGHMEM=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ILLEGAL_POINTER_VALUE=0 +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_HAVE_MLOCK=y +CONFIG_HAVE_MLOCKED_PAGE_BIT=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +CONFIG_HWPOISON_INJECT=m +CONFIG_HIGHPTE=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_RESERVE_LOW_64K=y +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_EFI=y +CONFIG_SECCOMP=y +# CONFIG_SECCOMP_DISABLE_TSC is not set +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_KEXEC=y +CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set +CONFIG_PHYSICAL_START=0x200000 +CONFIG_RELOCATABLE=y +CONFIG_X86_NEED_RELOCS=y +CONFIG_PHYSICAL_ALIGN=0x200000 +CONFIG_HOTPLUG_CPU=y +CONFIG_COMPAT_VDSO=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y + +# +# Power management and ACPI options +# +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION_NVS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_RUNTIME=y +CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_PROCFS=y +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_POWER_METER=m +CONFIG_ACPI_SYSFS_POWER=y +CONFIG_ACPI_PROC_EVENT=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_BLACKLIST_YEAR=0 +CONFIG_ACPI_DEBUG=y +# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set +CONFIG_ACPI_PCI_SLOT=m +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_CONTAINER=m +CONFIG_ACPI_SBS=m +CONFIG_SFI=y +CONFIG_X86_APM_BOOT=y +CONFIG_APM=m +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_DO_ENABLE=y +# CONFIG_APM_CPU_IDLE is not set +CONFIG_APM_DISPLAY_BLANK=y +CONFIG_APM_ALLOW_INTS=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_DEBUG=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m + +# +# CPUFreq processor drivers +# +CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_POWERNOW_K7_ACPI=y +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_GX_SUSPMOD=m +# CONFIG_X86_SPEEDSTEP_CENTRINO is not set +CONFIG_X86_SPEEDSTEP_ICH=m +CONFIG_X86_SPEEDSTEP_SMI=m +# CONFIG_X86_P4_CLOCKMOD is not set +CONFIG_X86_CPUFREQ_NFORCE2=m +CONFIG_X86_LONGRUN=m +CONFIG_X86_LONGHAUL=m +CONFIG_X86_E_POWERSAVER=m + +# +# shared options +# +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Bus options (PCI etc.) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOOLPC is not set +# CONFIG_PCI_GOXEN_FE is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_OLPC=y +CONFIG_PCI_DOMAINS=y +CONFIG_DMAR=y +# CONFIG_DMAR_DEFAULT_ON is not set +CONFIG_DMAR_FLOPPY_WA=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=m +CONFIG_PCIEAER=y +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEAER_INJECT=m +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_PCI_MSI=y +CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_STUB=y +CONFIG_HT_IRQ=y +CONFIG_PCI_IOV=y +CONFIG_ISA_DMA_API=y +CONFIG_ISA=y +# CONFIG_EISA is not set +# CONFIG_MCA is not set +CONFIG_SCx200=m +CONFIG_SCx200HR_TIMER=m +CONFIG_OLPC=y +CONFIG_K8_NB=y +CONFIG_PCCARD=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_IOCTL=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=m +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_TCIC=m +CONFIG_PCMCIA_PROBE=y +CONFIG_PCCARD_NONSTATIC=m +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_SHPC=m + +# +# Executable file formats / Emulations +# +CONFIG_BINFMT_ELF=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=m +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_ASK_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_LRO=y +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +# CONFIG_DEFAULT_BIC is not set +CONFIG_DEFAULT_CUBIC=y +# CONFIG_DEFAULT_HTCP is not set +# CONFIG_DEFAULT_VEGAS is not set +# CONFIG_DEFAULT_WESTWOOD is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +# CONFIG_IPV6_MROUTE is not set +CONFIG_NETLABEL=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ACCT=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CONNTRACK_SLP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_TPROXY=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_CONNTRACK_IPV4=m +# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_SIP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m + +# +# DECnet: Netfilter Configuration +# +# CONFIG_DECNET_NF_GRABULATOR is not set +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_IP_DCCP=m +CONFIG_INET_DCCP_DIAG=m + +# +# DCCP CCIDs Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +CONFIG_IP_DCCP_CCID3=y +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +CONFIG_IP_DCCP_CCID3_RTO=100 +CONFIG_IP_DCCP_TFRC_LIB=y + +# +# DCCP Kernel Hacking +# +# CONFIG_IP_DCCP_DEBUG is not set +# CONFIG_NET_DCCPPROBE is not set +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCTP_HMAC_MD5=y +CONFIG_RDS=m +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set +# CONFIG_TIPC is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_STP=m +CONFIG_GARP=m +CONFIG_BRIDGE=m +CONFIG_NET_DSA=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_DSA_TAG_TRAILER=y +CONFIG_NET_DSA_MV88E6XXX=y +CONFIG_NET_DSA_MV88E6060=y +CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y +CONFIG_NET_DSA_MV88E6131=y +CONFIG_NET_DSA_MV88E6123_61_65=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_DECNET=m +# CONFIG_DECNET_ROUTER is not set +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_IPX=m +CONFIG_IPX_INTERN=y +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=m +CONFIG_LTPC=m +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +CONFIG_X25=m +CONFIG_LAPB=m +# CONFIG_ECONET is not set +CONFIG_WAN_ROUTER=m +CONFIG_PHONET=m +CONFIG_IEEE802154=m +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_INGRESS=m + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_CLS_IND=y +CONFIG_NET_SCH_FIFO=y +CONFIG_DCB=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NET_TCPPROBE=m +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_SCC=m +# CONFIG_SCC_DELAY is not set +CONFIG_SCC_TRXECHO=y +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_EPP=m +CONFIG_YAM=m +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m + +# +# CAN Device Drivers +# +CONFIG_CAN_VCAN=m +CONFIG_CAN_DEV=m +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_SJA1000=m +CONFIG_CAN_SJA1000_ISA=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_KVASER_PCI=m + +# +# CAN USB interfaces +# +CONFIG_CAN_EMS_USB=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m + +# +# Dongle support +# +CONFIG_DONGLE=y +CONFIG_ESI_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_TOIM3232_DONGLE=m +CONFIG_LITELINK_DONGLE=m +CONFIG_MA600_DONGLE=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_MCP2120_DONGLE=m +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_ACT200L_DONGLE=m +CONFIG_KINGSUN_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +CONFIG_KS959_DONGLE=m + +# +# FIR device drivers +# +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_NSC_FIR=m +CONFIG_WINBOND_FIR=m +CONFIG_TOSHIBA_FIR=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_ALI_FIR=m +CONFIG_VLSI_FIR=m +CONFIG_VIA_FIR=m +CONFIG_MCS_FIR=m +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_RXKAD=m +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CFG80211_DEFAULT_PS=y +CONFIG_CFG80211_DEFAULT_PS_VALUE=1 +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_WEP=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_NET_9P=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_RDMA=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_NETVM=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +CONFIG_MTD=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_TESTS=m +CONFIG_MTD_CONCAT=m +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +CONFIG_MTD_AR7_PARTS=m + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=m +CONFIG_HAVE_MTD_OTP=y +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_FTL=m +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_INFTL=m +CONFIG_RFD_FTL=m +CONFIG_SSFDC=m +CONFIG_MTD_OOPS=m + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_MAP_BANK_WIDTH_8=y +CONFIG_MTD_MAP_BANK_WIDTH_16=y +CONFIG_MTD_MAP_BANK_WIDTH_32=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_I4=y +CONFIG_MTD_CFI_I8=y +CONFIG_MTD_OTP=y +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_RAM=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_COMPAT=y +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PHYSMAP_LEN=0 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_NETSC520=m +CONFIG_MTD_TS5500=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_PCI=m +CONFIG_MTD_GPIO_ADDR=m +CONFIG_MTD_INTEL_VR_NOR=m +CONFIG_MTD_PLATRAM=m + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_PMC551=m +CONFIG_MTD_PMC551_BUGFIX=y +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y +CONFIG_MTD_DATAFLASH_OTP=y +CONFIG_MTD_M25P80=m +CONFIG_M25PXX_USE_FAST_READ=y +CONFIG_MTD_SST25L=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m + +# +# Disk-On-Chip Device Drivers +# +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCPROBE_ADVANCED=y +CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 +CONFIG_MTD_DOCPROBE_HIGH=y +CONFIG_MTD_DOCPROBE_55AA=y +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_ECC_SMC=y +CONFIG_MTD_NAND_MUSEUM_IDS=y +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_NAND_DISKONCHIP=m +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_CS553X=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_ALAUDA=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_ONENAND_GENERIC=m +CONFIG_MTD_ONENAND_OTP=y +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_ONENAND_SIM=m + +# +# LPDDR flash memory drivers +# +CONFIG_MTD_LPDDR=m +CONFIG_MTD_QINFO_PROBE=m + +# +# UBI - Unsorted block images +# +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_RESERVE=1 +CONFIG_MTD_UBI_GLUEBI=m + +# +# UBI debugging options +# +# CONFIG_MTD_UBI_DEBUG is not set +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_AX88796=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PNP=y +# CONFIG_PNP_DEBUG_MESSAGES is not set + +# +# Protocols +# +CONFIG_ISAPNP=y +CONFIG_PNPBIOS=y +CONFIG_PNPBIOS_PROC_FS=y +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_XD=m +CONFIG_PARIDE=m + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_CISS_SCSI_TAPE=y +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_OSD=m +CONFIG_BLK_DEV_SX8=m +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=131072 +CONFIG_BLK_DEV_XIP=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +CONFIG_CDROM_PKTCDVD_WCACHE=y +CONFIG_ATA_OVER_ETH=m +CONFIG_CIPHER_TWOFISH=m +CONFIG_VIRTIO_BLK=m +# CONFIG_BLK_DEV_HD is not set +CONFIG_MISC_DEVICES=y +CONFIG_IBM_ASM=m +CONFIG_PHANTOM=m +CONFIG_SGI_IOC4=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +CONFIG_ICS932S401=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_HP_ILO=m +CONFIG_DELL_LAPTOP=m +# CONFIG_ISL29003 is not set +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEPROM_93CX6=m +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_HAVE_IDE=y +CONFIG_IDE=m + +# +# Please see Documentation/ide/ide.txt for help/info on IDE drives +# +CONFIG_IDE_XFER_MODE=y +CONFIG_IDE_TIMINGS=y +CONFIG_IDE_ATAPI=y +CONFIG_IDE_LEGACY=y +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_IDE_GD=m +CONFIG_IDE_GD_ATA=y +CONFIG_IDE_GD_ATAPI=y +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_BLK_DEV_IDEACPI=y +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_PROC_FS=y + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=m +CONFIG_BLK_DEV_PLATFORM=m +CONFIG_BLK_DEV_CMD640=m +CONFIG_BLK_DEV_CMD640_ENHANCED=y +CONFIG_BLK_DEV_IDEPNP=m +CONFIG_BLK_DEV_IDEDMA_SFF=y + +# +# PCI IDE chipsets support +# +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_OFFBOARD=y +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_OPTI621=m +CONFIG_BLK_DEV_RZ1000=m +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_AEC62XX=m +CONFIG_BLK_DEV_ALI15X3=m +CONFIG_BLK_DEV_AMD74XX=m +CONFIG_BLK_DEV_ATIIXP=m +CONFIG_BLK_DEV_CMD64X=m +CONFIG_BLK_DEV_TRIFLEX=m +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_CS5535=m +CONFIG_BLK_DEV_CS5536=m +CONFIG_BLK_DEV_HPT366=m +CONFIG_BLK_DEV_JMICRON=m +CONFIG_BLK_DEV_SC1200=m +CONFIG_BLK_DEV_PIIX=m +CONFIG_BLK_DEV_IT8172=m +CONFIG_BLK_DEV_IT8213=m +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_NS87415=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_SVWKS=m +CONFIG_BLK_DEV_SIIMAGE=m +CONFIG_BLK_DEV_SIS5513=m +CONFIG_BLK_DEV_SLC90E66=m +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BLK_DEV_TC86C001=m + +# +# Other IDE chipsets support +# + +# +# Note: most of these also require special kernel boot parameters +# +CONFIG_BLK_DEV_4DRIVES=m +CONFIG_BLK_DEV_ALI14XX=m +CONFIG_BLK_DEV_DTC2278=m +CONFIG_BLK_DEV_HT6560B=m +CONFIG_BLK_DEV_QD65XX=m +CONFIG_BLK_DEV_UMC8672=m +CONFIG_BLK_DEV_IDEDMA=y + +# +# SCSI device support +# +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=m +CONFIG_SCSI_DMA=y +CONFIG_SCSI_TGT=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_IOSTATS=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FC_TGT_ATTRS=y +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y +# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_SRP_TGT_ATTRS=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ARCMSR_AER=y +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +# CONFIG_SCSI_MPT2SAS_LOGGING is not set +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_FLASHPOINT=y +CONFIG_VMWARE_PVSCSI=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_SRP=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_ATA=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_ACPI=y +CONFIG_SATA_PMP=y +CONFIG_SATA_AHCI=m +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y +CONFIG_SATA_SVW=m +CONFIG_ATA_PIIX=m +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SX4=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SATA_INIC162X=m +CONFIG_PATA_ACPI=m +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CS5520=m +CONFIG_PATA_CS5530=m +CONFIG_PATA_CS5535=m +CONFIG_PATA_CS5536=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_ATA_GENERIC=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_ISAPNP=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_IT8213=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_LEGACY=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_QDI=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_RZ1000=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_SIS=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PATA_WINBOND_VLB=m +CONFIG_PATA_SCH=m +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +# CONFIG_MULTICORE_RAID456 is not set +CONFIG_MD_RAID6_PQ=m +CONFIG_ASYNC_RAID6_TEST=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_DELAY=m +CONFIG_DM_RAID45=m +CONFIG_DM_UEVENT=y +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_MAX_FC_SGE=256 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# You can enable one or both FireWire driver stacks. +# + +# +# See the help texts for more information. +# +# CONFIG_FIREWIRE is not set +CONFIG_IEEE1394=m +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_DV1394=m +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_I2O=m +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_BUS=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +CONFIG_IFB=m +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_MACVLAN=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_VETH=m +# CONFIG_NET_SB1000 is not set +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +# CONFIG_ARCNET_COM20020 is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +CONFIG_MARVELL_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_LXT_PHY=m +CONFIG_CICADA_PHY=m +CONFIG_VITESSE_PHY=m +CONFIG_SMSC_PHY=m +CONFIG_BROADCOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_REALTEK_PHY=m +CONFIG_NATIONAL_PHY=m +CONFIG_STE10XP=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_FIXED_PHY=y +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_GPIO=m +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRA=m +CONFIG_SMC9194=m +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ETHOC=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_DNET=m +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_ZNET=m +CONFIG_SEEQ8005=m +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +CONFIG_FORCEDETH=m +CONFIG_FORCEDETH_NAPI=y +CONFIG_CS89x0=m +CONFIG_E100=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R6040=m +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SMSC9420=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_SC92031=m +CONFIG_NET_POCKET=y +CONFIG_ATP=m +CONFIG_DE600=m +CONFIG_DE620=m +CONFIG_ATL2=m +CONFIG_NETDEV_1000=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IP1000=m +CONFIG_IGB=m +CONFIG_IGB_DCA=y +CONFIG_IGBVF=m +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_R8169_VLAN=y +CONFIG_SIS190=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +CONFIG_VIA_VELOCITY=m +CONFIG_TIGON3=m +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_QLA3XXX=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_JME=m +CONFIG_NETDEV_10000=y +CONFIG_MDIO=m +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3_DEPENDS=y +CONFIG_CHELSIO_T3=m +CONFIG_ENIC=m +CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGB=m +CONFIG_S2IO=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_NETXEN_NIC=m +CONFIG_NIU=m +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_TEHUTI=m +CONFIG_BNX2X=m +CONFIG_QLGE=m +CONFIG_SFC=m +# CONFIG_SFC_RESOURCE is not set +CONFIG_SFC_MTD=y +CONFIG_BE2NET=m +CONFIG_TR=m +CONFIG_IBMTR=m +CONFIG_IBMOL=m +CONFIG_IBMLS=m +CONFIG_3C359=m +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_SKISA=m +CONFIG_PROTEON=m +CONFIG_ABYSS=m +CONFIG_SMCTR=m +CONFIG_WLAN=y +CONFIG_WLAN_PRE80211=y +CONFIG_STRIP=m +CONFIG_ARLAN=m +CONFIG_WAVELAN=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_WLAN_80211=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_CS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_AIRO=m +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_AT76C50X_USB=m +CONFIG_AIRO_CS=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PRISM54=m +CONFIG_USB_ZD1201=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_ADM8211=m +CONFIG_MAC80211_HWSIM=m +CONFIG_MWL8K=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +CONFIG_P54_LEDS=y +CONFIG_ATH_COMMON=m +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set +CONFIG_AR9170_USB=m +CONFIG_AR9170_LEDS=y +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2100_DEBUG=y +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +CONFIG_IPW2200_DEBUG=y +CONFIG_LIBIPW=m +CONFIG_LIBIPW_DEBUG=y +CONFIG_IWLWIFI=m +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y +CONFIG_IWLWIFI_DEBUG=y +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLAGN=m +CONFIG_IWL4965=y +CONFIG_IWL5000=y +CONFIG_IWL3945=m +CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_CS=m +CONFIG_B43=m +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_PCMCIA=y +CONFIG_B43_SDIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_HWRNG=y +# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_HT=y +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +# CONFIG_RT2X00_DEBUG is not set +CONFIG_HERMES=m +CONFIG_HERMES_CACHE_FW_ON_INIT=y +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_NORTEL_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_WL12XX=m +CONFIG_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1271=m +CONFIG_IWM=m +# CONFIG_IWM_DEBUG is not set + +# +# WiMAX Wireless Broadband devices +# +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 + +# +# USB Network Adapters +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_IBMTR=m +CONFIG_WAN=y +CONFIG_HOSTESS_SV11=m +CONFIG_COSA=m +CONFIG_LANMEDIA=m +CONFIG_SEALEVEL_4021=m +CONFIG_HDLC=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_X25=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +CONFIG_PC300TOO=m +CONFIG_N2=m +CONFIG_C101=m +CONFIG_FARSYNC=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_SDLA=m +# CONFIG_WAN_ROUTER_DRIVERS is not set +CONFIG_LAPBETHER=m +CONFIG_X25_ASY=m +CONFIG_SBNI=m +CONFIG_SBNI_MULTILINE=y +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +CONFIG_ATM_ENI_TUNE_BURST=y +CONFIG_ATM_ENI_BURST_TX_16W=y +CONFIG_ATM_ENI_BURST_TX_8W=y +CONFIG_ATM_ENI_BURST_TX_4W=y +CONFIG_ATM_ENI_BURST_TX_2W=y +CONFIG_ATM_ENI_BURST_RX_16W=y +CONFIG_ATM_ENI_BURST_RX_8W=y +CONFIG_ATM_ENI_BURST_RX_4W=y +CONFIG_ATM_ENI_BURST_RX_2W=y +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_NICSTAR=m +CONFIG_ATM_NICSTAR_USE_SUNI=y +CONFIG_ATM_NICSTAR_USE_IDT77105=y +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_USE_TASKLET=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_SOLOS=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKEHARD=m +CONFIG_FDDI=m +CONFIG_DEFXX=m +CONFIG_DEFXX_MMIO=y +CONFIG_SKFP=m +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +CONFIG_ROADRUNNER_LARGE_RINGS=y +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +CONFIG_PPPOL2TP=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLHC=m +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_NET_FC=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETPOLL=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_VIRTIO_NET=m +CONFIG_VMXNET3=m +CONFIG_ISDN=y +CONFIG_ISDN_I4L=m +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +# +# mISDN hardware drivers +# +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_W6692=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y + +# +# ISDN feature submodules +# +CONFIG_ISDN_DIVERSION=m + +# +# ISDN4Linux hardware drivers +# + +# +# Passive cards +# +CONFIG_ISDN_DRV_HISAX=m + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_KEYPAD is not set +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +# CONFIG_HISAX_DEBUG is not set + +# +# HiSax PCMCIA card service modules +# +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_TELES_CS=m + +# +# HiSax sub driver modules +# +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_FRITZ_PCIPNP=m + +# +# Active cards +# +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_PCBIT=m +CONFIG_ISDN_DRV_SC=m +CONFIG_ISDN_DRV_ACT2000=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +CONFIG_ISDN_HDLC=m +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_CAPI_TRACE=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m + +# +# CAPI hardware drivers +# +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 +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_GIGASET_BASE=m +CONFIG_GIGASET_M105=m +CONFIG_GIGASET_M101=m +# CONFIG_GIGASET_DEBUG is not set +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_POLLDEV=m + +# +# 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=m +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_QT2160=m +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_OPENCORES=m +# CONFIG_KEYBOARD_STOWAWAY is not set +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_OLPC=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_INPORT=m +CONFIG_MOUSE_ATIXL=y +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_WALKERA0701=m +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_WACOM=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_ELOUSB=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_HTCPEN=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_WISTRON_BTNS=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATI_REMOTE=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_WINBOND_CIR=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_PCAP=m + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_COMPUTONE=m +CONFIG_ROCKETPORT=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +CONFIG_DIGIEPCA=m +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_ISI=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_GT=m +CONFIG_N_HDLC=m +CONFIG_RISCOM8=m +CONFIG_SPECIALIX=m +CONFIG_SX=m +CONFIG_RIO=m +CONFIG_RIO_OLDPCI=y +CONFIG_STALDRV=y +CONFIG_STALLION=m +CONFIG_ISTALLION=m +CONFIG_NOZOMI=m + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=16 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +CONFIG_UNIX98_PTYS=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_HVC_DRIVER=y +CONFIG_VIRTIO_CONSOLE=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_PANIC_EVENT=y +# CONFIG_IPMI_PANIC_STRING is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_GEODE=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_NVRAM=y +CONFIG_DTLK=m +CONFIG_R3964=m +CONFIG_APPLICOM=m +CONFIG_SONYPI=m + +# +# PCMCIA character devices +# +CONFIG_SYNCLINK_CS=m +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_IPWIRELESS=m +CONFIG_MWAVE=m +CONFIG_SCx200_GPIO=m +CONFIG_PC8736x_GPIO=m +CONFIG_NSC_GPIO=m +CONFIG_CS5535_GPIO=m +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=4096 +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_TCG_TPM=m +CONFIG_TCG_TIS=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TELCLOCK=m +CONFIG_DEVPORT=y +CONFIG_CRASHER=m +CONFIG_I2C=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m + +# +# ACPI drivers +# +CONFIG_I2C_SCMI=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_GPIO=m +CONFIG_I2C_OCORES=m +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m + +# +# Graphics adapter I2C/DDC channel drivers +# +# CONFIG_I2C_VOODOO3 is not set + +# +# Other I2C/SMBus bus drivers +# +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_STUB=m +CONFIG_SCx200_I2C=m +CONFIG_SCx200_I2C_SCL=12 +CONFIG_SCx200_I2C_SDA=13 +CONFIG_SCx200_ACB=m + +# +# Miscellaneous I2C Chip support +# +CONFIG_DS1682=m +CONFIG_SENSORS_TSL2550=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_GPIO=m +CONFIG_SPI_LM70_LLP=m + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_TLE62X0=m + +# +# PPS support +# +CONFIG_PPS=m +# CONFIG_PPS_DEBUG is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m + +# +# PCI GPIO expanders: +# +CONFIG_GPIO_LANGWELL=y + +# +# SPI GPIO expanders: +# +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MCP23S08=m +CONFIG_GPIO_MC33880=m + +# +# AC97 GPIO expanders: +# +CONFIG_GPIO_UCB1400=y +CONFIG_W1=m +CONFIG_W1_CON=y + +# +# 1-wire Bus Masters +# +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_GPIO=m + +# +# 1-wire Slaves +# +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +CONFIG_W1_SLAVE_DS2433_CRC=y +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_BQ27000=m +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PDA_POWER=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_OLPC=m +CONFIG_BATTERY_BQ27x00=m +CONFIG_BATTERY_MAX17040=m +CONFIG_HWMON=m +CONFIG_HWMON_VID=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m + +# +# ACPI drivers +# +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_THERMAL=m +CONFIG_THERMAL_HWMON=y +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_SC520_WDT=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_SC1200_WDT=m +CONFIG_SCx200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_60XX_WDT=m +CONFIG_SBC8360_WDT=m +CONFIG_SBC7240_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83697HF_WDT=m +CONFIG_W83697UG_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m + +# +# ISA-based Watchdog Cards +# +CONFIG_PCWATCHDOG=m +CONFIG_MIXCOMWD=m +CONFIG_WDT=m + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +CONFIG_SSB=m +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_PCMCIAHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SM501_GPIO=y +CONFIG_HTC_PASIC3=m +CONFIG_UCB1400_CORE=m +CONFIG_TPS65010=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_WM8400=m +# CONFIG_MFD_WM831X is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_PCF50633 is not set +CONFIG_MFD_MC13783=m +CONFIG_AB3100_CORE=m +CONFIG_AB3100_OTP=m +CONFIG_EZX_PCAP=y +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_BQ24022=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_MEDIA_SUPPORT=m + +# +# Multimedia core support +# +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L2_COMMON=m +CONFIG_VIDEO_ALLOW_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_DVB_CORE=m +CONFIG_VIDEO_MEDIA=m + +# +# Multimedia drivers +# +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L1=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_PMS=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_CPIA2=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9T031=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_TW9910=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_SOC_CAMERA_OV772X=m +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SN9C20X_EVDEV=y +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_USBVIDEO=m +CONFIG_USB_VICAM=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_QUICKCAM_MESSENGER=m +CONFIG_USB_ET61X251=m +CONFIG_VIDEO_OVCAMCHIP=m +CONFIG_USB_W9968CF=m +CONFIG_USB_OV511=m +CONFIG_USB_SE401=m +CONFIG_USB_SN9C102=m +CONFIG_USB_STV680=m +CONFIG_USB_ZC0301=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_CADET=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_ZOLTRIX=m +CONFIG_I2C_SI4713=m +CONFIG_RADIO_SI4713=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_SI470X=y +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_USB_MR800=m +CONFIG_RADIO_TEA5764=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_CAPTURE_DRIVERS=y + +# +# Supported SAA7146 based PCI Adapters +# +CONFIG_TTPCI_EEPROM=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m + +# +# Supported USB Adapters +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_SMS_SIANO_MDTV=m + +# +# Siano module components +# +CONFIG_SMS_USB_DRV=m +CONFIG_SMS_SDIO_DRV=m + +# +# Supported FlexCopII (B2C2) Adapters +# +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set + +# +# Supported BT878 Adapters +# +CONFIG_DVB_BT8XX=m + +# +# Supported Pluto2 Adapters +# +CONFIG_DVB_PLUTO2=m + +# +# Supported SDMC DM1105 Adapters +# +CONFIG_DVB_DM1105=m + +# +# Supported FireWire (IEEE 1394) Adapters +# +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_IEEE1394=y +CONFIG_DVB_FIREDTV_INPUT=y + +# +# Supported Earthsoft PT1 Adapters +# +CONFIG_DVB_PT1=m + +# +# Supported DVB Frontends +# +CONFIG_DVB_FE_CUSTOMISE=y + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +# CONFIG_DVB_STV090x is not set +# CONFIG_DVB_STV6110x is not set + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_SI21XX=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +# CONFIG_DVB_DRX397XD is not set +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_AF9013=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +# CONFIG_DVB_LGDT3304 is not set +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +# CONFIG_DVB_S921 is not set +CONFIG_DVB_DIB8000=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_LNBP21=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +# CONFIG_DVB_ISL6423 is not set +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DAB=y +CONFIG_USB_DABUSB=m + +# +# Graphics support +# +CONFIG_AGP=y +CONFIG_AGP_ALI=m +CONFIG_AGP_ATI=m +CONFIG_AGP_AMD=m +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=m +CONFIG_AGP_NVIDIA=m +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_VIA=m +CONFIG_AGP_EFFICEON=m +CONFIG_VGA_ARB=y +CONFIG_DRM=m +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_TTM=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_I810=m +CONFIG_DRM_I830=m +CONFIG_DRM_I915=m +CONFIG_DRM_I915_KMS=y +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m +CONFIG_DRM_VIA=m +CONFIG_DRM_SAVAGE=m +CONFIG_VGASTATE=m +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_DDC=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_HECUBA=m +CONFIG_FB_SVGALIB=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_ARC=m +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_VGA16=m +CONFIG_FB_UVESA=m +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +CONFIG_FB_N411=m +CONFIG_FB_HGA=m +CONFIG_FB_HGA_ACCEL=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_I2C=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_BACKLIGHT=y +CONFIG_FB_I810=m +CONFIG_FB_I810_GTF=y +CONFIG_FB_I810_I2C=y +CONFIG_FB_LE80578=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_S3=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_VIA=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +CONFIG_FB_3DFX_ACCEL=y +CONFIG_FB_3DFX_I2C=y +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_ARK=m +CONFIG_FB_PM3=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +# CONFIG_CARMINE_DRAM_CUSTOM is not set +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_LX=m +CONFIG_FB_GEODE_GX=m +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_SM501=m +CONFIG_FB_VIRTUAL=m +CONFIG_FB_METRONOME=m +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_BROADSHEET=m +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +CONFIG_LCD_PLATFORM=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_PROGEAR=m +CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_MBP_NVIDIA=m +CONFIG_BACKLIGHT_SAHARA=m + +# +# Display device support +# +CONFIG_DISPLAY_SUPPORT=m + +# +# Display hardware drivers +# + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_VGACON_SOFT_SCROLLBACK=y +CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64 +CONFIG_MDA_CONSOLE=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_LOGO is not set + +# +# Bootsplash configuration +# +CONFIG_BOOTSPLASH=y +CONFIG_SOUND=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_JACK=y +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_VERBOSE is not set +CONFIG_SND_PCM_XRUN_DEBUG=y +CONFIG_SND_VMASTER=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_RAWMIDI_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_OPL4_LIB_SEQ=m +CONFIG_SND_SBAWE_SEQ=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +# CONFIG_SND_PCSP is not set +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_WSS_LIB=m +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SB8_DSP=m +CONFIG_SND_SB16_DSP=m +CONFIG_SND_ISA=y +CONFIG_SND_ADLIB=m +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_ALS100=m +CONFIG_SND_AZT2320=m +CONFIG_SND_CMI8330=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4236=m +CONFIG_SND_DT019X=m +CONFIG_SND_ES968=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_SC6000=m +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_MIRO=m +CONFIG_SND_SB8=m +CONFIG_SND_SB16=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_SGALAXY=m +CONFIG_SND_SSCAPE=m +CONFIG_SND_WAVEFRONT=m +CONFIG_SND_MSND_PINNACLE=m +CONFIG_SND_MSND_CLASSIC=m +CONFIG_SND_PCI=y +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS5530=m +CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_JACK=y +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_CODEC_ANALOG=y +CONFIG_SND_HDA_CODEC_SIGMATEL=y +CONFIG_SND_HDA_CODEC_VIA=y +CONFIG_SND_HDA_CODEC_ATIHDMI=y +CONFIG_SND_HDA_CODEC_NVHDMI=y +CONFIG_SND_HDA_CODEC_INTELHDMI=y +CONFIG_SND_HDA_ELD=y +CONFIG_SND_HDA_CODEC_CIRRUS=y +CONFIG_SND_HDA_CODEC_CONEXANT=y +CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CMEDIA=y +CONFIG_SND_HDA_CODEC_SI3054=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_SND_HDA_POWER_SAVE=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HIFIER=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SIS7019=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_PCMCIA=y +CONFIG_SND_VXPOCKET=m +CONFIG_SND_PDAUDIOCF=m +# CONFIG_SND_SOC is not set +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_MSNDCLAS=m +CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin" +CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin" +CONFIG_SOUND_MSNDPIN=m +CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin" +CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin" +CONFIG_SOUND_OSS=m +CONFIG_SOUND_TRACEINIT=y +CONFIG_SOUND_DMAP=y +CONFIG_SOUND_SSCAPE=m +CONFIG_SOUND_VMIDI=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_MSS=m +CONFIG_SOUND_MPU401=m +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PSS=m +CONFIG_PSS_MIXER=y +# CONFIG_PSS_HAVE_BOOT is not set +# CONFIG_SOUND_SB is not set +CONFIG_SOUND_YM3812=m +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_AEDSP16=m +CONFIG_SC6600=y +CONFIG_SC6600_JOY=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0 +CONFIG_AC97_BUS=m +CONFIG_HID_SUPPORT=y +CONFIG_HID=m +CONFIG_HIDRAW=y + +# +# USB Input Devices +# +CONFIG_USB_HID=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EZKEY=m +CONFIG_HID_KYE=m +CONFIG_HID_GYRATION=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LOGITECH=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_NTRIG=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PETALYNX=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TOPSEED=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_WACOM=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +# CONFIG_USB_OTG is not set +CONFIG_USB_MON=m +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_XHCI_HCD=m +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_HCD_SSB is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_CS=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_HWA_HCD=m + +# +# Enable Host or Gadget support to see Inventra options +# + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m + +# +# USB port drivers +# +CONFIG_USB_USS720=m +CONFIG_USB_SERIAL=m +CONFIG_USB_EZUSB=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KEYSPAN_MPR_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28X_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28XA_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28XB_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA18X_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19W_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19QW_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19QI_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA49W_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC_FW=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MOTOROLA=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_SIEMENS_MPI=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_BERRY_CHARGE=m +CONFIG_USB_LED=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_PHIDGET=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETMOTORCONTROL=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +# CONFIG_USB_TEST is not set +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_VST=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m +# CONFIG_USB_GADGET is not set + +# +# OTG and related infrastructure +# +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_NOP_USB_XCEIV is not set +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_WHCI=m +CONFIG_UWB_WLP=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_I1480U_WLP=m +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=m +CONFIG_MMC_TEST=m + +# +# MMC/SD/SDIO Host Controller Drivers +# +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_RICOH_MMC=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMC_WBSD=m +# CONFIG_MMC_AT91 is not set +# CONFIG_MMC_ATMELMCI is not set +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_CB710=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set + +# +# MemoryStick drivers +# +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MSPRO_BLOCK=m + +# +# MemoryStick Host Controller Drivers +# +CONFIG_MEMSTICK_TIFM_MS=m +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m + +# +# LED drivers +# +CONFIG_LEDS_NET48XX=m +CONFIG_LEDS_WRAP=m +CONFIG_LEDS_ALIX2=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_GPIO_PLATFORM=y +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_BD2802=m + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_IDE_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_ACCESSIBILITY is not set +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set +CONFIG_MLX4_INFINIBAND=m +CONFIG_INFINIBAND_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_ISER=m +CONFIG_EDAC=y + +# +# Reporting subsystems +# +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_AMD76X=m +CONFIG_EDAC_E7XXX=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82875P=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_X38=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I82860=m +CONFIG_EDAC_R82600=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_RTC_LIB=m +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +CONFIG_RTC_DRV_TEST=m + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m + +# +# SPI RTC drivers +# +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_PCF2123=m + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_AB3100=m + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_PCAP=m +CONFIG_DMADEVICES=y + +# +# DMA Devices +# +CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y +CONFIG_INTEL_IOATDMA=m +CONFIG_DMA_ENGINE=y + +# +# DMA Clients +# +CONFIG_NET_DMA=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_DMATEST=m +CONFIG_DCA=m +CONFIG_AUXDISPLAY=y +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +CONFIG_UIO=m +CONFIG_UIO_CIF=m +CONFIG_UIO_PDRV=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SMX=m +CONFIG_UIO_AEC=m +CONFIG_UIO_SERCOS3=m +CONFIG_UIO_PCI_GENERIC=m + +# +# TI VLYNQ +# +CONFIG_STAGING=y +# CONFIG_STAGING_EXCLUDE_BUILD is not set +CONFIG_ET131X=m +# CONFIG_ET131X_DEBUG is not set +CONFIG_SLICOSS=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_GO7007_OV7640=m +CONFIG_VIDEO_GO7007_SAA7113=m +CONFIG_VIDEO_GO7007_SAA7115=m +CONFIG_VIDEO_GO7007_TW9903=m +CONFIG_VIDEO_GO7007_UDA1342=m +CONFIG_VIDEO_GO7007_SONY_TUNER=m +CONFIG_VIDEO_GO7007_TW2804=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_USB_IP_COMMON=m +CONFIG_USB_IP_VHCI_HCD=m +CONFIG_USB_IP_HOST=m +CONFIG_W35UND=m +CONFIG_PRISM2_USB=m +CONFIG_ECHO=m +CONFIG_POCH=m +CONFIG_OTUS=m +CONFIG_RT2860=m +CONFIG_RT2870=m +CONFIG_RT3090=m +# CONFIG_COMEDI is not set +CONFIG_ASUS_OLED=m +CONFIG_PANEL=m +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_ALTERA_PCIE_CHDMA=m +CONFIG_RTL8187SE=m +CONFIG_RTL8192SU=m +CONFIG_RTL8192E=m +CONFIG_TRANZPORT=m + +# +# Android +# + +# +# Qualcomm MSM Camera And Video +# + +# +# Camera Sensor Selection +# +CONFIG_INPUT_GPIO=m +CONFIG_DST=m +# CONFIG_DST_DEBUG is not set +CONFIG_POHMELFS=m +# CONFIG_POHMELFS_DEBUG is not set +CONFIG_POHMELFS_CRYPTO=y +CONFIG_B3DFG=m +CONFIG_IDE_PHISON=m +CONFIG_PLAN9AUTH=m +CONFIG_LINE6_USB=m +# CONFIG_DRM_RADEON_KMS is not set +CONFIG_USB_SERIAL_QUATECH2=m +CONFIG_USB_SERIAL_QUATECH_USB2=m +CONFIG_VT6655=m +CONFIG_VT6656=m +CONFIG_FB_UDL=m +CONFIG_HYPERV=m +CONFIG_HYPERV_STORAGE=m +CONFIG_HYPERV_BLOCK=m +CONFIG_HYPERV_NET=m +CONFIG_HYPERV_UTILS=m +CONFIG_VME_BUS=m + +# +# VME Bridge Drivers +# +CONFIG_VME_CA91CX42=m +CONFIG_VME_TSI148=m + +# +# VME Device Drivers +# +CONFIG_VME_USER=m + +# +# RAR Register Driver +# +CONFIG_RAR_REGISTER=m +CONFIG_DX_SEP=m +CONFIG_IIO=m +CONFIG_IIO_RING_BUFFER=y +CONFIG_IIO_SW_RING=m +CONFIG_IIO_TRIGGER=y + +# +# Accelerometers +# +CONFIG_KXSD9=m +CONFIG_LIS3L02DQ=m +CONFIG_SCA3000=m + +# +# Analog to digital convertors +# +CONFIG_MAX1363=m + +# +# Light sensors +# +CONFIG_TSL2561=m + +# +# Triggers - standalone +# +CONFIG_IIO_PERIODIC_RTC_TRIGGER=m +CONFIG_IIO_GPIO_TRIGGER=m +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_ACER_WMI=m +CONFIG_ACERHDF=m +CONFIG_ASUS_LAPTOP=m +CONFIG_DELL_WMI=m +CONFIG_FUJITSU_LAPTOP=m +# CONFIG_FUJITSU_LAPTOP_DEBUG is not set +CONFIG_TC1100_WMI=m +CONFIG_HP_WMI=m +CONFIG_MSI_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_THINKPAD_ACPI=m +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_INTEL_MENLOW=m +CONFIG_EEEPC_LAPTOP=m +CONFIG_ACPI_WMI=m +CONFIG_MSI_WMI=m +# CONFIG_ACPI_ASUS is not set +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_ACPI_TOSHIBA=m + +# +# Firmware Drivers +# +CONFIG_EDD=m +# CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_EFI_VARS=m +CONFIG_DELL_RBU=m +CONFIG_DCDBAS=m +CONFIG_DMIID=y +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_IBFT=m + +# +# File systems +# +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_DEFAULTS_TO_ORDERED=y +CONFIG_EXT3_DEFAULTS_TO_BARRIERS_ENABLED=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_NFS4ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=m +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +CONFIG_JBD2=m +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=m +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_DEFAULTS_TO_BARRIERS_ENABLED=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FS_NFS4ACL=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_DMAPI=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_DEBUG is not set +CONFIG_GFS2_FS=m +# CONFIG_GFS2_FS_LOCKING_DLM is not set +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_DEBUG_MASKLOG=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_NILFS2_FS=m +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_DMAPI=m +# CONFIG_DMAPI_DEBUG is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_PRINT_QUOTA_WARNING=y +CONFIG_QUOTA_TREE=m +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_GENERIC_ACL=y + +# +# Caches +# +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_DEBUG is not set +CONFIG_FSCACHE_OBJECT_LIST=y +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_CONFIGFS_FS=m +CONFIG_MISC_FILESYSTEMS=y +CONFIG_ADFS_FS=m +CONFIG_ADFS_FS_RW=y +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +CONFIG_UBIFS_FS=m +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_FS_DEBUG is not set +CONFIG_CRAMFS=m +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_VXFS_FS=m +CONFIG_MINIX_FS=m +CONFIG_OMFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +CONFIG_ROMFS_FS=m +# CONFIG_ROMFS_BACKED_BY_BLOCK is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_BACKED_BY_BOTH=y +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROMFS_ON_MTD=y +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +CONFIG_UFS_FS_WRITE=y +# CONFIG_UFS_DEBUG is not set +CONFIG_EXOFS_FS=m +# CONFIG_EXOFS_DEBUG is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +# CONFIG_NFS_V4_1 is not set +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=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_SUNRPC_XPRT_RDMA=m +CONFIG_SUNRPC_SWAP=y +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_SPKM3=m +# CONFIG_SMB_FS is not set +CONFIG_CIFS=m +CONFIG_CIFS_STATS=y +CONFIG_CIFS_STATS2=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_EXPERIMENTAL=y +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +CONFIG_CODA_FS=m +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y +CONFIG_9P_FS=m +# CONFIG_9P_FSCACHE is not set +CONFIG_NOVFS=m + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +# CONFIG_AMIGA_PARTITION is not set +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_DLM=m +CONFIG_DLM_DEBUG=y + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_PRINTK_TIME=y +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +CONFIG_STRIP_ASM_SYMS=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_DEBUG_FS=y +CONFIG_HEADERS_CHECK=y +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=0 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +# CONFIG_FRAME_POINTER is not set +CONFIG_UNWIND_INFO=y +CONFIG_STACK_UNWIND=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_DEBUG_BLOCK_EXT_DEVT=y +CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y +CONFIG_LKDTM=m +# CONFIG_FAULT_INJECTION is not set +CONFIG_LATENCYTOP=y +CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +CONFIG_PROVIDE_OHCI1394_DMA_INIT=y +CONFIG_BUILD_DOCSRC=y +CONFIG_DYNAMIC_DEBUG=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_HAVE_ARCH_KMEMCHECK=y +# CONFIG_KMEMCHECK is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_4KSTACKS is not set +CONFIG_DOUBLEFAULT=y +# CONFIG_IOMMU_STRESS is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set +CONFIG_OPTIMIZE_INLINING=y +CONFIG_KDB=y +CONFIG_KDB_MODULES=m +CONFIG_KDB_OFF=y +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 +CONFIG_KDB_USB=y +CONFIG_KDB_KDUMP=y + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_DEFAULT="apparmor" +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_FILE_CAPABILITIES=y +# CONFIG_INTEL_TXT is not set +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_NETWORK=y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_APPARMOR_DISABLE=y +# CONFIG_IMA is not set +CONFIG_XOR_BLOCKS=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_FIPS=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_TEST=m + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_VMAC=m + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CRC32C_INTEL=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m + +# +# Ciphers +# +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_AES_586=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SALSA20_586=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +# CONFIG_CRYPTO_TWOFISH is not set +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_586=m + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_ZLIB=m +CONFIG_CRYPTO_LZO=m + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_GEODE=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_KVM_APIC_ARCHITECTURE=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM_KMP=y +CONFIG_KVM=m +CONFIG_KVM_INTEL=m +CONFIG_KVM_AMD=m +# CONFIG_LGUEST is not set +CONFIG_VIRTIO=m +CONFIG_VIRTIO_RING=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +CONFIG_CRC_T10DIF=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +CONFIG_CRC7=m +CONFIG_LIBCRC32C=m +CONFIG_AUDIT_GENERIC=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_LZO_COMPRESS=m +CONFIG_LZO_DECOMPRESS=m +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_NLATTR=y diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-x86_64.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-x86_64.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-x86_64.config 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-x86_64.config 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,4946 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32.19 +# Fri Sep 17 16:15:48 2010 +# +CONFIG_64BIT=y +# CONFIG_X86_32 is not set +CONFIG_X86_64=y +CONFIG_X86=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_MMU=y +CONFIG_ZONE_DMA=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_GPIO=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEFAULT_IDLE=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ZONE_DMA32=y +CONFIG_ARCH_POPULATES_NODE_MAP=y +CONFIG_AUDIT_ARCH=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_USE_GENERIC_SMP_HELPERS=y +CONFIG_X86_64_SMP=y +CONFIG_X86_HT=y +CONFIG_X86_TRAMPOLINE=y +# CONFIG_KTIME_SCALAR is not set +CONFIG_SUSE_KERNEL=y +CONFIG_ENTERPRISE_SUPPORT=y +CONFIG_SPLIT_PACKAGE=y +# CONFIG_KERNEL_DESKTOP is not set +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="-0.6-default" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_RCU_TRACE is not set +CONFIG_RCU_FANOUT=64 +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_TREE_RCU_TRACE is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_RT_GROUP_SCHED=y +# CONFIG_USER_SCHED is not set +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_NS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_CGROUP_MEM_RES_CTLR=y +# CONFIG_CGROUP_MEM_RES_CTLR_SWAP is not set +CONFIG_MM_OWNER=y +# CONFIG_SYSFS_DEPRECATED_V2 is not set +CONFIG_RELAY=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +# CONFIG_EMBEDDED is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +CONFIG_PERF_COUNTERS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y +CONFIG_COMPAT_BRK=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_DEFAULT_VM_DIRTY_RATIO=40 +CONFIG_PROFILING=y +CONFIG_OPROFILE=m +CONFIG_OPROFILE_IBS=y +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set +CONFIG_HAVE_OPROFILE=y +CONFIG_KPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_API_DEBUG=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_FAIR_SLEEPERS_ON_BY_DEFAULT=y +CONFIG_SLOW_WORK=y +CONFIG_SLOW_WORK_DEBUG=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_STOP_MACHINE=y +# CONFIG_UTRACE is not set +CONFIG_BLOCK=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLOCK_COMPAT=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_FREEZER=y + +# +# Processor type and features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_SMP=y +CONFIG_X86_X2APIC=y +CONFIG_SPARSE_IRQ=y +CONFIG_NUMA_IRQ_DESC=y +CONFIG_X86_MPPARSE=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_64_XEN is not set +# CONFIG_X86_VSMP is not set +CONFIG_X86_UV=y +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_PARAVIRT_GUEST=y +# CONFIG_PARAVIRT_XEN is not set +CONFIG_KVM_CLOCK=y +CONFIG_KVM_GUEST=y +# CONFIG_KVM_MMU is not set +CONFIG_PARAVIRT=y +# CONFIG_PARAVIRT_SPINLOCKS is not set +# CONFIG_PARAVIRT_CPU is not set +CONFIG_PARAVIRT_TIME=y +# CONFIG_PARAVIRT_IRQ is not set +# CONFIG_PARAVIRT_APIC is not set +# CONFIG_PARAVIRT_MMU is not set +# CONFIG_PARAVIRT_ALL is not set +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_MEMTEST=y +# 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 is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +CONFIG_GENERIC_CPU=y +CONFIG_X86_CPU=y +CONFIG_X86_L1_CACHE_BYTES=128 +CONFIG_X86_INTERNODE_CACHE_BYTES=128 +CONFIG_X86_CMPXCHG=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_XADD=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_TSC=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +# CONFIG_X86_DS is not set +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +CONFIG_GART_IOMMU=y +CONFIG_CALGARY_IOMMU=y +# CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT is not set +CONFIG_AMD_IOMMU=y +# CONFIG_AMD_IOMMU_STATS is not set +CONFIG_SWIOTLB=y +CONFIG_IOMMU_HELPER=y +CONFIG_IOMMU_API=y +CONFIG_MAXSMP=y +CONFIG_NR_CPUS=4096 +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_XEON75XX=m +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MCE_INJECT=m +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_I8K=m +CONFIG_MICROCODE=m +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_DIRECT_GBPAGES=y +CONFIG_NUMA=y +CONFIG_K8_NUMA=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_NODES_SPAN_OTHER_NODES=y +CONFIG_NUMA_EMU=y +CONFIG_NODES_SHIFT=9 +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_MIGRATION=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_HAVE_MLOCK=y +CONFIG_HAVE_MLOCKED_PAGE_BIT=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +CONFIG_HWPOISON_INJECT=m +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_RESERVE_LOW_64K=y +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_EFI=y +CONFIG_SECCOMP=y +# CONFIG_SECCOMP_DISABLE_TSC is not set +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_KEXEC=y +CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set +CONFIG_PHYSICAL_START=0x200000 +CONFIG_RELOCATABLE=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_HOTPLUG_CPU=y +CONFIG_COMPAT_VDSO=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y + +# +# Power management and ACPI options +# +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION_NVS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_RUNTIME=y +CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_PROCFS=y +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_POWER_METER=m +CONFIG_ACPI_SYSFS_POWER=y +CONFIG_ACPI_PROC_EVENT=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_BLACKLIST_YEAR=0 +CONFIG_ACPI_DEBUG=y +# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set +CONFIG_ACPI_PCI_SLOT=m +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_CONTAINER=m +CONFIG_ACPI_HOTPLUG_MEMORY=m +CONFIG_ACPI_SBS=m +CONFIG_SFI=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_DEBUG=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m + +# +# CPUFreq processor drivers +# +CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_POWERNOW_K8=m +# CONFIG_X86_SPEEDSTEP_CENTRINO is not set +# CONFIG_X86_P4_CLOCKMOD is not set + +# +# shared options +# +# CONFIG_X86_SPEEDSTEP_LIB is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Memory power savings +# +CONFIG_I7300_IDLE_IOAT_CHANNEL=y +CONFIG_I7300_IDLE=m + +# +# Bus options (PCI etc.) +# +CONFIG_PCI=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_DOMAINS=y +CONFIG_DMAR=y +# CONFIG_DMAR_DEFAULT_ON is not set +CONFIG_DMAR_FLOPPY_WA=y +CONFIG_INTR_REMAP=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=m +CONFIG_PCIEAER=y +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEAER_INJECT=m +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_PCI_MSI=y +CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_STUB=y +CONFIG_HT_IRQ=y +CONFIG_PCI_IOV=y +CONFIG_ISA_DMA_API=y +CONFIG_K8_NB=y +CONFIG_PCCARD=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_IOCTL=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=m +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_PCCARD_NONSTATIC=m +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_SHPC=m + +# +# Executable file formats / Emulations +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_HAVE_AOUT is not set +CONFIG_BINFMT_MISC=m +CONFIG_IA32_EMULATION=y +CONFIG_IA32_AOUT=m +CONFIG_COMPAT=y +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y + +# +# Networking options +# +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_ASK_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_LRO=y +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +# CONFIG_DEFAULT_BIC is not set +CONFIG_DEFAULT_CUBIC=y +# CONFIG_DEFAULT_HTCP is not set +# CONFIG_DEFAULT_VEGAS is not set +# CONFIG_DEFAULT_WESTWOOD is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +# CONFIG_IPV6_MROUTE is not set +CONFIG_NETLABEL=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ACCT=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CONNTRACK_SLP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_TPROXY=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_CONNTRACK_IPV4=m +# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_SIP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m + +# +# DECnet: Netfilter Configuration +# +# CONFIG_DECNET_NF_GRABULATOR is not set +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_IP_DCCP=m +CONFIG_INET_DCCP_DIAG=m + +# +# DCCP CCIDs Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +CONFIG_IP_DCCP_CCID3=y +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +CONFIG_IP_DCCP_CCID3_RTO=100 +CONFIG_IP_DCCP_TFRC_LIB=y + +# +# DCCP Kernel Hacking +# +# CONFIG_IP_DCCP_DEBUG is not set +# CONFIG_NET_DCCPPROBE is not set +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCTP_HMAC_MD5=y +CONFIG_RDS=m +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set +# CONFIG_TIPC is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_STP=m +CONFIG_GARP=m +CONFIG_BRIDGE=m +CONFIG_NET_DSA=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_DSA_TAG_TRAILER=y +CONFIG_NET_DSA_MV88E6XXX=y +CONFIG_NET_DSA_MV88E6060=y +CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y +CONFIG_NET_DSA_MV88E6131=y +CONFIG_NET_DSA_MV88E6123_61_65=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_DECNET=m +# CONFIG_DECNET_ROUTER is not set +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_IPX=m +CONFIG_IPX_INTERN=y +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=m +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +CONFIG_X25=m +CONFIG_LAPB=m +# CONFIG_ECONET is not set +CONFIG_WAN_ROUTER=m +CONFIG_PHONET=m +CONFIG_IEEE802154=m +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_INGRESS=m + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_CLS_IND=y +CONFIG_NET_SCH_FIFO=y +CONFIG_DCB=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NET_TCPPROBE=m +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_YAM=m +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m + +# +# CAN Device Drivers +# +CONFIG_CAN_VCAN=m +CONFIG_CAN_DEV=m +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_SJA1000=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_KVASER_PCI=m + +# +# CAN USB interfaces +# +CONFIG_CAN_EMS_USB=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m + +# +# Dongle support +# +CONFIG_DONGLE=y +CONFIG_ESI_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_TOIM3232_DONGLE=m +CONFIG_LITELINK_DONGLE=m +CONFIG_MA600_DONGLE=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_MCP2120_DONGLE=m +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_ACT200L_DONGLE=m +CONFIG_KINGSUN_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +CONFIG_KS959_DONGLE=m + +# +# FIR device drivers +# +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_NSC_FIR=m +CONFIG_WINBOND_FIR=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_ALI_FIR=m +CONFIG_VLSI_FIR=m +CONFIG_VIA_FIR=m +CONFIG_MCS_FIR=m +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_RXKAD=m +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CFG80211_DEFAULT_PS=y +CONFIG_CFG80211_DEFAULT_PS_VALUE=1 +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_WEP=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_NET_9P=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_RDMA=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_NETVM=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +CONFIG_MTD=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_TESTS=m +CONFIG_MTD_CONCAT=m +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +CONFIG_MTD_AR7_PARTS=m + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=m +CONFIG_HAVE_MTD_OTP=y +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_FTL=m +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_INFTL=m +CONFIG_RFD_FTL=m +CONFIG_SSFDC=m +CONFIG_MTD_OOPS=m + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_MAP_BANK_WIDTH_8=y +CONFIG_MTD_MAP_BANK_WIDTH_16=y +CONFIG_MTD_MAP_BANK_WIDTH_32=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_I4=y +CONFIG_MTD_CFI_I8=y +CONFIG_MTD_OTP=y +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_RAM=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_COMPAT=y +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PHYSMAP_LEN=0 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_NETSC520=m +CONFIG_MTD_TS5500=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_PCI=m +CONFIG_MTD_GPIO_ADDR=m +CONFIG_MTD_INTEL_VR_NOR=m +CONFIG_MTD_PLATRAM=m + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_PMC551=m +CONFIG_MTD_PMC551_BUGFIX=y +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y +CONFIG_MTD_DATAFLASH_OTP=y +CONFIG_MTD_M25P80=m +CONFIG_M25PXX_USE_FAST_READ=y +CONFIG_MTD_SST25L=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m + +# +# Disk-On-Chip Device Drivers +# +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCPROBE_ADVANCED=y +CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 +CONFIG_MTD_DOCPROBE_HIGH=y +CONFIG_MTD_DOCPROBE_55AA=y +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_ECC_SMC=y +CONFIG_MTD_NAND_MUSEUM_IDS=y +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_NAND_DISKONCHIP=m +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_ALAUDA=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_ONENAND_GENERIC=m +CONFIG_MTD_ONENAND_OTP=y +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_ONENAND_SIM=m + +# +# LPDDR flash memory drivers +# +CONFIG_MTD_LPDDR=m +CONFIG_MTD_QINFO_PROBE=m + +# +# UBI - Unsorted block images +# +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_RESERVE=1 +CONFIG_MTD_UBI_GLUEBI=m + +# +# UBI debugging options +# +# CONFIG_MTD_UBI_DEBUG is not set +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_AX88796=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PNP=y +# CONFIG_PNP_DEBUG_MESSAGES is not set + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_FD=m +CONFIG_PARIDE=m + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_CISS_SCSI_TAPE=y +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_OSD=m +CONFIG_BLK_DEV_SX8=m +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=131072 +CONFIG_BLK_DEV_XIP=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +CONFIG_CDROM_PKTCDVD_WCACHE=y +CONFIG_ATA_OVER_ETH=m +CONFIG_CIPHER_TWOFISH=m +CONFIG_VIRTIO_BLK=m +# CONFIG_BLK_DEV_HD is not set +CONFIG_MISC_DEVICES=y +CONFIG_IBM_ASM=m +CONFIG_PHANTOM=m +CONFIG_SGI_IOC4=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +CONFIG_ICS932S401=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_SGI_XP=m +CONFIG_HP_ILO=m +CONFIG_SGI_GRU=m +# CONFIG_SGI_GRU_DEBUG is not set +CONFIG_DELL_LAPTOP=m +# CONFIG_ISL29003 is not set +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEPROM_93CX6=m +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_HAVE_IDE=y +CONFIG_IDE=m + +# +# Please see Documentation/ide/ide.txt for help/info on IDE drives +# +CONFIG_IDE_XFER_MODE=y +CONFIG_IDE_TIMINGS=y +CONFIG_IDE_ATAPI=y +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_IDE_GD=m +CONFIG_IDE_GD_ATA=y +CONFIG_IDE_GD_ATAPI=y +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_BLK_DEV_IDEACPI=y +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_PROC_FS=y + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=m +CONFIG_BLK_DEV_PLATFORM=m +CONFIG_BLK_DEV_CMD640=m +CONFIG_BLK_DEV_CMD640_ENHANCED=y +CONFIG_BLK_DEV_IDEPNP=m +CONFIG_BLK_DEV_IDEDMA_SFF=y + +# +# PCI IDE chipsets support +# +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_OFFBOARD=y +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_OPTI621=m +CONFIG_BLK_DEV_RZ1000=m +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_AEC62XX=m +CONFIG_BLK_DEV_ALI15X3=m +CONFIG_BLK_DEV_AMD74XX=m +CONFIG_BLK_DEV_ATIIXP=m +CONFIG_BLK_DEV_CMD64X=m +CONFIG_BLK_DEV_TRIFLEX=m +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_HPT366=m +CONFIG_BLK_DEV_JMICRON=m +CONFIG_BLK_DEV_SC1200=m +CONFIG_BLK_DEV_PIIX=m +CONFIG_BLK_DEV_IT8172=m +CONFIG_BLK_DEV_IT8213=m +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_NS87415=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_SVWKS=m +CONFIG_BLK_DEV_SIIMAGE=m +CONFIG_BLK_DEV_SIS5513=m +CONFIG_BLK_DEV_SLC90E66=m +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BLK_DEV_TC86C001=m +CONFIG_BLK_DEV_IDEDMA=y + +# +# SCSI device support +# +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=m +CONFIG_SCSI_DMA=y +CONFIG_SCSI_TGT=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_IOSTATS=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FC_TGT_ATTRS=y +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y +# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_SRP_TGT_ATTRS=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ARCMSR_AER=y +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +# CONFIG_SCSI_MPT2SAS_LOGGING is not set +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_VMWARE_PVSCSI=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_SRP=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_ATA=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_ACPI=y +CONFIG_SATA_PMP=y +CONFIG_SATA_AHCI=m +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y +CONFIG_SATA_SVW=m +CONFIG_ATA_PIIX=m +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SX4=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SATA_INIC162X=m +CONFIG_PATA_ACPI=m +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CS5520=m +CONFIG_PATA_CS5530=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_ATA_GENERIC=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_IT821X=m +CONFIG_PATA_IT8213=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_RZ1000=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_SIS=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PATA_SCH=m +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +# CONFIG_MULTICORE_RAID456 is not set +CONFIG_MD_RAID6_PQ=m +CONFIG_ASYNC_RAID6_TEST=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_DELAY=m +CONFIG_DM_RAID45=m +CONFIG_DM_UEVENT=y +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_MAX_FC_SGE=256 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# You can enable one or both FireWire driver stacks. +# + +# +# See the help texts for more information. +# +# CONFIG_FIREWIRE is not set +CONFIG_IEEE1394=m +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_DV1394=m +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_I2O=m +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_BUS=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +CONFIG_IFB=m +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_MACVLAN=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_VETH=m +# CONFIG_NET_SB1000 is not set +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +# CONFIG_ARCNET_COM20020 is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +CONFIG_MARVELL_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_LXT_PHY=m +CONFIG_CICADA_PHY=m +CONFIG_VITESSE_PHY=m +CONFIG_SMSC_PHY=m +CONFIG_BROADCOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_REALTEK_PHY=m +CONFIG_NATIONAL_PHY=m +CONFIG_STE10XP=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_FIXED_PHY=y +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_GPIO=m +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ETHOC=m +CONFIG_DNET=m +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_HP100=m +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +CONFIG_FORCEDETH=m +CONFIG_FORCEDETH_NAPI=y +CONFIG_E100=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R6040=m +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SMSC9420=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_SC92031=m +CONFIG_NET_POCKET=y +CONFIG_ATP=m +CONFIG_DE600=m +CONFIG_DE620=m +CONFIG_ATL2=m +CONFIG_NETDEV_1000=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IP1000=m +CONFIG_IGB=m +CONFIG_IGB_DCA=y +CONFIG_IGBVF=m +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_R8169_VLAN=y +CONFIG_SIS190=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +CONFIG_VIA_VELOCITY=m +CONFIG_TIGON3=m +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_QLA3XXX=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_JME=m +CONFIG_NETDEV_10000=y +CONFIG_MDIO=m +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3_DEPENDS=y +CONFIG_CHELSIO_T3=m +CONFIG_ENIC=m +CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGB=m +CONFIG_S2IO=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_NETXEN_NIC=m +CONFIG_NIU=m +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_TEHUTI=m +CONFIG_BNX2X=m +CONFIG_QLGE=m +CONFIG_SFC=m +# CONFIG_SFC_RESOURCE is not set +CONFIG_SFC_MTD=y +CONFIG_BE2NET=m +CONFIG_TR=m +CONFIG_IBMOL=m +CONFIG_3C359=m +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_ABYSS=m +CONFIG_WLAN=y +CONFIG_WLAN_PRE80211=y +CONFIG_STRIP=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_WLAN_80211=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_CS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_AIRO=m +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_AT76C50X_USB=m +CONFIG_AIRO_CS=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PRISM54=m +CONFIG_USB_ZD1201=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_ADM8211=m +CONFIG_MAC80211_HWSIM=m +CONFIG_MWL8K=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +CONFIG_P54_LEDS=y +CONFIG_ATH_COMMON=m +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set +CONFIG_AR9170_USB=m +CONFIG_AR9170_LEDS=y +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2100_DEBUG=y +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +CONFIG_IPW2200_DEBUG=y +CONFIG_LIBIPW=m +CONFIG_LIBIPW_DEBUG=y +CONFIG_IWLWIFI=m +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y +CONFIG_IWLWIFI_DEBUG=y +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLAGN=m +CONFIG_IWL4965=y +CONFIG_IWL5000=y +CONFIG_IWL3945=m +CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_CS=m +CONFIG_B43=m +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_PCMCIA=y +CONFIG_B43_SDIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_HWRNG=y +# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_HT=y +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +# CONFIG_RT2X00_DEBUG is not set +CONFIG_HERMES=m +CONFIG_HERMES_CACHE_FW_ON_INIT=y +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_NORTEL_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_WL12XX=m +CONFIG_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1271=m +CONFIG_IWM=m +# CONFIG_IWM_DEBUG is not set + +# +# WiMAX Wireless Broadband devices +# +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 + +# +# USB Network Adapters +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_IBMTR=m +CONFIG_WAN=y +CONFIG_LANMEDIA=m +CONFIG_HDLC=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_X25=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +CONFIG_PC300TOO=m +CONFIG_FARSYNC=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +# CONFIG_WAN_ROUTER_DRIVERS is not set +CONFIG_LAPBETHER=m +CONFIG_X25_ASY=m +CONFIG_SBNI=m +CONFIG_SBNI_MULTILINE=y +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +CONFIG_ATM_ENI_TUNE_BURST=y +CONFIG_ATM_ENI_BURST_TX_16W=y +CONFIG_ATM_ENI_BURST_TX_8W=y +CONFIG_ATM_ENI_BURST_TX_4W=y +CONFIG_ATM_ENI_BURST_TX_2W=y +CONFIG_ATM_ENI_BURST_RX_16W=y +CONFIG_ATM_ENI_BURST_RX_8W=y +CONFIG_ATM_ENI_BURST_RX_4W=y +CONFIG_ATM_ENI_BURST_RX_2W=y +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_USE_TASKLET=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_SOLOS=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKEHARD=m +CONFIG_FDDI=m +CONFIG_DEFXX=m +CONFIG_DEFXX_MMIO=y +CONFIG_SKFP=m +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +CONFIG_ROADRUNNER_LARGE_RINGS=y +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +CONFIG_PPPOL2TP=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLHC=m +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_NET_FC=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETPOLL=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_VIRTIO_NET=m +CONFIG_VMXNET3=m +CONFIG_ISDN=y +CONFIG_ISDN_I4L=m +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +# +# mISDN hardware drivers +# +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_W6692=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y + +# +# ISDN feature submodules +# +CONFIG_ISDN_DIVERSION=m + +# +# ISDN4Linux hardware drivers +# + +# +# Passive cards +# +CONFIG_ISDN_DRV_HISAX=m + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_KEYPAD is not set +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_3=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +# CONFIG_HISAX_DEBUG is not set + +# +# HiSax PCMCIA card service modules +# +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_TELES_CS=m + +# +# HiSax sub driver modules +# +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_FRITZ_PCIPNP=m + +# +# Active cards +# +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +CONFIG_ISDN_HDLC=m +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_CAPI_TRACE=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m + +# +# CAPI hardware drivers +# +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +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 +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_GIGASET_BASE=m +CONFIG_GIGASET_M105=m +CONFIG_GIGASET_M101=m +# CONFIG_GIGASET_DEBUG is not set +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_POLLDEV=m + +# +# 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=m +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_QT2160=m +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_OPENCORES=m +# CONFIG_KEYBOARD_STOWAWAY is not set +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_WALKERA0701=m +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_WACOM=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_ELOUSB=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATI_REMOTE=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_WINBOND_CIR=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_PCAP=m + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_COMPUTONE=m +CONFIG_ROCKETPORT=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +CONFIG_DIGIEPCA=m +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_ISI=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_GT=m +CONFIG_N_HDLC=m +CONFIG_RISCOM8=m +CONFIG_SPECIALIX=m +CONFIG_SX=m +CONFIG_RIO=m +CONFIG_RIO_OLDPCI=y +CONFIG_STALDRV=y +CONFIG_STALLION=m +CONFIG_ISTALLION=m +CONFIG_NOZOMI=m + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=16 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +CONFIG_UNIX98_PTYS=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_HVC_DRIVER=y +CONFIG_VIRTIO_CONSOLE=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_PANIC_EVENT=y +# CONFIG_IPMI_PANIC_STRING is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_NVRAM=y +CONFIG_R3964=m +CONFIG_APPLICOM=m + +# +# PCMCIA character devices +# +CONFIG_SYNCLINK_CS=m +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_IPWIRELESS=m +CONFIG_MWAVE=m +CONFIG_PC8736x_GPIO=m +CONFIG_NSC_GPIO=m +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=4096 +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_UV_MMTIMER=m +CONFIG_TCG_TPM=m +CONFIG_TCG_TIS=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TELCLOCK=m +CONFIG_DEVPORT=y +CONFIG_CRASHER=m +CONFIG_I2C=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m + +# +# ACPI drivers +# +CONFIG_I2C_SCMI=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_GPIO=m +CONFIG_I2C_OCORES=m +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m + +# +# Graphics adapter I2C/DDC channel drivers +# +# CONFIG_I2C_VOODOO3 is not set + +# +# Other I2C/SMBus bus drivers +# +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_STUB=m + +# +# Miscellaneous I2C Chip support +# +CONFIG_DS1682=m +CONFIG_SENSORS_TSL2550=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_GPIO=m +CONFIG_SPI_LM70_LLP=m + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_TLE62X0=m + +# +# PPS support +# +CONFIG_PPS=m +# CONFIG_PPS_DEBUG is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m + +# +# PCI GPIO expanders: +# +CONFIG_GPIO_LANGWELL=y + +# +# SPI GPIO expanders: +# +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MCP23S08=m +CONFIG_GPIO_MC33880=m + +# +# AC97 GPIO expanders: +# +CONFIG_GPIO_UCB1400=y +CONFIG_W1=m +CONFIG_W1_CON=y + +# +# 1-wire Bus Masters +# +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_GPIO=m + +# +# 1-wire Slaves +# +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +CONFIG_W1_SLAVE_DS2433_CRC=y +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_BQ27000=m +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PDA_POWER=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_BQ27x00=m +CONFIG_BATTERY_MAX17040=m +CONFIG_HWMON=m +CONFIG_HWMON_VID=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m + +# +# ACPI drivers +# +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_THERMAL=m +CONFIG_THERMAL_HWMON=y +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_SC520_WDT=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_SC1200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_60XX_WDT=m +CONFIG_SBC8360_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83697HF_WDT=m +CONFIG_W83697UG_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +CONFIG_SSB=m +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_PCMCIAHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SM501_GPIO=y +CONFIG_HTC_PASIC3=m +CONFIG_UCB1400_CORE=m +CONFIG_TPS65010=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_WM8400=m +# CONFIG_MFD_WM831X is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_PCF50633 is not set +CONFIG_MFD_MC13783=m +CONFIG_AB3100_CORE=m +CONFIG_AB3100_OTP=m +CONFIG_EZX_PCAP=y +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_BQ24022=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_MEDIA_SUPPORT=m + +# +# Multimedia core support +# +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L2_COMMON=m +CONFIG_VIDEO_ALLOW_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_DVB_CORE=m +CONFIG_VIDEO_MEDIA=m + +# +# Multimedia drivers +# +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L1=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_CPIA2=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9T031=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_TW9910=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_SOC_CAMERA_OV772X=m +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SN9C20X_EVDEV=y +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_USBVIDEO=m +CONFIG_USB_VICAM=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_QUICKCAM_MESSENGER=m +CONFIG_USB_ET61X251=m +CONFIG_VIDEO_OVCAMCHIP=m +CONFIG_USB_W9968CF=m +CONFIG_USB_OV511=m +CONFIG_USB_SE401=m +CONFIG_USB_SN9C102=m +CONFIG_USB_STV680=m +CONFIG_USB_ZC0301=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MAESTRO=m +CONFIG_I2C_SI4713=m +CONFIG_RADIO_SI4713=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_SI470X=y +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_USB_MR800=m +CONFIG_RADIO_TEA5764=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_CAPTURE_DRIVERS=y + +# +# Supported SAA7146 based PCI Adapters +# +CONFIG_TTPCI_EEPROM=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m + +# +# Supported USB Adapters +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_SMS_SIANO_MDTV=m + +# +# Siano module components +# +CONFIG_SMS_USB_DRV=m +CONFIG_SMS_SDIO_DRV=m + +# +# Supported FlexCopII (B2C2) Adapters +# +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set + +# +# Supported BT878 Adapters +# +CONFIG_DVB_BT8XX=m + +# +# Supported Pluto2 Adapters +# +CONFIG_DVB_PLUTO2=m + +# +# Supported SDMC DM1105 Adapters +# +CONFIG_DVB_DM1105=m + +# +# Supported FireWire (IEEE 1394) Adapters +# +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_IEEE1394=y +CONFIG_DVB_FIREDTV_INPUT=y + +# +# Supported Earthsoft PT1 Adapters +# +CONFIG_DVB_PT1=m + +# +# Supported DVB Frontends +# +CONFIG_DVB_FE_CUSTOMISE=y + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +# CONFIG_DVB_STV090x is not set +# CONFIG_DVB_STV6110x is not set + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_SI21XX=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +# CONFIG_DVB_DRX397XD is not set +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_AF9013=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +# CONFIG_DVB_LGDT3304 is not set +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +# CONFIG_DVB_S921 is not set +CONFIG_DVB_DIB8000=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_LNBP21=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +# CONFIG_DVB_ISL6423 is not set +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DAB=y +CONFIG_USB_DABUSB=m + +# +# Graphics support +# +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=m +CONFIG_AGP_SIS=m +CONFIG_AGP_VIA=m +CONFIG_VGA_ARB=y +CONFIG_DRM=m +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_TTM=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_I810=m +CONFIG_DRM_I830=m +CONFIG_DRM_I915=m +CONFIG_DRM_I915_KMS=y +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m +CONFIG_DRM_VIA=m +CONFIG_DRM_SAVAGE=m +CONFIG_VGASTATE=m +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_DDC=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_HECUBA=m +CONFIG_FB_SVGALIB=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_ARC=m +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_VGA16=m +CONFIG_FB_UVESA=m +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +CONFIG_FB_N411=m +CONFIG_FB_HGA=m +CONFIG_FB_HGA_ACCEL=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_I2C=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_BACKLIGHT=y +CONFIG_FB_LE80578=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_S3=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_VIA=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +CONFIG_FB_3DFX_ACCEL=y +CONFIG_FB_3DFX_I2C=y +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_ARK=m +CONFIG_FB_PM3=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +# CONFIG_CARMINE_DRAM_CUSTOM is not set +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_LX=m +CONFIG_FB_GEODE_GX=m +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_SM501=m +CONFIG_FB_VIRTUAL=m +CONFIG_FB_METRONOME=m +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_BROADSHEET=m +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +CONFIG_LCD_PLATFORM=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_PROGEAR=m +CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_MBP_NVIDIA=m +CONFIG_BACKLIGHT_SAHARA=m + +# +# Display device support +# +CONFIG_DISPLAY_SUPPORT=m + +# +# Display hardware drivers +# + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_VGACON_SOFT_SCROLLBACK=y +CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64 +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_LOGO is not set + +# +# Bootsplash configuration +# +CONFIG_BOOTSPLASH=y +CONFIG_SOUND=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_JACK=y +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_VERBOSE is not set +CONFIG_SND_PCM_XRUN_DEBUG=y +CONFIG_SND_VMASTER=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_RAWMIDI_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +# CONFIG_SND_PCSP is not set +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SB16_DSP=m +CONFIG_SND_PCI=y +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS5530=m +CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_JACK=y +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_CODEC_ANALOG=y +CONFIG_SND_HDA_CODEC_SIGMATEL=y +CONFIG_SND_HDA_CODEC_VIA=y +CONFIG_SND_HDA_CODEC_ATIHDMI=y +CONFIG_SND_HDA_CODEC_NVHDMI=y +CONFIG_SND_HDA_CODEC_INTELHDMI=y +CONFIG_SND_HDA_ELD=y +CONFIG_SND_HDA_CODEC_CIRRUS=y +CONFIG_SND_HDA_CODEC_CONEXANT=y +CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CMEDIA=y +CONFIG_SND_HDA_CODEC_SI3054=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_SND_HDA_POWER_SAVE=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HIFIER=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_PCMCIA=y +CONFIG_SND_VXPOCKET=m +CONFIG_SND_PDAUDIOCF=m +# CONFIG_SND_SOC is not set +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_OSS=m +CONFIG_SOUND_TRACEINIT=y +CONFIG_SOUND_DMAP=y +CONFIG_SOUND_SSCAPE=m +CONFIG_SOUND_VMIDI=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_MSS=m +CONFIG_SOUND_MPU401=m +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PSS=m +CONFIG_PSS_MIXER=y +# CONFIG_PSS_HAVE_BOOT is not set +# CONFIG_SOUND_SB is not set +CONFIG_SOUND_YM3812=m +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_AEDSP16=m +CONFIG_SC6600=y +CONFIG_SC6600_JOY=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0 +CONFIG_AC97_BUS=m +CONFIG_HID_SUPPORT=y +CONFIG_HID=m +CONFIG_HIDRAW=y + +# +# USB Input Devices +# +CONFIG_USB_HID=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EZKEY=m +CONFIG_HID_KYE=m +CONFIG_HID_GYRATION=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LOGITECH=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_NTRIG=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PETALYNX=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TOPSEED=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_WACOM=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +# CONFIG_USB_OTG is not set +CONFIG_USB_MON=m +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_XHCI_HCD=m +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_HCD_SSB is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_CS=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_HWA_HCD=m + +# +# Enable Host or Gadget support to see Inventra options +# + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m + +# +# USB port drivers +# +CONFIG_USB_USS720=m +CONFIG_USB_SERIAL=m +CONFIG_USB_EZUSB=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KEYSPAN_MPR_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28X_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28XA_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28XB_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA18X_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19W_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19QW_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19QI_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA49W_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC_FW=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MOTOROLA=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_SIEMENS_MPI=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_BERRY_CHARGE=m +CONFIG_USB_LED=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_PHIDGET=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETMOTORCONTROL=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +# CONFIG_USB_TEST is not set +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_VST=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m +# CONFIG_USB_GADGET is not set + +# +# OTG and related infrastructure +# +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_NOP_USB_XCEIV is not set +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_WHCI=m +CONFIG_UWB_WLP=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_I1480U_WLP=m +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=m +CONFIG_MMC_TEST=m + +# +# MMC/SD/SDIO Host Controller Drivers +# +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_RICOH_MMC=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMC_WBSD=m +# CONFIG_MMC_AT91 is not set +# CONFIG_MMC_ATMELMCI is not set +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_SPI=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_CB710=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set + +# +# MemoryStick drivers +# +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MSPRO_BLOCK=m + +# +# MemoryStick Host Controller Drivers +# +CONFIG_MEMSTICK_TIFM_MS=m +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m + +# +# LED drivers +# +CONFIG_LEDS_ALIX2=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_GPIO_PLATFORM=y +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_BD2802=m + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_IDE_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_ACCESSIBILITY is not set +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_IPATH=m +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set +CONFIG_MLX4_INFINIBAND=m +CONFIG_INFINIBAND_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_ISER=m +CONFIG_EDAC=y + +# +# Reporting subsystems +# +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_AMD64=m +CONFIG_EDAC_AMD64_ERROR_INJECTION=y +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_X38=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_RTC_LIB=m +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +CONFIG_RTC_DRV_TEST=m + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m + +# +# SPI RTC drivers +# +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_PCF2123=m + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_AB3100=m + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_PCAP=m +CONFIG_DMADEVICES=y + +# +# DMA Devices +# +CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y +CONFIG_INTEL_IOATDMA=m +CONFIG_DMA_ENGINE=y + +# +# DMA Clients +# +CONFIG_NET_DMA=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_DMATEST=m +CONFIG_DCA=m +CONFIG_AUXDISPLAY=y +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +CONFIG_UIO=m +CONFIG_UIO_CIF=m +CONFIG_UIO_PDRV=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SMX=m +CONFIG_UIO_AEC=m +CONFIG_UIO_SERCOS3=m +CONFIG_UIO_PCI_GENERIC=m + +# +# TI VLYNQ +# +CONFIG_STAGING=y +# CONFIG_STAGING_EXCLUDE_BUILD is not set +CONFIG_ET131X=m +# CONFIG_ET131X_DEBUG is not set +CONFIG_SLICOSS=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_GO7007_OV7640=m +CONFIG_VIDEO_GO7007_SAA7113=m +CONFIG_VIDEO_GO7007_SAA7115=m +CONFIG_VIDEO_GO7007_TW9903=m +CONFIG_VIDEO_GO7007_UDA1342=m +CONFIG_VIDEO_GO7007_SONY_TUNER=m +CONFIG_VIDEO_GO7007_TW2804=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_USB_IP_COMMON=m +CONFIG_USB_IP_VHCI_HCD=m +CONFIG_USB_IP_HOST=m +CONFIG_W35UND=m +CONFIG_PRISM2_USB=m +CONFIG_ECHO=m +CONFIG_POCH=m +CONFIG_OTUS=m +CONFIG_RT2860=m +CONFIG_RT2870=m +CONFIG_RT3090=m +# CONFIG_COMEDI is not set +CONFIG_ASUS_OLED=m +CONFIG_PANEL=m +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_ALTERA_PCIE_CHDMA=m +CONFIG_RTL8187SE=m +CONFIG_RTL8192SU=m +CONFIG_RTL8192E=m +CONFIG_TRANZPORT=m + +# +# Android +# + +# +# Qualcomm MSM Camera And Video +# + +# +# Camera Sensor Selection +# +CONFIG_INPUT_GPIO=m +CONFIG_DST=m +# CONFIG_DST_DEBUG is not set +CONFIG_POHMELFS=m +# CONFIG_POHMELFS_DEBUG is not set +CONFIG_POHMELFS_CRYPTO=y +CONFIG_B3DFG=m +CONFIG_IDE_PHISON=m +CONFIG_PLAN9AUTH=m +CONFIG_LINE6_USB=m +# CONFIG_DRM_RADEON_KMS is not set +CONFIG_USB_SERIAL_QUATECH2=m +CONFIG_USB_SERIAL_QUATECH_USB2=m +CONFIG_VT6655=m +CONFIG_VT6656=m +CONFIG_FB_UDL=m +CONFIG_HYPERV=m +CONFIG_HYPERV_STORAGE=m +CONFIG_HYPERV_BLOCK=m +CONFIG_HYPERV_NET=m +CONFIG_HYPERV_UTILS=m +CONFIG_VME_BUS=m + +# +# VME Bridge Drivers +# +CONFIG_VME_CA91CX42=m +CONFIG_VME_TSI148=m + +# +# VME Device Drivers +# +CONFIG_VME_USER=m + +# +# RAR Register Driver +# +CONFIG_RAR_REGISTER=m +CONFIG_DX_SEP=m +CONFIG_IIO=m +CONFIG_IIO_RING_BUFFER=y +CONFIG_IIO_SW_RING=m +CONFIG_IIO_TRIGGER=y + +# +# Accelerometers +# +CONFIG_KXSD9=m +CONFIG_LIS3L02DQ=m +CONFIG_SCA3000=m + +# +# Analog to digital convertors +# +CONFIG_MAX1363=m + +# +# Light sensors +# +CONFIG_TSL2561=m + +# +# Triggers - standalone +# +CONFIG_IIO_PERIODIC_RTC_TRIGGER=m +CONFIG_IIO_GPIO_TRIGGER=m +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_ACER_WMI=m +CONFIG_ACERHDF=m +CONFIG_ASUS_LAPTOP=m +CONFIG_DELL_WMI=m +CONFIG_FUJITSU_LAPTOP=m +# CONFIG_FUJITSU_LAPTOP_DEBUG is not set +CONFIG_HP_WMI=m +CONFIG_MSI_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_THINKPAD_ACPI=m +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_INTEL_MENLOW=m +CONFIG_EEEPC_LAPTOP=m +CONFIG_ACPI_WMI=m +CONFIG_MSI_WMI=m +# CONFIG_ACPI_ASUS is not set +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_ACPI_TOSHIBA=m + +# +# Firmware Drivers +# +CONFIG_EDD=m +# CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_EFI_VARS=y +CONFIG_DELL_RBU=m +CONFIG_DCDBAS=m +CONFIG_DMIID=y +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_IBFT=m + +# +# File systems +# +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_DEFAULTS_TO_ORDERED=y +CONFIG_EXT3_DEFAULTS_TO_BARRIERS_ENABLED=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_NFS4ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=m +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +CONFIG_JBD2=m +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=m +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_DEFAULTS_TO_BARRIERS_ENABLED=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FS_NFS4ACL=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_DMAPI=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_DEBUG is not set +CONFIG_GFS2_FS=m +# CONFIG_GFS2_FS_LOCKING_DLM is not set +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_DEBUG_MASKLOG=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_NILFS2_FS=m +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_DMAPI=m +# CONFIG_DMAPI_DEBUG is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_PRINT_QUOTA_WARNING=y +CONFIG_QUOTA_TREE=m +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_GENERIC_ACL=y + +# +# Caches +# +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_DEBUG is not set +CONFIG_FSCACHE_OBJECT_LIST=y +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_CONFIGFS_FS=m +CONFIG_MISC_FILESYSTEMS=y +CONFIG_ADFS_FS=m +CONFIG_ADFS_FS_RW=y +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +CONFIG_UBIFS_FS=m +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_FS_DEBUG is not set +CONFIG_CRAMFS=m +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_VXFS_FS=m +CONFIG_MINIX_FS=m +CONFIG_OMFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +CONFIG_ROMFS_FS=m +# CONFIG_ROMFS_BACKED_BY_BLOCK is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_BACKED_BY_BOTH=y +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROMFS_ON_MTD=y +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +CONFIG_UFS_FS_WRITE=y +# CONFIG_UFS_DEBUG is not set +CONFIG_EXOFS_FS=m +# CONFIG_EXOFS_DEBUG is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +# CONFIG_NFS_V4_1 is not set +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=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_SUNRPC_XPRT_RDMA=m +CONFIG_SUNRPC_SWAP=y +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_SPKM3=m +# CONFIG_SMB_FS is not set +CONFIG_CIFS=m +CONFIG_CIFS_STATS=y +CONFIG_CIFS_STATS2=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_EXPERIMENTAL=y +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +CONFIG_CODA_FS=m +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y +CONFIG_9P_FS=m +# CONFIG_9P_FSCACHE is not set +CONFIG_NOVFS=m + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +# CONFIG_AMIGA_PARTITION is not set +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_DLM=m +CONFIG_DLM_DEBUG=y + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_PRINTK_TIME=y +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +CONFIG_STRIP_ASM_SYMS=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_DEBUG_FS=y +CONFIG_HEADERS_CHECK=y +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=0 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +# CONFIG_FRAME_POINTER is not set +CONFIG_UNWIND_INFO=y +CONFIG_STACK_UNWIND=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_DEBUG_BLOCK_EXT_DEVT=y +CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y +CONFIG_LKDTM=m +# CONFIG_FAULT_INJECTION is not set +CONFIG_LATENCYTOP=y +CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +CONFIG_PROVIDE_OHCI1394_DMA_INIT=y +CONFIG_BUILD_DOCSRC=y +CONFIG_DYNAMIC_DEBUG=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_HAVE_ARCH_KMEMCHECK=y +# CONFIG_KMEMCHECK is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_IOMMU_DEBUG is not set +# CONFIG_IOMMU_STRESS is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set +CONFIG_OPTIMIZE_INLINING=y +CONFIG_KDB=y +CONFIG_KDB_MODULES=m +CONFIG_KDB_OFF=y +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 +CONFIG_KDB_USB=y +CONFIG_KDB_KDUMP=y + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_DEFAULT="apparmor" +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_FILE_CAPABILITIES=y +# CONFIG_INTEL_TXT is not set +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_NETWORK=y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_APPARMOR_DISABLE=y +# CONFIG_IMA is not set +CONFIG_XOR_BLOCKS=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_FIPS=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_TEST=m + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_FPU=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_VMAC=m + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CRC32C_INTEL=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m + +# +# Ciphers +# +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_AES_X86_64=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SALSA20_X86_64=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +# CONFIG_CRYPTO_TWOFISH is not set +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_X86_64=m + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_ZLIB=m +CONFIG_CRYPTO_LZO=m + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_KVM_APIC_ARCHITECTURE=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM_KMP=y +CONFIG_KVM=m +CONFIG_KVM_INTEL=m +CONFIG_KVM_AMD=m +CONFIG_VIRTIO=m +CONFIG_VIRTIO_RING=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +CONFIG_CRC_T10DIF=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +CONFIG_CRC7=m +CONFIG_LIBCRC32C=m +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_LZO_COMPRESS=m +CONFIG_LZO_DECOMPRESS=m +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CPUMASK_OFFSTACK=y +CONFIG_NLATTR=y diff -Nru lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-x86_64-default.config lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-x86_64-default.config --- lustre-1.8.3/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-x86_64-default.config 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-sles11-x86_64-default.config 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,4946 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32.19 +# Fri Sep 17 16:15:48 2010 +# +CONFIG_64BIT=y +# CONFIG_X86_32 is not set +CONFIG_X86_64=y +CONFIG_X86=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_MMU=y +CONFIG_ZONE_DMA=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_GPIO=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEFAULT_IDLE=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ZONE_DMA32=y +CONFIG_ARCH_POPULATES_NODE_MAP=y +CONFIG_AUDIT_ARCH=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_USE_GENERIC_SMP_HELPERS=y +CONFIG_X86_64_SMP=y +CONFIG_X86_HT=y +CONFIG_X86_TRAMPOLINE=y +# CONFIG_KTIME_SCALAR is not set +CONFIG_SUSE_KERNEL=y +CONFIG_ENTERPRISE_SUPPORT=y +CONFIG_SPLIT_PACKAGE=y +# CONFIG_KERNEL_DESKTOP is not set +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="-0.6-default" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_RCU_TRACE is not set +CONFIG_RCU_FANOUT=64 +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_TREE_RCU_TRACE is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_RT_GROUP_SCHED=y +# CONFIG_USER_SCHED is not set +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_NS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_CGROUP_MEM_RES_CTLR=y +# CONFIG_CGROUP_MEM_RES_CTLR_SWAP is not set +CONFIG_MM_OWNER=y +# CONFIG_SYSFS_DEPRECATED_V2 is not set +CONFIG_RELAY=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +# CONFIG_EMBEDDED is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +CONFIG_PERF_COUNTERS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y +CONFIG_COMPAT_BRK=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_DEFAULT_VM_DIRTY_RATIO=40 +CONFIG_PROFILING=y +CONFIG_OPROFILE=m +CONFIG_OPROFILE_IBS=y +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set +CONFIG_HAVE_OPROFILE=y +CONFIG_KPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_API_DEBUG=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_FAIR_SLEEPERS_ON_BY_DEFAULT=y +CONFIG_SLOW_WORK=y +CONFIG_SLOW_WORK_DEBUG=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_STOP_MACHINE=y +# CONFIG_UTRACE is not set +CONFIG_BLOCK=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLOCK_COMPAT=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_FREEZER=y + +# +# Processor type and features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_SMP=y +CONFIG_X86_X2APIC=y +CONFIG_SPARSE_IRQ=y +CONFIG_NUMA_IRQ_DESC=y +CONFIG_X86_MPPARSE=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_64_XEN is not set +# CONFIG_X86_VSMP is not set +CONFIG_X86_UV=y +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_PARAVIRT_GUEST=y +# CONFIG_PARAVIRT_XEN is not set +CONFIG_KVM_CLOCK=y +CONFIG_KVM_GUEST=y +# CONFIG_KVM_MMU is not set +CONFIG_PARAVIRT=y +# CONFIG_PARAVIRT_SPINLOCKS is not set +# CONFIG_PARAVIRT_CPU is not set +CONFIG_PARAVIRT_TIME=y +# CONFIG_PARAVIRT_IRQ is not set +# CONFIG_PARAVIRT_APIC is not set +# CONFIG_PARAVIRT_MMU is not set +# CONFIG_PARAVIRT_ALL is not set +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_MEMTEST=y +# 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 is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +CONFIG_GENERIC_CPU=y +CONFIG_X86_CPU=y +CONFIG_X86_L1_CACHE_BYTES=128 +CONFIG_X86_INTERNODE_CACHE_BYTES=128 +CONFIG_X86_CMPXCHG=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_XADD=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_TSC=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +# CONFIG_X86_DS is not set +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +CONFIG_GART_IOMMU=y +CONFIG_CALGARY_IOMMU=y +# CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT is not set +CONFIG_AMD_IOMMU=y +# CONFIG_AMD_IOMMU_STATS is not set +CONFIG_SWIOTLB=y +CONFIG_IOMMU_HELPER=y +CONFIG_IOMMU_API=y +CONFIG_MAXSMP=y +CONFIG_NR_CPUS=4096 +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_XEON75XX=m +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MCE_INJECT=m +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_I8K=m +CONFIG_MICROCODE=m +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_DIRECT_GBPAGES=y +CONFIG_NUMA=y +CONFIG_K8_NUMA=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_NODES_SPAN_OTHER_NODES=y +CONFIG_NUMA_EMU=y +CONFIG_NODES_SHIFT=9 +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_MIGRATION=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_HAVE_MLOCK=y +CONFIG_HAVE_MLOCKED_PAGE_BIT=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +CONFIG_HWPOISON_INJECT=m +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_RESERVE_LOW_64K=y +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_EFI=y +CONFIG_SECCOMP=y +# CONFIG_SECCOMP_DISABLE_TSC is not set +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_KEXEC=y +CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set +CONFIG_PHYSICAL_START=0x200000 +CONFIG_RELOCATABLE=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_HOTPLUG_CPU=y +CONFIG_COMPAT_VDSO=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y + +# +# Power management and ACPI options +# +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION_NVS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_RUNTIME=y +CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_PROCFS=y +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_POWER_METER=m +CONFIG_ACPI_SYSFS_POWER=y +CONFIG_ACPI_PROC_EVENT=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_BLACKLIST_YEAR=0 +CONFIG_ACPI_DEBUG=y +# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set +CONFIG_ACPI_PCI_SLOT=m +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_CONTAINER=m +CONFIG_ACPI_HOTPLUG_MEMORY=m +CONFIG_ACPI_SBS=m +CONFIG_SFI=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_DEBUG=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m + +# +# CPUFreq processor drivers +# +CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_POWERNOW_K8=m +# CONFIG_X86_SPEEDSTEP_CENTRINO is not set +# CONFIG_X86_P4_CLOCKMOD is not set + +# +# shared options +# +# CONFIG_X86_SPEEDSTEP_LIB is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Memory power savings +# +CONFIG_I7300_IDLE_IOAT_CHANNEL=y +CONFIG_I7300_IDLE=m + +# +# Bus options (PCI etc.) +# +CONFIG_PCI=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_DOMAINS=y +CONFIG_DMAR=y +# CONFIG_DMAR_DEFAULT_ON is not set +CONFIG_DMAR_FLOPPY_WA=y +CONFIG_INTR_REMAP=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=m +CONFIG_PCIEAER=y +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEAER_INJECT=m +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_PCI_MSI=y +CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_STUB=y +CONFIG_HT_IRQ=y +CONFIG_PCI_IOV=y +CONFIG_ISA_DMA_API=y +CONFIG_K8_NB=y +CONFIG_PCCARD=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_IOCTL=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=m +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_PCCARD_NONSTATIC=m +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_SHPC=m + +# +# Executable file formats / Emulations +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_HAVE_AOUT is not set +CONFIG_BINFMT_MISC=m +CONFIG_IA32_EMULATION=y +CONFIG_IA32_AOUT=m +CONFIG_COMPAT=y +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y + +# +# Networking options +# +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_ASK_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_LRO=y +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +# CONFIG_DEFAULT_BIC is not set +CONFIG_DEFAULT_CUBIC=y +# CONFIG_DEFAULT_HTCP is not set +# CONFIG_DEFAULT_VEGAS is not set +# CONFIG_DEFAULT_WESTWOOD is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +# CONFIG_IPV6_MROUTE is not set +CONFIG_NETLABEL=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ACCT=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CONNTRACK_SLP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_TPROXY=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_CONNTRACK_IPV4=m +# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_SIP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m + +# +# DECnet: Netfilter Configuration +# +# CONFIG_DECNET_NF_GRABULATOR is not set +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_IP_DCCP=m +CONFIG_INET_DCCP_DIAG=m + +# +# DCCP CCIDs Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +CONFIG_IP_DCCP_CCID3=y +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +CONFIG_IP_DCCP_CCID3_RTO=100 +CONFIG_IP_DCCP_TFRC_LIB=y + +# +# DCCP Kernel Hacking +# +# CONFIG_IP_DCCP_DEBUG is not set +# CONFIG_NET_DCCPPROBE is not set +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCTP_HMAC_MD5=y +CONFIG_RDS=m +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set +# CONFIG_TIPC is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_STP=m +CONFIG_GARP=m +CONFIG_BRIDGE=m +CONFIG_NET_DSA=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_DSA_TAG_TRAILER=y +CONFIG_NET_DSA_MV88E6XXX=y +CONFIG_NET_DSA_MV88E6060=y +CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y +CONFIG_NET_DSA_MV88E6131=y +CONFIG_NET_DSA_MV88E6123_61_65=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_DECNET=m +# CONFIG_DECNET_ROUTER is not set +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_IPX=m +CONFIG_IPX_INTERN=y +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=m +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +CONFIG_X25=m +CONFIG_LAPB=m +# CONFIG_ECONET is not set +CONFIG_WAN_ROUTER=m +CONFIG_PHONET=m +CONFIG_IEEE802154=m +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_INGRESS=m + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_CLS_IND=y +CONFIG_NET_SCH_FIFO=y +CONFIG_DCB=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NET_TCPPROBE=m +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_YAM=m +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m + +# +# CAN Device Drivers +# +CONFIG_CAN_VCAN=m +CONFIG_CAN_DEV=m +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_SJA1000=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_KVASER_PCI=m + +# +# CAN USB interfaces +# +CONFIG_CAN_EMS_USB=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m + +# +# Dongle support +# +CONFIG_DONGLE=y +CONFIG_ESI_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_TOIM3232_DONGLE=m +CONFIG_LITELINK_DONGLE=m +CONFIG_MA600_DONGLE=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_MCP2120_DONGLE=m +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_ACT200L_DONGLE=m +CONFIG_KINGSUN_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +CONFIG_KS959_DONGLE=m + +# +# FIR device drivers +# +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_NSC_FIR=m +CONFIG_WINBOND_FIR=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_ALI_FIR=m +CONFIG_VLSI_FIR=m +CONFIG_VIA_FIR=m +CONFIG_MCS_FIR=m +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_RXKAD=m +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CFG80211_DEFAULT_PS=y +CONFIG_CFG80211_DEFAULT_PS_VALUE=1 +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_WEP=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_NET_9P=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_RDMA=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_NETVM=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +CONFIG_MTD=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_TESTS=m +CONFIG_MTD_CONCAT=m +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +CONFIG_MTD_AR7_PARTS=m + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=m +CONFIG_HAVE_MTD_OTP=y +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_FTL=m +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_INFTL=m +CONFIG_RFD_FTL=m +CONFIG_SSFDC=m +CONFIG_MTD_OOPS=m + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_MAP_BANK_WIDTH_8=y +CONFIG_MTD_MAP_BANK_WIDTH_16=y +CONFIG_MTD_MAP_BANK_WIDTH_32=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_I4=y +CONFIG_MTD_CFI_I8=y +CONFIG_MTD_OTP=y +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_RAM=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_COMPAT=y +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PHYSMAP_LEN=0 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_NETSC520=m +CONFIG_MTD_TS5500=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_PCI=m +CONFIG_MTD_GPIO_ADDR=m +CONFIG_MTD_INTEL_VR_NOR=m +CONFIG_MTD_PLATRAM=m + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_PMC551=m +CONFIG_MTD_PMC551_BUGFIX=y +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y +CONFIG_MTD_DATAFLASH_OTP=y +CONFIG_MTD_M25P80=m +CONFIG_M25PXX_USE_FAST_READ=y +CONFIG_MTD_SST25L=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m + +# +# Disk-On-Chip Device Drivers +# +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCPROBE_ADVANCED=y +CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 +CONFIG_MTD_DOCPROBE_HIGH=y +CONFIG_MTD_DOCPROBE_55AA=y +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_ECC_SMC=y +CONFIG_MTD_NAND_MUSEUM_IDS=y +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_NAND_DISKONCHIP=m +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_ALAUDA=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_ONENAND_GENERIC=m +CONFIG_MTD_ONENAND_OTP=y +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_ONENAND_SIM=m + +# +# LPDDR flash memory drivers +# +CONFIG_MTD_LPDDR=m +CONFIG_MTD_QINFO_PROBE=m + +# +# UBI - Unsorted block images +# +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_RESERVE=1 +CONFIG_MTD_UBI_GLUEBI=m + +# +# UBI debugging options +# +# CONFIG_MTD_UBI_DEBUG is not set +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_AX88796=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PNP=y +# CONFIG_PNP_DEBUG_MESSAGES is not set + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_FD=m +CONFIG_PARIDE=m + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_CISS_SCSI_TAPE=y +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_OSD=m +CONFIG_BLK_DEV_SX8=m +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=131072 +CONFIG_BLK_DEV_XIP=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +CONFIG_CDROM_PKTCDVD_WCACHE=y +CONFIG_ATA_OVER_ETH=m +CONFIG_CIPHER_TWOFISH=m +CONFIG_VIRTIO_BLK=m +# CONFIG_BLK_DEV_HD is not set +CONFIG_MISC_DEVICES=y +CONFIG_IBM_ASM=m +CONFIG_PHANTOM=m +CONFIG_SGI_IOC4=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +CONFIG_ICS932S401=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_SGI_XP=m +CONFIG_HP_ILO=m +CONFIG_SGI_GRU=m +# CONFIG_SGI_GRU_DEBUG is not set +CONFIG_DELL_LAPTOP=m +# CONFIG_ISL29003 is not set +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEPROM_93CX6=m +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_HAVE_IDE=y +CONFIG_IDE=m + +# +# Please see Documentation/ide/ide.txt for help/info on IDE drives +# +CONFIG_IDE_XFER_MODE=y +CONFIG_IDE_TIMINGS=y +CONFIG_IDE_ATAPI=y +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_IDE_GD=m +CONFIG_IDE_GD_ATA=y +CONFIG_IDE_GD_ATAPI=y +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_BLK_DEV_IDEACPI=y +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_PROC_FS=y + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=m +CONFIG_BLK_DEV_PLATFORM=m +CONFIG_BLK_DEV_CMD640=m +CONFIG_BLK_DEV_CMD640_ENHANCED=y +CONFIG_BLK_DEV_IDEPNP=m +CONFIG_BLK_DEV_IDEDMA_SFF=y + +# +# PCI IDE chipsets support +# +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_OFFBOARD=y +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_OPTI621=m +CONFIG_BLK_DEV_RZ1000=m +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_AEC62XX=m +CONFIG_BLK_DEV_ALI15X3=m +CONFIG_BLK_DEV_AMD74XX=m +CONFIG_BLK_DEV_ATIIXP=m +CONFIG_BLK_DEV_CMD64X=m +CONFIG_BLK_DEV_TRIFLEX=m +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_HPT366=m +CONFIG_BLK_DEV_JMICRON=m +CONFIG_BLK_DEV_SC1200=m +CONFIG_BLK_DEV_PIIX=m +CONFIG_BLK_DEV_IT8172=m +CONFIG_BLK_DEV_IT8213=m +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_NS87415=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_SVWKS=m +CONFIG_BLK_DEV_SIIMAGE=m +CONFIG_BLK_DEV_SIS5513=m +CONFIG_BLK_DEV_SLC90E66=m +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BLK_DEV_TC86C001=m +CONFIG_BLK_DEV_IDEDMA=y + +# +# SCSI device support +# +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=m +CONFIG_SCSI_DMA=y +CONFIG_SCSI_TGT=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_IOSTATS=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FC_TGT_ATTRS=y +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y +# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_SRP_TGT_ATTRS=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_BE2ISCSI=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ARCMSR_AER=y +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +# CONFIG_SCSI_MPT2SAS_LOGGING is not set +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_VMWARE_PVSCSI=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_SRP=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_ATA=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_ACPI=y +CONFIG_SATA_PMP=y +CONFIG_SATA_AHCI=m +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y +CONFIG_SATA_SVW=m +CONFIG_ATA_PIIX=m +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SX4=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SATA_INIC162X=m +CONFIG_PATA_ACPI=m +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CS5520=m +CONFIG_PATA_CS5530=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_ATA_GENERIC=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_IT821X=m +CONFIG_PATA_IT8213=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_RZ1000=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_SIS=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PATA_SCH=m +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +# CONFIG_MULTICORE_RAID456 is not set +CONFIG_MD_RAID6_PQ=m +CONFIG_ASYNC_RAID6_TEST=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_DELAY=m +CONFIG_DM_RAID45=m +CONFIG_DM_UEVENT=y +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_MAX_FC_SGE=256 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# You can enable one or both FireWire driver stacks. +# + +# +# See the help texts for more information. +# +# CONFIG_FIREWIRE is not set +CONFIG_IEEE1394=m +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_DV1394=m +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_I2O=m +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_BUS=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +CONFIG_IFB=m +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_MACVLAN=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_VETH=m +# CONFIG_NET_SB1000 is not set +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +# CONFIG_ARCNET_COM20020 is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +CONFIG_MARVELL_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_LXT_PHY=m +CONFIG_CICADA_PHY=m +CONFIG_VITESSE_PHY=m +CONFIG_SMSC_PHY=m +CONFIG_BROADCOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_REALTEK_PHY=m +CONFIG_NATIONAL_PHY=m +CONFIG_STE10XP=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_FIXED_PHY=y +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_GPIO=m +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ETHOC=m +CONFIG_DNET=m +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_HP100=m +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +CONFIG_FORCEDETH=m +CONFIG_FORCEDETH_NAPI=y +CONFIG_E100=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R6040=m +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SMSC9420=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_SC92031=m +CONFIG_NET_POCKET=y +CONFIG_ATP=m +CONFIG_DE600=m +CONFIG_DE620=m +CONFIG_ATL2=m +CONFIG_NETDEV_1000=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IP1000=m +CONFIG_IGB=m +CONFIG_IGB_DCA=y +CONFIG_IGBVF=m +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_R8169_VLAN=y +CONFIG_SIS190=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +CONFIG_VIA_VELOCITY=m +CONFIG_TIGON3=m +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_QLA3XXX=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_JME=m +CONFIG_NETDEV_10000=y +CONFIG_MDIO=m +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3_DEPENDS=y +CONFIG_CHELSIO_T3=m +CONFIG_ENIC=m +CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGB=m +CONFIG_S2IO=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_NETXEN_NIC=m +CONFIG_NIU=m +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_TEHUTI=m +CONFIG_BNX2X=m +CONFIG_QLGE=m +CONFIG_SFC=m +# CONFIG_SFC_RESOURCE is not set +CONFIG_SFC_MTD=y +CONFIG_BE2NET=m +CONFIG_TR=m +CONFIG_IBMOL=m +CONFIG_3C359=m +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_ABYSS=m +CONFIG_WLAN=y +CONFIG_WLAN_PRE80211=y +CONFIG_STRIP=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_WLAN_80211=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_CS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_AIRO=m +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_AT76C50X_USB=m +CONFIG_AIRO_CS=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PRISM54=m +CONFIG_USB_ZD1201=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_ADM8211=m +CONFIG_MAC80211_HWSIM=m +CONFIG_MWL8K=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +CONFIG_P54_LEDS=y +CONFIG_ATH_COMMON=m +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set +CONFIG_AR9170_USB=m +CONFIG_AR9170_LEDS=y +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2100_DEBUG=y +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +CONFIG_IPW2200_DEBUG=y +CONFIG_LIBIPW=m +CONFIG_LIBIPW_DEBUG=y +CONFIG_IWLWIFI=m +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y +CONFIG_IWLWIFI_DEBUG=y +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLAGN=m +CONFIG_IWL4965=y +CONFIG_IWL5000=y +CONFIG_IWL3945=m +CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_CS=m +CONFIG_B43=m +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_PCMCIA=y +CONFIG_B43_SDIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_HWRNG=y +# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_HT=y +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +# CONFIG_RT2X00_DEBUG is not set +CONFIG_HERMES=m +CONFIG_HERMES_CACHE_FW_ON_INIT=y +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_NORTEL_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_WL12XX=m +CONFIG_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1271=m +CONFIG_IWM=m +# CONFIG_IWM_DEBUG is not set + +# +# WiMAX Wireless Broadband devices +# +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 + +# +# USB Network Adapters +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_IBMTR=m +CONFIG_WAN=y +CONFIG_LANMEDIA=m +CONFIG_HDLC=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_X25=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +CONFIG_PC300TOO=m +CONFIG_FARSYNC=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +# CONFIG_WAN_ROUTER_DRIVERS is not set +CONFIG_LAPBETHER=m +CONFIG_X25_ASY=m +CONFIG_SBNI=m +CONFIG_SBNI_MULTILINE=y +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +CONFIG_ATM_ENI_TUNE_BURST=y +CONFIG_ATM_ENI_BURST_TX_16W=y +CONFIG_ATM_ENI_BURST_TX_8W=y +CONFIG_ATM_ENI_BURST_TX_4W=y +CONFIG_ATM_ENI_BURST_TX_2W=y +CONFIG_ATM_ENI_BURST_RX_16W=y +CONFIG_ATM_ENI_BURST_RX_8W=y +CONFIG_ATM_ENI_BURST_RX_4W=y +CONFIG_ATM_ENI_BURST_RX_2W=y +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_USE_TASKLET=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_SOLOS=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKEHARD=m +CONFIG_FDDI=m +CONFIG_DEFXX=m +CONFIG_DEFXX_MMIO=y +CONFIG_SKFP=m +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +CONFIG_ROADRUNNER_LARGE_RINGS=y +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +CONFIG_PPPOL2TP=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLHC=m +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_NET_FC=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETPOLL=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_VIRTIO_NET=m +CONFIG_VMXNET3=m +CONFIG_ISDN=y +CONFIG_ISDN_I4L=m +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +# +# mISDN hardware drivers +# +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_W6692=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y + +# +# ISDN feature submodules +# +CONFIG_ISDN_DIVERSION=m + +# +# ISDN4Linux hardware drivers +# + +# +# Passive cards +# +CONFIG_ISDN_DRV_HISAX=m + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_KEYPAD is not set +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_3=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +# CONFIG_HISAX_DEBUG is not set + +# +# HiSax PCMCIA card service modules +# +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_TELES_CS=m + +# +# HiSax sub driver modules +# +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_FRITZ_PCIPNP=m + +# +# Active cards +# +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +CONFIG_ISDN_HDLC=m +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_CAPI_TRACE=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m + +# +# CAPI hardware drivers +# +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +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 +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_GIGASET_BASE=m +CONFIG_GIGASET_M105=m +CONFIG_GIGASET_M101=m +# CONFIG_GIGASET_DEBUG is not set +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_POLLDEV=m + +# +# 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=m +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_QT2160=m +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_OPENCORES=m +# CONFIG_KEYBOARD_STOWAWAY is not set +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_WALKERA0701=m +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_WACOM=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_ELOUSB=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATI_REMOTE=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_WINBOND_CIR=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_PCAP=m + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_COMPUTONE=m +CONFIG_ROCKETPORT=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +CONFIG_DIGIEPCA=m +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_ISI=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_GT=m +CONFIG_N_HDLC=m +CONFIG_RISCOM8=m +CONFIG_SPECIALIX=m +CONFIG_SX=m +CONFIG_RIO=m +CONFIG_RIO_OLDPCI=y +CONFIG_STALDRV=y +CONFIG_STALLION=m +CONFIG_ISTALLION=m +CONFIG_NOZOMI=m + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=16 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +CONFIG_UNIX98_PTYS=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_HVC_DRIVER=y +CONFIG_VIRTIO_CONSOLE=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_PANIC_EVENT=y +# CONFIG_IPMI_PANIC_STRING is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_NVRAM=y +CONFIG_R3964=m +CONFIG_APPLICOM=m + +# +# PCMCIA character devices +# +CONFIG_SYNCLINK_CS=m +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_IPWIRELESS=m +CONFIG_MWAVE=m +CONFIG_PC8736x_GPIO=m +CONFIG_NSC_GPIO=m +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=4096 +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_UV_MMTIMER=m +CONFIG_TCG_TPM=m +CONFIG_TCG_TIS=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TELCLOCK=m +CONFIG_DEVPORT=y +CONFIG_CRASHER=m +CONFIG_I2C=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m + +# +# ACPI drivers +# +CONFIG_I2C_SCMI=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_GPIO=m +CONFIG_I2C_OCORES=m +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m + +# +# Graphics adapter I2C/DDC channel drivers +# +# CONFIG_I2C_VOODOO3 is not set + +# +# Other I2C/SMBus bus drivers +# +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_STUB=m + +# +# Miscellaneous I2C Chip support +# +CONFIG_DS1682=m +CONFIG_SENSORS_TSL2550=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_GPIO=m +CONFIG_SPI_LM70_LLP=m + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_TLE62X0=m + +# +# PPS support +# +CONFIG_PPS=m +# CONFIG_PPS_DEBUG is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m + +# +# PCI GPIO expanders: +# +CONFIG_GPIO_LANGWELL=y + +# +# SPI GPIO expanders: +# +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MCP23S08=m +CONFIG_GPIO_MC33880=m + +# +# AC97 GPIO expanders: +# +CONFIG_GPIO_UCB1400=y +CONFIG_W1=m +CONFIG_W1_CON=y + +# +# 1-wire Bus Masters +# +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_GPIO=m + +# +# 1-wire Slaves +# +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +CONFIG_W1_SLAVE_DS2433_CRC=y +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_BQ27000=m +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PDA_POWER=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_BQ27x00=m +CONFIG_BATTERY_MAX17040=m +CONFIG_HWMON=m +CONFIG_HWMON_VID=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7473=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m + +# +# ACPI drivers +# +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_THERMAL=m +CONFIG_THERMAL_HWMON=y +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_SC520_WDT=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_SC1200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_60XX_WDT=m +CONFIG_SBC8360_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83697HF_WDT=m +CONFIG_W83697UG_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +CONFIG_SSB=m +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_PCMCIAHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SM501_GPIO=y +CONFIG_HTC_PASIC3=m +CONFIG_UCB1400_CORE=m +CONFIG_TPS65010=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_WM8400=m +# CONFIG_MFD_WM831X is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_PCF50633 is not set +CONFIG_MFD_MC13783=m +CONFIG_AB3100_CORE=m +CONFIG_AB3100_OTP=m +CONFIG_EZX_PCAP=y +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_BQ24022=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_MEDIA_SUPPORT=m + +# +# Multimedia core support +# +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L2_COMMON=m +CONFIG_VIDEO_ALLOW_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_DVB_CORE=m +CONFIG_VIDEO_MEDIA=m + +# +# Multimedia drivers +# +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L1=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_CPIA2=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9T031=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_TW9910=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_SOC_CAMERA_OV772X=m +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SN9C20X_EVDEV=y +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_USBVIDEO=m +CONFIG_USB_VICAM=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_QUICKCAM_MESSENGER=m +CONFIG_USB_ET61X251=m +CONFIG_VIDEO_OVCAMCHIP=m +CONFIG_USB_W9968CF=m +CONFIG_USB_OV511=m +CONFIG_USB_SE401=m +CONFIG_USB_SN9C102=m +CONFIG_USB_STV680=m +CONFIG_USB_ZC0301=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MAESTRO=m +CONFIG_I2C_SI4713=m +CONFIG_RADIO_SI4713=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_SI470X=y +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_USB_MR800=m +CONFIG_RADIO_TEA5764=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_CAPTURE_DRIVERS=y + +# +# Supported SAA7146 based PCI Adapters +# +CONFIG_TTPCI_EEPROM=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m + +# +# Supported USB Adapters +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_SMS_SIANO_MDTV=m + +# +# Siano module components +# +CONFIG_SMS_USB_DRV=m +CONFIG_SMS_SDIO_DRV=m + +# +# Supported FlexCopII (B2C2) Adapters +# +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set + +# +# Supported BT878 Adapters +# +CONFIG_DVB_BT8XX=m + +# +# Supported Pluto2 Adapters +# +CONFIG_DVB_PLUTO2=m + +# +# Supported SDMC DM1105 Adapters +# +CONFIG_DVB_DM1105=m + +# +# Supported FireWire (IEEE 1394) Adapters +# +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_IEEE1394=y +CONFIG_DVB_FIREDTV_INPUT=y + +# +# Supported Earthsoft PT1 Adapters +# +CONFIG_DVB_PT1=m + +# +# Supported DVB Frontends +# +CONFIG_DVB_FE_CUSTOMISE=y + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +# CONFIG_DVB_STV090x is not set +# CONFIG_DVB_STV6110x is not set + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_SI21XX=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +# CONFIG_DVB_DRX397XD is not set +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_AF9013=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +# CONFIG_DVB_LGDT3304 is not set +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +# CONFIG_DVB_S921 is not set +CONFIG_DVB_DIB8000=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_LNBP21=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +# CONFIG_DVB_ISL6423 is not set +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DAB=y +CONFIG_USB_DABUSB=m + +# +# Graphics support +# +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=m +CONFIG_AGP_SIS=m +CONFIG_AGP_VIA=m +CONFIG_VGA_ARB=y +CONFIG_DRM=m +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_TTM=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_I810=m +CONFIG_DRM_I830=m +CONFIG_DRM_I915=m +CONFIG_DRM_I915_KMS=y +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m +CONFIG_DRM_VIA=m +CONFIG_DRM_SAVAGE=m +CONFIG_VGASTATE=m +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_DDC=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_HECUBA=m +CONFIG_FB_SVGALIB=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_ARC=m +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_VGA16=m +CONFIG_FB_UVESA=m +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +CONFIG_FB_N411=m +CONFIG_FB_HGA=m +CONFIG_FB_HGA_ACCEL=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_I2C=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_BACKLIGHT=y +CONFIG_FB_LE80578=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_S3=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_VIA=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +CONFIG_FB_3DFX_ACCEL=y +CONFIG_FB_3DFX_I2C=y +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_ARK=m +CONFIG_FB_PM3=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +# CONFIG_CARMINE_DRAM_CUSTOM is not set +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_LX=m +CONFIG_FB_GEODE_GX=m +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_SM501=m +CONFIG_FB_VIRTUAL=m +CONFIG_FB_METRONOME=m +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_BROADSHEET=m +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +CONFIG_LCD_PLATFORM=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_PROGEAR=m +CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_MBP_NVIDIA=m +CONFIG_BACKLIGHT_SAHARA=m + +# +# Display device support +# +CONFIG_DISPLAY_SUPPORT=m + +# +# Display hardware drivers +# + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_VGACON_SOFT_SCROLLBACK=y +CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64 +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_LOGO is not set + +# +# Bootsplash configuration +# +CONFIG_BOOTSPLASH=y +CONFIG_SOUND=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_JACK=y +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_VERBOSE is not set +CONFIG_SND_PCM_XRUN_DEBUG=y +CONFIG_SND_VMASTER=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_RAWMIDI_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +# CONFIG_SND_PCSP is not set +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SB16_DSP=m +CONFIG_SND_PCI=y +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS5530=m +CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_JACK=y +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_CODEC_ANALOG=y +CONFIG_SND_HDA_CODEC_SIGMATEL=y +CONFIG_SND_HDA_CODEC_VIA=y +CONFIG_SND_HDA_CODEC_ATIHDMI=y +CONFIG_SND_HDA_CODEC_NVHDMI=y +CONFIG_SND_HDA_CODEC_INTELHDMI=y +CONFIG_SND_HDA_ELD=y +CONFIG_SND_HDA_CODEC_CIRRUS=y +CONFIG_SND_HDA_CODEC_CONEXANT=y +CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CMEDIA=y +CONFIG_SND_HDA_CODEC_SI3054=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_SND_HDA_POWER_SAVE=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HIFIER=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_PCMCIA=y +CONFIG_SND_VXPOCKET=m +CONFIG_SND_PDAUDIOCF=m +# CONFIG_SND_SOC is not set +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_OSS=m +CONFIG_SOUND_TRACEINIT=y +CONFIG_SOUND_DMAP=y +CONFIG_SOUND_SSCAPE=m +CONFIG_SOUND_VMIDI=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_MSS=m +CONFIG_SOUND_MPU401=m +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PSS=m +CONFIG_PSS_MIXER=y +# CONFIG_PSS_HAVE_BOOT is not set +# CONFIG_SOUND_SB is not set +CONFIG_SOUND_YM3812=m +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_AEDSP16=m +CONFIG_SC6600=y +CONFIG_SC6600_JOY=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0 +CONFIG_AC97_BUS=m +CONFIG_HID_SUPPORT=y +CONFIG_HID=m +CONFIG_HIDRAW=y + +# +# USB Input Devices +# +CONFIG_USB_HID=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EZKEY=m +CONFIG_HID_KYE=m +CONFIG_HID_GYRATION=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LOGITECH=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_NTRIG=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PETALYNX=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TOPSEED=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_WACOM=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +# CONFIG_USB_OTG is not set +CONFIG_USB_MON=m +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_XHCI_HCD=m +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_HCD_SSB is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_CS=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_HWA_HCD=m + +# +# Enable Host or Gadget support to see Inventra options +# + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m + +# +# USB port drivers +# +CONFIG_USB_USS720=m +CONFIG_USB_SERIAL=m +CONFIG_USB_EZUSB=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KEYSPAN_MPR_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28X_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28XA_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA28XB_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA18X_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19W_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19QW_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA19QI_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA49W_FW=m +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC_FW=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MOTOROLA=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_SIEMENS_MPI=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_BERRY_CHARGE=m +CONFIG_USB_LED=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_PHIDGET=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETMOTORCONTROL=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +# CONFIG_USB_TEST is not set +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_VST=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m +# CONFIG_USB_GADGET is not set + +# +# OTG and related infrastructure +# +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_NOP_USB_XCEIV is not set +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_WHCI=m +CONFIG_UWB_WLP=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_I1480U_WLP=m +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=m +CONFIG_MMC_TEST=m + +# +# MMC/SD/SDIO Host Controller Drivers +# +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_RICOH_MMC=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMC_WBSD=m +# CONFIG_MMC_AT91 is not set +# CONFIG_MMC_ATMELMCI is not set +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_SPI=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_CB710=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set + +# +# MemoryStick drivers +# +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MSPRO_BLOCK=m + +# +# MemoryStick Host Controller Drivers +# +CONFIG_MEMSTICK_TIFM_MS=m +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m + +# +# LED drivers +# +CONFIG_LEDS_ALIX2=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_GPIO_PLATFORM=y +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_BD2802=m + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_IDE_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_ACCESSIBILITY is not set +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_IPATH=m +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set +CONFIG_MLX4_INFINIBAND=m +CONFIG_INFINIBAND_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_ISER=m +CONFIG_EDAC=y + +# +# Reporting subsystems +# +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_AMD64=m +CONFIG_EDAC_AMD64_ERROR_INJECTION=y +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_X38=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_RTC_LIB=m +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +CONFIG_RTC_DRV_TEST=m + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m + +# +# SPI RTC drivers +# +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_PCF2123=m + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_AB3100=m + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_PCAP=m +CONFIG_DMADEVICES=y + +# +# DMA Devices +# +CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y +CONFIG_INTEL_IOATDMA=m +CONFIG_DMA_ENGINE=y + +# +# DMA Clients +# +CONFIG_NET_DMA=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_DMATEST=m +CONFIG_DCA=m +CONFIG_AUXDISPLAY=y +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +CONFIG_UIO=m +CONFIG_UIO_CIF=m +CONFIG_UIO_PDRV=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SMX=m +CONFIG_UIO_AEC=m +CONFIG_UIO_SERCOS3=m +CONFIG_UIO_PCI_GENERIC=m + +# +# TI VLYNQ +# +CONFIG_STAGING=y +# CONFIG_STAGING_EXCLUDE_BUILD is not set +CONFIG_ET131X=m +# CONFIG_ET131X_DEBUG is not set +CONFIG_SLICOSS=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_GO7007_OV7640=m +CONFIG_VIDEO_GO7007_SAA7113=m +CONFIG_VIDEO_GO7007_SAA7115=m +CONFIG_VIDEO_GO7007_TW9903=m +CONFIG_VIDEO_GO7007_UDA1342=m +CONFIG_VIDEO_GO7007_SONY_TUNER=m +CONFIG_VIDEO_GO7007_TW2804=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_USB_IP_COMMON=m +CONFIG_USB_IP_VHCI_HCD=m +CONFIG_USB_IP_HOST=m +CONFIG_W35UND=m +CONFIG_PRISM2_USB=m +CONFIG_ECHO=m +CONFIG_POCH=m +CONFIG_OTUS=m +CONFIG_RT2860=m +CONFIG_RT2870=m +CONFIG_RT3090=m +# CONFIG_COMEDI is not set +CONFIG_ASUS_OLED=m +CONFIG_PANEL=m +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_ALTERA_PCIE_CHDMA=m +CONFIG_RTL8187SE=m +CONFIG_RTL8192SU=m +CONFIG_RTL8192E=m +CONFIG_TRANZPORT=m + +# +# Android +# + +# +# Qualcomm MSM Camera And Video +# + +# +# Camera Sensor Selection +# +CONFIG_INPUT_GPIO=m +CONFIG_DST=m +# CONFIG_DST_DEBUG is not set +CONFIG_POHMELFS=m +# CONFIG_POHMELFS_DEBUG is not set +CONFIG_POHMELFS_CRYPTO=y +CONFIG_B3DFG=m +CONFIG_IDE_PHISON=m +CONFIG_PLAN9AUTH=m +CONFIG_LINE6_USB=m +# CONFIG_DRM_RADEON_KMS is not set +CONFIG_USB_SERIAL_QUATECH2=m +CONFIG_USB_SERIAL_QUATECH_USB2=m +CONFIG_VT6655=m +CONFIG_VT6656=m +CONFIG_FB_UDL=m +CONFIG_HYPERV=m +CONFIG_HYPERV_STORAGE=m +CONFIG_HYPERV_BLOCK=m +CONFIG_HYPERV_NET=m +CONFIG_HYPERV_UTILS=m +CONFIG_VME_BUS=m + +# +# VME Bridge Drivers +# +CONFIG_VME_CA91CX42=m +CONFIG_VME_TSI148=m + +# +# VME Device Drivers +# +CONFIG_VME_USER=m + +# +# RAR Register Driver +# +CONFIG_RAR_REGISTER=m +CONFIG_DX_SEP=m +CONFIG_IIO=m +CONFIG_IIO_RING_BUFFER=y +CONFIG_IIO_SW_RING=m +CONFIG_IIO_TRIGGER=y + +# +# Accelerometers +# +CONFIG_KXSD9=m +CONFIG_LIS3L02DQ=m +CONFIG_SCA3000=m + +# +# Analog to digital convertors +# +CONFIG_MAX1363=m + +# +# Light sensors +# +CONFIG_TSL2561=m + +# +# Triggers - standalone +# +CONFIG_IIO_PERIODIC_RTC_TRIGGER=m +CONFIG_IIO_GPIO_TRIGGER=m +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_ACER_WMI=m +CONFIG_ACERHDF=m +CONFIG_ASUS_LAPTOP=m +CONFIG_DELL_WMI=m +CONFIG_FUJITSU_LAPTOP=m +# CONFIG_FUJITSU_LAPTOP_DEBUG is not set +CONFIG_HP_WMI=m +CONFIG_MSI_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_THINKPAD_ACPI=m +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_INTEL_MENLOW=m +CONFIG_EEEPC_LAPTOP=m +CONFIG_ACPI_WMI=m +CONFIG_MSI_WMI=m +# CONFIG_ACPI_ASUS is not set +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_ACPI_TOSHIBA=m + +# +# Firmware Drivers +# +CONFIG_EDD=m +# CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_EFI_VARS=y +CONFIG_DELL_RBU=m +CONFIG_DCDBAS=m +CONFIG_DMIID=y +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_IBFT=m + +# +# File systems +# +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_DEFAULTS_TO_ORDERED=y +CONFIG_EXT3_DEFAULTS_TO_BARRIERS_ENABLED=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_NFS4ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=m +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +CONFIG_JBD2=m +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=m +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_DEFAULTS_TO_BARRIERS_ENABLED=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FS_NFS4ACL=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_DMAPI=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_DEBUG is not set +CONFIG_GFS2_FS=m +# CONFIG_GFS2_FS_LOCKING_DLM is not set +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_DEBUG_MASKLOG=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_NILFS2_FS=m +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_DMAPI=m +# CONFIG_DMAPI_DEBUG is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_PRINT_QUOTA_WARNING=y +CONFIG_QUOTA_TREE=m +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_GENERIC_ACL=y + +# +# Caches +# +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_DEBUG is not set +CONFIG_FSCACHE_OBJECT_LIST=y +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_CONFIGFS_FS=m +CONFIG_MISC_FILESYSTEMS=y +CONFIG_ADFS_FS=m +CONFIG_ADFS_FS_RW=y +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +CONFIG_UBIFS_FS=m +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_FS_DEBUG is not set +CONFIG_CRAMFS=m +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_VXFS_FS=m +CONFIG_MINIX_FS=m +CONFIG_OMFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +CONFIG_ROMFS_FS=m +# CONFIG_ROMFS_BACKED_BY_BLOCK is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_BACKED_BY_BOTH=y +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROMFS_ON_MTD=y +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +CONFIG_UFS_FS_WRITE=y +# CONFIG_UFS_DEBUG is not set +CONFIG_EXOFS_FS=m +# CONFIG_EXOFS_DEBUG is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +# CONFIG_NFS_V4_1 is not set +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=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_SUNRPC_XPRT_RDMA=m +CONFIG_SUNRPC_SWAP=y +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_SPKM3=m +# CONFIG_SMB_FS is not set +CONFIG_CIFS=m +CONFIG_CIFS_STATS=y +CONFIG_CIFS_STATS2=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_EXPERIMENTAL=y +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +CONFIG_CODA_FS=m +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y +CONFIG_9P_FS=m +# CONFIG_9P_FSCACHE is not set +CONFIG_NOVFS=m + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +# CONFIG_AMIGA_PARTITION is not set +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_DLM=m +CONFIG_DLM_DEBUG=y + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_PRINTK_TIME=y +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +CONFIG_STRIP_ASM_SYMS=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_DEBUG_FS=y +CONFIG_HEADERS_CHECK=y +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=0 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +# CONFIG_FRAME_POINTER is not set +CONFIG_UNWIND_INFO=y +CONFIG_STACK_UNWIND=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_DEBUG_BLOCK_EXT_DEVT=y +CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y +CONFIG_LKDTM=m +# CONFIG_FAULT_INJECTION is not set +CONFIG_LATENCYTOP=y +CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +CONFIG_PROVIDE_OHCI1394_DMA_INIT=y +CONFIG_BUILD_DOCSRC=y +CONFIG_DYNAMIC_DEBUG=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_HAVE_ARCH_KMEMCHECK=y +# CONFIG_KMEMCHECK is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_IOMMU_DEBUG is not set +# CONFIG_IOMMU_STRESS is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set +CONFIG_OPTIMIZE_INLINING=y +CONFIG_KDB=y +CONFIG_KDB_MODULES=m +CONFIG_KDB_OFF=y +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 +CONFIG_KDB_USB=y +CONFIG_KDB_KDUMP=y + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_DEFAULT="apparmor" +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_FILE_CAPABILITIES=y +# CONFIG_INTEL_TXT is not set +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_NETWORK=y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_APPARMOR_DISABLE=y +# CONFIG_IMA is not set +CONFIG_XOR_BLOCKS=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_FIPS=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_TEST=m + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_FPU=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_VMAC=m + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CRC32C_INTEL=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m + +# +# Ciphers +# +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_AES_X86_64=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SALSA20_X86_64=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +# CONFIG_CRYPTO_TWOFISH is not set +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_X86_64=m + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_ZLIB=m +CONFIG_CRYPTO_LZO=m + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_KVM_APIC_ARCHITECTURE=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM_KMP=y +CONFIG_KVM=m +CONFIG_KVM_INTEL=m +CONFIG_KVM_AMD=m +CONFIG_VIRTIO=m +CONFIG_VIRTIO_RING=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_BALLOON=m +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +CONFIG_CRC_T10DIF=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +CONFIG_CRC7=m +CONFIG_LIBCRC32C=m +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_LZO_COMPRESS=m +CONFIG_LZO_DECOMPRESS=m +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CPUMASK_OFFSTACK=y +CONFIG_NLATTR=y diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/blkdev_tunables-2.6-rhel5.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/blkdev_tunables-2.6-rhel5.patch --- lustre-1.8.3/lustre/kernel_patches/patches/blkdev_tunables-2.6-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/blkdev_tunables-2.6-rhel5.patch 2010-06-25 06:23:17.000000000 +0200 @@ -1,11 +1,44 @@ ---- linux-2.6.18-128.1.14.orig/include/linux/blkdev.h 2009-06-19 04:03:20.000000000 -0400 -+++ linux-2.6.18-128.1.14/include/linux/blkdev.h 2009-09-04 16:31:30.000000000 -0400 -@@ -778,7 +778,7 @@ extern int blkdev_issue_flush(struct blo - #define MAX_PHYS_SEGMENTS 128 - #define MAX_HW_SEGMENTS 128 +Index: linux-2.6.18-164.11.1/include/linux/blkdev.h +=================================================================== +--- linux-2.6.18-164.11.1.orig/include/linux/blkdev.h ++++ linux-2.6.18-164.11.1/include/linux/blkdev.h +@@ -788,10 +788,10 @@ extern void blk_free_tags(struct blk_que + extern void blk_rq_bio_prep(request_queue_t *, struct request *, struct bio *); + extern int blkdev_issue_flush(struct block_device *, sector_t *); + +-#define MAX_PHYS_SEGMENTS 128 +-#define MAX_HW_SEGMENTS 128 ++#define MAX_PHYS_SEGMENTS 256 ++#define MAX_HW_SEGMENTS 256 #define SAFE_MAX_SECTORS 255 -#define BLK_DEF_MAX_SECTORS 1024 +#define BLK_DEF_MAX_SECTORS 2048 #define MAX_SEGMENT_SIZE 65536 +Index: linux-2.6.18-164.11.1/include/scsi/scsi_host.h +=================================================================== +--- linux-2.6.18-164.11.1.orig/include/scsi/scsi_host.h ++++ linux-2.6.18-164.11.1/include/scsi/scsi_host.h +@@ -30,7 +30,7 @@ struct blk_queue_tags; + * used in one scatter-gather request. + */ + #define SG_NONE 0 +-#define SG_ALL 0xff ++#define SG_ALL 256 + + + #define DISABLE_CLUSTERING 0 +Index: linux-2.6.18-164.11.1/drivers/scsi/lpfc/lpfc.h +=================================================================== +--- linux-2.6.18-164.11.1.orig/drivers/scsi/lpfc/lpfc.h ++++ linux-2.6.18-164.11.1/drivers/scsi/lpfc/lpfc.h +@@ -38,7 +38,7 @@ + #define LPFC_MAX_NS_RETRY 3 /* Number of retry attempts to contact + the NameServer before giving up. */ + #define LPFC_CMD_PER_LUN 3 /* max outstanding cmds per lun */ +-#define LPFC_DEFAULT_SG_SEG_CNT 64 /* sg element count per scsi cmnd */ ++#define LPFC_DEFAULT_SG_SEG_CNT 256 /* sg element count per scsi cmnd */ + #define LPFC_MAX_SG_SEG_CNT 256 /* sg element count per scsi cmnd */ + #define LPFC_IOCB_LIST_CNT 2250 /* list of IOCBs for fast-path usage. */ + #define LPFC_Q_RAMP_UP_INTERVAL 120 /* lun q_depth ramp up interval */ diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/blkdev_tunables-2.6-sles11.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/blkdev_tunables-2.6-sles11.patch --- lustre-1.8.3/lustre/kernel_patches/patches/blkdev_tunables-2.6-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/blkdev_tunables-2.6-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -1,11 +1,31 @@ ---- linux-2.6.27.19-5.orig/include/linux/blkdev.h 2009-03-17 12:48:06.000000000 -0400 -+++ linux-2.6.27.19-5/include/linux/blkdev.h 2009-09-04 18:04:43.000000000 -0400 -@@ -904,7 +904,7 @@ extern void blk_set_cmd_filter_defaults( - #define MAX_PHYS_SEGMENTS 128 - #define MAX_HW_SEGMENTS 128 +Index: linux-2.6.27.29-0.1/include/linux/blkdev.h +=================================================================== +--- linux-2.6.27.29-0.1.orig/include/linux/blkdev.h ++++ linux-2.6.27.29-0.1/include/linux/blkdev.h +@@ -901,10 +901,10 @@ extern int blk_verify_command(struct blk + unsigned char *cmd, int has_write_perm); + extern void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter); + +-#define MAX_PHYS_SEGMENTS 128 +-#define MAX_HW_SEGMENTS 128 ++#define MAX_PHYS_SEGMENTS 256 ++#define MAX_HW_SEGMENTS 256 #define SAFE_MAX_SECTORS 255 -#define BLK_DEF_MAX_SECTORS 1024 +#define BLK_DEF_MAX_SECTORS 2048 #define MAX_SEGMENT_SIZE 65536 +Index: linux-2.6.27.29-0.1/include/scsi/scsi.h +=================================================================== +--- linux-2.6.27.29-0.1.orig/include/scsi/scsi.h ++++ linux-2.6.27.29-0.1/include/scsi/scsi.h +@@ -18,7 +18,7 @@ + * to SG_MAX_SINGLE_ALLOC to pack correctly at the highest order. The + * minimum value is 32 + */ +-#define SCSI_MAX_SG_SEGMENTS 128 ++#define SCSI_MAX_SG_SEGMENTS 256 + + /* + * Like SCSI_MAX_SG_SEGMENTS, but for archs that have sg chaining. This limit diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/debian-2.6.26.diff lustre-1.8.5+dfsg/lustre/kernel_patches/patches/debian-2.6.26.diff --- lustre-1.8.3/lustre/kernel_patches/patches/debian-2.6.26.diff 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/debian-2.6.26.diff 1970-01-01 01:00:00.000000000 +0100 @@ -1,1210 +0,0 @@ -diff -u -r debian-2.6.26/Documentation/filesystems/ext2.txt debian-2.6.26_lustre.1.8.2/Documentation/filesystems/ext2.txt ---- debian-2.6.26/Documentation/filesystems/ext2.txt 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/Documentation/filesystems/ext2.txt 2010-02-12 15:11:19.000000000 +0100 -@@ -58,6 +58,22 @@ - - xip Use execute in place (no caching) if possible - -+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. - - -diff -u -r debian-2.6.26/block/blk-core.c debian-2.6.26_lustre.1.8.2/block/blk-core.c ---- debian-2.6.26/block/blk-core.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/block/blk-core.c 2010-02-12 15:14:32.000000000 +0100 -@@ -1270,6 +1270,8 @@ - - #endif /* CONFIG_FAIL_MAKE_REQUEST */ - -+int dev_check_rdonly(struct block_device *bdev); -+ - /* - * Check whether this bio extends beyond the end of the device. - */ -@@ -1371,6 +1373,12 @@ - - if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) - goto end_io; -+ /* this is cfs's dev_rdonly check */ -+ if (bio->bi_rw == WRITE && -+ dev_check_rdonly(bio->bi_bdev)) { -+ bio_endio(bio, 0); -+ break; -+ } - - if (should_fail_request(bio)) - goto end_io; -@@ -2028,6 +2036,91 @@ - } - EXPORT_SYMBOL(kblockd_flush_work); - -+ /* -+ * Debug code for turning block devices "read-only" (will discard writes -+ * silently). This is for filesystem crash/recovery testing. -+ */ -+struct deventry { -+ dev_t dev; -+ struct deventry *next; -+}; -+ -+static struct deventry *devlist = NULL; -+static spinlock_t devlock = SPIN_LOCK_UNLOCKED; -+ -+int dev_check_rdonly(struct block_device *bdev) -+{ -+ struct deventry *cur; -+ if (!bdev) return 0; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (bdev->bd_dev == cur->dev) { -+ spin_unlock(&devlock); -+ return 1; -+ } -+ cur = cur->next; -+ } -+ spin_unlock(&devlock); -+ return 0; -+} -+ -+void dev_set_rdonly(struct block_device *bdev) -+{ -+ struct deventry *newdev, *cur; -+ -+ if (!bdev) -+ return; -+ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); -+ if (!newdev) -+ return; -+ -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (bdev->bd_dev == cur->dev) { -+ spin_unlock(&devlock); -+ kfree(newdev); -+ return; -+ } -+ cur = cur->next; -+ } -+ newdev->dev = bdev->bd_dev; -+ newdev->next = devlist; -+ devlist = newdev; -+ spin_unlock(&devlock); -+ printk(KERN_WARNING "Turning device %s (%#x) read-only\n", -+ bdev->bd_disk ? bdev->bd_disk->disk_name : "", bdev->bd_dev); -+} -+ -+void dev_clear_rdonly(struct block_device *bdev) -+{ -+ struct deventry *cur, *last = NULL; -+ if (!bdev) return; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (bdev->bd_dev == cur->dev) { -+ if (last) -+ last->next = cur->next; -+ else -+ devlist = cur->next; -+ spin_unlock(&devlock); -+ kfree(cur); -+ printk(KERN_WARNING "Removing read-only on %s (%#x)\n", -+ bdev->bd_disk ? bdev->bd_disk->disk_name : -+ "unknown block", bdev->bd_dev); -+ return; -+ } -+ last = cur; -+ cur = cur->next; -+ } -+ spin_unlock(&devlock); -+} -+ -+EXPORT_SYMBOL(dev_set_rdonly); -+EXPORT_SYMBOL(dev_clear_rdonly); -+ - int __init blk_dev_init(void) - { - int i; -diff -u -r debian-2.6.26/drivers/md/raid5.c debian-2.6.26_lustre.1.8.2/drivers/md/raid5.c ---- debian-2.6.26/drivers/md/raid5.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/drivers/md/raid5.c 2010-02-12 15:19:25.000000000 +0100 -@@ -1817,6 +1817,8 @@ - bi->bi_next = *bip; - *bip = bi; - bi->bi_phys_segments ++; -+ if (bio_sync(bi) && !forwrite) -+ clear_bit(R5_UPTODATE, &sh->dev[dd_idx].flags); /* force to read from disk. */ - spin_unlock_irq(&conf->device_lock); - spin_unlock(&sh->lock); - -@@ -3699,6 +3701,8 @@ - test_bit(BIO_UPTODATE, &bi->bi_flags) - ? 0 : -EIO); - } -+ if (bio_sync(bi)) -+ raid5_unplug_device(q); - return 0; - } - -diff -u -r debian-2.6.26/drivers/scsi/Kconfig debian-2.6.26_lustre.1.8.2/drivers/scsi/Kconfig ---- debian-2.6.26/drivers/scsi/Kconfig 2009-12-26 09:14:53.000000000 +0100 -+++ debian-2.6.26_lustre.1.8.2/drivers/scsi/Kconfig 2010-02-12 15:20:02.000000000 +0100 -@@ -81,6 +81,14 @@ - In this case, do not compile the driver for your SCSI host adapter - (below) as a module either. - -+config SD_IOSTATS -+ bool "Enable SCSI disk I/O stats" -+ depends on BLK_DEV_SD -+ default y -+ ---help--- -+ This enables SCSI disk I/O stats collection. You must also enable -+ /proc file system support if you want this feature. -+ - config CHR_DEV_ST - tristate "SCSI tape support" - depends on SCSI -diff -u -r debian-2.6.26/drivers/scsi/scsi_proc.c debian-2.6.26_lustre.1.8.2/drivers/scsi/scsi_proc.c ---- debian-2.6.26/drivers/scsi/scsi_proc.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/drivers/scsi/scsi_proc.c 2010-02-12 15:22:05.000000000 +0100 -@@ -40,7 +40,8 @@ - /* 4K page size, but our output routines, use some slack for overruns */ - #define PROC_BLOCK_SIZE (3*1024) - --static struct proc_dir_entry *proc_scsi; -+struct proc_dir_entry *proc_scsi; -+EXPORT_SYMBOL(proc_scsi); - - /* Protect sht->present and sht->proc_dir */ - static DEFINE_MUTEX(global_host_template_mutex); -diff -u -r debian-2.6.26/drivers/scsi/sd.c debian-2.6.26_lustre.1.8.2/drivers/scsi/sd.c ---- debian-2.6.26/drivers/scsi/sd.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/drivers/scsi/sd.c 2010-02-17 14:13:32.000000000 +0100 -@@ -107,6 +107,24 @@ - * object after last put) */ - static DEFINE_MUTEX(sd_ref_mutex); - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+# include -+# include -+struct proc_dir_entry *sd_iostats_procdir = NULL; -+char sd_iostats_procdir_name[] = "sd_iostats"; -+static struct file_operations sd_iostats_proc_fops; -+ -+extern void sd_iostats_init(void); -+extern void sd_iostats_fini(void); -+void sd_iostats_start_req(struct scsi_cmnd *SCpnt); -+void sd_iostats_finish_req(struct scsi_cmnd *SCpnt); -+#else -+static inline void sd_iostats_init(void) {} -+static inline void sd_iostats_fini(void) {} -+static inline void sd_iostats_start_req(struct scsi_cmnd *SCpnt) {} -+static inline void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) {} -+#endif -+ - static const char *sd_cache_types[] = { - "write through", "none", "write back", - "write back, no read (daft)" -@@ -531,6 +549,8 @@ - } - SCpnt->sdb.length = this_count * sdp->sector_size; - -+ sd_iostats_start_req(SCpnt); -+ - /* - * We shouldn't disconnect in the middle of a sector, so with a dumb - * host adapter, it's safe to assume that we can at least transfer -@@ -667,7 +687,7 @@ - int diskinfo[4]; - - /* default to most commonly used values */ -- diskinfo[0] = 0x40; /* 1 << 6 */ -+ diskinfo[0] = 0x40; /* 1 << 6 */ - diskinfo[1] = 0x20; /* 1 << 5 */ - diskinfo[2] = sdkp->capacity >> 11; - -@@ -1023,6 +1043,7 @@ - break; - } - out: -+ sd_iostats_finish_req(SCpnt); - return good_bytes; - } - -@@ -1711,6 +1732,36 @@ - gd->flags = GENHD_FL_DRIVERFS; - if (sdp->removable) - gd->flags |= GENHD_FL_REMOVABLE; -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+ sdkp->stats = kzalloc(sizeof(iostat_stats_t), GFP_KERNEL); -+ if (!sdkp->stats) { -+ printk(KERN_WARNING "cannot allocate iostat structure for" -+ "%s\n", gd->disk_name); -+ } else { -+ do_gettimeofday(&sdkp->stats->iostat_timeval); -+ sdkp->stats->iostat_queue_stamp = jiffies; -+ spin_lock_init(&sdkp->stats->iostat_lock); -+ if (sd_iostats_procdir) { -+ struct proc_dir_entry *pde; -+ pde = create_proc_entry(gd->disk_name, S_IRUGO | S_IWUSR, -+ sd_iostats_procdir); -+ if (!pde) { -+ printk(KERN_WARNING "Can't create /proc/scsi/" -+ "%s/%s\n", -+ sd_iostats_procdir_name, -+ gd->disk_name); -+ kfree(sdkp->stats); -+ sdkp->stats = NULL; -+ } else { -+ pde->proc_fops = &sd_iostats_proc_fops; -+ pde->data = gd; -+ } -+ } else { -+ kfree(sdkp->stats); -+ sdkp->stats = NULL; -+ } -+ } -+#endif - - dev_set_drvdata(dev, sdkp); - add_disk(gd); -@@ -1755,6 +1806,366 @@ - return 0; - } - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+static int -+ sd_iostats_seq_show(struct seq_file *seq, void *v) -+ { -+ struct timeval now; -+ struct gendisk *disk = seq->private; -+ iostat_stats_t *stats; -+ unsigned long long read_len; -+ unsigned long long read_len_tot; -+ unsigned long read_num; -+ unsigned long read_num_tot; -+ unsigned long long write_len; -+ unsigned long long write_len_tot; -+ unsigned long write_num; -+ unsigned long write_num_tot; -+ int i; -+ int maxi; -+ -+ stats = scsi_disk(disk)->stats; -+ if (stats == NULL) { -+ printk(KERN_ERR "sd_iostats_seq_show: NULL stats entry\n"); -+ BUG(); -+ } -+ -+ do_gettimeofday(&now); -+ now.tv_sec -= stats->iostat_timeval.tv_sec; -+ now.tv_usec -= stats->iostat_timeval.tv_usec; -+ if (now.tv_usec < 0) { -+ now.tv_usec += 1000000; -+ now.tv_sec--; -+ } -+ -+ /* this sampling races with updates */ -+ seq_printf(seq, "index: %lu snapshot_time: %lu.%06lu\n", -+ (unsigned long) scsi_disk(disk)->index, -+ now.tv_sec, now.tv_usec); -+ -+ for (i = IOSTAT_NCOUNTERS - 1; i > 0; i--) -+ if (stats->iostat_read_histogram[i].iostat_count != 0 || -+ stats->iostat_write_histogram[i].iostat_count != 0) -+ break; -+ maxi = i; -+ -+ seq_printf(seq, "%8s %8s %12s %8s %12s\n", "size", -+ "reads", "total", "writes", "total"); -+ -+ read_len_tot = write_len_tot = 0; -+ read_num_tot = write_num_tot = 0; -+ for (i = 0; i <= maxi; i++) { -+ read_len = stats->iostat_read_histogram[i].iostat_size; -+ read_len_tot += read_len; -+ read_num = stats->iostat_read_histogram[i].iostat_count; -+ read_num_tot += read_num; -+ -+ write_len = stats->iostat_write_histogram[i].iostat_size; -+ write_len_tot += write_len; -+ write_num = stats->iostat_write_histogram[i].iostat_count; -+ write_num_tot += write_num; -+ -+ seq_printf (seq, "%8d %8lu %12llu %8lu %12llu\n", -+ 512<iostat_queue_ticks[i]; -+ if (ticks == 0) -+ continue; -+ percent = stats->iostat_queue_ticks[i] * 100; -+ do_div(percent, stats->iostat_queue_ticks_sum); -+ seq_printf(seq, "%8d %8llu %8llu\n", i, ticks, percent); -+ } -+ -+ if (stats->iostat_reqs != 0) { -+ unsigned long long aveseek = 0, percent = 0; -+ -+ if (stats->iostat_seeks) { -+ aveseek = stats->iostat_seek_sectors; -+ do_div(aveseek, stats->iostat_seeks); -+ percent = stats->iostat_seeks * 100; -+ do_div(percent, stats->iostat_reqs); -+ } -+ -+ seq_printf(seq, "\n%llu sectors in %llu reqs: %llu seek(s) over " -+ "%llu sectors in ave, %llu%% of all reqs\n", -+ stats->iostat_sectors, stats->iostat_reqs, -+ stats->iostat_seeks, aveseek, percent); -+ } -+ -+ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "process time", "reads", -+ "%%", "writes", "%%"); -+ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { -+ unsigned long read_percent = 0, write_percent = 0; -+ if (stats->iostat_wtime[i] == 0 && -+ stats->iostat_rtime[i] == 0) -+ continue; -+ if (stats->iostat_read_reqs) -+ read_percent = stats->iostat_rtime[i] * 100 / -+ stats->iostat_read_reqs; -+ if (stats->iostat_write_reqs) -+ write_percent = stats->iostat_wtime[i] * 100 / -+ stats->iostat_write_reqs; -+ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", -+ jiffies_to_msecs(((1UL << i) >> 1) << 1), -+ stats->iostat_rtime[i], read_percent, -+ stats->iostat_wtime[i], write_percent); -+ } -+ -+ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "time in queue", "reads", -+ "%%", "writes", "%%"); -+ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { -+ unsigned long read_percent = 0, write_percent = 0; -+ if (stats->iostat_wtime_in_queue[i] == 0 && -+ stats->iostat_rtime_in_queue[i] == 0) -+ continue; -+ if (stats->iostat_read_reqs) -+ read_percent = stats->iostat_rtime_in_queue[i] * 100 / -+ stats->iostat_read_reqs; -+ if (stats->iostat_write_reqs) -+ write_percent = stats->iostat_wtime_in_queue[i] * 100 / -+ stats->iostat_write_reqs; -+ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", -+ jiffies_to_msecs(((1UL << i) >> 1) << 1), -+ stats->iostat_rtime_in_queue[i], -+ read_percent, -+ stats->iostat_wtime_in_queue[i], -+ write_percent); -+ } -+ -+ return 0; -+ } -+ -+ static void * -+ sd_iostats_seq_start(struct seq_file *p, loff_t *pos) -+ { -+ return (*pos == 0) ? (void *)1 : NULL; -+ } -+ -+ static void * -+ sd_iostats_seq_next(struct seq_file *p, void *v, loff_t *pos) -+ { -+ ++*pos; -+ return NULL; -+ } -+ -+ static void -+ sd_iostats_seq_stop(struct seq_file *p, void *v) -+ { -+ } -+ -+ static struct seq_operations sd_iostats_seqops = { -+ .start = sd_iostats_seq_start, -+ .stop = sd_iostats_seq_stop, -+ .next = sd_iostats_seq_next, -+ .show = sd_iostats_seq_show, -+ }; -+ -+ static int -+ sd_iostats_seq_open (struct inode *inode, struct file *file) -+ { -+ int rc; -+ -+ rc = seq_open(file, &sd_iostats_seqops); -+ if (rc != 0) -+ return rc; -+ -+ ((struct seq_file *)file->private_data)->private = PDE(inode)->data; -+ return 0; -+ } -+ -+ static ssize_t -+ sd_iostats_seq_write(struct file *file, const char *buffer, -+ size_t len, loff_t *off) -+ { -+ struct seq_file *seq = file->private_data; -+ struct gendisk *disk = seq->private; -+ iostat_stats_t *stats = scsi_disk(disk)->stats; -+ unsigned long flags; -+ unsigned long qdepth; -+ -+ -+ spin_lock_irqsave (&stats->iostat_lock, flags); -+ qdepth = stats->iostat_queue_depth; -+ memset (stats, 0, offsetof(iostat_stats_t, iostat_lock)); -+ do_gettimeofday(&stats->iostat_timeval); -+ stats->iostat_queue_stamp = jiffies; -+ stats->iostat_queue_depth = qdepth; -+ spin_unlock_irqrestore (&stats->iostat_lock, flags); -+ -+ return len; -+ } -+ -+ static struct file_operations sd_iostats_proc_fops = { -+ .owner = THIS_MODULE, -+ .open = sd_iostats_seq_open, -+ .read = seq_read, -+ .write = sd_iostats_seq_write, -+ .llseek = seq_lseek, -+ .release = seq_release, -+ }; -+ -+ extern struct proc_dir_entry *proc_scsi; -+ -+ void -+ sd_iostats_init(void) -+ { -+ if (proc_scsi == NULL) { -+ printk(KERN_WARNING "No access to sd iostats: " -+ "proc_scsi is NULL\n"); -+ return; -+ } -+ -+ sd_iostats_procdir = create_proc_entry(sd_iostats_procdir_name, -+ S_IFDIR | S_IRUGO | S_IXUGO, -+ proc_scsi); -+ if (sd_iostats_procdir == NULL) { -+ printk(KERN_WARNING "No access to sd iostats: " -+ "can't create /proc/scsi/%s\n", sd_iostats_procdir_name); -+ return; -+ } -+ } -+ -+ void sd_iostats_fini(void) -+ { -+ if (proc_scsi != NULL && sd_iostats_procdir != NULL) -+ remove_proc_entry(sd_iostats_procdir_name, proc_scsi); -+ -+ sd_iostats_procdir = NULL; -+ } -+ -+ void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) -+ { -+ struct request *rq = SCpnt->request; -+ iostat_stats_t *stats; -+ unsigned long *tcounter; -+ int tbucket; -+ int tmp; -+ unsigned long irqflags; -+ unsigned long i; -+ -+ stats = scsi_disk(rq->rq_disk)->stats; -+ if (stats == NULL) -+ return; -+ -+ tmp = jiffies - rq->start_time; -+ for (tbucket = 0; tmp > 1; tbucket++) -+ tmp >>= 1; -+ if (tbucket >= IOSTAT_NCOUNTERS) -+ tbucket = IOSTAT_NCOUNTERS - 1; -+ //printk("%u ticks in D to %u\n", jiffies - rq->start_time, tbucket); -+ -+ tcounter = rq_data_dir(rq) == WRITE ? -+ &stats->iostat_wtime[tbucket] : &stats->iostat_rtime[tbucket]; -+ -+ spin_lock_irqsave(&stats->iostat_lock, irqflags); -+ -+ /* update delay stats */ -+ (*tcounter)++; -+ -+ /* update queue depth stats */ -+ i = stats->iostat_queue_depth; -+ if (i >= IOSTAT_NCOUNTERS) -+ i = IOSTAT_NCOUNTERS - 1; -+ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; -+ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; -+ BUG_ON(stats->iostat_queue_depth == 0); -+ stats->iostat_queue_depth--; -+ -+ /* update seek stats. XXX: not sure about nr_sectors */ -+ stats->iostat_sectors += rq->nr_sectors; -+ stats->iostat_reqs++; -+ if (rq->sector != stats->iostat_next_sector) { -+ stats->iostat_seek_sectors += -+ rq->sector > stats->iostat_next_sector ? -+ rq->sector - stats->iostat_next_sector : -+ stats->iostat_next_sector - rq->sector; -+ stats->iostat_seeks++; -+ } -+ stats->iostat_next_sector = rq->sector + rq->nr_sectors; -+ -+ stats->iostat_queue_stamp = jiffies; -+ -+ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); -+ } -+ -+ void sd_iostats_start_req(struct scsi_cmnd *SCpnt) -+ { -+ struct request *rq = SCpnt->request; -+ iostat_stats_t *stats; -+ iostat_counter_t *counter; -+ int bucket; -+ int tbucket; -+ int tmp; -+ unsigned long irqflags; -+ unsigned long i; -+ int nsect; -+ -+ stats = scsi_disk(rq->rq_disk)->stats; -+ if (stats == NULL) -+ return; -+ -+ nsect = scsi_bufflen(SCpnt) >> 9; -+ for (bucket = 0, tmp = nsect; tmp > 1; bucket++) -+ tmp >>= 1; -+ -+ if (bucket >= IOSTAT_NCOUNTERS) { -+ printk (KERN_ERR "sd_iostats_bump: nsect %d too big\n", nsect); -+ BUG(); -+ } -+ -+ counter = rq_data_dir(rq) == WRITE ? -+ &stats->iostat_write_histogram[bucket] : -+ &stats->iostat_read_histogram[bucket]; -+ -+ tmp = jiffies - rq->start_time; -+ for (tbucket = 0; tmp > 1; tbucket++) -+ tmp >>= 1; -+ if (tbucket >= IOSTAT_NCOUNTERS) -+ tbucket = IOSTAT_NCOUNTERS - 1; -+ //printk("%u ticks in Q to %u\n", jiffies - rq->start_time, tbucket); -+ -+ /* an ugly hack to know exact processing time. the right -+ * solution is to add one more field to struct request -+ * hopefully it will break nothing ... */ -+ rq->start_time = jiffies; -+ -+ spin_lock_irqsave(&stats->iostat_lock, irqflags); -+ -+ /* update queue depth stats */ -+ i = stats->iostat_queue_depth; -+ if (i >= IOSTAT_NCOUNTERS) -+ i = IOSTAT_NCOUNTERS - 1; -+ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; -+ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; -+ stats->iostat_queue_depth++; -+ -+ /* update delay stats */ -+ if (rq_data_dir(rq) == WRITE) { -+ stats->iostat_wtime_in_queue[tbucket]++; -+ stats->iostat_write_reqs++; -+ } else { -+ stats->iostat_rtime_in_queue[tbucket]++; -+ stats->iostat_read_reqs++; -+ } -+ -+ /* update size stats */ -+ counter->iostat_size += nsect; -+ counter->iostat_count++; -+ -+ stats->iostat_queue_stamp = jiffies; -+ -+ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); -+} -+#endif -+ - /** - * scsi_disk_release - Called to free the scsi_disk structure - * @dev: pointer to embedded class device -@@ -1773,6 +2184,13 @@ - idr_remove(&sd_index_idr, sdkp->index); - spin_unlock(&sd_index_lock); - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+ if (sdkp->stats) { -+ remove_proc_entry(disk->disk_name, sd_iostats_procdir); -+ kfree(sdkp->stats); -+ sdkp->stats = NULL; -+ } -+#endif - disk->private_data = NULL; - put_disk(disk); - put_device(&sdkp->device->sdev_gendev); -@@ -1890,6 +2308,8 @@ - if (!majors) - return -ENODEV; - -+ sd_iostats_init(); -+ - err = class_register(&sd_disk_class); - if (err) - goto err_out; -@@ -1905,6 +2325,7 @@ - err_out: - for (i = 0; i < SD_MAJORS; i++) - unregister_blkdev(sd_major(i), "sd"); -+ sd_iostats_fini(); - return err; - } - -diff -u -r debian-2.6.26/fs/block_dev.c debian-2.6.26_lustre.1.8.2/fs/block_dev.c ---- debian-2.6.26/fs/block_dev.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/fs/block_dev.c 2010-02-17 14:19:50.000000000 +0100 -@@ -1125,6 +1125,7 @@ - if (bdev != bdev->bd_contains) - victim = bdev->bd_contains; - bdev->bd_contains = NULL; -+ dev_clear_rdonly(bdev); - } - unlock_kernel(); - mutex_unlock(&bdev->bd_mutex); -diff -u -r debian-2.6.26/fs/dcache.c debian-2.6.26_lustre.1.8.2/fs/dcache.c ---- debian-2.6.26/fs/dcache.c 2009-12-26 09:14:56.000000000 +0100 -+++ debian-2.6.26_lustre.1.8.2/fs/dcache.c 2010-02-17 14:24:24.000000000 +0100 -@@ -250,6 +250,13 @@ - spin_unlock(&dcache_lock); - return 0; - } -+ -+ /* network invalidation by Lustre */ -+ if (dentry->d_flags & DCACHE_LUSTRE_INVALID) { -+ spin_unlock(&dcache_lock); -+ return 0; -+ } -+ - /* - * Check whether to do a partial shrink_dcache - * to get rid of unused child entries. -@@ -1427,14 +1434,23 @@ - * - * Adds a dentry to the hash according to its name. - */ -- -+ -+void d_rehash_cond(struct dentry * entry, int lock) -+{ -+ if (lock) -+ spin_lock(&dcache_lock); -+ spin_lock(&entry->d_lock); -+ _d_rehash(entry); -+ spin_unlock(&entry->d_lock); -+ if (lock) -+ spin_unlock(&dcache_lock); -+} -+ -+EXPORT_SYMBOL(d_rehash_cond); -+ - void d_rehash(struct dentry * entry) - { -- spin_lock(&dcache_lock); -- spin_lock(&entry->d_lock); -- _d_rehash(entry); -- spin_unlock(&entry->d_lock); -- spin_unlock(&dcache_lock); -+ d_rehash_cond(entry, 1); - } - - #define do_switch(x,y) do { \ -@@ -1510,7 +1526,7 @@ - * Update the dcache to reflect the move of a file name. Negative - * dcache entries should not be moved in this way. - */ --static void d_move_locked(struct dentry * dentry, struct dentry * target) -+void d_move_locked(struct dentry * dentry, struct dentry * target) - { - struct hlist_head *list; - -@@ -1568,6 +1584,7 @@ - spin_unlock(&dentry->d_lock); - write_sequnlock(&rename_lock); - } -+EXPORT_SYMBOL(d_move_locked); - - /** - * d_move - move a dentry -@@ -2051,6 +2068,7 @@ - - return result; - } -+EXPORT_SYMBOL(is_subdir); - - void d_genocide(struct dentry *root) - { -diff -u -r debian-2.6.26/fs/filesystems.c debian-2.6.26_lustre.1.8.2/fs/filesystems.c ---- debian-2.6.26/fs/filesystems.c 2009-12-26 09:14:56.000000000 +0100 -+++ debian-2.6.26_lustre.1.8.2/fs/filesystems.c 2010-02-17 14:26:59.000000000 +0100 -@@ -28,7 +28,9 @@ - */ - - static struct file_system_type *file_systems; --static DEFINE_RWLOCK(file_systems_lock); -+DEFINE_RWLOCK(file_systems_lock); -+ -+EXPORT_SYMBOL(file_systems_lock); - - /* WARNING: This can be used only if we _already_ own a reference */ - void get_filesystem(struct file_system_type *fs) -diff -u -r debian-2.6.26/fs/inode.c debian-2.6.26_lustre.1.8.2/fs/inode.c ---- debian-2.6.26/fs/inode.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/fs/inode.c 2010-02-17 14:27:51.000000000 +0100 -@@ -409,7 +409,9 @@ - int nr_scanned; - unsigned long reap = 0; - -- mutex_lock(&iprune_mutex); -+ if (!mutex_trylock(&iprune_mutex)) -+ return; -+ - spin_lock(&inode_lock); - for (nr_scanned = 0; nr_scanned < nr_to_scan; nr_scanned++) { - struct inode *inode; -diff -u -r debian-2.6.26/fs/jbd2/checkpoint.c debian-2.6.26_lustre.1.8.2/fs/jbd2/checkpoint.c ---- debian-2.6.26/fs/jbd2/checkpoint.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/fs/jbd2/checkpoint.c 2010-02-17 14:28:49.000000000 +0100 -@@ -696,6 +696,7 @@ - J_ASSERT(transaction->t_checkpoint_list == NULL); - J_ASSERT(transaction->t_checkpoint_io_list == NULL); - J_ASSERT(transaction->t_updates == 0); -+ J_ASSERT(list_empty(&transaction->t_jcb)); - J_ASSERT(journal->j_committing_transaction != transaction); - J_ASSERT(journal->j_running_transaction != transaction); - -diff -u -r debian-2.6.26/fs/jbd2/commit.c debian-2.6.26_lustre.1.8.2/fs/jbd2/commit.c ---- debian-2.6.26/fs/jbd2/commit.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/fs/jbd2/commit.c 2010-02-17 14:29:44.000000000 +0100 -@@ -874,6 +874,30 @@ - transaction can be removed from any checkpoint list it was on - before. */ - -+ /* -+ * Call any callbacks that had been registered for handles in this -+ * transaction. It is up to the callback to free any allocated -+ * memory. -+ * -+ * The spinlocking (t_jcb_lock) here is surely unnecessary... -+ */ -+ spin_lock(&commit_transaction->t_jcb_lock); -+ if (!list_empty(&commit_transaction->t_jcb)) { -+ struct list_head *p, *n; -+ int error = is_journal_aborted(journal); -+ -+ list_for_each_safe(p, n, &commit_transaction->t_jcb) { -+ struct journal_callback *jcb; -+ -+ jcb = list_entry(p, struct journal_callback, jcb_list); -+ list_del(p); -+ spin_unlock(&commit_transaction->t_jcb_lock); -+ jcb->jcb_func(jcb, error); -+ spin_lock(&commit_transaction->t_jcb_lock); -+ } -+ } -+ spin_unlock(&commit_transaction->t_jcb_lock); -+ - jbd_debug(3, "JBD: commit phase 7\n"); - - J_ASSERT(commit_transaction->t_sync_datalist == NULL); -diff -u -r debian-2.6.26/fs/jbd2/journal.c debian-2.6.26_lustre.1.8.2/fs/jbd2/journal.c ---- debian-2.6.26/fs/jbd2/journal.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/fs/jbd2/journal.c 2010-02-17 14:38:15.000000000 +0100 -@@ -82,6 +82,8 @@ - EXPORT_SYMBOL(jbd2_journal_invalidatepage); - EXPORT_SYMBOL(jbd2_journal_try_to_free_buffers); - EXPORT_SYMBOL(jbd2_journal_force_commit); -+EXPORT_SYMBOL(jbd2_journal_callback_set); -+EXPORT_SYMBOL(jbd2_journal_bmap); - - static int journal_convert_superblock_v1(journal_t *, journal_superblock_t *); - static void __journal_abort_soft (journal_t *journal, int errno); -@@ -460,6 +462,7 @@ - spin_unlock(&journal->j_state_lock); - return ret; - } -+EXPORT_SYMBOL(jbd2_log_start_commit); - - /* - * Force and wait upon a commit if the calling process is not within -diff -u -r debian-2.6.26/fs/jbd2/transaction.c debian-2.6.26_lustre.1.8.2/fs/jbd2/transaction.c ---- debian-2.6.26/fs/jbd2/transaction.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/fs/jbd2/transaction.c 2010-02-17 14:42:20.000000000 +0100 -@@ -51,10 +51,12 @@ - transaction->t_state = T_RUNNING; - transaction->t_tid = journal->j_transaction_sequence++; - transaction->t_expires = jiffies + journal->j_commit_interval; -+ INIT_LIST_HEAD(&transaction->t_jcb); - spin_lock_init(&transaction->t_handle_lock); -+ spin_lock_init(&transaction->t_jcb_lock); - - /* Set up the commit timer for the new transaction. */ -- journal->j_commit_timer.expires = round_jiffies(transaction->t_expires); -+ journal->j_commit_timer.expires = transaction->t_expires; - add_timer(&journal->j_commit_timer); - - J_ASSERT(journal->j_running_transaction == NULL); -@@ -252,6 +254,7 @@ - memset(handle, 0, sizeof(*handle)); - handle->h_buffer_credits = nblocks; - handle->h_ref = 1; -+ INIT_LIST_HEAD(&handle->h_jcb); - - lockdep_init_map(&handle->h_lockdep_map, "jbd2_handle", - &jbd2_handle_key, 0); -@@ -1350,6 +1353,36 @@ - } - - /** -+ * void jbd2_journal_callback_set() - Register a callback function for this handle. -+ * @handle: handle to attach the callback to. -+ * @func: function to callback. -+ * @jcb: structure with additional information required by func() , and -+ * some space for jbd2 internal information. -+ * -+ * The function will be -+ * called when the transaction that this handle is part of has been -+ * committed to disk with the original callback data struct and the -+ * error status of the journal as parameters. There is no guarantee of -+ * ordering between handles within a single transaction, nor between -+ * callbacks registered on the same handle. -+ * -+ * The caller is responsible for allocating the journal_callback struct. -+ * This is to allow the caller to add as much extra data to the callback -+ * as needed, but reduce the overhead of multiple allocations. The caller -+ * allocated struct must start with a struct journal_callback at offset 0, -+ * and has the caller-specific data afterwards. -+ */ -+void jbd2_journal_callback_set(handle_t *handle, -+ void (*func)(struct journal_callback *jcb, int error), -+ struct journal_callback *jcb) -+{ -+ spin_lock(&handle->h_transaction->t_jcb_lock); -+ list_add_tail(&jcb->jcb_list, &handle->h_jcb); -+ spin_unlock(&handle->h_transaction->t_jcb_lock); -+ jcb->jcb_func = func; -+} -+ -+/** - * int jbd2_journal_stop() - complete a transaction - * @handle: tranaction to complete. - * -@@ -1423,6 +1456,11 @@ - wake_up(&journal->j_wait_transaction_locked); - } - -+ /* Move callbacks from the handle to the transaction. */ -+ spin_lock(&transaction->t_jcb_lock); -+ list_splice(&handle->h_jcb, &transaction->t_jcb); -+ spin_unlock(&transaction->t_jcb_lock); -+ - /* - * If the handle is marked SYNC, we need to set another commit - * going! We also want to force a commit if the current -diff -u -r debian-2.6.26/fs/namespace.c debian-2.6.26_lustre.1.8.2/fs/namespace.c ---- debian-2.6.26/fs/namespace.c 2009-12-26 09:14:56.000000000 +0100 -+++ debian-2.6.26_lustre.1.8.2/fs/namespace.c 2010-02-17 14:43:07.000000000 +0100 -@@ -1660,6 +1660,7 @@ - - return do_add_mount(mnt, nd, mnt_flags, NULL); - } -+EXPORT_SYMBOL(set_fs_pwd); - - /* - * add a mount into a namespace's mount tree -diff -u -r debian-2.6.26/include/linux/blkdev.h debian-2.6.26_lustre.1.8.2/include/linux/blkdev.h ---- debian-2.6.26/include/linux/blkdev.h 2009-12-26 09:14:55.000000000 +0100 -+++ debian-2.6.26_lustre.1.8.2/include/linux/blkdev.h 2010-02-18 07:44:31.000000000 +0100 -@@ -806,7 +806,7 @@ - #define MAX_PHYS_SEGMENTS 128 - #define MAX_HW_SEGMENTS 128 - #define SAFE_MAX_SECTORS 255 --#define BLK_DEF_MAX_SECTORS 1024 -+#define BLK_DEF_MAX_SECTORS 2048 - - #define MAX_SEGMENT_SIZE 65536 - -diff -u -r debian-2.6.26/include/linux/dcache.h debian-2.6.26_lustre.1.8.2/include/linux/dcache.h ---- debian-2.6.26/include/linux/dcache.h 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/include/linux/dcache.h 2010-02-18 07:46:08.000000000 +0100 -@@ -173,6 +173,7 @@ - - #define DCACHE_REFERENCED 0x0008 /* Recently used, don't discard. */ - #define DCACHE_UNHASHED 0x0010 -+#define DCACHE_LUSTRE_INVALID 0x0040 /* Lustre invalidated */ - - #define DCACHE_INOTIFY_PARENT_WATCHED 0x0020 /* Parent inode is watched */ - -@@ -250,6 +251,7 @@ - * This adds the entry to the hash queues. - */ - extern void d_rehash(struct dentry *); -+extern void d_rehash_cond(struct dentry *, int lock); - - /** - * d_add - add dentry to hash queues -@@ -285,6 +287,7 @@ - - /* used for rename() and baskets */ - extern void d_move(struct dentry *, struct dentry *); -+extern void d_move_locked(struct dentry *, struct dentry *); - - /* appendix may either be NULL or be used for transname suffixes */ - extern struct dentry * d_lookup(struct dentry *, struct qstr *); -diff -u -r debian-2.6.26/include/linux/fs.h debian-2.6.26_lustre.1.8.2/include/linux/fs.h ---- debian-2.6.26/include/linux/fs.h 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/include/linux/fs.h 2010-02-18 07:57:56.000000000 +0100 -@@ -1832,6 +1832,10 @@ - extern void submit_bio(int, struct bio *); - extern int bdev_read_only(struct block_device *); - #endif -+#define HAVE_CLEAR_RDONLY_ON_PUT -+extern void dev_set_rdonly(struct block_device *bdev); -+extern int dev_check_rdonly(struct block_device *bdev); -+extern void dev_clear_rdonly(struct block_device *bdev); - extern int set_blocksize(struct block_device *, int); - extern int sb_set_blocksize(struct super_block *, int); - extern int sb_min_blocksize(struct super_block *, int); -@@ -1930,6 +1934,7 @@ - - extern const struct file_operations generic_ro_fops; - -+extern rwlock_t file_systems_lock; - #define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m)) - - extern int vfs_readlink(struct dentry *, char __user *, int, const char *); -diff -u -r debian-2.6.26/include/linux/jbd2.h debian-2.6.26_lustre.1.8.2/include/linux/jbd2.h ---- debian-2.6.26/include/linux/jbd2.h 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/include/linux/jbd2.h 2010-02-18 08:08:30.000000000 +0100 -@@ -379,6 +379,27 @@ - bit_spin_unlock(BH_JournalHead, &bh->b_state); - } - -+#define HAVE_JOURNAL_CALLBACK_STATUS -+/** -+ * struct journal_callback - Base structure for callback information. -+ * @jcb_list: list information for other callbacks attached to the same handle. -+ * @jcb_func: Function to call with this callback structure. -+ * -+ * This struct is a 'seed' structure for a using with your own callback -+ * structs. If you are using callbacks you must allocate one of these -+ * or another struct of your own definition which has this struct -+ * as it's first element and pass it to journal_callback_set(). -+ * -+ * This is used internally by jbd2 to maintain callback information. -+ * -+ * See journal_callback_set for more information. -+ **/ -+struct journal_callback { -+ struct list_head jcb_list; /* t_jcb_lock */ -+ void (*jcb_func)(struct journal_callback *jcb, int error); -+ /* user data goes here */ -+}; -+ - struct jbd2_revoke_table_s; - - /** -@@ -387,6 +408,7 @@ - * @h_transaction: Which compound transaction is this update a part of? - * @h_buffer_credits: Number of remaining buffers we are allowed to dirty. - * @h_ref: Reference count on this handle -+ * @h_jcb: List of application registered callbacks for this handle. - * @h_err: Field for caller's use to track errors through large fs operations - * @h_sync: flag for sync-on-close - * @h_jdata: flag to force data journaling -@@ -412,6 +434,13 @@ - /* operations */ - int h_err; - -+ /* -+ * List of application registered callbacks for this handle. The -+ * function(s) will be called after the transaction that this handle is -+ * part of has been committed to disk. [t_jcb_lock] -+ */ -+ struct list_head h_jcb; -+ - /* Flags [no locking] */ - unsigned int h_sync: 1; /* sync-on-close */ - unsigned int h_jdata: 1; /* force data journaling */ -@@ -467,6 +496,9 @@ - * j_state_lock - * ->j_list_lock (journal_unmap_buffer) - * -+ * t_handle_lock -+ * ->t_jcb_lock -+ * - */ - - struct transaction_s -@@ -613,6 +645,15 @@ - */ - int t_handle_count; - -+ /* -+ * Protects the callback list -+ */ -+ spinlock_t t_jcb_lock; -+ /* -+ * List of registered callback functions for this transaction. -+ * Called when the transaction is committed. [t_jcb_lock] -+ */ -+ struct list_head t_jcb; - }; - - struct transaction_run_stats_s { -@@ -1016,6 +1057,9 @@ - extern int jbd2_journal_flush (journal_t *); - extern void jbd2_journal_lock_updates (journal_t *); - extern void jbd2_journal_unlock_updates (journal_t *); -+extern void jbd2_journal_callback_set(handle_t *handle, -+ void (*fn)(struct journal_callback *,int), -+ struct journal_callback *jcb); - - extern journal_t * jbd2_journal_init_dev(struct block_device *bdev, - struct block_device *fs_dev, -diff -u -r debian-2.6.26/include/linux/mm.h debian-2.6.26_lustre.1.8.2/include/linux/mm.h ---- debian-2.6.26/include/linux/mm.h 2009-12-26 09:14:57.000000000 +0100 -+++ debian-2.6.26_lustre.1.8.2/include/linux/mm.h 2010-02-18 08:10:11.000000000 +0100 -@@ -564,6 +564,8 @@ - { - return __va(page_to_pfn(page) << PAGE_SHIFT); - } -+/* truncate.c */ -+extern void truncate_complete_page(struct address_space *mapping,struct page *); - - #if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL) - #define HASHED_PAGE_VIRTUAL -diff -u -r debian-2.6.26/include/scsi/sd.h debian-2.6.26_lustre.1.8.2/include/scsi/sd.h ---- debian-2.6.26/include/scsi/sd.h 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/include/scsi/sd.h 2010-02-17 14:18:52.000000000 +0100 -@@ -31,6 +31,47 @@ - */ - #define SD_BUF_SIZE 512 - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+typedef struct { -+ unsigned long long iostat_size; -+ unsigned long long iostat_count; -+} iostat_counter_t; -+ -+#define IOSTAT_NCOUNTERS 16 -+typedef struct { -+ iostat_counter_t iostat_read_histogram[IOSTAT_NCOUNTERS]; -+ iostat_counter_t iostat_write_histogram[IOSTAT_NCOUNTERS]; -+ struct timeval iostat_timeval; -+ -+ /* queue depth: how well the pipe is filled up */ -+ unsigned long long iostat_queue_ticks[IOSTAT_NCOUNTERS]; -+ unsigned long long iostat_queue_ticks_sum; -+ unsigned long iostat_queue_depth; -+ unsigned long iostat_queue_stamp; -+ -+ /* seeks: how linear the traffic is */ -+ unsigned long long iostat_next_sector; -+ unsigned long long iostat_seek_sectors; -+ unsigned long long iostat_seeks; -+ unsigned long long iostat_sectors; -+ unsigned long long iostat_reqs; -+ unsigned long iostat_read_reqs; -+ unsigned long iostat_write_reqs; -+ -+ /* process time: how long it takes to process requests */ -+ unsigned long iostat_rtime[IOSTAT_NCOUNTERS]; -+ unsigned long iostat_wtime[IOSTAT_NCOUNTERS]; -+ -+ /* queue time: how long process spent in elevator's queue */ -+ unsigned long iostat_rtime_in_queue[IOSTAT_NCOUNTERS]; -+ unsigned long iostat_wtime_in_queue[IOSTAT_NCOUNTERS]; -+ -+ /* must be the last field, as it's used to know size to be memset'ed */ -+ spinlock_t iostat_lock; -+} ____cacheline_aligned_in_smp iostat_stats_t; -+#endif -+ -+ - struct scsi_disk { - struct scsi_driver *driver; /* always &sd_template */ - struct scsi_device *device; -@@ -45,6 +86,9 @@ - unsigned WCE : 1; /* state of disk WCE bit */ - unsigned RCD : 1; /* state of disk RCD bit, unused */ - unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+ iostat_stats_t *stats; /* scsi disk statistics */ -+#endif - }; - #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,dev) - -diff -u -r debian-2.6.26/kernel/sched.c debian-2.6.26_lustre.1.8.2/kernel/sched.c ---- debian-2.6.26/kernel/sched.c 2009-12-26 09:14:56.000000000 +0100 -+++ debian-2.6.26_lustre.1.8.2/kernel/sched.c 2010-02-18 08:11:02.000000000 +0100 -@@ -5477,6 +5477,7 @@ - - show_stack(p, NULL); - } -+EXPORT_SYMBOL(sched_show_task); - - void show_state_filter(unsigned long state_filter) - { -diff -u -r debian-2.6.26/mm/truncate.c debian-2.6.26_lustre.1.8.2/mm/truncate.c ---- debian-2.6.26/mm/truncate.c 2008-07-13 23:51:29.000000000 +0200 -+++ debian-2.6.26_lustre.1.8.2/mm/truncate.c 2010-02-18 08:12:58.000000000 +0100 -@@ -92,7 +92,7 @@ - * its lock, b) when a concurrent invalidate_mapping_pages got there first and - * c) when tmpfs swizzles a page between a tmpfs inode and swapper_space. - */ --static void -+void - truncate_complete_page(struct address_space *mapping, struct page *page) - { - if (page->mapping != mapping) -@@ -108,6 +108,7 @@ - ClearPageMappedToDisk(page); - page_cache_release(page); /* pagecache ref */ - } -+EXPORT_SYMBOL_GPL(truncate_complete_page); - - /* - * This is for invalidate_mapping_pages(). That function can be called at -diff -u -r debian-2.6.26/security/security.c debian-2.6.26_lustre.1.8.2/security/security.c ---- debian-2.6.26/security/security.c 2009-12-26 09:14:57.000000000 +0100 -+++ debian-2.6.26_lustre.1.8.2/security/security.c 2010-02-18 08:13:38.000000000 +0100 -@@ -406,6 +406,7 @@ - return 0; - return security_ops->inode_unlink(dir, dentry); - } -+EXPORT_SYMBOL(security_inode_unlink); - - int security_inode_symlink(struct inode *dir, struct dentry *dentry, - const char *old_name) diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/dev_read_only-2.6.18-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/dev_read_only-2.6.18-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/dev_read_only-2.6.18-vanilla.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/dev_read_only-2.6.18-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -16,7 +16,7 @@ if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) goto end_io; + /* this is cfs's dev_rdonly check */ -+ if (bio->bi_rw == WRITE && ++ if (bio_rw(bio) == WRITE && + dev_check_rdonly(bio->bi_bdev)) { + bio_endio(bio, bio->bi_size, 0); + break; diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/dev_read_only-2.6.27-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/dev_read_only-2.6.27-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/dev_read_only-2.6.27-vanilla.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/dev_read_only-2.6.27-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -16,7 +16,7 @@ if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) goto end_io; + /* this is cfs's dev_rdonly check */ -+ if (bio->bi_rw == WRITE && ++ if (bio_rw(bio) == WRITE && + dev_check_rdonly(bio->bi_bdev)) { + bio_endio(bio, 0); + break; @@ -26,7 +26,7 @@ goto end_io; @@ -2189,6 +2197,91 @@ } - EXPORT_SYMBOL(kblockd_flush_work); + EXPORT_SYMBOL(kblockd_schedule_work); + /* + * Debug code for turning block devices "read-only" (will discard writes @@ -115,7 +115,7 @@ +EXPORT_SYMBOL(dev_check_rdonly); int __init blk_dev_init(void) { - kblockd_workqueue = create_workqueue("kblockd"); + BUILD_BUG_ON(__REQ_NR_BITS > 8 * Index: linux-2.6.27.21-0.1/fs/block_dev.c =================================================================== --- linux-2.6.27.21-0.1.orig/fs/block_dev.c 2009-04-23 02:12:56.000000000 -0600 diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/dev_read_only-2.6-fc5.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/dev_read_only-2.6-fc5.patch --- lustre-1.8.3/lustre/kernel_patches/patches/dev_read_only-2.6-fc5.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/dev_read_only-2.6-fc5.patch 2010-11-17 04:31:48.000000000 +0100 @@ -16,7 +16,7 @@ if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) goto end_io; + /* this is cfs's dev_rdonly check */ -+ if (bio->bi_rw == WRITE && ++ if (bio_rw(bio) == WRITE && + dev_check_rdonly(bio->bi_bdev)) { + bio_endio(bio, bio->bi_size, 0); + break; diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/export-2.6.26-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/export-2.6.26-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/export-2.6.26-vanilla.patch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/export-2.6.26-vanilla.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,24 +0,0 @@ -Index: linux-source-2.6.26/fs/jbd2/journal.c -=================================================================== ---- linux-source-2.6.26.orig/fs/jbd2/journal.c 2009-10-09 13:49:43.000000000 +0200 -+++ linux-source-2.6.26/fs/jbd2/journal.c 2009-10-09 13:49:50.000000000 +0200 -@@ -460,6 +460,7 @@ - spin_unlock(&journal->j_state_lock); - return ret; - } -+EXPORT_SYMBOL(jbd2_log_start_commit); - - /* - * Force and wait upon a commit if the calling process is not within -Index: linux-source-2.6.26/security/security.c -=================================================================== ---- linux-source-2.6.26.orig/security/security.c 2009-10-09 13:49:43.000000000 +0200 -+++ linux-source-2.6.26/security/security.c 2009-10-09 13:49:50.000000000 +0200 -@@ -68,6 +68,7 @@ - - return 0; - } -+EXPORT_SYMBOL(security_inode_unlink); - - /* Save user chosen LSM */ - static int __init choose_lsm(char *str) diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/export-2.6.27-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/export-2.6.27-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/export-2.6.27-vanilla.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/export-2.6.27-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -1,37 +1,12 @@ -Index: linux-2.6/fs/jbd/journal.c -=================================================================== ---- linux-2.6.orig/fs/jbd2/journal.c 2006-07-15 16:13:50.000000000 +0800 -+++ linux-2.6/fs/jbd2/journal.c 2006-07-15 16:22:04.000000000 +0800 -@@ -74,6 +74,7 @@ EXPORT_SYMBOL(journal_abort); - spin_unlock(&journal->j_state_lock); - return ret; - } -+EXPORT_SYMBOL(jbd2_log_start_commit); - - /* - * Force and wait upon a commit if the calling process is not within -Index: linux-2.6/kernel/sys.c -=================================================================== ---- linux-2.6.orig/kernel/sys.c 2006-07-15 16:13:50.000000000 +0800 -+++ linux-2.6/kernel/sys.c 2006-07-15 16:22:04.000000000 +0800 -@@ -74,6 +74,8 @@ - EXPORT_SYMBOL(in_egroup_p); - - DECLARE_RWSEM(uts_sem); -+ -+EXPORT_SYMBOL(uts_sem); - - SYSCALL_DEFINE1(newuname, struct new_utsname __user *, name) - { Index: linux-2.6/kernel/sys.c =================================================================== --- linux-2.6.orig/security/security.c +++ linux-2.6/security/security.c @@ -74,6 +74,7 @@ return 0; - return security_ops->inode_unlink(dir, dentry, mnt); + return security_ops->inode_unlink(dir, dentry); } +EXPORT_SYMBOL(security_inode_unlink); int security_inode_symlink(struct inode *dir, struct dentry *dentry, - struct vfsmount *mnt, const char *old_name) + const char *old_name) diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/export-show_task-2.6.18-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/export-show_task-2.6.18-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/export-show_task-2.6.18-vanilla.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/export-show_task-2.6.18-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -2,20 +2,11 @@ =================================================================== --- linux-2.6.orig/kernel/sched.c 2006-07-15 11:51:46.000000000 +0800 +++ linux-2.6/kernel/sched.c 2006-07-15 16:24:35.000000000 +0800 -@@ -4652,7 +4652,7 @@ static inline struct task_struct *younge - - static const char stat_nam[] = "RSDTtZX"; - --static void show_task(struct task_struct *p) -+void show_task(struct task_struct *p) - { - struct task_struct *relative; - unsigned long free = 0; @@ -4698,6 +4698,7 @@ static void show_task(struct task_struct show_stack(p, NULL); } -+EXPORT_SYMBOL(show_task); ++EXPORT_SYMBOL(sched_show_task); void show_state(void) { diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/export-truncate-2.6.18-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/export-truncate-2.6.18-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/export-truncate-2.6.18-vanilla.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/export-truncate-2.6.18-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -11,7 +11,7 @@ return __va(page_to_pfn(page) << PAGE_SHIFT); } +/* truncate.c */ -+extern void truncate_complete_page(struct address_space *mapping,struct page *); ++extern int truncate_complete_page(struct address_space *mapping,struct page *); #if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL) #define HASHED_PAGE_VIRTUAL @@ -23,14 +23,14 @@ * its lock, b) when a concurrent invalidate_mapping_pages got there first and * c) when tmpfs swizzles a page between a tmpfs inode and swapper_space. */ --static void -+void +-static int ++int truncate_complete_page(struct address_space *mapping, struct page *page) { if (page->mapping != mapping) @@ -107,7 +107,7 @@ truncate_complete_page(struct address_sp - ClearPageMappedToDisk(page); page_cache_release(page); /* pagecache ref */ + return 0; } - +EXPORT_SYMBOL_GPL(truncate_complete_page); diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/iopen-misc-2.6.22-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/iopen-misc-2.6.22-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/iopen-misc-2.6.22-vanilla.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/iopen-misc-2.6.22-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -59,9 +59,9 @@ /** * d_add - add dentry to hash queues @@ -286,6 +287,7 @@ - /* used for rename() and baskets */ extern void d_move(struct dentry *, struct dentry *); + extern struct dentry *d_ancestor(struct dentry *, struct dentry *); +extern void d_move_locked(struct dentry *, struct dentry *); /* appendix may either be NULL or be used for transname suffixes */ diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/jbd2-jcberr-2.6.26-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd2-jcberr-2.6.26-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/jbd2-jcberr-2.6.26-vanilla.patch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd2-jcberr-2.6.26-vanilla.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,211 +0,0 @@ -Index: linux-source-2.6.26/include/linux/jbd2.h -=================================================================== ---- linux-source-2.6.26.orig/include/linux/jbd2.h 2008-07-13 23:51:29.000000000 +0200 -+++ linux-source-2.6.26/include/linux/jbd2.h 2009-10-09 13:42:21.000000000 +0200 -@@ -379,6 +379,27 @@ - bit_spin_unlock(BH_JournalHead, &bh->b_state); - } - -+#define HAVE_JOURNAL_CALLBACK_STATUS -+/** -+ * struct journal_callback - Base structure for callback information. -+ * @jcb_list: list information for other callbacks attached to the same handle. -+ * @jcb_func: Function to call with this callback structure. -+ * -+ * This struct is a 'seed' structure for a using with your own callback -+ * structs. If you are using callbacks you must allocate one of these -+ * or another struct of your own definition which has this struct -+ * as it's first element and pass it to journal_callback_set(). -+ * -+ * This is used internally by jbd2 to maintain callback information. -+ * -+ * See journal_callback_set for more information. -+ **/ -+struct journal_callback { -+ struct list_head jcb_list; /* t_jcb_lock */ -+ void (*jcb_func)(struct journal_callback *jcb, int error); -+ /* user data goes here */ -+}; -+ - struct jbd2_revoke_table_s; - - /** -@@ -387,6 +408,7 @@ - * @h_transaction: Which compound transaction is this update a part of? - * @h_buffer_credits: Number of remaining buffers we are allowed to dirty. - * @h_ref: Reference count on this handle -+ * @h_jcb: List of application registered callbacks for this handle. - * @h_err: Field for caller's use to track errors through large fs operations - * @h_sync: flag for sync-on-close - * @h_jdata: flag to force data journaling -@@ -412,6 +434,13 @@ - /* operations */ - int h_err; - -+ /* -+ * List of application registered callbacks for this handle. The -+ * function(s) will be called after the transaction that this handle is -+ * part of has been committed to disk. [t_jcb_lock] -+ */ -+ struct list_head h_jcb; -+ - /* Flags [no locking] */ - unsigned int h_sync: 1; /* sync-on-close */ - unsigned int h_jdata: 1; /* force data journaling */ -@@ -467,6 +496,8 @@ - * j_state_lock - * ->j_list_lock (journal_unmap_buffer) - * -+ * t_handle_lock -+ * ->t_jcb_lock - */ - - struct transaction_s -@@ -613,6 +644,15 @@ - */ - int t_handle_count; - -+ /* -+ * Protects the callback list -+ */ -+ spinlock_t t_jcb_lock; -+ /* -+ * List of registered callback functions for this transaction. -+ * Called when the transaction is committed. [t_jcb_lock] -+ */ -+ struct list_head t_jcb; - }; - - struct transaction_run_stats_s { -@@ -1016,6 +1056,9 @@ - extern int jbd2_journal_flush (journal_t *); - extern void jbd2_journal_lock_updates (journal_t *); - extern void jbd2_journal_unlock_updates (journal_t *); -+extern void jbd2_journal_callback_set(handle_t *handle, -+ void (*fn)(struct journal_callback *,int), -+ struct journal_callback *jcb); - - extern journal_t * jbd2_journal_init_dev(struct block_device *bdev, - struct block_device *fs_dev, -Index: linux-source-2.6.26/fs/jbd2/checkpoint.c -=================================================================== ---- linux-source-2.6.26.orig/fs/jbd2/checkpoint.c 2008-07-13 23:51:29.000000000 +0200 -+++ linux-source-2.6.26/fs/jbd2/checkpoint.c 2009-10-09 13:42:21.000000000 +0200 -@@ -696,6 +696,7 @@ - J_ASSERT(transaction->t_checkpoint_list == NULL); - J_ASSERT(transaction->t_checkpoint_io_list == NULL); - J_ASSERT(transaction->t_updates == 0); -+ J_ASSERT(list_empty(&transaction->t_jcb)); - J_ASSERT(journal->j_committing_transaction != transaction); - J_ASSERT(journal->j_running_transaction != transaction); - -Index: linux-source-2.6.26/fs/jbd2/commit.c -=================================================================== ---- linux-source-2.6.26.orig/fs/jbd2/commit.c 2008-07-13 23:51:29.000000000 +0200 -+++ linux-source-2.6.26/fs/jbd2/commit.c 2009-10-09 13:42:21.000000000 +0200 -@@ -854,6 +854,30 @@ - /* AKPM: bforget here */ - } - -+ /* -+ * Call any callbacks that had been registered for handles in this -+ * transaction. It is up to the callback to free any allocated -+ * memory. -+ * -+ * The spinlocking (t_jcb_lock) here is surely unnecessary... -+ */ -+ spin_lock(&commit_transaction->t_jcb_lock); -+ if (!list_empty(&commit_transaction->t_jcb)) { -+ struct list_head *p, *n; -+ int error = is_journal_aborted(journal); -+ -+ list_for_each_safe(p, n, &commit_transaction->t_jcb) { -+ struct journal_callback *jcb; -+ -+ jcb = list_entry(p, struct journal_callback, jcb_list); -+ list_del(p); -+ spin_unlock(&commit_transaction->t_jcb_lock); -+ jcb->jcb_func(jcb, error); -+ spin_lock(&commit_transaction->t_jcb_lock); -+ } -+ } -+ spin_unlock(&commit_transaction->t_jcb_lock); -+ - jbd_debug(3, "JBD: commit phase 6\n"); - - if (!JBD2_HAS_INCOMPAT_FEATURE(journal, -Index: linux-source-2.6.26/fs/jbd2/journal.c -=================================================================== ---- linux-source-2.6.26.orig/fs/jbd2/journal.c 2009-10-09 13:39:04.000000000 +0200 -+++ linux-source-2.6.26/fs/jbd2/journal.c 2009-10-09 13:43:03.000000000 +0200 -@@ -82,6 +82,9 @@ - EXPORT_SYMBOL(jbd2_journal_invalidatepage); - EXPORT_SYMBOL(jbd2_journal_try_to_free_buffers); - EXPORT_SYMBOL(jbd2_journal_force_commit); -+EXPORT_SYMBOL(jbd2_journal_callback_set); -+EXPORT_SYMBOL(jbd2_journal_bmap); -+ - - static int journal_convert_superblock_v1(journal_t *, journal_superblock_t *); - static void __journal_abort_soft (journal_t *journal, int errno); -Index: linux-source-2.6.26/fs/jbd2/transaction.c -=================================================================== ---- linux-source-2.6.26.orig/fs/jbd2/transaction.c 2008-07-13 23:51:29.000000000 +0200 -+++ linux-source-2.6.26/fs/jbd2/transaction.c 2009-10-09 13:42:21.000000000 +0200 -@@ -252,6 +252,7 @@ - memset(handle, 0, sizeof(*handle)); - handle->h_buffer_credits = nblocks; - handle->h_ref = 1; -+ INIT_LIST_HEAD(&handle->h_jcb); - - lockdep_init_map(&handle->h_lockdep_map, "jbd2_handle", - &jbd2_handle_key, 0); -@@ -1350,6 +1351,36 @@ - } - - /** -+ * void jbd2_journal_callback_set() - Register a callback function for this handle. -+ * @handle: handle to attach the callback to. -+ * @func: function to callback. -+ * @jcb: structure with additional information required by func() , and -+ * some space for jbd2 internal information. -+ * -+ * The function will be -+ * called when the transaction that this handle is part of has been -+ * committed to disk with the original callback data struct and the -+ * error status of the journal as parameters. There is no guarantee of -+ * ordering between handles within a single transaction, nor between -+ * callbacks registered on the same handle. -+ * -+ * The caller is responsible for allocating the journal_callback struct. -+ * This is to allow the caller to add as much extra data to the callback -+ * as needed, but reduce the overhead of multiple allocations. The caller -+ * allocated struct must start with a struct journal_callback at offset 0, -+ * and has the caller-specific data afterwards. -+ */ -+void jbd2_journal_callback_set(handle_t *handle, -+ void (*func)(struct journal_callback *jcb, int error), -+ struct journal_callback *jcb) -+{ -+ spin_lock(&handle->h_transaction->t_jcb_lock); -+ list_add_tail(&jcb->jcb_list, &handle->h_jcb); -+ spin_unlock(&handle->h_transaction->t_jcb_lock); -+ jcb->jcb_func = func; -+} -+ -+/** - * int jbd2_journal_stop() - complete a transaction - * @handle: tranaction to complete. - * -@@ -1423,6 +1454,11 @@ - wake_up(&journal->j_wait_transaction_locked); - } - -+ /* Move callbacks from the handle to the transaction. */ -+ spin_lock(&transaction->t_jcb_lock); -+ list_splice(&handle->h_jcb, &transaction->t_jcb); -+ spin_unlock(&transaction->t_jcb_lock); -+ - /* - * If the handle is marked SYNC, we need to set another commit - * going! We also want to force a commit if the current diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/jbd2-jcberr-2.6-sles11.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd2-jcberr-2.6-sles11.patch --- lustre-1.8.3/lustre/kernel_patches/patches/jbd2-jcberr-2.6-sles11.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd2-jcberr-2.6-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -61,10 +61,11 @@ */ struct transaction_s -@@ -641,6 +672,15 @@ struct transaction_s - */ - int t_handle_count; - +@@ -641,6 +672,16 @@ struct transaction_s + * structures associated with the transaction + */ + struct list_head t_private_list; ++ + /* + * Protects the callback list + */ @@ -152,15 +153,15 @@ --- linux-2.6.27.21-0.1.orig/fs/jbd2/transaction.c +++ linux-2.6.27.21-0.1/fs/jbd2/transaction.c @@ -50,7 +50,9 @@ jbd2_get_transaction(journal_t *journal, - transaction->t_state = T_RUNNING; + transaction->t_start_time = ktime_get(); transaction->t_tid = journal->j_transaction_sequence++; transaction->t_expires = jiffies + journal->j_commit_interval; + INIT_LIST_HEAD(&transaction->t_jcb); spin_lock_init(&transaction->t_handle_lock); + spin_lock_init(&transaction->t_jcb_lock); INIT_LIST_HEAD(&transaction->t_inode_list); + INIT_LIST_HEAD(&transaction->t_private_list); - /* Set up the commit timer for the new transaction. */ @@ -252,6 +254,7 @@ static handle_t *new_handle(int nblocks) memset(handle, 0, sizeof(*handle)); handle->h_buffer_credits = nblocks; diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/jbd2_stats_proc_init-wrong-place.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd2_stats_proc_init-wrong-place.patch --- lustre-1.8.3/lustre/kernel_patches/patches/jbd2_stats_proc_init-wrong-place.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd2_stats_proc_init-wrong-place.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,53 @@ +From 42e140bf105aea1c9679b1cd128aebc35196e6fc Mon Sep 17 00:00:00 2001 +From: yangsheng +Date: Mon, 15 Nov 2010 21:26:35 +0800 +Subject: [PATCH] jbd2_stats_proc_init wrong place. + + The jbd2_stats_proc_init() was placed on wrong location in + jbd2_journal_init_dev(). This may cause /proc/fs/jdb2//* + cannot be created when using external journal device. + + Reviewed-by: Andreas Dilger + +--- +--- + fs/jbd2/journal.c | 16 ++++++++-------- + 1 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c +index c590d15..f837ba9 100644 +--- a/fs/jbd2/journal.c ++++ b/fs/jbd2/journal.c +@@ -899,6 +899,14 @@ journal_t * jbd2_journal_init_dev(struct block_device *bdev, + + /* journal descriptor can store up to n blocks -bzzz */ + journal->j_blocksize = blocksize; ++ journal->j_dev = bdev; ++ journal->j_fs_dev = fs_dev; ++ journal->j_blk_offset = start; ++ journal->j_maxlen = len; ++ bdevname(journal->j_dev, journal->j_devname); ++ p = journal->j_devname; ++ while ((p = strchr(p, '/'))) ++ *p = '!'; + jbd2_stats_proc_init(journal); + n = journal->j_blocksize / sizeof(journal_block_tag_t); + journal->j_wbufsize = n; +@@ -908,14 +916,6 @@ journal_t * jbd2_journal_init_dev(struct block_device *bdev, + __func__); + goto out_err; + } +- journal->j_dev = bdev; +- journal->j_fs_dev = fs_dev; +- journal->j_blk_offset = start; +- journal->j_maxlen = len; +- bdevname(journal->j_dev, journal->j_devname); +- p = journal->j_devname; +- while ((p = strchr(p, '/'))) +- *p = '!'; + + bh = __getblk(journal->j_dev, start, journal->j_blocksize); + if (!bh) { +-- +1.7.2.3 + diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/jbd-journal-chksum-2.6.18-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd-journal-chksum-2.6.18-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/jbd-journal-chksum-2.6.18-vanilla.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd-journal-chksum-2.6.18-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -1,7 +1,7 @@ -Index: linux-2.6.18-128.1.14/fs/jbd/commit.c +Index: linux-2.6.18-164.6.1/fs/jbd/commit.c =================================================================== ---- linux-2.6.18-128.1.14.orig/fs/jbd/commit.c 2009-06-19 12:34:22.000000000 -0600 -+++ linux-2.6.18-128.1.14/fs/jbd/commit.c 2009-06-19 12:35:11.000000000 -0600 +--- linux-2.6.18-164.6.1.orig/fs/jbd/commit.c ++++ linux-2.6.18-164.6.1/fs/jbd/commit.c @@ -22,6 +22,7 @@ #include #include @@ -10,7 +10,7 @@ /* -@@ -95,19 +96,23 @@ +@@ -108,19 +109,23 @@ static int inverted_lock(journal_t *jour return 1; } @@ -38,7 +38,7 @@ int barrier_done = 0; if (is_journal_aborted(journal)) -@@ -119,21 +124,34 @@ +@@ -132,21 +137,34 @@ static int journal_write_commit_record(j bh = jh2bh(descriptor); @@ -82,7 +82,11 @@ /* is it possible for another commit to fail at roughly * the same time as this one? If so, we don't want to * trust the barrier flag in the super, but instead want -@@ -154,12 +173,70 @@ +@@ -164,15 +182,74 @@ static int journal_write_commit_record(j + spin_unlock(&journal->j_state_lock); + + /* And try again, without the barrier */ ++ lock_buffer(bh); clear_buffer_ordered(bh); set_buffer_uptodate(bh); set_buffer_dirty(bh); @@ -94,7 +98,8 @@ + *cbh = bh; + return ret; +} -+ + +- return (ret == -EIO); +/* + * This function along with journal_submit_commit_record + * allows to write the commit record asynchronously. @@ -122,8 +127,7 @@ +{ + int ret = 0; + struct journal_head *jh; - -- return (ret == -EIO); ++ + while (commit_transaction->t_locked_list) { + struct buffer_head *bh; + @@ -157,7 +161,7 @@ } void journal_do_submit_data(struct buffer_head **wbuf, int bufs) -@@ -282,6 +359,20 @@ +@@ -295,6 +372,20 @@ write_out_data: return err; } @@ -178,7 +182,7 @@ /* * journal_commit_transaction * -@@ -305,6 +396,8 @@ +@@ -318,6 +409,8 @@ void journal_commit_transaction(journal_ int first_tag = 0; int tag_flag; int i; @@ -187,7 +191,7 @@ /* * First job: lock down the current transaction and wait for -@@ -431,39 +524,14 @@ +@@ -444,39 +537,14 @@ void journal_commit_transaction(journal_ err = journal_submit_data_buffers(journal, commit_transaction); /* @@ -233,7 +237,7 @@ spin_unlock(&journal->j_list_lock); if (err) -@@ -642,6 +710,16 @@ +@@ -653,6 +721,16 @@ void journal_commit_transaction(journal_ start_journal_io: for (i = 0; i < bufs; i++) { struct buffer_head *bh = wbuf[i]; @@ -250,7 +254,7 @@ lock_buffer(bh); clear_buffer_dirty(bh); set_buffer_uptodate(bh); -@@ -658,6 +736,23 @@ +@@ -669,6 +747,23 @@ start_journal_io: } } @@ -274,7 +278,7 @@ /* Lo and behold: we have just managed to send a transaction to the log. Before we can commit it, wait for the IO so far to complete. Control buffers being written are on the -@@ -759,9 +854,15 @@ +@@ -770,9 +865,15 @@ wait_for_iobuf: journal_abort(journal, err); jbd_debug(3, "JBD: commit phase 6\n"); @@ -293,11 +297,11 @@ if (err) journal_abort(journal, err); -Index: linux-2.6.18-128.1.14/include/linux/jbd.h +Index: linux-2.6.18-164.6.1/include/linux/jbd.h =================================================================== ---- linux-2.6.18-128.1.14.orig/include/linux/jbd.h 2009-06-19 12:34:22.000000000 -0600 -+++ linux-2.6.18-128.1.14/include/linux/jbd.h 2009-06-19 12:35:11.000000000 -0600 -@@ -148,6 +148,29 @@ +--- linux-2.6.18-164.6.1.orig/include/linux/jbd.h ++++ linux-2.6.18-164.6.1/include/linux/jbd.h +@@ -148,6 +148,29 @@ typedef struct journal_header_s __be32 h_sequence; } journal_header_t; @@ -327,7 +331,7 @@ /* * The block tag: used to describe a single buffer in the journal -@@ -234,12 +257,16 @@ +@@ -234,12 +257,16 @@ typedef struct journal_superblock_s ((j)->j_format_version >= 2 && \ ((j)->j_superblock->s_feature_incompat & cpu_to_be32((mask)))) @@ -347,7 +351,7 @@ #ifdef __KERNEL__ -@@ -1053,6 +1080,8 @@ +@@ -1053,6 +1080,8 @@ extern int journal_check_available_fe (journal_t *, unsigned long, unsigned long, unsigned long); extern int journal_set_features (journal_t *, unsigned long, unsigned long, unsigned long); @@ -356,10 +360,10 @@ extern int journal_create (journal_t *); extern int journal_load (journal_t *journal); #ifndef __GENKSYMS__ -Index: linux-2.6.18-128.1.14/fs/jbd/recovery.c +Index: linux-2.6.18-164.6.1/fs/jbd/recovery.c =================================================================== ---- linux-2.6.18-128.1.14.orig/fs/jbd/recovery.c 2009-06-19 12:33:10.000000000 -0600 -+++ linux-2.6.18-128.1.14/fs/jbd/recovery.c 2009-06-19 12:35:11.000000000 -0600 +--- linux-2.6.18-164.6.1.orig/fs/jbd/recovery.c ++++ linux-2.6.18-164.6.1/fs/jbd/recovery.c @@ -21,6 +21,7 @@ #include #include @@ -368,7 +372,7 @@ #endif /* -@@ -310,6 +311,38 @@ +@@ -310,6 +311,38 @@ int journal_skip_recovery(journal_t *jou return err; } @@ -407,7 +411,7 @@ static int do_one_pass(journal_t *journal, struct recovery_info *info, enum passtype pass) { -@@ -321,6 +354,7 @@ +@@ -321,6 +354,7 @@ static int do_one_pass(journal_t *journa struct buffer_head * bh; unsigned int sequence; int blocktype; @@ -415,7 +419,7 @@ /* Precompute the maximum metadata descriptors in a descriptor block */ int MAX_BLOCKS_PER_DESC; -@@ -412,9 +446,24 @@ +@@ -412,9 +446,24 @@ static int do_one_pass(journal_t *journa switch(blocktype) { case JFS_DESCRIPTOR_BLOCK: /* If it is a valid descriptor block, replay it @@ -442,7 +446,7 @@ next_log_block += count_tags(bh, journal->j_blocksize); wrap(journal, next_log_block); -@@ -509,9 +558,97 @@ +@@ -509,9 +558,97 @@ static int do_one_pass(journal_t *journa continue; case JFS_COMMIT_BLOCK: @@ -542,7 +546,7 @@ brelse(bh); next_commit_ID++; continue; -@@ -547,9 +684,10 @@ +@@ -547,9 +684,10 @@ static int do_one_pass(journal_t *journa * transaction marks the end of the valid log. */ @@ -556,11 +560,11 @@ /* It's really bad news if different passes end up at * different places (but possible due to IO errors). */ if (info->end_transaction != next_commit_ID) { -Index: linux-2.6.18-128.1.14/fs/jbd/journal.c +Index: linux-2.6.18-164.6.1/fs/jbd/journal.c =================================================================== ---- linux-2.6.18-128.1.14.orig/fs/jbd/journal.c 2009-06-19 12:34:22.000000000 -0600 -+++ linux-2.6.18-128.1.14/fs/jbd/journal.c 2009-06-19 12:35:11.000000000 -0600 -@@ -67,6 +67,7 @@ +--- linux-2.6.18-164.6.1.orig/fs/jbd/journal.c ++++ linux-2.6.18-164.6.1/fs/jbd/journal.c +@@ -67,6 +67,7 @@ EXPORT_SYMBOL(journal_update_format); EXPORT_SYMBOL(journal_check_used_features); EXPORT_SYMBOL(journal_check_available_features); EXPORT_SYMBOL(journal_set_features); @@ -568,7 +572,7 @@ EXPORT_SYMBOL(journal_create); EXPORT_SYMBOL(journal_load); EXPORT_SYMBOL(journal_destroy); -@@ -1583,6 +1584,33 @@ +@@ -1583,6 +1584,33 @@ int journal_set_features (journal_t *jou return 1; } @@ -602,11 +606,11 @@ /** * int journal_update_format () - Update on-disk journal structure. -Index: linux-2.6.18-128.1.14/fs/Kconfig +Index: linux-2.6.18-164.6.1/fs/Kconfig =================================================================== ---- linux-2.6.18-128.1.14.orig/fs/Kconfig 2009-06-19 12:33:10.000000000 -0600 -+++ linux-2.6.18-128.1.14/fs/Kconfig 2009-06-19 12:35:11.000000000 -0600 -@@ -206,6 +206,7 @@ +--- linux-2.6.18-164.6.1.orig/fs/Kconfig ++++ linux-2.6.18-164.6.1/fs/Kconfig +@@ -142,6 +142,7 @@ source "fs/ext4/Kconfig" config JBD tristate @@ -614,11 +618,11 @@ help This is a generic journaling layer for block devices. It is currently used by the ext3 and OCFS2 file systems, but it could -Index: linux-2.6.18-128.1.14/Documentation/filesystems/ext3.txt +Index: linux-2.6.18-164.6.1/Documentation/filesystems/ext3.txt =================================================================== ---- linux-2.6.18-128.1.14.orig/Documentation/filesystems/ext3.txt 2009-06-19 12:33:10.000000000 -0600 -+++ linux-2.6.18-128.1.14/Documentation/filesystems/ext3.txt 2009-06-19 12:35:11.000000000 -0600 -@@ -14,6 +14,16 @@ +--- linux-2.6.18-164.6.1.orig/Documentation/filesystems/ext3.txt ++++ linux-2.6.18-164.6.1/Documentation/filesystems/ext3.txt +@@ -14,6 +14,16 @@ Options When mounting an ext3 filesystem, the following option are accepted: (*) == default diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/jbd-slab-race-2.6-rhel5.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd-slab-race-2.6-rhel5.patch --- lustre-1.8.3/lustre/kernel_patches/patches/jbd-slab-race-2.6-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/jbd-slab-race-2.6-rhel5.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,101 +0,0 @@ -kmem_cache_create: duplicate cache jbd_4k - -The jbd slab cache creation/deletion is racey. If multiple jbd based -filesystems are mounted concurrently, and there are no other jbd based -filesystems already mounted. Then we can race creating the slab caches -since jbd_slab[] is not locked. This is not commonly observed because -typically /root is mounted early with a jbd based filesystem making the -race impossible. On our diskless systems /root does not use the jbd -but we do have attached storage which does, and which is mounted in -parallel. Basically our setup is similiar to what may be found in a -NAS style appliance. - -This patch wraps all modifications to jbd_slab[] in the jbd_slab_lock -to prevent this above race. - -LLNL Bug 291 -Signed-off-by: Brian Behlendorf - -Index: linux+rh+chaos/fs/jbd/journal.c -=================================================================== ---- linux+rh+chaos.orig/fs/jbd/journal.c -+++ linux+rh+chaos/fs/jbd/journal.c -@@ -1979,6 +1979,7 @@ void * __jbd_kmalloc (const char *where, - #define JBD_MAX_SLABS 5 - #define JBD_SLAB_INDEX(size) (size >> 11) - -+static DECLARE_RWSEM(jbd_slab_lock); /* protect jbd_slab[] */ - static kmem_cache_t *jbd_slab[JBD_MAX_SLABS]; - static const char *jbd_slab_names[JBD_MAX_SLABS] = { - "jbd_1k", "jbd_2k", "jbd_4k", NULL, "jbd_8k" -@@ -1988,24 +1989,27 @@ static void journal_destroy_jbd_slabs(vo - { - int i; - -+ down_write(&jbd_slab_lock); - for (i = 0; i < JBD_MAX_SLABS; i++) { - if (jbd_slab[i]) - kmem_cache_destroy(jbd_slab[i]); - jbd_slab[i] = NULL; - } -+ up_write(&jbd_slab_lock); - } - - static int journal_create_jbd_slab(size_t slab_size) - { -- int i = JBD_SLAB_INDEX(slab_size); -+ int rc = 0, i = JBD_SLAB_INDEX(slab_size); - - BUG_ON(i >= JBD_MAX_SLABS); - - /* - * Check if we already have a slab created for this size - */ -+ down_write(&jbd_slab_lock); - if (jbd_slab[i]) -- return 0; -+ goto out_lock; - - /* - * Create a slab and force alignment to be same as slabsize - -@@ -2016,27 +2020,36 @@ static int journal_create_jbd_slab(size_ - slab_size, slab_size, 0, NULL, NULL); - if (!jbd_slab[i]) { - printk(KERN_EMERG "JBD: no memory for jbd_slab cache\n"); -- return -ENOMEM; -+ rc = -ENOMEM; - } -- return 0; -+out_lock: -+ up_write(&jbd_slab_lock); -+ return rc; - } - - void * jbd_slab_alloc(size_t size, gfp_t flags) - { -+ void *ptr; - int idx; - -+ down_read(&jbd_slab_lock); - idx = JBD_SLAB_INDEX(size); - BUG_ON(jbd_slab[idx] == NULL); -- return kmem_cache_alloc(jbd_slab[idx], flags | __GFP_NOFAIL); -+ ptr = kmem_cache_alloc(jbd_slab[idx], flags | __GFP_NOFAIL); -+ up_read(&jbd_slab_lock); -+ -+ return ptr; - } - - void jbd_slab_free(void *ptr, size_t size) - { - int idx; - -+ down_read(&jbd_slab_lock); - idx = JBD_SLAB_INDEX(size); - BUG_ON(jbd_slab[idx] == NULL); - kmem_cache_free(jbd_slab[idx], ptr); -+ up_read(&jbd_slab_lock); - } - - /* - diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/md-mmp-unplug-dev-2.6.27-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/md-mmp-unplug-dev-2.6.27-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/md-mmp-unplug-dev-2.6.27-vanilla.patch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/md-mmp-unplug-dev-2.6.27-vanilla.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ -Index: linux-2.6.27.36/drivers/md/raid5.c -=================================================================== ---- linux-2.6.27.36.orig/drivers/md/raid5.c 2009-10-05 17:19:01.000000000 +0200 -+++ linux-2.6.27.36/drivers/md/raid5.c 2009-10-08 15:06:10.000000000 +0200 -@@ -1726,6 +1726,8 @@ - bi->bi_next = *bip; - *bip = bi; - bi->bi_phys_segments ++; -+ if (bio_sync(bi) && !forwrite) -+ clear_bit(R5_UPTODATE, &sh->dev[dd_idx].flags); /* force to read from disk. */ - spin_unlock_irq(&conf->device_lock); - spin_unlock(&sh->lock); - -@@ -3478,6 +3480,8 @@ - - bio_endio(bi, 0); - } -+ if (bio_sync(bi)) -+ raid5_unplug_device(q); - return 0; - } - diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/md-mmp-unplug-dev.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/md-mmp-unplug-dev.patch --- lustre-1.8.3/lustre/kernel_patches/patches/md-mmp-unplug-dev.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/md-mmp-unplug-dev.patch 2010-11-17 04:31:48.000000000 +0100 @@ -12,8 +12,8 @@ spin_unlock(&sh->lock); @@ -3012,6 +3014,8 @@ - bi->bi_size = 0; - bi->bi_end_io(bi, bytes, 0); + test_bit(BIO_UPTODATE, &bi->bi_flags) + ? 0 : -EIO); } + if (bio_sync(bi)) + raid5_unplug_device(q); diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/md-mmp-unplug-dev-sles11.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/md-mmp-unplug-dev-sles11.patch --- lustre-1.8.3/lustre/kernel_patches/patches/md-mmp-unplug-dev-sles11.patch 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/md-mmp-unplug-dev-sles11.patch 2010-11-17 04:31:48.000000000 +0100 @@ -6,7 +6,7 @@ bi->bi_next = *bip; *bip = bi; bi->bi_phys_segments++; -+ if (bio_sync(bi) && !forwrite) ++ if (bio_rw_flagged(bi, BIO_RW_SYNCIO) && !forwrite) + clear_bit(R5_UPTODATE, &sh->dev[dd_idx].flags); /* force to read from disk. */ spin_unlock_irq(&conf->device_lock); spin_unlock(&sh->lock); @@ -15,7 +15,7 @@ bio_endio(bi, 0); } -+ if (bio_sync(bi)) ++ if (bio_rw_flagged(bi, BIO_RW_SYNCIO)) + raid5_unplug_device(q); return 0; } diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/quota-Increase-size-of-variables-for-limits-and-ino.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-Increase-size-of-variables-for-limits-and-ino.patch --- lustre-1.8.3/lustre/kernel_patches/patches/quota-Increase-size-of-variables-for-limits-and-ino.patch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-Increase-size-of-variables-for-limits-and-ino.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,359 +0,0 @@ -From: Jan Kara -References: fate#302681 -Subject: [PATCH 02/28] quota: Increase size of variables for limits and inode usage -Patch-mainline: 2.6.29? - -So far quota was fine with quota block limits and inode limits/numbers in -a 32-bit type. Now with rapid increase in storage sizes there are coming -requests to be able to handle quota limits above 4TB / more that 2^32 inodes. -So bump up sizes of types in mem_dqblk structure to 64-bits to be able to -handle this. Also update inode allocation / checking functions to use qsize_t -and make global structure keep quota limits in bytes so that things are -consistent. - -Signed-off-by: Jan Kara ---- - fs/dquot.c | 50 ++++++++++++++++++++++++++------------------- - fs/quota_v1.c | 25 +++++++++++++++++----- - fs/quota_v2.c | 21 +++++++++++++++--- - include/linux/quota.h | 28 +++++++++++-------------- - include/linux/quotaops.h | 4 +- - 5 files changed, 79 insertions(+), 49 deletions(-) - -diff --git a/fs/dquot.c b/fs/dquot.c -index e1dac3e..758bf4a 100644 ---- a/fs/dquot.c -+++ b/fs/dquot.c -@@ -833,7 +833,7 @@ static void drop_dquot_ref(struct super_block *sb, int type) - } - } - --static inline void dquot_incr_inodes(struct dquot *dquot, unsigned long number) -+static inline void dquot_incr_inodes(struct dquot *dquot, qsize_t number) - { - dquot->dq_dqb.dqb_curinodes += number; - } -@@ -843,7 +843,7 @@ static inline void dquot_incr_space(struct dquot *dquot, qsize_t number) - dquot->dq_dqb.dqb_curspace += number; - } - --static inline void dquot_decr_inodes(struct dquot *dquot, unsigned long number) -+static inline void dquot_decr_inodes(struct dquot *dquot, qsize_t number) - { - if (dquot->dq_dqb.dqb_curinodes > number) - dquot->dq_dqb.dqb_curinodes -= number; -@@ -860,7 +860,7 @@ static inline void dquot_decr_space(struct dquot *dquot, qsize_t number) - dquot->dq_dqb.dqb_curspace -= number; - else - dquot->dq_dqb.dqb_curspace = 0; -- if (toqb(dquot->dq_dqb.dqb_curspace) <= dquot->dq_dqb.dqb_bsoftlimit) -+ if (dquot->dq_dqb.dqb_curspace <= dquot->dq_dqb.dqb_bsoftlimit) - dquot->dq_dqb.dqb_btime = (time_t) 0; - clear_bit(DQ_BLKS_B, &dquot->dq_flags); - } -@@ -1038,7 +1038,7 @@ static inline char ignore_hardlimit(struct dquot *dquot) - } - - /* needs dq_data_lock */ --static int check_idq(struct dquot *dquot, ulong inodes, char *warntype) -+static int check_idq(struct dquot *dquot, qsize_t inodes, char *warntype) - { - *warntype = QUOTA_NL_NOWARN; - if (inodes <= 0 || test_bit(DQ_FAKE_B, &dquot->dq_flags)) -@@ -1077,7 +1077,7 @@ static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, char *war - return QUOTA_OK; - - if (dquot->dq_dqb.dqb_bhardlimit && -- toqb(dquot->dq_dqb.dqb_curspace + space) > dquot->dq_dqb.dqb_bhardlimit && -+ dquot->dq_dqb.dqb_curspace + space > dquot->dq_dqb.dqb_bhardlimit && - !ignore_hardlimit(dquot)) { - if (!prealloc) - *warntype = QUOTA_NL_BHARDWARN; -@@ -1085,7 +1085,7 @@ static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, char *war - } - - if (dquot->dq_dqb.dqb_bsoftlimit && -- toqb(dquot->dq_dqb.dqb_curspace + space) > dquot->dq_dqb.dqb_bsoftlimit && -+ dquot->dq_dqb.dqb_curspace + space > dquot->dq_dqb.dqb_bsoftlimit && - dquot->dq_dqb.dqb_btime && get_seconds() >= dquot->dq_dqb.dqb_btime && - !ignore_hardlimit(dquot)) { - if (!prealloc) -@@ -1094,7 +1094,7 @@ static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, char *war - } - - if (dquot->dq_dqb.dqb_bsoftlimit && -- toqb(dquot->dq_dqb.dqb_curspace + space) > dquot->dq_dqb.dqb_bsoftlimit && -+ dquot->dq_dqb.dqb_curspace + space > dquot->dq_dqb.dqb_bsoftlimit && - dquot->dq_dqb.dqb_btime == 0) { - if (!prealloc) { - *warntype = QUOTA_NL_BSOFTWARN; -@@ -1111,7 +1111,7 @@ static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, char *war - return QUOTA_OK; - } - --static int info_idq_free(struct dquot *dquot, ulong inodes) -+static int info_idq_free(struct dquot *dquot, qsize_t inodes) - { - if (test_bit(DQ_FAKE_B, &dquot->dq_flags) || - dquot->dq_dqb.dqb_curinodes <= dquot->dq_dqb.dqb_isoftlimit) -@@ -1128,15 +1128,13 @@ static int info_idq_free(struct dquot *dquot, ulong inodes) - static int info_bdq_free(struct dquot *dquot, qsize_t space) - { - if (test_bit(DQ_FAKE_B, &dquot->dq_flags) || -- toqb(dquot->dq_dqb.dqb_curspace) <= dquot->dq_dqb.dqb_bsoftlimit) -+ dquot->dq_dqb.dqb_curspace <= dquot->dq_dqb.dqb_bsoftlimit) - return QUOTA_NL_NOWARN; - -- if (toqb(dquot->dq_dqb.dqb_curspace - space) <= -- dquot->dq_dqb.dqb_bsoftlimit) -+ if (dquot->dq_dqb.dqb_curspace - space <= dquot->dq_dqb.dqb_bsoftlimit) - return QUOTA_NL_BSOFTBELOW; -- if (toqb(dquot->dq_dqb.dqb_curspace) >= dquot->dq_dqb.dqb_bhardlimit && -- toqb(dquot->dq_dqb.dqb_curspace - space) < -- dquot->dq_dqb.dqb_bhardlimit) -+ if (dquot->dq_dqb.dqb_curspace >= dquot->dq_dqb.dqb_bhardlimit && -+ dquot->dq_dqb.dqb_curspace - space < dquot->dq_dqb.dqb_bhardlimit) - return QUOTA_NL_BHARDBELOW; - return QUOTA_NL_NOWARN; - } -@@ -1279,7 +1277,7 @@ warn_put_all: - /* - * This operation can block, but only after everything is updated - */ --int dquot_alloc_inode(const struct inode *inode, unsigned long number) -+int dquot_alloc_inode(const struct inode *inode, qsize_t number) - { - int cnt, ret = NO_QUOTA; - char warntype[MAXQUOTAS]; -@@ -1364,7 +1362,7 @@ out_sub: - /* - * This operation can block, but only after everything is updated - */ --int dquot_free_inode(const struct inode *inode, unsigned long number) -+int dquot_free_inode(const struct inode *inode, qsize_t number) - { - unsigned int cnt; - char warntype[MAXQUOTAS]; -@@ -1881,14 +1879,24 @@ int vfs_dq_quota_on_remount(struct super_block *sb) - return ret; - } - -+static inline qsize_t qbtos(qsize_t blocks) -+{ -+ return blocks << QIF_DQBLKSIZE_BITS; -+} -+ -+static inline qsize_t stoqb(qsize_t space) -+{ -+ return (space + QIF_DQBLKSIZE - 1) >> QIF_DQBLKSIZE_BITS; -+} -+ - /* Generic routine for getting common part of quota structure */ - static void do_get_dqblk(struct dquot *dquot, struct if_dqblk *di) - { - struct mem_dqblk *dm = &dquot->dq_dqb; - - spin_lock(&dq_data_lock); -- di->dqb_bhardlimit = dm->dqb_bhardlimit; -- di->dqb_bsoftlimit = dm->dqb_bsoftlimit; -+ di->dqb_bhardlimit = stoqb(dm->dqb_bhardlimit); -+ di->dqb_bsoftlimit = stoqb(dm->dqb_bsoftlimit); - di->dqb_curspace = dm->dqb_curspace; - di->dqb_ihardlimit = dm->dqb_ihardlimit; - di->dqb_isoftlimit = dm->dqb_isoftlimit; -@@ -1935,8 +1943,8 @@ static int do_set_dqblk(struct dquot *dquot, struct if_dqblk *di) - check_blim = 1; - } - if (di->dqb_valid & QIF_BLIMITS) { -- dm->dqb_bsoftlimit = di->dqb_bsoftlimit; -- dm->dqb_bhardlimit = di->dqb_bhardlimit; -+ dm->dqb_bsoftlimit = qbtos(di->dqb_bsoftlimit); -+ dm->dqb_bhardlimit = qbtos(di->dqb_bhardlimit); - check_blim = 1; - } - if (di->dqb_valid & QIF_INODES) { -@@ -1954,7 +1962,7 @@ static int do_set_dqblk(struct dquot *dquot, struct if_dqblk *di) - dm->dqb_itime = di->dqb_itime; - - if (check_blim) { -- if (!dm->dqb_bsoftlimit || toqb(dm->dqb_curspace) < dm->dqb_bsoftlimit) { -+ if (!dm->dqb_bsoftlimit || dm->dqb_curspace < dm->dqb_bsoftlimit) { - dm->dqb_btime = 0; - clear_bit(DQ_BLKS_B, &dquot->dq_flags); - } -diff --git a/fs/quota_v1.c b/fs/quota_v1.c -index 5ae15b1..3e078ee 100644 ---- a/fs/quota_v1.c -+++ b/fs/quota_v1.c -@@ -14,14 +14,27 @@ MODULE_AUTHOR("Jan Kara"); - MODULE_DESCRIPTION("Old quota format support"); - MODULE_LICENSE("GPL"); - -+#define QUOTABLOCK_BITS 10 -+#define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS) -+ -+static inline qsize_t v1_stoqb(qsize_t space) -+{ -+ return (space + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS; -+} -+ -+static inline qsize_t v1_qbtos(qsize_t blocks) -+{ -+ return blocks << QUOTABLOCK_BITS; -+} -+ - static void v1_disk2mem_dqblk(struct mem_dqblk *m, struct v1_disk_dqblk *d) - { - m->dqb_ihardlimit = d->dqb_ihardlimit; - m->dqb_isoftlimit = d->dqb_isoftlimit; - m->dqb_curinodes = d->dqb_curinodes; -- m->dqb_bhardlimit = d->dqb_bhardlimit; -- m->dqb_bsoftlimit = d->dqb_bsoftlimit; -- m->dqb_curspace = ((qsize_t)d->dqb_curblocks) << QUOTABLOCK_BITS; -+ m->dqb_bhardlimit = v1_qbtos(d->dqb_bhardlimit); -+ m->dqb_bsoftlimit = v1_qbtos(d->dqb_bsoftlimit); -+ m->dqb_curspace = v1_qbtos(d->dqb_curblocks); - m->dqb_itime = d->dqb_itime; - m->dqb_btime = d->dqb_btime; - } -@@ -31,9 +44,9 @@ static void v1_mem2disk_dqblk(struct v1_disk_dqblk *d, struct mem_dqblk *m) - d->dqb_ihardlimit = m->dqb_ihardlimit; - d->dqb_isoftlimit = m->dqb_isoftlimit; - d->dqb_curinodes = m->dqb_curinodes; -- d->dqb_bhardlimit = m->dqb_bhardlimit; -- d->dqb_bsoftlimit = m->dqb_bsoftlimit; -- d->dqb_curblocks = toqb(m->dqb_curspace); -+ d->dqb_bhardlimit = v1_stoqb(m->dqb_bhardlimit); -+ d->dqb_bsoftlimit = v1_stoqb(m->dqb_bsoftlimit); -+ d->dqb_curblocks = v1_stoqb(m->dqb_curspace); - d->dqb_itime = m->dqb_itime; - d->dqb_btime = m->dqb_btime; - } -diff --git a/fs/quota_v2.c b/fs/quota_v2.c -index b53827d..51c4717 100644 ---- a/fs/quota_v2.c -+++ b/fs/quota_v2.c -@@ -26,6 +26,19 @@ typedef char *dqbuf_t; - #define GETIDINDEX(id, depth) (((id) >> ((V2_DQTREEDEPTH-(depth)-1)*8)) & 0xff) - #define GETENTRIES(buf) ((struct v2_disk_dqblk *)(((char *)buf)+sizeof(struct v2_disk_dqdbheader))) - -+#define QUOTABLOCK_BITS 10 -+#define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS) -+ -+static inline qsize_t v2_stoqb(qsize_t space) -+{ -+ return (space + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS; -+} -+ -+static inline qsize_t v2_qbtos(qsize_t blocks) -+{ -+ return blocks << QUOTABLOCK_BITS; -+} -+ - /* Check whether given file is really vfsv0 quotafile */ - static int v2_check_quota_file(struct super_block *sb, int type) - { -@@ -104,8 +117,8 @@ static void disk2memdqb(struct mem_dqblk *m, struct v2_disk_dqblk *d) - m->dqb_isoftlimit = le32_to_cpu(d->dqb_isoftlimit); - m->dqb_curinodes = le32_to_cpu(d->dqb_curinodes); - m->dqb_itime = le64_to_cpu(d->dqb_itime); -- m->dqb_bhardlimit = le32_to_cpu(d->dqb_bhardlimit); -- m->dqb_bsoftlimit = le32_to_cpu(d->dqb_bsoftlimit); -+ m->dqb_bhardlimit = v2_qbtos(le32_to_cpu(d->dqb_bhardlimit)); -+ m->dqb_bsoftlimit = v2_qbtos(le32_to_cpu(d->dqb_bsoftlimit)); - m->dqb_curspace = le64_to_cpu(d->dqb_curspace); - m->dqb_btime = le64_to_cpu(d->dqb_btime); - } -@@ -116,8 +129,8 @@ static void mem2diskdqb(struct v2_disk_dqblk *d, struct mem_dqblk *m, qid_t id) - d->dqb_isoftlimit = cpu_to_le32(m->dqb_isoftlimit); - d->dqb_curinodes = cpu_to_le32(m->dqb_curinodes); - d->dqb_itime = cpu_to_le64(m->dqb_itime); -- d->dqb_bhardlimit = cpu_to_le32(m->dqb_bhardlimit); -- d->dqb_bsoftlimit = cpu_to_le32(m->dqb_bsoftlimit); -+ d->dqb_bhardlimit = cpu_to_le32(v2_qbtos(m->dqb_bhardlimit)); -+ d->dqb_bsoftlimit = cpu_to_le32(v2_qbtos(m->dqb_bsoftlimit)); - d->dqb_curspace = cpu_to_le64(m->dqb_curspace); - d->dqb_btime = cpu_to_le64(m->dqb_btime); - d->dqb_id = cpu_to_le32(id); -diff --git a/include/linux/quota.h b/include/linux/quota.h -index eeae7a9..5167786 100644 ---- a/include/linux/quota.h -+++ b/include/linux/quota.h -@@ -41,15 +41,6 @@ - #define __DQUOT_VERSION__ "dquot_6.5.1" - #define __DQUOT_NUM_VERSION__ 6*10000+5*100+1 - --/* Size of blocks in which are counted size limits */ --#define QUOTABLOCK_BITS 10 --#define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS) -- --/* Conversion routines from and to quota blocks */ --#define qb2kb(x) ((x) << (QUOTABLOCK_BITS-10)) --#define kb2qb(x) ((x) >> (QUOTABLOCK_BITS-10)) --#define toqb(x) (((x) + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS) -- - #define MAXQUOTAS 2 - #define USRQUOTA 0 /* element used for user quotas */ - #define GRPQUOTA 1 /* element used for group quotas */ -@@ -82,6 +73,11 @@ - #define Q_GETQUOTA 0x800007 /* get user quota structure */ - #define Q_SETQUOTA 0x800008 /* set user quota structure */ - -+/* Size of block in which space limits are passed through the quota -+ * interface */ -+#define QIF_DQBLKSIZE_BITS 10 -+#define QIF_DQBLKSIZE (1 << QIF_DQBLKSIZE_BITS) -+ - /* - * Quota structure used for communication with userspace via quotactl - * Following flags are used to specify which fields are valid -@@ -189,12 +185,12 @@ extern spinlock_t dq_data_lock; - * Data for one user/group kept in memory - */ - struct mem_dqblk { -- __u32 dqb_bhardlimit; /* absolute limit on disk blks alloc */ -- __u32 dqb_bsoftlimit; /* preferred limit on disk blks */ -+ qsize_t dqb_bhardlimit; /* absolute limit on disk blks alloc */ -+ qsize_t dqb_bsoftlimit; /* preferred limit on disk blks */ - qsize_t dqb_curspace; /* current used space */ -- __u32 dqb_ihardlimit; /* absolute limit on allocated inodes */ -- __u32 dqb_isoftlimit; /* preferred inode limit */ -- __u32 dqb_curinodes; /* current # allocated inodes */ -+ qsize_t dqb_ihardlimit; /* absolute limit on allocated inodes */ -+ qsize_t dqb_isoftlimit; /* preferred inode limit */ -+ qsize_t dqb_curinodes; /* current # allocated inodes */ - time_t dqb_btime; /* time limit for excessive disk use */ - time_t dqb_itime; /* time limit for excessive inode use */ - }; -@@ -289,9 +285,9 @@ struct dquot_operations { - int (*initialize) (struct inode *, int); - int (*drop) (struct inode *); - int (*alloc_space) (struct inode *, qsize_t, int); -- int (*alloc_inode) (const struct inode *, unsigned long); -+ int (*alloc_inode) (const struct inode *, qsize_t); - int (*free_space) (struct inode *, qsize_t); -- int (*free_inode) (const struct inode *, unsigned long); -+ int (*free_inode) (const struct inode *, qsize_t); - int (*transfer) (struct inode *, struct iattr *); - int (*write_dquot) (struct dquot *); /* Ordinary dquot write */ - struct dquot *(*alloc_dquot)(struct super_block *, int); /* Allocate memory for new dquot (can be NULL if no special entries dquot are needed) */ -diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h -index ca6b9b5..9e7bc4b 100644 ---- a/include/linux/quotaops.h -+++ b/include/linux/quotaops.h -@@ -29,10 +29,10 @@ int dquot_initialize(struct inode *inode, int type); - int dquot_drop(struct inode *inode); - - int dquot_alloc_space(struct inode *inode, qsize_t number, int prealloc); --int dquot_alloc_inode(const struct inode *inode, unsigned long number); -+int dquot_alloc_inode(const struct inode *inode, qsize_t number); - - int dquot_free_space(struct inode *inode, qsize_t number); --int dquot_free_inode(const struct inode *inode, unsigned long number); -+int dquot_free_inode(const struct inode *inode, qsize_t number); - - int dquot_transfer(struct inode *inode, struct iattr *iattr); - int dquot_commit(struct dquot *dquot); --- -1.5.2.4 - diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/quota-Split-off-quota-tree-handling-into-a-separate.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-Split-off-quota-tree-handling-into-a-separate.patch --- lustre-1.8.3/lustre/kernel_patches/patches/quota-Split-off-quota-tree-handling-into-a-separate.patch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-Split-off-quota-tree-handling-into-a-separate.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,1593 +0,0 @@ -From: Jan Kara -References: fate#302681 -Subject: [PATCH 12/28] quota: Split off quota tree handling into a separate file -Patch-mainline: 2.6.29? - -There is going to be a new version of quota format having 64-bit -quota limits and a new quota format for OCFS2. They are both -going to use the same tree structure as VFSv0 quota format. So -split out tree handling into a separate file and make size of -leaf blocks, amount of space usable in each block (needed for -checksumming) and structures contained in them configurable -so that the code can be shared. - -Signed-off-by: Jan Kara ---- - fs/Kconfig | 5 - fs/Makefile | 1 - fs/quota_tree.c | 645 ++++++++++++++++++++++++++++++++++++++++++++ - fs/quota_tree.h | 25 + - fs/quota_v2.c | 598 +++------------------------------------- - fs/quotaio_v2.h | 33 -- - include/linux/dqblk_qtree.h | 56 +++ - include/linux/dqblk_v2.h | 19 - - 8 files changed, 800 insertions(+), 582 deletions(-) - create mode 100644 fs/quota_tree.c - create mode 100644 fs/quota_tree.h - create mode 100644 include/linux/dqblk_qtree.h - -Index: linux-2.6.27.36/fs/Kconfig -=================================================================== ---- linux-2.6.27.36.orig/fs/Kconfig 2009-10-05 17:19:01.000000000 +0200 -+++ linux-2.6.27.36/fs/Kconfig 2009-10-08 16:32:48.000000000 +0200 -@@ -569,6 +569,10 @@ - Note that this behavior is currently deprecated and may go away in - future. Please use notification via netlink socket instead. - -+# Generic support for tree structured quota files. Seleted when needed. -+config QUOTA_TREE -+ tristate -+ - config QFMT_V1 - tristate "Old quota format support" - depends on QUOTA -@@ -580,6 +584,7 @@ - config QFMT_V2 - tristate "Quota format v2 support" - depends on QUOTA -+ select QUOTA_TREE - help - This quota format allows using quotas with 32-bit UIDs/GIDs. If you - need this functionality say Y here. -Index: linux-2.6.27.36/fs/Makefile -=================================================================== ---- linux-2.6.27.36.orig/fs/Makefile 2009-10-05 17:19:01.000000000 +0200 -+++ linux-2.6.27.36/fs/Makefile 2009-10-08 16:32:48.000000000 +0200 -@@ -53,6 +53,7 @@ - obj-$(CONFIG_QUOTA) += dquot.o - obj-$(CONFIG_QFMT_V1) += quota_v1.o - obj-$(CONFIG_QFMT_V2) += quota_v2.o -+obj-$(CONFIG_QUOTA_TREE) += quota_tree.o - obj-$(CONFIG_QUOTACTL) += quota.o - - obj-$(CONFIG_DNOTIFY) += dnotify.o -Index: linux-2.6.27.36/include/linux/quotaio_v2.h -=================================================================== ---- linux-2.6.27.36.orig/include/linux/quotaio_v2.h 2009-10-05 17:19:01.000000000 +0200 -+++ linux-2.6.27.36/include/linux/quotaio_v2.h 2009-10-08 16:32:48.000000000 +0200 -@@ -21,6 +21,12 @@ - 0 /* GRPQUOTA */\ - } - -+/* First generic header */ -+struct v2_disk_dqheader { -+ __le32 dqh_magic; /* Magic number identifying file */ -+ __le32 dqh_version; /* File version */ -+}; -+ - /* - * The following structure defines the format of the disk quota file - * (as it appears on disk) - the file is a radix tree whose leaves point -@@ -38,15 +44,6 @@ - __le64 dqb_itime; /* time limit for excessive inode use */ - }; - --/* -- * Here are header structures as written on disk and their in-memory copies -- */ --/* First generic header */ --struct v2_disk_dqheader { -- __le32 dqh_magic; /* Magic number identifying file */ -- __le32 dqh_version; /* File version */ --}; -- - /* Header with type and version specific information */ - struct v2_disk_dqinfo { - __le32 dqi_bgrace; /* Time before block soft limit becomes hard limit */ -@@ -57,23 +54,7 @@ - __le32 dqi_free_entry; /* Number of block with at least one free entry */ - }; - --/* -- * Structure of header of block with quota structures. It is padded to 16 bytes so -- * there will be space for exactly 21 quota-entries in a block -- */ --struct v2_disk_dqdbheader { -- __le32 dqdh_next_free; /* Number of next block with free entry */ -- __le32 dqdh_prev_free; /* Number of previous block with free entry */ -- __le16 dqdh_entries; /* Number of valid entries in block */ -- __le16 dqdh_pad1; -- __le32 dqdh_pad2; --}; -- - #define V2_DQINFOOFF sizeof(struct v2_disk_dqheader) /* Offset of info header in file */ --#define V2_DQBLKSIZE_BITS 10 --#define V2_DQBLKSIZE (1 << V2_DQBLKSIZE_BITS) /* Size of block with quota structures */ --#define V2_DQTREEOFF 1 /* Offset of tree in file in blocks */ --#define V2_DQTREEDEPTH 4 /* Depth of quota tree */ --#define V2_DQSTRINBLK ((V2_DQBLKSIZE - sizeof(struct v2_disk_dqdbheader)) / sizeof(struct v2_disk_dqblk)) /* Number of entries in one blocks */ -+#define V2_DQBLKSIZE_BITS 10 /* Size of leaf block in tree */ - - #endif /* _LINUX_QUOTAIO_V2_H */ -Index: linux-2.6.27.36/fs/quota_tree.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.27.36/fs/quota_tree.c 2009-10-08 16:32:48.000000000 +0200 -@@ -0,0 +1,645 @@ -+/* -+ * vfsv0 quota IO operations on file -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include "quota_tree.h" -+ -+MODULE_AUTHOR("Jan Kara"); -+MODULE_DESCRIPTION("Quota trie support"); -+MODULE_LICENSE("GPL"); -+ -+#define __QUOTA_QT_PARANOIA -+ -+typedef char *dqbuf_t; -+ -+static int get_index(struct qtree_mem_dqinfo *info, qid_t id, int depth) -+{ -+ unsigned int epb = info->dqi_usable_bs >> 2; -+ -+ depth = info->dqi_qtree_depth - depth - 1; -+ while (depth--) -+ id /= epb; -+ return id % epb; -+} -+ -+/* Number of entries in one blocks */ -+static inline int qtree_dqstr_in_blk(struct qtree_mem_dqinfo *info) -+{ -+ return (info->dqi_usable_bs - sizeof(struct qt_disk_dqdbheader)) -+ / info->dqi_entry_size; -+} -+ -+static dqbuf_t getdqbuf(size_t size) -+{ -+ dqbuf_t buf = kmalloc(size, GFP_NOFS); -+ if (!buf) -+ printk(KERN_WARNING "VFS: Not enough memory for quota buffers.\n"); -+ return buf; -+} -+ -+static inline void freedqbuf(dqbuf_t buf) -+{ -+ kfree(buf); -+} -+ -+static inline ssize_t read_blk(struct qtree_mem_dqinfo *info, uint blk, dqbuf_t buf) -+{ -+ struct super_block *sb = info->dqi_sb; -+ -+ memset(buf, 0, info->dqi_usable_bs); -+ return sb->s_op->quota_read(sb, info->dqi_type, (char *)buf, -+ info->dqi_usable_bs, blk << info->dqi_blocksize_bits); -+} -+ -+static inline ssize_t write_blk(struct qtree_mem_dqinfo *info, uint blk, dqbuf_t buf) -+{ -+ struct super_block *sb = info->dqi_sb; -+ -+ return sb->s_op->quota_write(sb, info->dqi_type, (char *)buf, -+ info->dqi_usable_bs, blk << info->dqi_blocksize_bits); -+} -+ -+/* Remove empty block from list and return it */ -+static int get_free_dqblk(struct qtree_mem_dqinfo *info) -+{ -+ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); -+ struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf; -+ int ret, blk; -+ -+ if (!buf) -+ return -ENOMEM; -+ if (info->dqi_free_blk) { -+ blk = info->dqi_free_blk; -+ ret = read_blk(info, blk, buf); -+ if (ret < 0) -+ goto out_buf; -+ info->dqi_free_blk = le32_to_cpu(dh->dqdh_next_free); -+ } -+ else { -+ memset(buf, 0, info->dqi_usable_bs); -+ /* Assure block allocation... */ -+ ret = write_blk(info, info->dqi_blocks, buf); -+ if (ret < 0) -+ goto out_buf; -+ blk = info->dqi_blocks++; -+ } -+ mark_info_dirty(info->dqi_sb, info->dqi_type); -+ ret = blk; -+out_buf: -+ freedqbuf(buf); -+ return ret; -+} -+ -+/* Insert empty block to the list */ -+static int put_free_dqblk(struct qtree_mem_dqinfo *info, dqbuf_t buf, uint blk) -+{ -+ struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf; -+ int err; -+ -+ dh->dqdh_next_free = cpu_to_le32(info->dqi_free_blk); -+ dh->dqdh_prev_free = cpu_to_le32(0); -+ dh->dqdh_entries = cpu_to_le16(0); -+ err = write_blk(info, blk, buf); -+ if (err < 0) -+ return err; -+ info->dqi_free_blk = blk; -+ mark_info_dirty(info->dqi_sb, info->dqi_type); -+ return 0; -+} -+ -+/* Remove given block from the list of blocks with free entries */ -+static int remove_free_dqentry(struct qtree_mem_dqinfo *info, dqbuf_t buf, uint blk) -+{ -+ dqbuf_t tmpbuf = getdqbuf(info->dqi_usable_bs); -+ struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf; -+ uint nextblk = le32_to_cpu(dh->dqdh_next_free); -+ uint prevblk = le32_to_cpu(dh->dqdh_prev_free); -+ int err; -+ -+ if (!tmpbuf) -+ return -ENOMEM; -+ if (nextblk) { -+ err = read_blk(info, nextblk, tmpbuf); -+ if (err < 0) -+ goto out_buf; -+ ((struct qt_disk_dqdbheader *)tmpbuf)->dqdh_prev_free = -+ dh->dqdh_prev_free; -+ err = write_blk(info, nextblk, tmpbuf); -+ if (err < 0) -+ goto out_buf; -+ } -+ if (prevblk) { -+ err = read_blk(info, prevblk, tmpbuf); -+ if (err < 0) -+ goto out_buf; -+ ((struct qt_disk_dqdbheader *)tmpbuf)->dqdh_next_free = -+ dh->dqdh_next_free; -+ err = write_blk(info, prevblk, tmpbuf); -+ if (err < 0) -+ goto out_buf; -+ } else { -+ info->dqi_free_entry = nextblk; -+ mark_info_dirty(info->dqi_sb, info->dqi_type); -+ } -+ freedqbuf(tmpbuf); -+ dh->dqdh_next_free = dh->dqdh_prev_free = cpu_to_le32(0); -+ /* No matter whether write succeeds block is out of list */ -+ if (write_blk(info, blk, buf) < 0) -+ printk(KERN_ERR "VFS: Can't write block (%u) with free entries.\n", blk); -+ return 0; -+out_buf: -+ freedqbuf(tmpbuf); -+ return err; -+} -+ -+/* Insert given block to the beginning of list with free entries */ -+static int insert_free_dqentry(struct qtree_mem_dqinfo *info, dqbuf_t buf, uint blk) -+{ -+ dqbuf_t tmpbuf = getdqbuf(info->dqi_usable_bs); -+ struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf; -+ int err; -+ -+ if (!tmpbuf) -+ return -ENOMEM; -+ dh->dqdh_next_free = cpu_to_le32(info->dqi_free_entry); -+ dh->dqdh_prev_free = cpu_to_le32(0); -+ err = write_blk(info, blk, buf); -+ if (err < 0) -+ goto out_buf; -+ if (info->dqi_free_entry) { -+ err = read_blk(info, info->dqi_free_entry, tmpbuf); -+ if (err < 0) -+ goto out_buf; -+ ((struct qt_disk_dqdbheader *)tmpbuf)->dqdh_prev_free = -+ cpu_to_le32(blk); -+ err = write_blk(info, info->dqi_free_entry, tmpbuf); -+ if (err < 0) -+ goto out_buf; -+ } -+ freedqbuf(tmpbuf); -+ info->dqi_free_entry = blk; -+ mark_info_dirty(info->dqi_sb, info->dqi_type); -+ return 0; -+out_buf: -+ freedqbuf(tmpbuf); -+ return err; -+} -+ -+/* Is the entry in the block free? */ -+int qtree_entry_unused(struct qtree_mem_dqinfo *info, char *disk) -+{ -+ int i; -+ -+ for (i = 0; i < info->dqi_entry_size; i++) -+ if (disk[i]) -+ return 0; -+ return 1; -+} -+EXPORT_SYMBOL(qtree_entry_unused); -+ -+/* Find space for dquot */ -+static uint find_free_dqentry(struct qtree_mem_dqinfo *info, -+ struct dquot *dquot, int *err) -+{ -+ uint blk, i; -+ struct qt_disk_dqdbheader *dh; -+ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); -+ char *ddquot; -+ -+ *err = 0; -+ if (!buf) { -+ *err = -ENOMEM; -+ return 0; -+ } -+ dh = (struct qt_disk_dqdbheader *)buf; -+ if (info->dqi_free_entry) { -+ blk = info->dqi_free_entry; -+ *err = read_blk(info, blk, buf); -+ if (*err < 0) -+ goto out_buf; -+ } else { -+ blk = get_free_dqblk(info); -+ if ((int)blk < 0) { -+ *err = blk; -+ freedqbuf(buf); -+ return 0; -+ } -+ memset(buf, 0, info->dqi_usable_bs); -+ /* This is enough as block is already zeroed and entry list is empty... */ -+ info->dqi_free_entry = blk; -+ mark_info_dirty(dquot->dq_sb, dquot->dq_type); -+ } -+ /* Block will be full? */ -+ if (le16_to_cpu(dh->dqdh_entries) + 1 >= qtree_dqstr_in_blk(info)) { -+ *err = remove_free_dqentry(info, buf, blk); -+ if (*err < 0) { -+ printk(KERN_ERR "VFS: find_free_dqentry(): Can't " -+ "remove block (%u) from entry free list.\n", -+ blk); -+ goto out_buf; -+ } -+ } -+ le16_add_cpu(&dh->dqdh_entries, 1); -+ /* Find free structure in block */ -+ for (i = 0, ddquot = ((char *)buf) + sizeof(struct qt_disk_dqdbheader); -+ i < qtree_dqstr_in_blk(info) && !qtree_entry_unused(info, ddquot); -+ i++, ddquot += info->dqi_entry_size); -+#ifdef __QUOTA_QT_PARANOIA -+ if (i == qtree_dqstr_in_blk(info)) { -+ printk(KERN_ERR "VFS: find_free_dqentry(): Data block full " -+ "but it shouldn't.\n"); -+ *err = -EIO; -+ goto out_buf; -+ } -+#endif -+ *err = write_blk(info, blk, buf); -+ if (*err < 0) { -+ printk(KERN_ERR "VFS: find_free_dqentry(): Can't write quota " -+ "data block %u.\n", blk); -+ goto out_buf; -+ } -+ dquot->dq_off = (blk << info->dqi_blocksize_bits) + -+ sizeof(struct qt_disk_dqdbheader) + -+ i * info->dqi_entry_size; -+ freedqbuf(buf); -+ return blk; -+out_buf: -+ freedqbuf(buf); -+ return 0; -+} -+ -+/* Insert reference to structure into the trie */ -+static int do_insert_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot, -+ uint *treeblk, int depth) -+{ -+ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); -+ int ret = 0, newson = 0, newact = 0; -+ __le32 *ref; -+ uint newblk; -+ -+ if (!buf) -+ return -ENOMEM; -+ if (!*treeblk) { -+ ret = get_free_dqblk(info); -+ if (ret < 0) -+ goto out_buf; -+ *treeblk = ret; -+ memset(buf, 0, info->dqi_usable_bs); -+ newact = 1; -+ } else { -+ ret = read_blk(info, *treeblk, buf); -+ if (ret < 0) { -+ printk(KERN_ERR "VFS: Can't read tree quota block " -+ "%u.\n", *treeblk); -+ goto out_buf; -+ } -+ } -+ ref = (__le32 *)buf; -+ newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); -+ if (!newblk) -+ newson = 1; -+ if (depth == info->dqi_qtree_depth - 1) { -+#ifdef __QUOTA_QT_PARANOIA -+ if (newblk) { -+ printk(KERN_ERR "VFS: Inserting already present quota " -+ "entry (block %u).\n", -+ le32_to_cpu(ref[get_index(info, -+ dquot->dq_id, depth)])); -+ ret = -EIO; -+ goto out_buf; -+ } -+#endif -+ newblk = find_free_dqentry(info, dquot, &ret); -+ } else { -+ ret = do_insert_tree(info, dquot, &newblk, depth+1); -+ } -+ if (newson && ret >= 0) { -+ ref[get_index(info, dquot->dq_id, depth)] = -+ cpu_to_le32(newblk); -+ ret = write_blk(info, *treeblk, buf); -+ } else if (newact && ret < 0) { -+ put_free_dqblk(info, buf, *treeblk); -+ } -+out_buf: -+ freedqbuf(buf); -+ return ret; -+} -+ -+/* Wrapper for inserting quota structure into tree */ -+static inline int dq_insert_tree(struct qtree_mem_dqinfo *info, -+ struct dquot *dquot) -+{ -+ int tmp = QT_TREEOFF; -+ return do_insert_tree(info, dquot, &tmp, 0); -+} -+ -+/* -+ * We don't have to be afraid of deadlocks as we never have quotas on quota files... -+ */ -+int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) -+{ -+ int type = dquot->dq_type; -+ struct super_block *sb = dquot->dq_sb; -+ ssize_t ret; -+ dqbuf_t ddquot = getdqbuf(info->dqi_entry_size); -+ -+ if (!ddquot) -+ return -ENOMEM; -+ -+ /* dq_off is guarded by dqio_mutex */ -+ if (!dquot->dq_off) { -+ ret = dq_insert_tree(info, dquot); -+ if (ret < 0) { -+ printk(KERN_ERR "VFS: Error %zd occurred while " -+ "creating quota.\n", ret); -+ freedqbuf(ddquot); -+ return ret; -+ } -+ } -+ spin_lock(&dq_data_lock); -+ info->dqi_ops->mem2disk_dqblk(ddquot, dquot); -+ spin_unlock(&dq_data_lock); -+ ret = sb->s_op->quota_write(sb, type, (char *)ddquot, -+ info->dqi_entry_size, dquot->dq_off); -+ if (ret != info->dqi_entry_size) { -+ printk(KERN_WARNING "VFS: dquota write failed on dev %s\n", -+ sb->s_id); -+ if (ret >= 0) -+ ret = -ENOSPC; -+ } else { -+ ret = 0; -+ } -+ dqstats.writes++; -+ freedqbuf(ddquot); -+ -+ return ret; -+} -+EXPORT_SYMBOL(qtree_write_dquot); -+ -+/* Free dquot entry in data block */ -+static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot, -+ uint blk) -+{ -+ struct qt_disk_dqdbheader *dh; -+ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); -+ int ret = 0; -+ -+ if (!buf) -+ return -ENOMEM; -+ if (dquot->dq_off >> info->dqi_blocksize_bits != blk) { -+ printk(KERN_ERR "VFS: Quota structure has offset to other " -+ "block (%u) than it should (%u).\n", blk, -+ (uint)(dquot->dq_off >> info->dqi_blocksize_bits)); -+ goto out_buf; -+ } -+ ret = read_blk(info, blk, buf); -+ if (ret < 0) { -+ printk(KERN_ERR "VFS: Can't read quota data block %u\n", blk); -+ goto out_buf; -+ } -+ dh = (struct qt_disk_dqdbheader *)buf; -+ le16_add_cpu(&dh->dqdh_entries, -1); -+ if (!le16_to_cpu(dh->dqdh_entries)) { /* Block got free? */ -+ ret = remove_free_dqentry(info, buf, blk); -+ if (ret >= 0) -+ ret = put_free_dqblk(info, buf, blk); -+ if (ret < 0) { -+ printk(KERN_ERR "VFS: Can't move quota data block (%u) " -+ "to free list.\n", blk); -+ goto out_buf; -+ } -+ } else { -+ memset(buf + -+ (dquot->dq_off & ((1 << info->dqi_blocksize_bits) - 1)), -+ 0, info->dqi_entry_size); -+ if (le16_to_cpu(dh->dqdh_entries) == -+ qtree_dqstr_in_blk(info) - 1) { -+ /* Insert will write block itself */ -+ ret = insert_free_dqentry(info, buf, blk); -+ if (ret < 0) { -+ printk(KERN_ERR "VFS: Can't insert quota data " -+ "block (%u) to free entry list.\n", blk); -+ goto out_buf; -+ } -+ } else { -+ ret = write_blk(info, blk, buf); -+ if (ret < 0) { -+ printk(KERN_ERR "VFS: Can't write quota data " -+ "block %u\n", blk); -+ goto out_buf; -+ } -+ } -+ } -+ dquot->dq_off = 0; /* Quota is now unattached */ -+out_buf: -+ freedqbuf(buf); -+ return ret; -+} -+ -+/* Remove reference to dquot from tree */ -+static int remove_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot, -+ uint *blk, int depth) -+{ -+ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); -+ int ret = 0; -+ uint newblk; -+ __le32 *ref = (__le32 *)buf; -+ -+ if (!buf) -+ return -ENOMEM; -+ ret = read_blk(info, *blk, buf); -+ if (ret < 0) { -+ printk(KERN_ERR "VFS: Can't read quota data block %u\n", *blk); -+ goto out_buf; -+ } -+ newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); -+ if (depth == info->dqi_qtree_depth - 1) { -+ ret = free_dqentry(info, dquot, newblk); -+ newblk = 0; -+ } else { -+ ret = remove_tree(info, dquot, &newblk, depth+1); -+ } -+ if (ret >= 0 && !newblk) { -+ int i; -+ ref[get_index(info, dquot->dq_id, depth)] = cpu_to_le32(0); -+ /* Block got empty? */ -+ for (i = 0; -+ i < (info->dqi_usable_bs >> 2) && !ref[i]; -+ i++); -+ /* Don't put the root block into the free block list */ -+ if (i == (info->dqi_usable_bs >> 2) -+ && *blk != QT_TREEOFF) { -+ put_free_dqblk(info, buf, *blk); -+ *blk = 0; -+ } else { -+ ret = write_blk(info, *blk, buf); -+ if (ret < 0) -+ printk(KERN_ERR "VFS: Can't write quota tree " -+ "block %u.\n", *blk); -+ } -+ } -+out_buf: -+ freedqbuf(buf); -+ return ret; -+} -+ -+/* Delete dquot from tree */ -+int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) -+{ -+ uint tmp = QT_TREEOFF; -+ -+ if (!dquot->dq_off) /* Even not allocated? */ -+ return 0; -+ return remove_tree(info, dquot, &tmp, 0); -+} -+EXPORT_SYMBOL(qtree_delete_dquot); -+ -+/* Find entry in block */ -+static loff_t find_block_dqentry(struct qtree_mem_dqinfo *info, -+ struct dquot *dquot, uint blk) -+{ -+ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); -+ loff_t ret = 0; -+ int i; -+ char *ddquot; -+ -+ if (!buf) -+ return -ENOMEM; -+ ret = read_blk(info, blk, buf); -+ if (ret < 0) { -+ printk(KERN_ERR "VFS: Can't read quota tree block %u.\n", blk); -+ goto out_buf; -+ } -+ for (i = 0, ddquot = ((char *)buf) + sizeof(struct qt_disk_dqdbheader); -+ i < qtree_dqstr_in_blk(info) && !info->dqi_ops->is_id(ddquot, dquot); -+ i++, ddquot += info->dqi_entry_size); -+ if (i == qtree_dqstr_in_blk(info)) { -+ printk(KERN_ERR "VFS: Quota for id %u referenced " -+ "but not present.\n", dquot->dq_id); -+ ret = -EIO; -+ goto out_buf; -+ } else { -+ ret = (blk << info->dqi_blocksize_bits) + sizeof(struct -+ qt_disk_dqdbheader) + i * info->dqi_entry_size; -+ } -+out_buf: -+ freedqbuf(buf); -+ return ret; -+} -+ -+/* Find entry for given id in the tree */ -+static loff_t find_tree_dqentry(struct qtree_mem_dqinfo *info, -+ struct dquot *dquot, uint blk, int depth) -+{ -+ dqbuf_t buf = getdqbuf(info->dqi_usable_bs); -+ loff_t ret = 0; -+ __le32 *ref = (__le32 *)buf; -+ -+ if (!buf) -+ return -ENOMEM; -+ ret = read_blk(info, blk, buf); -+ if (ret < 0) { -+ printk(KERN_ERR "VFS: Can't read quota tree block %u.\n", blk); -+ goto out_buf; -+ } -+ ret = 0; -+ blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); -+ if (!blk) /* No reference? */ -+ goto out_buf; -+ if (depth < info->dqi_qtree_depth - 1) -+ ret = find_tree_dqentry(info, dquot, blk, depth+1); -+ else -+ ret = find_block_dqentry(info, dquot, blk); -+out_buf: -+ freedqbuf(buf); -+ return ret; -+} -+ -+/* Find entry for given id in the tree - wrapper function */ -+static inline loff_t find_dqentry(struct qtree_mem_dqinfo *info, -+ struct dquot *dquot) -+{ -+ return find_tree_dqentry(info, dquot, QT_TREEOFF, 0); -+} -+ -+int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) -+{ -+ int type = dquot->dq_type; -+ struct super_block *sb = dquot->dq_sb; -+ loff_t offset; -+ dqbuf_t ddquot; -+ int ret = 0; -+ -+#ifdef __QUOTA_QT_PARANOIA -+ /* Invalidated quota? */ -+ if (!sb_dqopt(dquot->dq_sb)->files[type]) { -+ printk(KERN_ERR "VFS: Quota invalidated while reading!\n"); -+ return -EIO; -+ } -+#endif -+ /* Do we know offset of the dquot entry in the quota file? */ -+ if (!dquot->dq_off) { -+ offset = find_dqentry(info, dquot); -+ if (offset <= 0) { /* Entry not present? */ -+ if (offset < 0) -+ printk(KERN_ERR "VFS: Can't read quota " -+ "structure for id %u.\n", dquot->dq_id); -+ dquot->dq_off = 0; -+ set_bit(DQ_FAKE_B, &dquot->dq_flags); -+ memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk)); -+ ret = offset; -+ goto out; -+ } -+ dquot->dq_off = offset; -+ } -+ ddquot = getdqbuf(info->dqi_entry_size); -+ if (!ddquot) -+ return -ENOMEM; -+ ret = sb->s_op->quota_read(sb, type, (char *)ddquot, -+ info->dqi_entry_size, dquot->dq_off); -+ if (ret != info->dqi_entry_size) { -+ if (ret >= 0) -+ ret = -EIO; -+ printk(KERN_ERR "VFS: Error while reading quota " -+ "structure for id %u.\n", dquot->dq_id); -+ set_bit(DQ_FAKE_B, &dquot->dq_flags); -+ memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk)); -+ freedqbuf(ddquot); -+ goto out; -+ } -+ spin_lock(&dq_data_lock); -+ info->dqi_ops->disk2mem_dqblk(dquot, ddquot); -+ if (!dquot->dq_dqb.dqb_bhardlimit && -+ !dquot->dq_dqb.dqb_bsoftlimit && -+ !dquot->dq_dqb.dqb_ihardlimit && -+ !dquot->dq_dqb.dqb_isoftlimit) -+ set_bit(DQ_FAKE_B, &dquot->dq_flags); -+ spin_unlock(&dq_data_lock); -+ freedqbuf(ddquot); -+out: -+ dqstats.reads++; -+ return ret; -+} -+EXPORT_SYMBOL(qtree_read_dquot); -+ -+/* Check whether dquot should not be deleted. We know we are -+ * the only one operating on dquot (thanks to dq_lock) */ -+int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) -+{ -+ if (test_bit(DQ_FAKE_B, &dquot->dq_flags) && !(dquot->dq_dqb.dqb_curinodes | dquot->dq_dqb.dqb_curspace)) -+ return qtree_delete_dquot(info, dquot); -+ return 0; -+} -+EXPORT_SYMBOL(qtree_release_dquot); -Index: linux-2.6.27.36/fs/quota_tree.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.27.36/fs/quota_tree.h 2009-10-08 16:32:48.000000000 +0200 -@@ -0,0 +1,25 @@ -+/* -+ * Definitions of structures for vfsv0 quota format -+ */ -+ -+#ifndef _LINUX_QUOTA_TREE_H -+#define _LINUX_QUOTA_TREE_H -+ -+#include -+#include -+ -+/* -+ * Structure of header of block with quota structures. It is padded to 16 bytes so -+ * there will be space for exactly 21 quota-entries in a block -+ */ -+struct qt_disk_dqdbheader { -+ __le32 dqdh_next_free; /* Number of next block with free entry */ -+ __le32 dqdh_prev_free; /* Number of previous block with free entry */ -+ __le16 dqdh_entries; /* Number of valid entries in block */ -+ __le16 dqdh_pad1; -+ __le32 dqdh_pad2; -+}; -+ -+#define QT_TREEOFF 1 /* Offset of tree in file in blocks */ -+ -+#endif /* _LINUX_QUOTAIO_TREE_H */ -Index: linux-2.6.27.36/fs/quota_v2.c -=================================================================== ---- linux-2.6.27.36.orig/fs/quota_v2.c 2009-10-05 17:19:01.000000000 +0200 -+++ linux-2.6.27.36/fs/quota_v2.c 2009-10-08 16:34:36.000000000 +0200 -@@ -6,6 +6,7 @@ - #include - #include - #include -+#include "quota_tree.h" - #include - #include - #include -@@ -15,16 +16,22 @@ - - #include - -+ - MODULE_AUTHOR("Jan Kara"); - MODULE_DESCRIPTION("Quota format v2 support"); - MODULE_LICENSE("GPL"); - - #define __QUOTA_V2_PARANOIA - --typedef char *dqbuf_t; -- --#define GETIDINDEX(id, depth) (((id) >> ((V2_DQTREEDEPTH-(depth)-1)*8)) & 0xff) --#define GETENTRIES(buf) ((struct v2_disk_dqblk *)(((char *)buf)+sizeof(struct v2_disk_dqdbheader))) -+static void v2_mem2diskdqb(void *dp, struct dquot *dquot); -+static void v2_disk2memdqb(struct dquot *dquot, void *dp); -+static int v2_is_id(void *dp, struct dquot *dquot); -+ -+static struct qtree_fmt_operations v2_qtree_ops = { -+ .mem2disk_dqblk = v2_mem2diskdqb, -+ .disk2mem_dqblk = v2_disk2memdqb, -+ .is_id = v2_is_id, -+}; - - /* Check whether given file is really vfsv0 quotafile */ - static int v2_check_quota_file(struct super_block *sb, int type) -@@ -50,7 +57,7 @@ - static int v2_read_file_info(struct super_block *sb, int type) - { - struct v2_disk_dqinfo dinfo; -- struct mem_dqinfo *info = sb_dqopt(sb)->info+type; -+ struct mem_dqinfo *info = sb_dqinfo(sb, type); - ssize_t size; - - size = sb->s_op->quota_read(sb, type, (char *)&dinfo, -@@ -66,9 +73,16 @@ - info->dqi_bgrace = le32_to_cpu(dinfo.dqi_bgrace); - info->dqi_igrace = le32_to_cpu(dinfo.dqi_igrace); - info->dqi_flags = le32_to_cpu(dinfo.dqi_flags); -- info->u.v2_i.dqi_blocks = le32_to_cpu(dinfo.dqi_blocks); -- info->u.v2_i.dqi_free_blk = le32_to_cpu(dinfo.dqi_free_blk); -- info->u.v2_i.dqi_free_entry = le32_to_cpu(dinfo.dqi_free_entry); -+ info->u.v2_i.i.dqi_sb = sb; -+ info->u.v2_i.i.dqi_type = type; -+ info->u.v2_i.i.dqi_blocks = le32_to_cpu(dinfo.dqi_blocks); -+ info->u.v2_i.i.dqi_free_blk = le32_to_cpu(dinfo.dqi_free_blk); -+ info->u.v2_i.i.dqi_free_entry = le32_to_cpu(dinfo.dqi_free_entry); -+ info->u.v2_i.i.dqi_blocksize_bits = V2_DQBLKSIZE_BITS; -+ info->u.v2_i.i.dqi_usable_bs = 1 << V2_DQBLKSIZE_BITS; -+ info->u.v2_i.i.dqi_qtree_depth = qtree_depth(&info->u.v2_i.i); -+ info->u.v2_i.i.dqi_entry_size = sizeof(struct v2_disk_dqblk); -+ info->u.v2_i.i.dqi_ops = &v2_qtree_ops; - return 0; - } - -@@ -76,7 +90,7 @@ - static int v2_write_file_info(struct super_block *sb, int type) - { - struct v2_disk_dqinfo dinfo; -- struct mem_dqinfo *info = sb_dqopt(sb)->info+type; -+ struct mem_dqinfo *info = sb_dqinfo(sb, type); - ssize_t size; - - spin_lock(&dq_data_lock); -@@ -85,9 +99,9 @@ - dinfo.dqi_igrace = cpu_to_le32(info->dqi_igrace); - dinfo.dqi_flags = cpu_to_le32(info->dqi_flags & DQF_MASK); - spin_unlock(&dq_data_lock); -- dinfo.dqi_blocks = cpu_to_le32(info->u.v2_i.dqi_blocks); -- dinfo.dqi_free_blk = cpu_to_le32(info->u.v2_i.dqi_free_blk); -- dinfo.dqi_free_entry = cpu_to_le32(info->u.v2_i.dqi_free_entry); -+ dinfo.dqi_blocks = cpu_to_le32(info->u.v2_i.i.dqi_blocks); -+ dinfo.dqi_free_blk = cpu_to_le32(info->u.v2_i.i.dqi_free_blk); -+ dinfo.dqi_free_entry = cpu_to_le32(info->u.v2_i.i.dqi_free_entry); - size = sb->s_op->quota_write(sb, type, (char *)&dinfo, - sizeof(struct v2_disk_dqinfo), V2_DQINFOOFF); - if (size != sizeof(struct v2_disk_dqinfo)) { -@@ -98,8 +112,11 @@ - return 0; - } - --static void disk2memdqb(struct mem_dqblk *m, struct v2_disk_dqblk *d) -+static void v2_disk2memdqb(struct dquot *dquot, void *dp) - { -+ struct v2_disk_dqblk *d = dp, empty; -+ struct mem_dqblk *m = &dquot->dq_dqb; -+ - m->dqb_ihardlimit = le32_to_cpu(d->dqb_ihardlimit); - m->dqb_isoftlimit = le32_to_cpu(d->dqb_isoftlimit); - m->dqb_curinodes = le32_to_cpu(d->dqb_curinodes); -@@ -108,10 +125,20 @@ - m->dqb_bsoftlimit = le32_to_cpu(d->dqb_bsoftlimit); - m->dqb_curspace = le64_to_cpu(d->dqb_curspace); - m->dqb_btime = le64_to_cpu(d->dqb_btime); -+ /* We need to escape back all-zero structure */ -+ memset(&empty, 0, sizeof(struct v2_disk_dqblk)); -+ empty.dqb_itime = cpu_to_le64(1); -+ if (!memcmp(&empty, dp, sizeof(struct v2_disk_dqblk))) -+ m->dqb_itime = 0; - } - --static void mem2diskdqb(struct v2_disk_dqblk *d, struct mem_dqblk *m, qid_t id) -+static void v2_mem2diskdqb(void *dp, struct dquot *dquot) - { -+ struct v2_disk_dqblk *d = dp; -+ struct mem_dqblk *m = &dquot->dq_dqb; -+ struct qtree_mem_dqinfo *info = -+ &sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i; -+ - d->dqb_ihardlimit = cpu_to_le32(m->dqb_ihardlimit); - d->dqb_isoftlimit = cpu_to_le32(m->dqb_isoftlimit); - d->dqb_curinodes = cpu_to_le32(m->dqb_curinodes); -@@ -120,553 +147,35 @@ - d->dqb_bsoftlimit = cpu_to_le32(m->dqb_bsoftlimit); - d->dqb_curspace = cpu_to_le64(m->dqb_curspace); - d->dqb_btime = cpu_to_le64(m->dqb_btime); -- d->dqb_id = cpu_to_le32(id); --} -- --static dqbuf_t getdqbuf(void) --{ -- dqbuf_t buf = kmalloc(V2_DQBLKSIZE, GFP_NOFS); -- if (!buf) -- printk(KERN_WARNING "VFS: Not enough memory for quota buffers.\n"); -- return buf; --} -- --static inline void freedqbuf(dqbuf_t buf) --{ -- kfree(buf); --} -- --static inline ssize_t read_blk(struct super_block *sb, int type, uint blk, dqbuf_t buf) --{ -- memset(buf, 0, V2_DQBLKSIZE); -- return sb->s_op->quota_read(sb, type, (char *)buf, -- V2_DQBLKSIZE, blk << V2_DQBLKSIZE_BITS); --} -- --static inline ssize_t write_blk(struct super_block *sb, int type, uint blk, dqbuf_t buf) --{ -- return sb->s_op->quota_write(sb, type, (char *)buf, -- V2_DQBLKSIZE, blk << V2_DQBLKSIZE_BITS); -+ d->dqb_id = cpu_to_le32(dquot->dq_id); -+ if (qtree_entry_unused(info, dp)) -+ d->dqb_itime = cpu_to_le64(1); - } - --/* Remove empty block from list and return it */ --static int get_free_dqblk(struct super_block *sb, int type) -+static int v2_is_id(void *dp, struct dquot *dquot) - { -- dqbuf_t buf = getdqbuf(); -- struct mem_dqinfo *info = sb_dqinfo(sb, type); -- struct v2_disk_dqdbheader *dh = (struct v2_disk_dqdbheader *)buf; -- int ret, blk; -+ struct v2_disk_dqblk *d = dp; -+ struct qtree_mem_dqinfo *info = -+ &sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i; - -- if (!buf) -- return -ENOMEM; -- if (info->u.v2_i.dqi_free_blk) { -- blk = info->u.v2_i.dqi_free_blk; -- if ((ret = read_blk(sb, type, blk, buf)) < 0) -- goto out_buf; -- info->u.v2_i.dqi_free_blk = le32_to_cpu(dh->dqdh_next_free); -- } -- else { -- memset(buf, 0, V2_DQBLKSIZE); -- /* Assure block allocation... */ -- if ((ret = write_blk(sb, type, info->u.v2_i.dqi_blocks, buf)) < 0) -- goto out_buf; -- blk = info->u.v2_i.dqi_blocks++; -- } -- mark_info_dirty(sb, type); -- ret = blk; --out_buf: -- freedqbuf(buf); -- return ret; --} -- --/* Insert empty block to the list */ --static int put_free_dqblk(struct super_block *sb, int type, dqbuf_t buf, uint blk) --{ -- struct mem_dqinfo *info = sb_dqinfo(sb, type); -- struct v2_disk_dqdbheader *dh = (struct v2_disk_dqdbheader *)buf; -- int err; -- -- dh->dqdh_next_free = cpu_to_le32(info->u.v2_i.dqi_free_blk); -- dh->dqdh_prev_free = cpu_to_le32(0); -- dh->dqdh_entries = cpu_to_le16(0); -- info->u.v2_i.dqi_free_blk = blk; -- mark_info_dirty(sb, type); -- /* Some strange block. We had better leave it... */ -- if ((err = write_blk(sb, type, blk, buf)) < 0) -- return err; -- return 0; --} -- --/* Remove given block from the list of blocks with free entries */ --static int remove_free_dqentry(struct super_block *sb, int type, dqbuf_t buf, uint blk) --{ -- dqbuf_t tmpbuf = getdqbuf(); -- struct mem_dqinfo *info = sb_dqinfo(sb, type); -- struct v2_disk_dqdbheader *dh = (struct v2_disk_dqdbheader *)buf; -- uint nextblk = le32_to_cpu(dh->dqdh_next_free), prevblk = le32_to_cpu(dh->dqdh_prev_free); -- int err; -- -- if (!tmpbuf) -- return -ENOMEM; -- if (nextblk) { -- if ((err = read_blk(sb, type, nextblk, tmpbuf)) < 0) -- goto out_buf; -- ((struct v2_disk_dqdbheader *)tmpbuf)->dqdh_prev_free = dh->dqdh_prev_free; -- if ((err = write_blk(sb, type, nextblk, tmpbuf)) < 0) -- goto out_buf; -- } -- if (prevblk) { -- if ((err = read_blk(sb, type, prevblk, tmpbuf)) < 0) -- goto out_buf; -- ((struct v2_disk_dqdbheader *)tmpbuf)->dqdh_next_free = dh->dqdh_next_free; -- if ((err = write_blk(sb, type, prevblk, tmpbuf)) < 0) -- goto out_buf; -- } -- else { -- info->u.v2_i.dqi_free_entry = nextblk; -- mark_info_dirty(sb, type); -- } -- freedqbuf(tmpbuf); -- dh->dqdh_next_free = dh->dqdh_prev_free = cpu_to_le32(0); -- /* No matter whether write succeeds block is out of list */ -- if (write_blk(sb, type, blk, buf) < 0) -- printk(KERN_ERR "VFS: Can't write block (%u) with free entries.\n", blk); -- return 0; --out_buf: -- freedqbuf(tmpbuf); -- return err; --} -- --/* Insert given block to the beginning of list with free entries */ --static int insert_free_dqentry(struct super_block *sb, int type, dqbuf_t buf, uint blk) --{ -- dqbuf_t tmpbuf = getdqbuf(); -- struct mem_dqinfo *info = sb_dqinfo(sb, type); -- struct v2_disk_dqdbheader *dh = (struct v2_disk_dqdbheader *)buf; -- int err; -- -- if (!tmpbuf) -- return -ENOMEM; -- dh->dqdh_next_free = cpu_to_le32(info->u.v2_i.dqi_free_entry); -- dh->dqdh_prev_free = cpu_to_le32(0); -- if ((err = write_blk(sb, type, blk, buf)) < 0) -- goto out_buf; -- if (info->u.v2_i.dqi_free_entry) { -- if ((err = read_blk(sb, type, info->u.v2_i.dqi_free_entry, tmpbuf)) < 0) -- goto out_buf; -- ((struct v2_disk_dqdbheader *)tmpbuf)->dqdh_prev_free = cpu_to_le32(blk); -- if ((err = write_blk(sb, type, info->u.v2_i.dqi_free_entry, tmpbuf)) < 0) -- goto out_buf; -- } -- freedqbuf(tmpbuf); -- info->u.v2_i.dqi_free_entry = blk; -- mark_info_dirty(sb, type); -- return 0; --out_buf: -- freedqbuf(tmpbuf); -- return err; --} -- --/* Find space for dquot */ --static uint find_free_dqentry(struct dquot *dquot, int *err) --{ -- struct super_block *sb = dquot->dq_sb; -- struct mem_dqinfo *info = sb_dqopt(sb)->info+dquot->dq_type; -- uint blk, i; -- struct v2_disk_dqdbheader *dh; -- struct v2_disk_dqblk *ddquot; -- struct v2_disk_dqblk fakedquot; -- dqbuf_t buf; -- -- *err = 0; -- if (!(buf = getdqbuf())) { -- *err = -ENOMEM; -+ if (qtree_entry_unused(info, dp)) - return 0; -- } -- dh = (struct v2_disk_dqdbheader *)buf; -- ddquot = GETENTRIES(buf); -- if (info->u.v2_i.dqi_free_entry) { -- blk = info->u.v2_i.dqi_free_entry; -- if ((*err = read_blk(sb, dquot->dq_type, blk, buf)) < 0) -- goto out_buf; -- } -- else { -- blk = get_free_dqblk(sb, dquot->dq_type); -- if ((int)blk < 0) { -- *err = blk; -- freedqbuf(buf); -- return 0; -- } -- memset(buf, 0, V2_DQBLKSIZE); -- /* This is enough as block is already zeroed and entry list is empty... */ -- info->u.v2_i.dqi_free_entry = blk; -- mark_info_dirty(sb, dquot->dq_type); -- } -- if (le16_to_cpu(dh->dqdh_entries)+1 >= V2_DQSTRINBLK) /* Block will be full? */ -- if ((*err = remove_free_dqentry(sb, dquot->dq_type, buf, blk)) < 0) { -- printk(KERN_ERR "VFS: find_free_dqentry(): Can't remove block (%u) from entry free list.\n", blk); -- goto out_buf; -- } -- le16_add_cpu(&dh->dqdh_entries, 1); -- memset(&fakedquot, 0, sizeof(struct v2_disk_dqblk)); -- /* Find free structure in block */ -- for (i = 0; i < V2_DQSTRINBLK && memcmp(&fakedquot, ddquot+i, sizeof(struct v2_disk_dqblk)); i++); --#ifdef __QUOTA_V2_PARANOIA -- if (i == V2_DQSTRINBLK) { -- printk(KERN_ERR "VFS: find_free_dqentry(): Data block full but it shouldn't.\n"); -- *err = -EIO; -- goto out_buf; -- } --#endif -- if ((*err = write_blk(sb, dquot->dq_type, blk, buf)) < 0) { -- printk(KERN_ERR "VFS: find_free_dqentry(): Can't write quota data block %u.\n", blk); -- goto out_buf; -- } -- dquot->dq_off = (blk<dq_sb; -- dqbuf_t buf; -- int ret = 0, newson = 0, newact = 0; -- __le32 *ref; -- uint newblk; -- -- if (!(buf = getdqbuf())) -- return -ENOMEM; -- if (!*treeblk) { -- ret = get_free_dqblk(sb, dquot->dq_type); -- if (ret < 0) -- goto out_buf; -- *treeblk = ret; -- memset(buf, 0, V2_DQBLKSIZE); -- newact = 1; -- } -- else { -- if ((ret = read_blk(sb, dquot->dq_type, *treeblk, buf)) < 0) { -- printk(KERN_ERR "VFS: Can't read tree quota block %u.\n", *treeblk); -- goto out_buf; -- } -- } -- ref = (__le32 *)buf; -- newblk = le32_to_cpu(ref[GETIDINDEX(dquot->dq_id, depth)]); -- if (!newblk) -- newson = 1; -- if (depth == V2_DQTREEDEPTH-1) { --#ifdef __QUOTA_V2_PARANOIA -- if (newblk) { -- printk(KERN_ERR "VFS: Inserting already present quota entry (block %u).\n", le32_to_cpu(ref[GETIDINDEX(dquot->dq_id, depth)])); -- ret = -EIO; -- goto out_buf; -- } --#endif -- newblk = find_free_dqentry(dquot, &ret); -- } -- else -- ret = do_insert_tree(dquot, &newblk, depth+1); -- if (newson && ret >= 0) { -- ref[GETIDINDEX(dquot->dq_id, depth)] = cpu_to_le32(newblk); -- ret = write_blk(sb, dquot->dq_type, *treeblk, buf); -- } -- else if (newact && ret < 0) -- put_free_dqblk(sb, dquot->dq_type, buf, *treeblk); --out_buf: -- freedqbuf(buf); -- return ret; -+ return le32_to_cpu(d->dqb_id) == dquot->dq_id; - } - --/* Wrapper for inserting quota structure into tree */ --static inline int dq_insert_tree(struct dquot *dquot) -+static int v2_read_dquot(struct dquot *dquot) - { -- int tmp = V2_DQTREEOFF; -- return do_insert_tree(dquot, &tmp, 0); -+ return qtree_read_dquot(&sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i, dquot); - } - --/* -- * We don't have to be afraid of deadlocks as we never have quotas on quota files... -- */ - static int v2_write_dquot(struct dquot *dquot) - { -- int type = dquot->dq_type; -- ssize_t ret; -- struct v2_disk_dqblk ddquot, empty; -- -- /* dq_off is guarded by dqio_mutex */ -- if (!dquot->dq_off) -- if ((ret = dq_insert_tree(dquot)) < 0) { -- printk(KERN_ERR "VFS: Error %zd occurred while creating quota.\n", ret); -- return ret; -- } -- spin_lock(&dq_data_lock); -- mem2diskdqb(&ddquot, &dquot->dq_dqb, dquot->dq_id); -- /* Argh... We may need to write structure full of zeroes but that would be -- * treated as an empty place by the rest of the code. Format change would -- * be definitely cleaner but the problems probably are not worth it */ -- memset(&empty, 0, sizeof(struct v2_disk_dqblk)); -- if (!memcmp(&empty, &ddquot, sizeof(struct v2_disk_dqblk))) -- ddquot.dqb_itime = cpu_to_le64(1); -- spin_unlock(&dq_data_lock); -- ret = dquot->dq_sb->s_op->quota_write(dquot->dq_sb, type, -- (char *)&ddquot, sizeof(struct v2_disk_dqblk), dquot->dq_off); -- if (ret != sizeof(struct v2_disk_dqblk)) { -- printk(KERN_WARNING "VFS: dquota write failed on dev %s\n", dquot->dq_sb->s_id); -- if (ret >= 0) -- ret = -ENOSPC; -- } -- else -- ret = 0; -- dqstats.writes++; -- -- return ret; --} -- --/* Free dquot entry in data block */ --static int free_dqentry(struct dquot *dquot, uint blk) --{ -- struct super_block *sb = dquot->dq_sb; -- int type = dquot->dq_type; -- struct v2_disk_dqdbheader *dh; -- dqbuf_t buf = getdqbuf(); -- int ret = 0; -- -- if (!buf) -- return -ENOMEM; -- if (dquot->dq_off >> V2_DQBLKSIZE_BITS != blk) { -- printk(KERN_ERR "VFS: Quota structure has offset to other " -- "block (%u) than it should (%u).\n", blk, -- (uint)(dquot->dq_off >> V2_DQBLKSIZE_BITS)); -- goto out_buf; -- } -- if ((ret = read_blk(sb, type, blk, buf)) < 0) { -- printk(KERN_ERR "VFS: Can't read quota data block %u\n", blk); -- goto out_buf; -- } -- dh = (struct v2_disk_dqdbheader *)buf; -- le16_add_cpu(&dh->dqdh_entries, -1); -- if (!le16_to_cpu(dh->dqdh_entries)) { /* Block got free? */ -- if ((ret = remove_free_dqentry(sb, type, buf, blk)) < 0 || -- (ret = put_free_dqblk(sb, type, buf, blk)) < 0) { -- printk(KERN_ERR "VFS: Can't move quota data block (%u) " -- "to free list.\n", blk); -- goto out_buf; -- } -- } -- else { -- memset(buf+(dquot->dq_off & ((1 << V2_DQBLKSIZE_BITS)-1)), 0, -- sizeof(struct v2_disk_dqblk)); -- if (le16_to_cpu(dh->dqdh_entries) == V2_DQSTRINBLK-1) { -- /* Insert will write block itself */ -- if ((ret = insert_free_dqentry(sb, type, buf, blk)) < 0) { -- printk(KERN_ERR "VFS: Can't insert quota data block (%u) to free entry list.\n", blk); -- goto out_buf; -- } -- } -- else -- if ((ret = write_blk(sb, type, blk, buf)) < 0) { -- printk(KERN_ERR "VFS: Can't write quota data " -- "block %u\n", blk); -- goto out_buf; -- } -- } -- dquot->dq_off = 0; /* Quota is now unattached */ --out_buf: -- freedqbuf(buf); -- return ret; --} -- --/* Remove reference to dquot from tree */ --static int remove_tree(struct dquot *dquot, uint *blk, int depth) --{ -- struct super_block *sb = dquot->dq_sb; -- int type = dquot->dq_type; -- dqbuf_t buf = getdqbuf(); -- int ret = 0; -- uint newblk; -- __le32 *ref = (__le32 *)buf; -- -- if (!buf) -- return -ENOMEM; -- if ((ret = read_blk(sb, type, *blk, buf)) < 0) { -- printk(KERN_ERR "VFS: Can't read quota data block %u\n", *blk); -- goto out_buf; -- } -- newblk = le32_to_cpu(ref[GETIDINDEX(dquot->dq_id, depth)]); -- if (depth == V2_DQTREEDEPTH-1) { -- ret = free_dqentry(dquot, newblk); -- newblk = 0; -- } -- else -- ret = remove_tree(dquot, &newblk, depth+1); -- if (ret >= 0 && !newblk) { -- int i; -- ref[GETIDINDEX(dquot->dq_id, depth)] = cpu_to_le32(0); -- for (i = 0; i < V2_DQBLKSIZE && !buf[i]; i++); /* Block got empty? */ -- /* Don't put the root block into the free block list */ -- if (i == V2_DQBLKSIZE && *blk != V2_DQTREEOFF) { -- put_free_dqblk(sb, type, buf, *blk); -- *blk = 0; -- } -- else -- if ((ret = write_blk(sb, type, *blk, buf)) < 0) -- printk(KERN_ERR "VFS: Can't write quota tree " -- "block %u.\n", *blk); -- } --out_buf: -- freedqbuf(buf); -- return ret; --} -- --/* Delete dquot from tree */ --static int v2_delete_dquot(struct dquot *dquot) --{ -- uint tmp = V2_DQTREEOFF; -- -- if (!dquot->dq_off) /* Even not allocated? */ -- return 0; -- return remove_tree(dquot, &tmp, 0); --} -- --/* Find entry in block */ --static loff_t find_block_dqentry(struct dquot *dquot, uint blk) --{ -- dqbuf_t buf = getdqbuf(); -- loff_t ret = 0; -- int i; -- struct v2_disk_dqblk *ddquot = GETENTRIES(buf); -- -- if (!buf) -- return -ENOMEM; -- if ((ret = read_blk(dquot->dq_sb, dquot->dq_type, blk, buf)) < 0) { -- printk(KERN_ERR "VFS: Can't read quota tree block %u.\n", blk); -- goto out_buf; -- } -- if (dquot->dq_id) -- for (i = 0; i < V2_DQSTRINBLK && -- le32_to_cpu(ddquot[i].dqb_id) != dquot->dq_id; i++); -- else { /* ID 0 as a bit more complicated searching... */ -- struct v2_disk_dqblk fakedquot; -- -- memset(&fakedquot, 0, sizeof(struct v2_disk_dqblk)); -- for (i = 0; i < V2_DQSTRINBLK; i++) -- if (!le32_to_cpu(ddquot[i].dqb_id) && -- memcmp(&fakedquot, ddquot+i, sizeof(struct v2_disk_dqblk))) -- break; -- } -- if (i == V2_DQSTRINBLK) { -- printk(KERN_ERR "VFS: Quota for id %u referenced " -- "but not present.\n", dquot->dq_id); -- ret = -EIO; -- goto out_buf; -- } -- else -- ret = (blk << V2_DQBLKSIZE_BITS) + sizeof(struct -- v2_disk_dqdbheader) + i * sizeof(struct v2_disk_dqblk); --out_buf: -- freedqbuf(buf); -- return ret; --} -- --/* Find entry for given id in the tree */ --static loff_t find_tree_dqentry(struct dquot *dquot, uint blk, int depth) --{ -- dqbuf_t buf = getdqbuf(); -- loff_t ret = 0; -- __le32 *ref = (__le32 *)buf; -- -- if (!buf) -- return -ENOMEM; -- if ((ret = read_blk(dquot->dq_sb, dquot->dq_type, blk, buf)) < 0) { -- printk(KERN_ERR "VFS: Can't read quota tree block %u.\n", blk); -- goto out_buf; -- } -- ret = 0; -- blk = le32_to_cpu(ref[GETIDINDEX(dquot->dq_id, depth)]); -- if (!blk) /* No reference? */ -- goto out_buf; -- if (depth < V2_DQTREEDEPTH-1) -- ret = find_tree_dqentry(dquot, blk, depth+1); -- else -- ret = find_block_dqentry(dquot, blk); --out_buf: -- freedqbuf(buf); -- return ret; -+ return qtree_write_dquot(&sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i, dquot); - } - --/* Find entry for given id in the tree - wrapper function */ --static inline loff_t find_dqentry(struct dquot *dquot) --{ -- return find_tree_dqentry(dquot, V2_DQTREEOFF, 0); --} -- --static int v2_read_dquot(struct dquot *dquot) --{ -- int type = dquot->dq_type; -- loff_t offset; -- struct v2_disk_dqblk ddquot, empty; -- int ret = 0; -- --#ifdef __QUOTA_V2_PARANOIA -- /* Invalidated quota? */ -- if (!dquot->dq_sb || !sb_dqopt(dquot->dq_sb)->files[type]) { -- printk(KERN_ERR "VFS: Quota invalidated while reading!\n"); -- return -EIO; -- } --#endif -- offset = find_dqentry(dquot); -- if (offset <= 0) { /* Entry not present? */ -- if (offset < 0) -- printk(KERN_ERR "VFS: Can't read quota " -- "structure for id %u.\n", dquot->dq_id); -- dquot->dq_off = 0; -- set_bit(DQ_FAKE_B, &dquot->dq_flags); -- memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk)); -- ret = offset; -- } -- else { -- dquot->dq_off = offset; -- if ((ret = dquot->dq_sb->s_op->quota_read(dquot->dq_sb, type, -- (char *)&ddquot, sizeof(struct v2_disk_dqblk), offset)) -- != sizeof(struct v2_disk_dqblk)) { -- if (ret >= 0) -- ret = -EIO; -- printk(KERN_ERR "VFS: Error while reading quota " -- "structure for id %u.\n", dquot->dq_id); -- memset(&ddquot, 0, sizeof(struct v2_disk_dqblk)); -- } -- else { -- ret = 0; -- /* We need to escape back all-zero structure */ -- memset(&empty, 0, sizeof(struct v2_disk_dqblk)); -- empty.dqb_itime = cpu_to_le64(1); -- if (!memcmp(&empty, &ddquot, sizeof(struct v2_disk_dqblk))) -- ddquot.dqb_itime = 0; -- } -- disk2memdqb(&dquot->dq_dqb, &ddquot); -- if (!dquot->dq_dqb.dqb_bhardlimit && -- !dquot->dq_dqb.dqb_bsoftlimit && -- !dquot->dq_dqb.dqb_ihardlimit && -- !dquot->dq_dqb.dqb_isoftlimit) -- set_bit(DQ_FAKE_B, &dquot->dq_flags); -- } -- dqstats.reads++; -- -- return ret; --} -- --/* Check whether dquot should not be deleted. We know we are -- * the only one operating on dquot (thanks to dq_lock) */ - static int v2_release_dquot(struct dquot *dquot) - { -- if (test_bit(DQ_FAKE_B, &dquot->dq_flags) && !(dquot->dq_dqb.dqb_curinodes | dquot->dq_dqb.dqb_curspace)) -- return v2_delete_dquot(dquot); -- return 0; -+ return qtree_release_dquot(&sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i, dquot); - } - - static struct quota_format_ops v2_format_ops = { -Index: linux-2.6.27.36/include/linux/dqblk_qtree.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.27.36/include/linux/dqblk_qtree.h 2009-10-08 16:32:48.000000000 +0200 -@@ -0,0 +1,56 @@ -+/* -+ * Definitions of structures and functions for quota formats using trie -+ */ -+ -+#ifndef _LINUX_DQBLK_QTREE_H -+#define _LINUX_DQBLK_QTREE_H -+ -+#include -+ -+/* Numbers of blocks needed for updates - we count with the smallest -+ * possible block size (1024) */ -+#define QTREE_INIT_ALLOC 4 -+#define QTREE_INIT_REWRITE 2 -+#define QTREE_DEL_ALLOC 0 -+#define QTREE_DEL_REWRITE 6 -+ -+struct dquot; -+ -+/* Operations */ -+struct qtree_fmt_operations { -+ void (*mem2disk_dqblk)(void *disk, struct dquot *dquot); /* Convert given entry from in memory format to disk one */ -+ void (*disk2mem_dqblk)(struct dquot *dquot, void *disk); /* Convert given entry from disk format to in memory one */ -+ int (*is_id)(void *disk, struct dquot *dquot); /* Is this structure for given id? */ -+}; -+ -+/* Inmemory copy of version specific information */ -+struct qtree_mem_dqinfo { -+ struct super_block *dqi_sb; /* Sb quota is on */ -+ int dqi_type; /* Quota type */ -+ unsigned int dqi_blocks; /* # of blocks in quota file */ -+ unsigned int dqi_free_blk; /* First block in list of free blocks */ -+ unsigned int dqi_free_entry; /* First block with free entry */ -+ unsigned int dqi_blocksize_bits; /* Block size of quota file */ -+ unsigned int dqi_entry_size; /* Size of quota entry in quota file */ -+ unsigned int dqi_usable_bs; /* Space usable in block for quota data */ -+ unsigned int dqi_qtree_depth; /* Precomputed depth of quota tree */ -+ struct qtree_fmt_operations *dqi_ops; /* Operations for entry manipulation */ -+}; -+ -+int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); -+int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); -+int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); -+int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); -+int qtree_entry_unused(struct qtree_mem_dqinfo *info, char *disk); -+static inline int qtree_depth(struct qtree_mem_dqinfo *info) -+{ -+ unsigned int epb = info->dqi_usable_bs >> 2; -+ unsigned long long entries = epb; -+ int i; -+ -+ for (i = 1; entries < (1ULL << 32); i++) -+ entries *= epb; -+ return i; -+} -+ -+#endif /* _LINUX_DQBLK_QTREE_H */ -Index: linux-2.6.27.36/include/linux/dqblk_v2.h -=================================================================== ---- linux-2.6.27.36.orig/include/linux/dqblk_v2.h 2009-10-05 17:19:01.000000000 +0200 -+++ linux-2.6.27.36/include/linux/dqblk_v2.h 2009-10-08 16:32:48.000000000 +0200 -@@ -1,26 +1,23 @@ - /* -- * Definitions of structures for vfsv0 quota format -+ * Definitions for vfsv0 quota format - */ - - #ifndef _LINUX_DQBLK_V2_H - #define _LINUX_DQBLK_V2_H - --#include -+#include - --/* id numbers of quota format */ -+/* Id number of quota format */ - #define QFMT_VFS_V0 2 - - /* Numbers of blocks needed for updates */ --#define V2_INIT_ALLOC 4 --#define V2_INIT_REWRITE 2 --#define V2_DEL_ALLOC 0 --#define V2_DEL_REWRITE 6 -+#define V2_INIT_ALLOC QTREE_INIT_ALLOC -+#define V2_INIT_REWRITE QTREE_INIT_REWRITE -+#define V2_DEL_ALLOC QTREE_DEL_ALLOC -+#define V2_DEL_REWRITE QTREE_DEL_REWRITE - --/* Inmemory copy of version specific information */ - struct v2_mem_dqinfo { -- unsigned int dqi_blocks; -- unsigned int dqi_free_blk; -- unsigned int dqi_free_entry; -+ struct qtree_mem_dqinfo i; - }; - - #endif /* _LINUX_DQBLK_V2_H */ diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/quota-support-64-bit-quota-format-2.6.27-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-support-64-bit-quota-format-2.6.27-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/quota-support-64-bit-quota-format-2.6.27-vanilla.patch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-support-64-bit-quota-format-2.6.27-vanilla.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,282 +0,0 @@ -From: Jan Kara - -Implement conversion functions for new version (version 1) of quota format -which supports 64-bit block and inode limits and 64-bit inode usage. The -original implementation has been written by Andrew Perepechko. - -Signed-off-by: Andrew Perepechko -Signed-off-by: Jan Kara -Signed-off-by: Andrew Morton ---- - - fs/quota_v2.c | 140 ++++++++++++++++++++++++++++++++++++---------- - fs/quotaio_v2.h | 26 ++++++-- - 2 files changed, 132 insertions(+), 34 deletions(-) - -Index: linux-2.6.27.36/fs/quota_v2.c -=================================================================== ---- linux-2.6.27.36.orig/fs/quota_v2.c 2009-10-09 17:00:48.000000000 +0200 -+++ linux-2.6.27.36/fs/quota_v2.c 2009-10-09 17:03:35.000000000 +0200 -@@ -23,14 +23,24 @@ - - #define __QUOTA_V2_PARANOIA - --static void v2_mem2diskdqb(void *dp, struct dquot *dquot); --static void v2_disk2memdqb(struct dquot *dquot, void *dp); --static int v2_is_id(void *dp, struct dquot *dquot); -- --static struct qtree_fmt_operations v2_qtree_ops = { -- .mem2disk_dqblk = v2_mem2diskdqb, -- .disk2mem_dqblk = v2_disk2memdqb, -- .is_id = v2_is_id, -+static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot); -+static void v2r0_disk2memdqb(struct dquot *dquot, void *dp); -+static int v2r0_is_id(void *dp, struct dquot *dquot); -+ -+static struct qtree_fmt_operations v2r0_qtree_ops = { -+ .mem2disk_dqblk = v2r0_mem2diskdqb, -+ .disk2mem_dqblk = v2r0_disk2memdqb, -+ .is_id = v2r0_is_id, -+}; -+ -+static void v2r1_mem2diskdqb(void *dp, struct dquot *dquot); -+static void v2r1_disk2memdqb(struct dquot *dquot, void *dp); -+static int v2r1_is_id(void *dp, struct dquot *dquot); -+ -+static struct qtree_fmt_operations v2r1_qtree_ops = { -+ .mem2disk_dqblk = v2r1_mem2diskdqb, -+ .disk2mem_dqblk = v2r1_disk2memdqb, -+ .is_id = v2r1_is_id, - }; - - #define QUOTABLOCK_BITS 10 -@@ -46,8 +56,7 @@ - return blocks << QUOTABLOCK_BITS; - } - --/* Check whether given file is really vfsv0 quotafile */ --static int v2_check_quota_file(struct super_block *sb, int type) -+static int v2_check_quota_file_header(struct super_block *sb, int type) - { - struct v2_disk_dqheader dqhead; - ssize_t size; -@@ -58,12 +67,20 @@ - if (size != sizeof(struct v2_disk_dqheader)) { - printk("quota_v2: failed read expected=%zd got=%zd\n", - sizeof(struct v2_disk_dqheader), size); -- return 0; -+ return -EIO; - } -- if (le32_to_cpu(dqhead.dqh_magic) != quota_magics[type] || -- le32_to_cpu(dqhead.dqh_version) != quota_versions[type]) -- return 0; -- return 1; -+ if (le32_to_cpu(dqhead.dqh_magic) != quota_magics[type]) -+ return -ENOENT; -+ if (le32_to_cpu(dqhead.dqh_version) > quota_versions[type]) -+ return -EOPNOTSUPP; -+ return le32_to_cpu(dqhead.dqh_version); -+} -+ -+ -+/* Check whether given file is really vfsv0 quotafile */ -+static int v2_check_quota_file(struct super_block *sb, int type) -+{ -+ return v2_check_quota_file_header(sb, type) >= 0; - } - - /* Read information header from quota file */ -@@ -72,7 +89,13 @@ - struct v2_disk_dqinfo dinfo; - struct mem_dqinfo *info = sb_dqinfo(sb, type); - ssize_t size; -+ int version = v2_check_quota_file_header(sb, type); - -+ if (version < 0) { -+ printk(KERN_WARNING "Cannot identify quota file version on " -+ "device %s: %d\n", sb->s_id, version); -+ return -1; -+ } - size = sb->s_op->quota_read(sb, type, (char *)&dinfo, - sizeof(struct v2_disk_dqinfo), V2_DQINFOOFF); - if (size != sizeof(struct v2_disk_dqinfo)) { -@@ -81,8 +104,14 @@ - return -1; - } - /* limits are stored as unsigned 32-bit data */ -- info->dqi_maxblimit = 0xffffffff; -- info->dqi_maxilimit = 0xffffffff; -+ if (version == 0) { -+ /* limits are stored as unsigned 32-bit data */ -+ info->dqi_maxblimit = 0xffffffff; -+ info->dqi_maxilimit = 0xffffffff; -+ } else { -+ info->dqi_maxblimit = 0x7fffffffffffffffULL; -+ info->dqi_maxilimit = 0x7fffffffffffffffULL; -+ } - info->dqi_bgrace = le32_to_cpu(dinfo.dqi_bgrace); - info->dqi_igrace = le32_to_cpu(dinfo.dqi_igrace); - info->dqi_flags = le32_to_cpu(dinfo.dqi_flags); -@@ -94,8 +123,13 @@ - info->u.v2_i.i.dqi_blocksize_bits = V2_DQBLKSIZE_BITS; - info->u.v2_i.i.dqi_usable_bs = 1 << V2_DQBLKSIZE_BITS; - info->u.v2_i.i.dqi_qtree_depth = qtree_depth(&info->u.v2_i.i); -- info->u.v2_i.i.dqi_entry_size = sizeof(struct v2_disk_dqblk); -- info->u.v2_i.i.dqi_ops = &v2_qtree_ops; -+ if (version == 0) { -+ qinfo->dqi_entry_size = sizeof(struct v2r0_disk_dqblk); -+ qinfo->dqi_ops = &v2r0_qtree_ops; -+ } else { -+ qinfo->dqi_entry_size = sizeof(struct v2r1_disk_dqblk); -+ qinfo->dqi_ops = &v2r1_qtree_ops; -+ } - return 0; - } - -@@ -125,9 +159,9 @@ - return 0; - } - --static void v2_disk2memdqb(struct dquot *dquot, void *dp) -+static void v2r0_disk2memdqb(struct dquot *dquot, void *dp) - { -- struct v2_disk_dqblk *d = dp, empty; -+ struct v2r0_disk_dqblk *d = dp, empty; - struct mem_dqblk *m = &dquot->dq_dqb; - - m->dqb_ihardlimit = le32_to_cpu(d->dqb_ihardlimit); -@@ -139,15 +173,15 @@ - m->dqb_curspace = le64_to_cpu(d->dqb_curspace); - m->dqb_btime = le64_to_cpu(d->dqb_btime); - /* We need to escape back all-zero structure */ -- memset(&empty, 0, sizeof(struct v2_disk_dqblk)); -+ memset(&empty, 0, sizeof(struct v2r0_disk_dqblk)); - empty.dqb_itime = cpu_to_le64(1); -- if (!memcmp(&empty, dp, sizeof(struct v2_disk_dqblk))) -+ if (!memcmp(&empty, dp, sizeof(struct v2r0_disk_dqblk))) - m->dqb_itime = 0; - } - --static void v2_mem2diskdqb(void *dp, struct dquot *dquot) -+static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot) - { -- struct v2_disk_dqblk *d = dp; -+ struct v2r0_disk_dqblk *d = dp; - struct mem_dqblk *m = &dquot->dq_dqb; - struct qtree_mem_dqinfo *info = - &sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i; -@@ -165,9 +199,60 @@ - d->dqb_itime = cpu_to_le64(1); - } - --static int v2_is_id(void *dp, struct dquot *dquot) -+static int v2r0_is_id(void *dp, struct dquot *dquot) -+{ -+ struct v2r0_disk_dqblk *d = dp; -+ struct qtree_mem_dqinfo *info = -+ sb_dqinfo(dquot->dq_sb, dquot->dq_type)->dqi_priv; -+ -+ if (qtree_entry_unused(info, dp)) -+ return 0; -+ return le32_to_cpu(d->dqb_id) == dquot->dq_id; -+} -+ -+static void v2r1_disk2memdqb(struct dquot *dquot, void *dp) -+{ -+ struct v2r1_disk_dqblk *d = dp, empty; -+ struct mem_dqblk *m = &dquot->dq_dqb; -+ -+ m->dqb_ihardlimit = le64_to_cpu(d->dqb_ihardlimit); -+ m->dqb_isoftlimit = le64_to_cpu(d->dqb_isoftlimit); -+ m->dqb_curinodes = le64_to_cpu(d->dqb_curinodes); -+ m->dqb_itime = le64_to_cpu(d->dqb_itime); -+ m->dqb_bhardlimit = v2_qbtos(le64_to_cpu(d->dqb_bhardlimit)); -+ m->dqb_bsoftlimit = v2_qbtos(le64_to_cpu(d->dqb_bsoftlimit)); -+ m->dqb_curspace = le64_to_cpu(d->dqb_curspace); -+ m->dqb_btime = le64_to_cpu(d->dqb_btime); -+ /* We need to escape back all-zero structure */ -+ memset(&empty, 0, sizeof(struct v2r1_disk_dqblk)); -+ empty.dqb_itime = cpu_to_le64(1); -+ if (!memcmp(&empty, dp, sizeof(struct v2r1_disk_dqblk))) -+ m->dqb_itime = 0; -+} -+ -+static void v2r1_mem2diskdqb(void *dp, struct dquot *dquot) -+{ -+ struct v2r1_disk_dqblk *d = dp; -+ struct mem_dqblk *m = &dquot->dq_dqb; -+ struct qtree_mem_dqinfo *info = -+ sb_dqinfo(dquot->dq_sb, dquot->dq_type)->dqi_priv; -+ -+ d->dqb_ihardlimit = cpu_to_le64(m->dqb_ihardlimit); -+ d->dqb_isoftlimit = cpu_to_le64(m->dqb_isoftlimit); -+ d->dqb_curinodes = cpu_to_le64(m->dqb_curinodes); -+ d->dqb_itime = cpu_to_le64(m->dqb_itime); -+ d->dqb_bhardlimit = cpu_to_le64(v2_stoqb(m->dqb_bhardlimit)); -+ d->dqb_bsoftlimit = cpu_to_le64(v2_stoqb(m->dqb_bsoftlimit)); -+ d->dqb_curspace = cpu_to_le64(m->dqb_curspace); -+ d->dqb_btime = cpu_to_le64(m->dqb_btime); -+ d->dqb_id = cpu_to_le32(dquot->dq_id); -+ if (qtree_entry_unused(info, dp)) -+ d->dqb_itime = cpu_to_le64(1); -+} -+ -+static int v2r1_is_id(void *dp, struct dquot *dquot) - { -- struct v2_disk_dqblk *d = dp; -+ struct v2r1_disk_dqblk *d = dp; - struct qtree_mem_dqinfo *info = - &sb_dqinfo(dquot->dq_sb, dquot->dq_type)->u.v2_i.i; - -Index: linux-2.6.27.36/include/linux/quotaio_v2.h -=================================================================== ---- linux-2.6.27.36.orig/include/linux/quotaio_v2.h 2009-10-09 17:00:48.000000000 +0200 -+++ linux-2.6.27.36/include/linux/quotaio_v2.h 2009-10-09 17:00:56.000000000 +0200 -@@ -17,8 +17,8 @@ - } - - #define V2_INITQVERSIONS {\ -- 0, /* USRQUOTA */\ -- 0 /* GRPQUOTA */\ -+ 1, /* USRQUOTA */\ -+ 1 /* GRPQUOTA */\ - } - - /* First generic header */ -@@ -28,11 +28,11 @@ - }; - - /* -- * The following structure defines the format of the disk quota file -- * (as it appears on disk) - the file is a radix tree whose leaves point -- * to blocks of these structures. -+ * The following structure defines the format of the disk quota file in version -+ * 0 - the file is a radix tree whose leaves point to blocks of these -+ * structures. - */ --struct v2_disk_dqblk { -+struct v2r0_disk_dqblk { - __le32 dqb_id; /* id this quota applies to */ - __le32 dqb_ihardlimit; /* absolute limit on allocated inodes */ - __le32 dqb_isoftlimit; /* preferred inode limit */ -@@ -44,6 +44,20 @@ - __le64 dqb_itime; /* time limit for excessive inode use */ - }; - -+/* The same structure in quota file version 1 */ -+struct v2r1_disk_dqblk { -+ __le32 dqb_id; /* id this quota applies to */ -+ __le32 dqb_padding; /* padding field */ -+ __le64 dqb_ihardlimit; /* absolute limit on allocated inodes */ -+ __le64 dqb_isoftlimit; /* preferred inode limit */ -+ __le64 dqb_curinodes; /* current # allocated inodes */ -+ __le64 dqb_bhardlimit; /* absolute limit on disk space */ -+ __le64 dqb_bsoftlimit; /* preferred limit on disk space */ -+ __le64 dqb_curspace; /* current space occupied (in bytes) */ -+ __le64 dqb_btime; /* time limit for excessive disk use */ -+ __le64 dqb_itime; /* time limit for excessive inode use */ -+}; -+ - /* Header with type and version specific information */ - struct v2_disk_dqinfo { - __le32 dqi_bgrace; /* Time before block soft limit becomes hard limit */ diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/quota-support-64-bit-quota-format.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-support-64-bit-quota-format.patch --- lustre-1.8.3/lustre/kernel_patches/patches/quota-support-64-bit-quota-format.patch 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/quota-support-64-bit-quota-format.patch 2010-11-17 04:31:48.000000000 +0100 @@ -14,8 +14,8 @@ 2 files changed, 132 insertions(+), 34 deletions(-) diff -puN fs/quota_v2.c~quota-support-64-bit-quota-format fs/quota_v2.c ---- a/fs/quota_v2.c~quota-support-64-bit-quota-format -+++ a/fs/quota_v2.c +--- a/fs/quota/quota_v2.c~quota-support-64-bit-quota-format ++++ a/fs/quota/quota_v2.c @@ -23,14 +23,24 @@ MODULE_LICENSE("GPL"); #define __QUOTA_V2_PARANOIA @@ -229,8 +229,8 @@ sb_dqinfo(dquot->dq_sb, dquot->dq_type)->dqi_priv; diff -puN fs/quotaio_v2.h~quota-support-64-bit-quota-format fs/quotaio_v2.h ---- a/fs/quotaio_v2.h~quota-support-64-bit-quota-format -+++ a/fs/quotaio_v2.h +--- a/fs/quota/quotaio_v2.h~quota-support-64-bit-quota-format ++++ a/fs/quota/quotaio_v2.h @@ -17,8 +17,8 @@ } @@ -280,45 +280,3 @@ struct v2_disk_dqinfo { __le32 dqi_bgrace; /* Time before block soft limit becomes hard limit */ _ -diff -puN fs/dquot.c fs/dquot.c ---- a/fs/dquot.c -+++ b/fs/dquot.c -@@ -2065,32 +2065,32 @@ static int do_set_dqblk(struct dquot *dq - if (di->dqb_valid & QIF_SPACE) { - dm->dqb_curspace = di->dqb_curspace; - check_blim = 1; -- __set_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags); -+ set_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags); - } - if (di->dqb_valid & QIF_BLIMITS) { - dm->dqb_bsoftlimit = qbtos(di->dqb_bsoftlimit); - dm->dqb_bhardlimit = qbtos(di->dqb_bhardlimit); - check_blim = 1; -- __set_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags); -+ set_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags); - } - if (di->dqb_valid & QIF_INODES) { - dm->dqb_curinodes = di->dqb_curinodes; - check_ilim = 1; -- __set_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags); -+ set_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags); - } - if (di->dqb_valid & QIF_ILIMITS) { - dm->dqb_isoftlimit = di->dqb_isoftlimit; - dm->dqb_ihardlimit = di->dqb_ihardlimit; - check_ilim = 1; -- __set_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags); -+ set_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags); - } - if (di->dqb_valid & QIF_BTIME) { - dm->dqb_btime = di->dqb_btime; -- __set_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags); -+ set_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags); - } - if (di->dqb_valid & QIF_ITIME) { - dm->dqb_itime = di->dqb_itime; -- __set_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags); -+ set_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags); - } - - if (check_blim) { diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/raid5-maxsectors-rhel5.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/raid5-maxsectors-rhel5.patch --- lustre-1.8.3/lustre/kernel_patches/patches/raid5-maxsectors-rhel5.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/raid5-maxsectors-rhel5.patch 2010-10-21 08:08:21.000000000 +0200 @@ -0,0 +1,23 @@ +diff -ru linux-orig/drivers/md/raid5.c linux-new/drivers/md/raid5.c +--- linux-orig/drivers/md/raid5.c 2009-04-14 08:11:38.000000000 +1000 ++++ linux-new/drivers/md/raid5.c 2009-09-20 05:02:02.000000000 +1000 +@@ -3595,10 +3595,16 @@ + mddev->array_size = mddev->size * (conf->previous_raid_disks - + conf->max_degraded); + ++ int stripe_size = conf->chunk_size * (conf->previous_raid_disks - conf->max_degraded); ++ + /* in order to support large I/Os */ +- blk_queue_max_sectors(mddev->queue, conf->chunk_size * conf->previous_raid_disks >> 9); +- mddev->queue->max_phys_segments = conf->chunk_size * (conf->previous_raid_disks - conf->max_degraded) >> PAGE_SHIFT; +- mddev->queue->max_hw_segments = conf->chunk_size * conf->previous_raid_disks >> PAGE_SHIFT;; ++ blk_queue_max_sectors(mddev->queue, stripe_size >> 9); ++ /* KTVM: set default max_sectors the same as the max_hw_sectors set above */ ++ mddev->queue->max_sectors = mddev->queue->max_hw_sectors; ++ printk("%s: setting max_sectors = %d, max_hw_sectors = %d\n", mdname(mddev), mddev->queue->max_sectors, mddev->queue->max_hw_sectors); ++ ++ mddev->queue->max_phys_segments = stripe_size >> PAGE_SHIFT; ++ mddev->queue->max_hw_segments = stripe_size >> PAGE_SHIFT;; + + /* raid5 device is able to do zcopy right now. */ + mddev->queue->backing_dev_info.capabilities |= BDI_CAP_PAGE_CONSTANT_WRITE; diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/raid5-stats-rhel5.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/raid5-stats-rhel5.patch --- lustre-1.8.3/lustre/kernel_patches/patches/raid5-stats-rhel5.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/raid5-stats-rhel5.patch 2010-09-17 03:17:05.000000000 +0200 @@ -77,9 +77,9 @@ set_bit(STRIPE_DELAYED, &sh->state); set_bit(STRIPE_HANDLE, &sh->state); @@ -1870,6 +1885,7 @@ static void handle_stripe5(struct stripe - bi->bi_next = NULL; - bi->bi_size = 0; - bi->bi_end_io(bi, bytes, 0); + bi->bi_end_io(bi, bytes, + test_bit(BIO_UPTODATE, &bi->bi_flags) + ? 0 : -EIO); + atomic_dec(&conf->in_reqs_in_queue); } for (i=disks; i-- ;) { @@ -126,9 +126,9 @@ PRINTK("Request delayed stripe %llu block %d for Reconstruct\n", (unsigned long long)sh->sector, i); @@ -2423,6 +2446,7 @@ static void handle_stripe6(struct stripe - bi->bi_next = NULL; - bi->bi_size = 0; - bi->bi_end_io(bi, bytes, 0); + bi->bi_end_io(bi, bytes, + test_bit(BIO_UPTODATE, &bi->bi_flags) + ? 0 : -EIO); + atomic_dec(&conf->in_reqs_in_queue); } for (i=disks; i-- ;) { diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/sd_iostats-2.6.26-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/sd_iostats-2.6.26-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/sd_iostats-2.6.26-vanilla.patch 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/sd_iostats-2.6.26-vanilla.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,579 +0,0 @@ -Index: linux-source-2.6.26/drivers/scsi/Kconfig -=================================================================== ---- linux-source-2.6.26.orig/drivers/scsi/Kconfig 2009-10-09 13:33:25.000000000 +0200 -+++ linux-source-2.6.26/drivers/scsi/Kconfig 2009-10-09 13:39:06.000000000 +0200 -@@ -81,6 +81,14 @@ - In this case, do not compile the driver for your SCSI host adapter - (below) as a module either. - -+config SD_IOSTATS -+ bool "Enable SCSI disk I/O stats" -+ depends on BLK_DEV_SD -+ default y -+ ---help--- -+ This enables SCSI disk I/O stats collection. You must also enable -+ /proc file system support if you want this feature. -+ - config CHR_DEV_ST - tristate "SCSI tape support" - depends on SCSI -Index: linux-source-2.6.26/drivers/scsi/scsi_proc.c -=================================================================== ---- linux-source-2.6.26.orig/drivers/scsi/scsi_proc.c 2009-10-09 13:33:25.000000000 +0200 -+++ linux-source-2.6.26/drivers/scsi/scsi_proc.c 2009-10-09 13:39:06.000000000 +0200 -@@ -40,7 +40,8 @@ - /* 4K page size, but our output routines, use some slack for overruns */ - #define PROC_BLOCK_SIZE (3*1024) - --static struct proc_dir_entry *proc_scsi; -+struct proc_dir_entry *proc_scsi; -+EXPORT_SYMBOL(proc_scsi); - - /* Protect sht->present and sht->proc_dir */ - static DEFINE_MUTEX(global_host_template_mutex); -Index: linux-source-2.6.26/drivers/scsi/sd.c -=================================================================== ---- linux-source-2.6.26.orig/drivers/scsi/sd.c 2009-10-09 13:33:25.000000000 +0200 -+++ linux-source-2.6.26/drivers/scsi/sd.c 2009-10-09 13:39:50.000000000 +0200 -@@ -107,6 +107,24 @@ - * object after last put) */ - static DEFINE_MUTEX(sd_ref_mutex); - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+# include -+# include -+struct proc_dir_entry *sd_iostats_procdir = NULL; -+char sd_iostats_procdir_name[] = "sd_iostats"; -+static struct file_operations sd_iostats_proc_fops; -+ -+extern void sd_iostats_init(void); -+extern void sd_iostats_fini(void); -+void sd_iostats_start_req(struct scsi_cmnd *SCpnt); -+void sd_iostats_finish_req(struct scsi_cmnd *SCpnt); -+#else -+static inline void sd_iostats_init(void) {} -+static inline void sd_iostats_fini(void) {} -+static inline void sd_iostats_start_req(struct scsi_cmnd *SCpnt) {} -+static inline void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) {} -+#endif -+ - static const char *sd_cache_types[] = { - "write through", "none", "write back", - "write back, no read (daft)" -@@ -578,6 +596,8 @@ - - sdev = sdkp->device; - -+ sd_iostats_start_req(SCpnt); -+ - /* - * If the device is in error recovery, wait until it is done. - * If the device is offline, then disallow any access to it. -@@ -1023,6 +1043,7 @@ - break; - } - out: -+ sd_iostats_finish_req(SCpnt); - return good_bytes; - } - -@@ -1712,6 +1733,36 @@ - if (sdp->removable) - gd->flags |= GENHD_FL_REMOVABLE; - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+ sdkp->stats = kzalloc(sizeof(iostat_stats_t), GFP_KERNEL); -+ if (!sdkp->stats) { -+ printk(KERN_WARNING "cannot allocate iostat structure for" -+ "%s\n", gd->disk_name); -+ } else { -+ do_gettimeofday(&sdkp->stats->iostat_timeval); -+ sdkp->stats->iostat_queue_stamp = jiffies; -+ spin_lock_init(&sdkp->stats->iostat_lock); -+ if (sd_iostats_procdir) { -+ struct proc_dir_entry *pde; -+ pde = create_proc_entry(gd->disk_name, S_IRUGO | S_IWUSR, -+ sd_iostats_procdir); -+ if (!pde) { -+ printk(KERN_WARNING "Can't create /proc/scsi/" -+ "%s/%s\n", -+ sd_iostats_procdir_name, -+ gd->disk_name); -+ kfree(sdkp->stats); -+ sdkp->stats = NULL; -+ } else { -+ pde->proc_fops = &sd_iostats_proc_fops; -+ pde->data = gd; -+ } -+ } else { -+ kfree(sdkp->stats); -+ sdkp->stats = NULL; -+ } -+ } -+#endif - dev_set_drvdata(dev, sdkp); - add_disk(gd); - -@@ -1755,6 +1806,366 @@ - return 0; - } - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+static int -+sd_iostats_seq_show(struct seq_file *seq, void *v) -+{ -+ struct timeval now; -+ struct gendisk *disk = seq->private; -+ iostat_stats_t *stats; -+ unsigned long long read_len; -+ unsigned long long read_len_tot; -+ unsigned long read_num; -+ unsigned long read_num_tot; -+ unsigned long long write_len; -+ unsigned long long write_len_tot; -+ unsigned long write_num; -+ unsigned long write_num_tot; -+ int i; -+ int maxi; -+ -+ stats = scsi_disk(disk)->stats; -+ if (stats == NULL) { -+ printk(KERN_ERR "sd_iostats_seq_show: NULL stats entry\n"); -+ BUG(); -+ } -+ -+ do_gettimeofday(&now); -+ now.tv_sec -= stats->iostat_timeval.tv_sec; -+ now.tv_usec -= stats->iostat_timeval.tv_usec; -+ if (now.tv_usec < 0) { -+ now.tv_usec += 1000000; -+ now.tv_sec--; -+ } -+ -+ /* this sampling races with updates */ -+ seq_printf(seq, "index: %lu snapshot_time: %lu.%06lu\n", -+ (unsigned long) scsi_disk(disk)->index, -+ now.tv_sec, now.tv_usec); -+ -+ for (i = IOSTAT_NCOUNTERS - 1; i > 0; i--) -+ if (stats->iostat_read_histogram[i].iostat_count != 0 || -+ stats->iostat_write_histogram[i].iostat_count != 0) -+ break; -+ maxi = i; -+ -+ seq_printf(seq, "%8s %8s %12s %8s %12s\n", "size", -+ "reads", "total", "writes", "total"); -+ -+ read_len_tot = write_len_tot = 0; -+ read_num_tot = write_num_tot = 0; -+ for (i = 0; i <= maxi; i++) { -+ read_len = stats->iostat_read_histogram[i].iostat_size; -+ read_len_tot += read_len; -+ read_num = stats->iostat_read_histogram[i].iostat_count; -+ read_num_tot += read_num; -+ -+ write_len = stats->iostat_write_histogram[i].iostat_size; -+ write_len_tot += write_len; -+ write_num = stats->iostat_write_histogram[i].iostat_count; -+ write_num_tot += write_num; -+ -+ seq_printf (seq, "%8d %8lu %12llu %8lu %12llu\n", -+ 512<iostat_queue_ticks[i]; -+ if (ticks == 0) -+ continue; -+ percent = stats->iostat_queue_ticks[i] * 100; -+ do_div(percent, stats->iostat_queue_ticks_sum); -+ seq_printf(seq, "%8d %8llu %8llu\n", i, ticks, percent); -+ } -+ -+ if (stats->iostat_reqs != 0) { -+ unsigned long long aveseek = 0, percent = 0; -+ -+ if (stats->iostat_seeks) { -+ aveseek = stats->iostat_seek_sectors; -+ do_div(aveseek, stats->iostat_seeks); -+ percent = stats->iostat_seeks * 100; -+ do_div(percent, stats->iostat_reqs); -+ } -+ -+ seq_printf(seq, "\n%llu sectors in %llu reqs: %llu seek(s) over " -+ "%llu sectors in ave, %llu%% of all reqs\n", -+ stats->iostat_sectors, stats->iostat_reqs, -+ stats->iostat_seeks, aveseek, percent); -+ } -+ -+ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "process time", "reads", -+ "%%", "writes", "%%"); -+ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { -+ unsigned long read_percent = 0, write_percent = 0; -+ if (stats->iostat_wtime[i] == 0 && -+ stats->iostat_rtime[i] == 0) -+ continue; -+ if (stats->iostat_read_reqs) -+ read_percent = stats->iostat_rtime[i] * 100 / -+ stats->iostat_read_reqs; -+ if (stats->iostat_write_reqs) -+ write_percent = stats->iostat_wtime[i] * 100 / -+ stats->iostat_write_reqs; -+ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", -+ jiffies_to_msecs(((1UL << i) >> 1) << 1), -+ stats->iostat_rtime[i], read_percent, -+ stats->iostat_wtime[i], write_percent); -+ } -+ -+ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "time in queue", "reads", -+ "%%", "writes", "%%"); -+ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { -+ unsigned long read_percent = 0, write_percent = 0; -+ if (stats->iostat_wtime_in_queue[i] == 0 && -+ stats->iostat_rtime_in_queue[i] == 0) -+ continue; -+ if (stats->iostat_read_reqs) -+ read_percent = stats->iostat_rtime_in_queue[i] * 100 / -+ stats->iostat_read_reqs; -+ if (stats->iostat_write_reqs) -+ write_percent = stats->iostat_wtime_in_queue[i] * 100 / -+ stats->iostat_write_reqs; -+ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", -+ jiffies_to_msecs(((1UL << i) >> 1) << 1), -+ stats->iostat_rtime_in_queue[i], -+ read_percent, -+ stats->iostat_wtime_in_queue[i], -+ write_percent); -+ } -+ -+ return 0; -+} -+ -+static void * -+sd_iostats_seq_start(struct seq_file *p, loff_t *pos) -+{ -+ return (*pos == 0) ? (void *)1 : NULL; -+} -+ -+static void * -+sd_iostats_seq_next(struct seq_file *p, void *v, loff_t *pos) -+{ -+ ++*pos; -+ return NULL; -+} -+ -+static void -+sd_iostats_seq_stop(struct seq_file *p, void *v) -+{ -+} -+ -+static struct seq_operations sd_iostats_seqops = { -+ .start = sd_iostats_seq_start, -+ .stop = sd_iostats_seq_stop, -+ .next = sd_iostats_seq_next, -+ .show = sd_iostats_seq_show, -+}; -+ -+static int -+sd_iostats_seq_open (struct inode *inode, struct file *file) -+{ -+ int rc; -+ -+ rc = seq_open(file, &sd_iostats_seqops); -+ if (rc != 0) -+ return rc; -+ -+ ((struct seq_file *)file->private_data)->private = PDE(inode)->data; -+ return 0; -+} -+ -+static ssize_t -+sd_iostats_seq_write(struct file *file, const char *buffer, -+ size_t len, loff_t *off) -+{ -+ struct seq_file *seq = file->private_data; -+ struct gendisk *disk = seq->private; -+ iostat_stats_t *stats = scsi_disk(disk)->stats; -+ unsigned long flags; -+ unsigned long qdepth; -+ -+ -+ spin_lock_irqsave (&stats->iostat_lock, flags); -+ qdepth = stats->iostat_queue_depth; -+ memset (stats, 0, offsetof(iostat_stats_t, iostat_lock)); -+ do_gettimeofday(&stats->iostat_timeval); -+ stats->iostat_queue_stamp = jiffies; -+ stats->iostat_queue_depth = qdepth; -+ spin_unlock_irqrestore (&stats->iostat_lock, flags); -+ -+ return len; -+} -+ -+static struct file_operations sd_iostats_proc_fops = { -+ .owner = THIS_MODULE, -+ .open = sd_iostats_seq_open, -+ .read = seq_read, -+ .write = sd_iostats_seq_write, -+ .llseek = seq_lseek, -+ .release = seq_release, -+}; -+ -+extern struct proc_dir_entry *proc_scsi; -+ -+void -+sd_iostats_init(void) -+{ -+ if (proc_scsi == NULL) { -+ printk(KERN_WARNING "No access to sd iostats: " -+ "proc_scsi is NULL\n"); -+ return; -+ } -+ -+ sd_iostats_procdir = create_proc_entry(sd_iostats_procdir_name, -+ S_IFDIR | S_IRUGO | S_IXUGO, -+ proc_scsi); -+ if (sd_iostats_procdir == NULL) { -+ printk(KERN_WARNING "No access to sd iostats: " -+ "can't create /proc/scsi/%s\n", sd_iostats_procdir_name); -+ return; -+ } -+} -+ -+void sd_iostats_fini(void) -+{ -+ if (proc_scsi != NULL && sd_iostats_procdir != NULL) -+ remove_proc_entry(sd_iostats_procdir_name, proc_scsi); -+ -+ sd_iostats_procdir = NULL; -+} -+ -+void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) -+{ -+ struct request *rq = SCpnt->request; -+ iostat_stats_t *stats; -+ unsigned long *tcounter; -+ int tbucket; -+ int tmp; -+ unsigned long irqflags; -+ unsigned long i; -+ -+ stats = scsi_disk(rq->rq_disk)->stats; -+ if (stats == NULL) -+ return; -+ -+ tmp = jiffies - rq->start_time; -+ for (tbucket = 0; tmp > 1; tbucket++) -+ tmp >>= 1; -+ if (tbucket >= IOSTAT_NCOUNTERS) -+ tbucket = IOSTAT_NCOUNTERS - 1; -+ //printk("%u ticks in D to %u\n", jiffies - rq->start_time, tbucket); -+ -+ tcounter = rq_data_dir(rq) == WRITE ? -+ &stats->iostat_wtime[tbucket] : &stats->iostat_rtime[tbucket]; -+ -+ spin_lock_irqsave(&stats->iostat_lock, irqflags); -+ -+ /* update delay stats */ -+ (*tcounter)++; -+ -+ /* update queue depth stats */ -+ i = stats->iostat_queue_depth; -+ if (i >= IOSTAT_NCOUNTERS) -+ i = IOSTAT_NCOUNTERS - 1; -+ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; -+ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; -+ BUG_ON(stats->iostat_queue_depth == 0); -+ stats->iostat_queue_depth--; -+ -+ /* update seek stats. XXX: not sure about nr_sectors */ -+ stats->iostat_sectors += rq->nr_sectors; -+ stats->iostat_reqs++; -+ if (rq->sector != stats->iostat_next_sector) { -+ stats->iostat_seek_sectors += -+ rq->sector > stats->iostat_next_sector ? -+ rq->sector - stats->iostat_next_sector : -+ stats->iostat_next_sector - rq->sector; -+ stats->iostat_seeks++; -+ } -+ stats->iostat_next_sector = rq->sector + rq->nr_sectors; -+ -+ stats->iostat_queue_stamp = jiffies; -+ -+ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); -+} -+ -+void sd_iostats_start_req(struct scsi_cmnd *SCpnt) -+{ -+ struct request *rq = SCpnt->request; -+ iostat_stats_t *stats; -+ iostat_counter_t *counter; -+ int bucket; -+ int tbucket; -+ int tmp; -+ unsigned long irqflags; -+ unsigned long i; -+ int nsect; -+ -+ stats = scsi_disk(rq->rq_disk)->stats; -+ if (stats == NULL) -+ return; -+ -+ nsect = scsi_bufflen(SCpnt) >> 9; -+ for (bucket = 0, tmp = nsect; tmp > 1; bucket++) -+ tmp >>= 1; -+ -+ if (bucket >= IOSTAT_NCOUNTERS) { -+ printk (KERN_ERR "sd_iostats_bump: nsect %d too big\n", nsect); -+ BUG(); -+ } -+ -+ counter = rq_data_dir(rq) == WRITE ? -+ &stats->iostat_write_histogram[bucket] : -+ &stats->iostat_read_histogram[bucket]; -+ -+ tmp = jiffies - rq->start_time; -+ for (tbucket = 0; tmp > 1; tbucket++) -+ tmp >>= 1; -+ if (tbucket >= IOSTAT_NCOUNTERS) -+ tbucket = IOSTAT_NCOUNTERS - 1; -+ //printk("%u ticks in Q to %u\n", jiffies - rq->start_time, tbucket); -+ -+ /* an ugly hack to know exact processing time. the right -+ * solution is to add one more field to struct request -+ * hopefully it will break nothing ... */ -+ rq->start_time = jiffies; -+ -+ spin_lock_irqsave(&stats->iostat_lock, irqflags); -+ -+ /* update queue depth stats */ -+ i = stats->iostat_queue_depth; -+ if (i >= IOSTAT_NCOUNTERS) -+ i = IOSTAT_NCOUNTERS - 1; -+ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; -+ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; -+ stats->iostat_queue_depth++; -+ -+ /* update delay stats */ -+ if (rq_data_dir(rq) == WRITE) { -+ stats->iostat_wtime_in_queue[tbucket]++; -+ stats->iostat_write_reqs++; -+ } else { -+ stats->iostat_rtime_in_queue[tbucket]++; -+ stats->iostat_read_reqs++; -+ } -+ -+ /* update size stats */ -+ counter->iostat_size += nsect; -+ counter->iostat_count++; -+ -+ stats->iostat_queue_stamp = jiffies; -+ -+ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); -+} -+#endif -+ - /** - * scsi_disk_release - Called to free the scsi_disk structure - * @dev: pointer to embedded class device -@@ -1773,10 +2184,16 @@ - idr_remove(&sd_index_idr, sdkp->index); - spin_unlock(&sd_index_lock); - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+ if (sdkp->stats) { -+ remove_proc_entry(disk->disk_name, sd_iostats_procdir); -+ kfree(sdkp->stats); -+ sdkp->stats = NULL; -+ } -+#endif - disk->private_data = NULL; - put_disk(disk); - put_device(&sdkp->device->sdev_gendev); -- - kfree(sdkp); - } - -@@ -1890,6 +2307,8 @@ - if (!majors) - return -ENODEV; - -+ sd_iostats_init(); -+ - err = class_register(&sd_disk_class); - if (err) - goto err_out; -@@ -1905,6 +2324,7 @@ - err_out: - for (i = 0; i < SD_MAJORS; i++) - unregister_blkdev(sd_major(i), "sd"); -+ sd_iostats_fini(); - return err; - } - -Index: linux-source-2.6.26/include/scsi/sd.h -=================================================================== ---- linux-source-2.6.26.orig/include/scsi/sd.h 2009-10-09 13:33:25.000000000 +0200 -+++ linux-source-2.6.26/include/scsi/sd.h 2009-10-09 13:39:06.000000000 +0200 -@@ -31,6 +31,46 @@ - */ - #define SD_BUF_SIZE 512 - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+typedef struct { -+ unsigned long long iostat_size; -+ unsigned long long iostat_count; -+} iostat_counter_t; -+ -+#define IOSTAT_NCOUNTERS 16 -+typedef struct { -+ iostat_counter_t iostat_read_histogram[IOSTAT_NCOUNTERS]; -+ iostat_counter_t iostat_write_histogram[IOSTAT_NCOUNTERS]; -+ struct timeval iostat_timeval; -+ -+ /* queue depth: how well the pipe is filled up */ -+ unsigned long long iostat_queue_ticks[IOSTAT_NCOUNTERS]; -+ unsigned long long iostat_queue_ticks_sum; -+ unsigned long iostat_queue_depth; -+ unsigned long iostat_queue_stamp; -+ -+ /* seeks: how linear the traffic is */ -+ unsigned long long iostat_next_sector; -+ unsigned long long iostat_seek_sectors; -+ unsigned long long iostat_seeks; -+ unsigned long long iostat_sectors; -+ unsigned long long iostat_reqs; -+ unsigned long iostat_read_reqs; -+ unsigned long iostat_write_reqs; -+ -+ /* process time: how long it takes to process requests */ -+ unsigned long iostat_rtime[IOSTAT_NCOUNTERS]; -+ unsigned long iostat_wtime[IOSTAT_NCOUNTERS]; -+ -+ /* queue time: how long process spent in elevator's queue */ -+ unsigned long iostat_rtime_in_queue[IOSTAT_NCOUNTERS]; -+ unsigned long iostat_wtime_in_queue[IOSTAT_NCOUNTERS]; -+ -+ /* must be the last field, as it's used to know size to be memset'ed */ -+ spinlock_t iostat_lock; -+} ____cacheline_aligned_in_smp iostat_stats_t; -+#endif -+ - struct scsi_disk { - struct scsi_driver *driver; /* always &sd_template */ - struct scsi_device *device; -@@ -45,6 +85,9 @@ - unsigned WCE : 1; /* state of disk WCE bit */ - unsigned RCD : 1; /* state of disk RCD bit, unused */ - unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+ iostat_stats_t *stats; /* scsi disk statistics */ -+#endif - }; - #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,dev) - diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/sd_iostats-2.6.27-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/sd_iostats-2.6.27-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/sd_iostats-2.6.27-vanilla.patch 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/sd_iostats-2.6.27-vanilla.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,579 +0,0 @@ -Index: linux-2.6.27.21-0.1/drivers/scsi/Kconfig -=================================================================== ---- linux-2.6.27.21-0.1.orig/drivers/scsi/Kconfig 2009-04-23 02:12:56.000000000 -0600 -+++ linux-2.6.27.21-0.1/drivers/scsi/Kconfig 2009-05-22 08:38:28.000000000 -0600 -@@ -82,6 +82,14 @@ - In this case, do not compile the driver for your SCSI host adapter - (below) as a module either. - -+config SD_IOSTATS -+ bool "Enable SCSI disk I/O stats" -+ depends on BLK_DEV_SD -+ default y -+ ---help--- -+ This enables SCSI disk I/O stats collection. You must also enable -+ /proc file system support if you want this feature. -+ - config CHR_DEV_ST - tristate "SCSI tape support" - depends on SCSI -Index: linux-2.6.27.21-0.1/drivers/scsi/scsi_proc.c -=================================================================== ---- linux-2.6.27.21-0.1.orig/drivers/scsi/scsi_proc.c 2009-04-23 02:12:56.000000000 -0600 -+++ linux-2.6.27.21-0.1/drivers/scsi/scsi_proc.c 2009-05-22 08:38:28.000000000 -0600 -@@ -40,7 +40,8 @@ - /* 4K page size, but our output routines, use some slack for overruns */ - #define PROC_BLOCK_SIZE (3*1024) - --static struct proc_dir_entry *proc_scsi; -+struct proc_dir_entry *proc_scsi; -+EXPORT_SYMBOL(proc_scsi); - - /* Protect sht->present and sht->proc_dir */ - static DEFINE_MUTEX(global_host_template_mutex); -Index: linux-2.6.27.21-0.1/drivers/scsi/sd.c -=================================================================== ---- linux-2.6.27.21-0.1.orig/drivers/scsi/sd.c 2009-04-23 02:12:56.000000000 -0600 -+++ linux-2.6.27.21-0.1/drivers/scsi/sd.c 2009-05-22 08:38:28.000000000 -0600 -@@ -108,6 +108,24 @@ - * object after last put) */ - static DEFINE_MUTEX(sd_ref_mutex); - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+# include -+# include -+struct proc_dir_entry *sd_iostats_procdir = NULL; -+char sd_iostats_procdir_name[] = "sd_iostats"; -+static struct file_operations sd_iostats_proc_fops; -+ -+extern void sd_iostats_init(void); -+extern void sd_iostats_fini(void); -+void sd_iostats_start_req(struct scsi_cmnd *SCpnt); -+void sd_iostats_finish_req(struct scsi_cmnd *SCpnt); -+#else -+static inline void sd_iostats_init(void) {} -+static inline void sd_iostats_fini(void) {} -+static inline void sd_iostats_start_req(struct scsi_cmnd *SCpnt) {} -+static inline void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) {} -+#endif -+ - static const char *sd_cache_types[] = { - "write through", "none", "write back", - "write back, no read (daft)" -@@ -571,6 +589,8 @@ - if (sdkp->protection_type || scsi_prot_sg_count(SCpnt)) - sd_dif_op(SCpnt, sdkp->protection_type, scsi_prot_sg_count(SCpnt)); - -+ sd_iostats_start_req(SCpnt); -+ - /* - * We shouldn't disconnect in the middle of a sector, so with a dumb - * host adapter, it's safe to assume that we can at least transfer -@@ -1091,6 +1111,7 @@ - break; - } - out: -+ sd_iostats_finish_req(SCpnt); - if (rq_data_dir(SCpnt->request) == READ && scsi_prot_sg_count(SCpnt)) - sd_dif_complete(SCpnt, good_bytes); - -@@ -1873,6 +1894,36 @@ - if (sdp->removable) - gd->flags |= GENHD_FL_REMOVABLE; - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+ sdkp->stats = kzalloc(sizeof(iostat_stats_t), GFP_KERNEL); -+ if (!sdkp->stats) { -+ printk(KERN_WARNING "cannot allocate iostat structure for" -+ "%s\n", gd->disk_name); -+ } else { -+ do_gettimeofday(&sdkp->stats->iostat_timeval); -+ sdkp->stats->iostat_queue_stamp = jiffies; -+ spin_lock_init(&sdkp->stats->iostat_lock); -+ if (sd_iostats_procdir) { -+ struct proc_dir_entry *pde; -+ pde = create_proc_entry(gd->disk_name, S_IRUGO | S_IWUSR, -+ sd_iostats_procdir); -+ if (!pde) { -+ printk(KERN_WARNING "Can't create /proc/scsi/" -+ "%s/%s\n", -+ sd_iostats_procdir_name, -+ gd->disk_name); -+ kfree(sdkp->stats); -+ sdkp->stats = NULL; -+ } else { -+ pde->proc_fops = &sd_iostats_proc_fops; -+ pde->data = gd; -+ } -+ } else { -+ kfree(sdkp->stats); -+ sdkp->stats = NULL; -+ } -+ } -+#endif - dev_set_drvdata(dev, sdkp); - add_disk(gd); - sd_dif_config_host(sdkp); -@@ -1923,6 +1974,366 @@ - return 0; - } - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+static int -+sd_iostats_seq_show(struct seq_file *seq, void *v) -+{ -+ struct timeval now; -+ struct gendisk *disk = seq->private; -+ iostat_stats_t *stats; -+ unsigned long long read_len; -+ unsigned long long read_len_tot; -+ unsigned long read_num; -+ unsigned long read_num_tot; -+ unsigned long long write_len; -+ unsigned long long write_len_tot; -+ unsigned long write_num; -+ unsigned long write_num_tot; -+ int i; -+ int maxi; -+ -+ stats = scsi_disk(disk)->stats; -+ if (stats == NULL) { -+ printk(KERN_ERR "sd_iostats_seq_show: NULL stats entry\n"); -+ BUG(); -+ } -+ -+ do_gettimeofday(&now); -+ now.tv_sec -= stats->iostat_timeval.tv_sec; -+ now.tv_usec -= stats->iostat_timeval.tv_usec; -+ if (now.tv_usec < 0) { -+ now.tv_usec += 1000000; -+ now.tv_sec--; -+ } -+ -+ /* this sampling races with updates */ -+ seq_printf(seq, "index: %lu snapshot_time: %lu.%06lu\n", -+ (unsigned long) scsi_disk(disk)->index, -+ now.tv_sec, now.tv_usec); -+ -+ for (i = IOSTAT_NCOUNTERS - 1; i > 0; i--) -+ if (stats->iostat_read_histogram[i].iostat_count != 0 || -+ stats->iostat_write_histogram[i].iostat_count != 0) -+ break; -+ maxi = i; -+ -+ seq_printf(seq, "%8s %8s %12s %8s %12s\n", "size", -+ "reads", "total", "writes", "total"); -+ -+ read_len_tot = write_len_tot = 0; -+ read_num_tot = write_num_tot = 0; -+ for (i = 0; i <= maxi; i++) { -+ read_len = stats->iostat_read_histogram[i].iostat_size; -+ read_len_tot += read_len; -+ read_num = stats->iostat_read_histogram[i].iostat_count; -+ read_num_tot += read_num; -+ -+ write_len = stats->iostat_write_histogram[i].iostat_size; -+ write_len_tot += write_len; -+ write_num = stats->iostat_write_histogram[i].iostat_count; -+ write_num_tot += write_num; -+ -+ seq_printf (seq, "%8d %8lu %12llu %8lu %12llu\n", -+ 512<iostat_queue_ticks[i]; -+ if (ticks == 0) -+ continue; -+ percent = stats->iostat_queue_ticks[i] * 100; -+ do_div(percent, stats->iostat_queue_ticks_sum); -+ seq_printf(seq, "%8d %8llu %8llu\n", i, ticks, percent); -+ } -+ -+ if (stats->iostat_reqs != 0) { -+ unsigned long long aveseek = 0, percent = 0; -+ -+ if (stats->iostat_seeks) { -+ aveseek = stats->iostat_seek_sectors; -+ do_div(aveseek, stats->iostat_seeks); -+ percent = stats->iostat_seeks * 100; -+ do_div(percent, stats->iostat_reqs); -+ } -+ -+ seq_printf(seq, "\n%llu sectors in %llu reqs: %llu seek(s) over " -+ "%llu sectors in ave, %llu%% of all reqs\n", -+ stats->iostat_sectors, stats->iostat_reqs, -+ stats->iostat_seeks, aveseek, percent); -+ } -+ -+ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "process time", "reads", -+ "%%", "writes", "%%"); -+ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { -+ unsigned long read_percent = 0, write_percent = 0; -+ if (stats->iostat_wtime[i] == 0 && -+ stats->iostat_rtime[i] == 0) -+ continue; -+ if (stats->iostat_read_reqs) -+ read_percent = stats->iostat_rtime[i] * 100 / -+ stats->iostat_read_reqs; -+ if (stats->iostat_write_reqs) -+ write_percent = stats->iostat_wtime[i] * 100 / -+ stats->iostat_write_reqs; -+ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", -+ jiffies_to_msecs(((1UL << i) >> 1) << 1), -+ stats->iostat_rtime[i], read_percent, -+ stats->iostat_wtime[i], write_percent); -+ } -+ -+ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "time in queue", "reads", -+ "%%", "writes", "%%"); -+ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { -+ unsigned long read_percent = 0, write_percent = 0; -+ if (stats->iostat_wtime_in_queue[i] == 0 && -+ stats->iostat_rtime_in_queue[i] == 0) -+ continue; -+ if (stats->iostat_read_reqs) -+ read_percent = stats->iostat_rtime_in_queue[i] * 100 / -+ stats->iostat_read_reqs; -+ if (stats->iostat_write_reqs) -+ write_percent = stats->iostat_wtime_in_queue[i] * 100 / -+ stats->iostat_write_reqs; -+ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", -+ jiffies_to_msecs(((1UL << i) >> 1) << 1), -+ stats->iostat_rtime_in_queue[i], -+ read_percent, -+ stats->iostat_wtime_in_queue[i], -+ write_percent); -+ } -+ -+ return 0; -+} -+ -+static void * -+sd_iostats_seq_start(struct seq_file *p, loff_t *pos) -+{ -+ return (*pos == 0) ? (void *)1 : NULL; -+} -+ -+static void * -+sd_iostats_seq_next(struct seq_file *p, void *v, loff_t *pos) -+{ -+ ++*pos; -+ return NULL; -+} -+ -+static void -+sd_iostats_seq_stop(struct seq_file *p, void *v) -+{ -+} -+ -+static struct seq_operations sd_iostats_seqops = { -+ .start = sd_iostats_seq_start, -+ .stop = sd_iostats_seq_stop, -+ .next = sd_iostats_seq_next, -+ .show = sd_iostats_seq_show, -+}; -+ -+static int -+sd_iostats_seq_open (struct inode *inode, struct file *file) -+{ -+ int rc; -+ -+ rc = seq_open(file, &sd_iostats_seqops); -+ if (rc != 0) -+ return rc; -+ -+ ((struct seq_file *)file->private_data)->private = PDE(inode)->data; -+ return 0; -+} -+ -+static ssize_t -+sd_iostats_seq_write(struct file *file, const char *buffer, -+ size_t len, loff_t *off) -+{ -+ struct seq_file *seq = file->private_data; -+ struct gendisk *disk = seq->private; -+ iostat_stats_t *stats = scsi_disk(disk)->stats; -+ unsigned long flags; -+ unsigned long qdepth; -+ -+ -+ spin_lock_irqsave (&stats->iostat_lock, flags); -+ qdepth = stats->iostat_queue_depth; -+ memset (stats, 0, offsetof(iostat_stats_t, iostat_lock)); -+ do_gettimeofday(&stats->iostat_timeval); -+ stats->iostat_queue_stamp = jiffies; -+ stats->iostat_queue_depth = qdepth; -+ spin_unlock_irqrestore (&stats->iostat_lock, flags); -+ -+ return len; -+} -+ -+static struct file_operations sd_iostats_proc_fops = { -+ .owner = THIS_MODULE, -+ .open = sd_iostats_seq_open, -+ .read = seq_read, -+ .write = sd_iostats_seq_write, -+ .llseek = seq_lseek, -+ .release = seq_release, -+}; -+ -+extern struct proc_dir_entry *proc_scsi; -+ -+void -+sd_iostats_init(void) -+{ -+ if (proc_scsi == NULL) { -+ printk(KERN_WARNING "No access to sd iostats: " -+ "proc_scsi is NULL\n"); -+ return; -+ } -+ -+ sd_iostats_procdir = create_proc_entry(sd_iostats_procdir_name, -+ S_IFDIR | S_IRUGO | S_IXUGO, -+ proc_scsi); -+ if (sd_iostats_procdir == NULL) { -+ printk(KERN_WARNING "No access to sd iostats: " -+ "can't create /proc/scsi/%s\n", sd_iostats_procdir_name); -+ return; -+ } -+} -+ -+void sd_iostats_fini(void) -+{ -+ if (proc_scsi != NULL && sd_iostats_procdir != NULL) -+ remove_proc_entry(sd_iostats_procdir_name, proc_scsi); -+ -+ sd_iostats_procdir = NULL; -+} -+ -+void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) -+{ -+ struct request *rq = SCpnt->request; -+ iostat_stats_t *stats; -+ unsigned long *tcounter; -+ int tbucket; -+ int tmp; -+ unsigned long irqflags; -+ unsigned long i; -+ -+ stats = scsi_disk(rq->rq_disk)->stats; -+ if (stats == NULL) -+ return; -+ -+ tmp = jiffies - rq->start_time; -+ for (tbucket = 0; tmp > 1; tbucket++) -+ tmp >>= 1; -+ if (tbucket >= IOSTAT_NCOUNTERS) -+ tbucket = IOSTAT_NCOUNTERS - 1; -+ //printk("%u ticks in D to %u\n", jiffies - rq->start_time, tbucket); -+ -+ tcounter = rq_data_dir(rq) == WRITE ? -+ &stats->iostat_wtime[tbucket] : &stats->iostat_rtime[tbucket]; -+ -+ spin_lock_irqsave(&stats->iostat_lock, irqflags); -+ -+ /* update delay stats */ -+ (*tcounter)++; -+ -+ /* update queue depth stats */ -+ i = stats->iostat_queue_depth; -+ if (i >= IOSTAT_NCOUNTERS) -+ i = IOSTAT_NCOUNTERS - 1; -+ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; -+ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; -+ BUG_ON(stats->iostat_queue_depth == 0); -+ stats->iostat_queue_depth--; -+ -+ /* update seek stats. XXX: not sure about nr_sectors */ -+ stats->iostat_sectors += rq->nr_sectors; -+ stats->iostat_reqs++; -+ if (rq->sector != stats->iostat_next_sector) { -+ stats->iostat_seek_sectors += -+ rq->sector > stats->iostat_next_sector ? -+ rq->sector - stats->iostat_next_sector : -+ stats->iostat_next_sector - rq->sector; -+ stats->iostat_seeks++; -+ } -+ stats->iostat_next_sector = rq->sector + rq->nr_sectors; -+ -+ stats->iostat_queue_stamp = jiffies; -+ -+ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); -+} -+ -+void sd_iostats_start_req(struct scsi_cmnd *SCpnt) -+{ -+ struct request *rq = SCpnt->request; -+ iostat_stats_t *stats; -+ iostat_counter_t *counter; -+ int bucket; -+ int tbucket; -+ int tmp; -+ unsigned long irqflags; -+ unsigned long i; -+ int nsect; -+ -+ stats = scsi_disk(rq->rq_disk)->stats; -+ if (stats == NULL) -+ return; -+ -+ nsect = scsi_bufflen(SCpnt) >> 9; -+ for (bucket = 0, tmp = nsect; tmp > 1; bucket++) -+ tmp >>= 1; -+ -+ if (bucket >= IOSTAT_NCOUNTERS) { -+ printk (KERN_ERR "sd_iostats_bump: nsect %d too big\n", nsect); -+ BUG(); -+ } -+ -+ counter = rq_data_dir(rq) == WRITE ? -+ &stats->iostat_write_histogram[bucket] : -+ &stats->iostat_read_histogram[bucket]; -+ -+ tmp = jiffies - rq->start_time; -+ for (tbucket = 0; tmp > 1; tbucket++) -+ tmp >>= 1; -+ if (tbucket >= IOSTAT_NCOUNTERS) -+ tbucket = IOSTAT_NCOUNTERS - 1; -+ //printk("%u ticks in Q to %u\n", jiffies - rq->start_time, tbucket); -+ -+ /* an ugly hack to know exact processing time. the right -+ * solution is to add one more field to struct request -+ * hopefully it will break nothing ... */ -+ rq->start_time = jiffies; -+ -+ spin_lock_irqsave(&stats->iostat_lock, irqflags); -+ -+ /* update queue depth stats */ -+ i = stats->iostat_queue_depth; -+ if (i >= IOSTAT_NCOUNTERS) -+ i = IOSTAT_NCOUNTERS - 1; -+ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; -+ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; -+ stats->iostat_queue_depth++; -+ -+ /* update delay stats */ -+ if (rq_data_dir(rq) == WRITE) { -+ stats->iostat_wtime_in_queue[tbucket]++; -+ stats->iostat_write_reqs++; -+ } else { -+ stats->iostat_rtime_in_queue[tbucket]++; -+ stats->iostat_read_reqs++; -+ } -+ -+ /* update size stats */ -+ counter->iostat_size += nsect; -+ counter->iostat_count++; -+ -+ stats->iostat_queue_stamp = jiffies; -+ -+ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); -+} -+#endif -+ - /** - * scsi_disk_release - Called to free the scsi_disk structure - * @dev: pointer to embedded class device -@@ -1941,10 +2352,16 @@ - ida_remove(&sd_index_ida, sdkp->index); - spin_unlock(&sd_index_lock); - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+ if (sdkp->stats) { -+ remove_proc_entry(disk->disk_name, sd_iostats_procdir); -+ kfree(sdkp->stats); -+ sdkp->stats = NULL; -+ } -+#endif - disk->private_data = NULL; - put_disk(disk); - put_device(&sdkp->device->sdev_gendev); -- - kfree(sdkp); - } - -@@ -2061,6 +2478,8 @@ - if (!majors) - return -ENODEV; - -+ sd_iostats_init(); -+ - err = class_register(&sd_disk_class); - if (err) - goto err_out; -@@ -2076,6 +2495,7 @@ - err_out: - for (i = 0; i < SD_MAJORS; i++) - unregister_blkdev(sd_major(i), "sd"); -+ sd_iostats_fini(); - return err; - } - -Index: linux-2.6.27.21-0.1/drivers/scsi/sd.h -=================================================================== ---- linux-2.6.27.21-0.1.orig/drivers/scsi/sd.h 2009-04-23 02:12:56.000000000 -0600 -+++ linux-2.6.27.21-0.1/drivers/scsi/sd.h 2009-05-22 08:38:28.000000000 -0600 -@@ -37,6 +37,46 @@ - */ - #define SD_LAST_BUGGY_SECTORS 8 - -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+typedef struct { -+ unsigned long long iostat_size; -+ unsigned long long iostat_count; -+} iostat_counter_t; -+ -+#define IOSTAT_NCOUNTERS 16 -+typedef struct { -+ iostat_counter_t iostat_read_histogram[IOSTAT_NCOUNTERS]; -+ iostat_counter_t iostat_write_histogram[IOSTAT_NCOUNTERS]; -+ struct timeval iostat_timeval; -+ -+ /* queue depth: how well the pipe is filled up */ -+ unsigned long long iostat_queue_ticks[IOSTAT_NCOUNTERS]; -+ unsigned long long iostat_queue_ticks_sum; -+ unsigned long iostat_queue_depth; -+ unsigned long iostat_queue_stamp; -+ -+ /* seeks: how linear the traffic is */ -+ unsigned long long iostat_next_sector; -+ unsigned long long iostat_seek_sectors; -+ unsigned long long iostat_seeks; -+ unsigned long long iostat_sectors; -+ unsigned long long iostat_reqs; -+ unsigned long iostat_read_reqs; -+ unsigned long iostat_write_reqs; -+ -+ /* process time: how long it takes to process requests */ -+ unsigned long iostat_rtime[IOSTAT_NCOUNTERS]; -+ unsigned long iostat_wtime[IOSTAT_NCOUNTERS]; -+ -+ /* queue time: how long process spent in elevator's queue */ -+ unsigned long iostat_rtime_in_queue[IOSTAT_NCOUNTERS]; -+ unsigned long iostat_wtime_in_queue[IOSTAT_NCOUNTERS]; -+ -+ /* must be the last field, as it's used to know size to be memset'ed */ -+ spinlock_t iostat_lock; -+} ____cacheline_aligned_in_smp iostat_stats_t; -+#endif -+ - struct scsi_disk { - struct scsi_driver *driver; /* always &sd_template */ - struct scsi_device *device; -@@ -53,6 +93,9 @@ - unsigned WCE : 1; /* state of disk WCE bit */ - unsigned RCD : 1; /* state of disk RCD bit, unused */ - unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ -+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) -+ iostat_stats_t *stats; /* scsi disk statistics */ -+#endif - }; - #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,dev) - diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/sd_iostats-2.6.32-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/sd_iostats-2.6.32-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/sd_iostats-2.6.32-vanilla.patch 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/sd_iostats-2.6.32-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,579 @@ +Index: linux-2.6.27.21-0.1/drivers/scsi/Kconfig +=================================================================== +--- linux-2.6.27.21-0.1.orig/drivers/scsi/Kconfig 2009-04-23 02:12:56.000000000 -0600 ++++ linux-2.6.27.21-0.1/drivers/scsi/Kconfig 2009-05-22 08:38:28.000000000 -0600 +@@ -82,6 +82,14 @@ + In this case, do not compile the driver for your SCSI host adapter + (below) as a module either. + ++config SD_IOSTATS ++ bool "Enable SCSI disk I/O stats" ++ depends on BLK_DEV_SD ++ default y ++ ---help--- ++ This enables SCSI disk I/O stats collection. You must also enable ++ /proc file system support if you want this feature. ++ + config CHR_DEV_ST + tristate "SCSI tape support" + depends on SCSI +Index: linux-2.6.27.21-0.1/drivers/scsi/scsi_proc.c +=================================================================== +--- linux-2.6.27.21-0.1.orig/drivers/scsi/scsi_proc.c 2009-04-23 02:12:56.000000000 -0600 ++++ linux-2.6.27.21-0.1/drivers/scsi/scsi_proc.c 2009-05-22 08:38:28.000000000 -0600 +@@ -40,7 +40,8 @@ + /* 4K page size, but our output routines, use some slack for overruns */ + #define PROC_BLOCK_SIZE (3*1024) + +-static struct proc_dir_entry *proc_scsi; ++struct proc_dir_entry *proc_scsi; ++EXPORT_SYMBOL(proc_scsi); + + /* Protect sht->present and sht->proc_dir */ + static DEFINE_MUTEX(global_host_template_mutex); +Index: linux-2.6.27.21-0.1/drivers/scsi/sd.c +=================================================================== +--- linux-2.6.27.21-0.1.orig/drivers/scsi/sd.c 2009-04-23 02:12:56.000000000 -0600 ++++ linux-2.6.27.21-0.1/drivers/scsi/sd.c 2009-05-22 08:38:28.000000000 -0600 +@@ -108,6 +108,24 @@ + * object after last put) */ + static DEFINE_MUTEX(sd_ref_mutex); + ++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) ++# include ++# include ++struct proc_dir_entry *sd_iostats_procdir = NULL; ++char sd_iostats_procdir_name[] = "sd_iostats"; ++static struct file_operations sd_iostats_proc_fops; ++ ++extern void sd_iostats_init(void); ++extern void sd_iostats_fini(void); ++void sd_iostats_start_req(struct request *rq); ++void sd_iostats_finish_req(struct scsi_cmnd *SCpnt); ++#else ++static inline void sd_iostats_init(void) {} ++static inline void sd_iostats_fini(void) {} ++static inline void sd_iostats_start_req(struct request *rq) {} ++static inline void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) {} ++#endif ++ + struct kmem_cache *sd_cdb_cache; + mempool_t *sd_cdb_pool; + +@@ -571,6 +589,8 @@ + */ + ret = BLKPREP_OK; + out: ++ if (rq->rq_disk && ret == BLKPREP_OK) ++ sd_iostats_start_req(rq); + return scsi_prep_return(q, rq, ret); + } + +@@ -1091,6 +1111,7 @@ + break; + } + out: ++ sd_iostats_finish_req(SCpnt); + if (rq_data_dir(SCpnt->request) == READ && scsi_prot_sg_count(SCpnt)) + sd_dif_complete(SCpnt, good_bytes); + +@@ -1873,6 +1894,36 @@ + if (sdp->removable) + gd->flags |= GENHD_FL_REMOVABLE; + ++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) ++ sdkp->stats = kzalloc(sizeof(iostat_stats_t), GFP_KERNEL); ++ if (!sdkp->stats) { ++ printk(KERN_WARNING "cannot allocate iostat structure for" ++ "%s\n", gd->disk_name); ++ } else { ++ do_gettimeofday(&sdkp->stats->iostat_timeval); ++ sdkp->stats->iostat_queue_stamp = jiffies; ++ spin_lock_init(&sdkp->stats->iostat_lock); ++ if (sd_iostats_procdir) { ++ struct proc_dir_entry *pde; ++ pde = create_proc_entry(gd->disk_name, S_IRUGO | S_IWUSR, ++ sd_iostats_procdir); ++ if (!pde) { ++ printk(KERN_WARNING "Can't create /proc/scsi/" ++ "%s/%s\n", ++ sd_iostats_procdir_name, ++ gd->disk_name); ++ kfree(sdkp->stats); ++ sdkp->stats = NULL; ++ } else { ++ pde->proc_fops = &sd_iostats_proc_fops; ++ pde->data = gd; ++ } ++ } else { ++ kfree(sdkp->stats); ++ sdkp->stats = NULL; ++ } ++ } ++#endif + dev_set_drvdata(dev, sdkp); + add_disk(gd); + sd_dif_config_host(sdkp); +@@ -1923,6 +1974,366 @@ + return 0; + } + ++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) ++static int ++sd_iostats_seq_show(struct seq_file *seq, void *v) ++{ ++ struct timeval now; ++ struct gendisk *disk = seq->private; ++ iostat_stats_t *stats; ++ unsigned long long read_len; ++ unsigned long long read_len_tot; ++ unsigned long read_num; ++ unsigned long read_num_tot; ++ unsigned long long write_len; ++ unsigned long long write_len_tot; ++ unsigned long write_num; ++ unsigned long write_num_tot; ++ int i; ++ int maxi; ++ ++ stats = scsi_disk(disk)->stats; ++ if (stats == NULL) { ++ printk(KERN_ERR "sd_iostats_seq_show: NULL stats entry\n"); ++ BUG(); ++ } ++ ++ do_gettimeofday(&now); ++ now.tv_sec -= stats->iostat_timeval.tv_sec; ++ now.tv_usec -= stats->iostat_timeval.tv_usec; ++ if (now.tv_usec < 0) { ++ now.tv_usec += 1000000; ++ now.tv_sec--; ++ } ++ ++ /* this sampling races with updates */ ++ seq_printf(seq, "index: %lu snapshot_time: %lu.%06lu\n", ++ (unsigned long) scsi_disk(disk)->index, ++ now.tv_sec, now.tv_usec); ++ ++ for (i = IOSTAT_NCOUNTERS - 1; i > 0; i--) ++ if (stats->iostat_read_histogram[i].iostat_count != 0 || ++ stats->iostat_write_histogram[i].iostat_count != 0) ++ break; ++ maxi = i; ++ ++ seq_printf(seq, "%8s %8s %12s %8s %12s\n", "size", ++ "reads", "total", "writes", "total"); ++ ++ read_len_tot = write_len_tot = 0; ++ read_num_tot = write_num_tot = 0; ++ for (i = 0; i <= maxi; i++) { ++ read_len = stats->iostat_read_histogram[i].iostat_size; ++ read_len_tot += read_len; ++ read_num = stats->iostat_read_histogram[i].iostat_count; ++ read_num_tot += read_num; ++ ++ write_len = stats->iostat_write_histogram[i].iostat_size; ++ write_len_tot += write_len; ++ write_num = stats->iostat_write_histogram[i].iostat_count; ++ write_num_tot += write_num; ++ ++ seq_printf (seq, "%8d %8lu %12llu %8lu %12llu\n", ++ 512<iostat_queue_ticks[i]; ++ if (ticks == 0) ++ continue; ++ percent = stats->iostat_queue_ticks[i] * 100; ++ do_div(percent, stats->iostat_queue_ticks_sum); ++ seq_printf(seq, "%8d %8llu %8llu\n", i, ticks, percent); ++ } ++ ++ if (stats->iostat_reqs != 0) { ++ unsigned long long aveseek = 0, percent = 0; ++ ++ if (stats->iostat_seeks) { ++ aveseek = stats->iostat_seek_sectors; ++ do_div(aveseek, stats->iostat_seeks); ++ percent = stats->iostat_seeks * 100; ++ do_div(percent, stats->iostat_reqs); ++ } ++ ++ seq_printf(seq, "\n%llu sectors in %llu reqs: %llu seek(s) over " ++ "%llu sectors in ave, %llu%% of all reqs\n", ++ stats->iostat_sectors, stats->iostat_reqs, ++ stats->iostat_seeks, aveseek, percent); ++ } ++ ++ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "process time", "reads", ++ "%%", "writes", "%%"); ++ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { ++ unsigned long read_percent = 0, write_percent = 0; ++ if (stats->iostat_wtime[i] == 0 && ++ stats->iostat_rtime[i] == 0) ++ continue; ++ if (stats->iostat_read_reqs) ++ read_percent = stats->iostat_rtime[i] * 100 / ++ stats->iostat_read_reqs; ++ if (stats->iostat_write_reqs) ++ write_percent = stats->iostat_wtime[i] * 100 / ++ stats->iostat_write_reqs; ++ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", ++ jiffies_to_msecs(((1UL << i) >> 1) << 1), ++ stats->iostat_rtime[i], read_percent, ++ stats->iostat_wtime[i], write_percent); ++ } ++ ++ seq_printf(seq, "\n%16s %8s %8s %8s %8s\n", "time in queue", "reads", ++ "%%", "writes", "%%"); ++ for (i = 0; i < IOSTAT_NCOUNTERS; i++) { ++ unsigned long read_percent = 0, write_percent = 0; ++ if (stats->iostat_wtime_in_queue[i] == 0 && ++ stats->iostat_rtime_in_queue[i] == 0) ++ continue; ++ if (stats->iostat_read_reqs) ++ read_percent = stats->iostat_rtime_in_queue[i] * 100 / ++ stats->iostat_read_reqs; ++ if (stats->iostat_write_reqs) ++ write_percent = stats->iostat_wtime_in_queue[i] * 100 / ++ stats->iostat_write_reqs; ++ seq_printf(seq, "%16u %8lu %8lu %8lu %8lu\n", ++ jiffies_to_msecs(((1UL << i) >> 1) << 1), ++ stats->iostat_rtime_in_queue[i], ++ read_percent, ++ stats->iostat_wtime_in_queue[i], ++ write_percent); ++ } ++ ++ return 0; ++} ++ ++static void * ++sd_iostats_seq_start(struct seq_file *p, loff_t *pos) ++{ ++ return (*pos == 0) ? (void *)1 : NULL; ++} ++ ++static void * ++sd_iostats_seq_next(struct seq_file *p, void *v, loff_t *pos) ++{ ++ ++*pos; ++ return NULL; ++} ++ ++static void ++sd_iostats_seq_stop(struct seq_file *p, void *v) ++{ ++} ++ ++static struct seq_operations sd_iostats_seqops = { ++ .start = sd_iostats_seq_start, ++ .stop = sd_iostats_seq_stop, ++ .next = sd_iostats_seq_next, ++ .show = sd_iostats_seq_show, ++}; ++ ++static int ++sd_iostats_seq_open (struct inode *inode, struct file *file) ++{ ++ int rc; ++ ++ rc = seq_open(file, &sd_iostats_seqops); ++ if (rc != 0) ++ return rc; ++ ++ ((struct seq_file *)file->private_data)->private = PDE(inode)->data; ++ return 0; ++} ++ ++static ssize_t ++sd_iostats_seq_write(struct file *file, const char *buffer, ++ size_t len, loff_t *off) ++{ ++ struct seq_file *seq = file->private_data; ++ struct gendisk *disk = seq->private; ++ iostat_stats_t *stats = scsi_disk(disk)->stats; ++ unsigned long flags; ++ unsigned long qdepth; ++ ++ ++ spin_lock_irqsave (&stats->iostat_lock, flags); ++ qdepth = stats->iostat_queue_depth; ++ memset (stats, 0, offsetof(iostat_stats_t, iostat_lock)); ++ do_gettimeofday(&stats->iostat_timeval); ++ stats->iostat_queue_stamp = jiffies; ++ stats->iostat_queue_depth = qdepth; ++ spin_unlock_irqrestore (&stats->iostat_lock, flags); ++ ++ return len; ++} ++ ++static struct file_operations sd_iostats_proc_fops = { ++ .owner = THIS_MODULE, ++ .open = sd_iostats_seq_open, ++ .read = seq_read, ++ .write = sd_iostats_seq_write, ++ .llseek = seq_lseek, ++ .release = seq_release, ++}; ++ ++extern struct proc_dir_entry *proc_scsi; ++ ++void ++sd_iostats_init(void) ++{ ++ if (proc_scsi == NULL) { ++ printk(KERN_WARNING "No access to sd iostats: " ++ "proc_scsi is NULL\n"); ++ return; ++ } ++ ++ sd_iostats_procdir = create_proc_entry(sd_iostats_procdir_name, ++ S_IFDIR | S_IRUGO | S_IXUGO, ++ proc_scsi); ++ if (sd_iostats_procdir == NULL) { ++ printk(KERN_WARNING "No access to sd iostats: " ++ "can't create /proc/scsi/%s\n", sd_iostats_procdir_name); ++ return; ++ } ++} ++ ++void sd_iostats_fini(void) ++{ ++ if (proc_scsi != NULL && sd_iostats_procdir != NULL) ++ remove_proc_entry(sd_iostats_procdir_name, proc_scsi); ++ ++ sd_iostats_procdir = NULL; ++} ++ ++void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) ++{ ++ struct request *rq = SCpnt->request; ++ iostat_stats_t *stats; ++ unsigned long *tcounter; ++ int tbucket; ++ int tmp; ++ unsigned long irqflags; ++ unsigned long i; ++ ++ stats = scsi_disk(rq->rq_disk)->stats; ++ if (stats == NULL) ++ return; ++ ++ tmp = jiffies - rq->start_time; ++ for (tbucket = 0; tmp > 1; tbucket++) ++ tmp >>= 1; ++ if (tbucket >= IOSTAT_NCOUNTERS) ++ tbucket = IOSTAT_NCOUNTERS - 1; ++ //printk("%u ticks in D to %u\n", jiffies - rq->start_time, tbucket); ++ ++ tcounter = rq_data_dir(rq) == WRITE ? ++ &stats->iostat_wtime[tbucket] : &stats->iostat_rtime[tbucket]; ++ ++ spin_lock_irqsave(&stats->iostat_lock, irqflags); ++ ++ /* update delay stats */ ++ (*tcounter)++; ++ ++ /* update queue depth stats */ ++ i = stats->iostat_queue_depth; ++ if (i >= IOSTAT_NCOUNTERS) ++ i = IOSTAT_NCOUNTERS - 1; ++ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; ++ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; ++ BUG_ON(stats->iostat_queue_depth == 0); ++ stats->iostat_queue_depth--; ++ ++ /* update seek stats. XXX: not sure about nr_sectors */ ++ stats->iostat_sectors += blk_rq_sectors(rq); ++ stats->iostat_reqs++; ++ if (blk_rq_pos(rq) != stats->iostat_next_sector) { ++ stats->iostat_seek_sectors += ++ blk_rq_pos(rq) > stats->iostat_next_sector ? ++ blk_rq_pos(rq) - stats->iostat_next_sector : ++ stats->iostat_next_sector - blk_rq_pos(rq); ++ stats->iostat_seeks++; ++ } ++ stats->iostat_next_sector = rq_end_sector(rq); ++ ++ stats->iostat_queue_stamp = jiffies; ++ ++ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); ++} ++ ++void sd_iostats_start_req(struct request *rq) ++{ ++ struct scsi_cmnd *SCpnt = rq->special; ++ iostat_stats_t *stats; ++ iostat_counter_t *counter; ++ int bucket; ++ int tbucket; ++ int tmp; ++ unsigned long irqflags; ++ unsigned long i; ++ int nsect; ++ ++ stats = scsi_disk(rq->rq_disk)->stats; ++ if (stats == NULL) ++ return; ++ ++ nsect = scsi_bufflen(SCpnt) >> 9; ++ for (bucket = 0, tmp = nsect; tmp > 1; bucket++) ++ tmp >>= 1; ++ ++ if (bucket >= IOSTAT_NCOUNTERS) { ++ printk (KERN_ERR "sd_iostats_bump: nsect %d too big\n", nsect); ++ BUG(); ++ } ++ ++ counter = rq_data_dir(rq) == WRITE ? ++ &stats->iostat_write_histogram[bucket] : ++ &stats->iostat_read_histogram[bucket]; ++ ++ tmp = jiffies - rq->start_time; ++ for (tbucket = 0; tmp > 1; tbucket++) ++ tmp >>= 1; ++ if (tbucket >= IOSTAT_NCOUNTERS) ++ tbucket = IOSTAT_NCOUNTERS - 1; ++ //printk("%u ticks in Q to %u\n", jiffies - rq->start_time, tbucket); ++ ++ /* an ugly hack to know exact processing time. the right ++ * solution is to add one more field to struct request ++ * hopefully it will break nothing ... */ ++ rq->start_time = jiffies; ++ ++ spin_lock_irqsave(&stats->iostat_lock, irqflags); ++ ++ /* update queue depth stats */ ++ i = stats->iostat_queue_depth; ++ if (i >= IOSTAT_NCOUNTERS) ++ i = IOSTAT_NCOUNTERS - 1; ++ stats->iostat_queue_ticks[i] += jiffies - stats->iostat_queue_stamp; ++ stats->iostat_queue_ticks_sum += jiffies - stats->iostat_queue_stamp; ++ stats->iostat_queue_depth++; ++ ++ /* update delay stats */ ++ if (rq_data_dir(rq) == WRITE) { ++ stats->iostat_wtime_in_queue[tbucket]++; ++ stats->iostat_write_reqs++; ++ } else { ++ stats->iostat_rtime_in_queue[tbucket]++; ++ stats->iostat_read_reqs++; ++ } ++ ++ /* update size stats */ ++ counter->iostat_size += nsect; ++ counter->iostat_count++; ++ ++ stats->iostat_queue_stamp = jiffies; ++ ++ spin_unlock_irqrestore(&stats->iostat_lock, irqflags); ++} ++#endif ++ + /** + * scsi_disk_release - Called to free the scsi_disk structure + * @dev: pointer to embedded class device +@@ -1941,10 +2352,16 @@ + ida_remove(&sd_index_ida, sdkp->index); + spin_unlock(&sd_index_lock); + ++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) ++ if (sdkp->stats) { ++ remove_proc_entry(disk->disk_name, sd_iostats_procdir); ++ kfree(sdkp->stats); ++ sdkp->stats = NULL; ++ } ++#endif + disk->private_data = NULL; + put_disk(disk); + put_device(&sdkp->device->sdev_gendev); +- + kfree(sdkp); + } + +@@ -2061,6 +2478,8 @@ + if (!majors) + return -ENODEV; + ++ sd_iostats_init(); ++ + err = class_register(&sd_disk_class); + if (err) + goto err_out; +@@ -2076,6 +2495,7 @@ + err_out: + for (i = 0; i < SD_MAJORS; i++) + unregister_blkdev(sd_major(i), "sd"); ++ sd_iostats_fini(); + return err; + } + +Index: linux-2.6.27.21-0.1/drivers/scsi/sd.h +=================================================================== +--- linux-2.6.27.21-0.1.orig/drivers/scsi/sd.h 2009-04-23 02:12:56.000000000 -0600 ++++ linux-2.6.27.21-0.1/drivers/scsi/sd.h 2009-05-22 08:38:28.000000000 -0600 +@@ -37,6 +37,46 @@ + SD_MEMPOOL_SIZE = 2, /* CDB pool size */ + }; + ++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) ++typedef struct { ++ unsigned long long iostat_size; ++ unsigned long long iostat_count; ++} iostat_counter_t; ++ ++#define IOSTAT_NCOUNTERS 16 ++typedef struct { ++ iostat_counter_t iostat_read_histogram[IOSTAT_NCOUNTERS]; ++ iostat_counter_t iostat_write_histogram[IOSTAT_NCOUNTERS]; ++ struct timeval iostat_timeval; ++ ++ /* queue depth: how well the pipe is filled up */ ++ unsigned long long iostat_queue_ticks[IOSTAT_NCOUNTERS]; ++ unsigned long long iostat_queue_ticks_sum; ++ unsigned long iostat_queue_depth; ++ unsigned long iostat_queue_stamp; ++ ++ /* seeks: how linear the traffic is */ ++ unsigned long long iostat_next_sector; ++ unsigned long long iostat_seek_sectors; ++ unsigned long long iostat_seeks; ++ unsigned long long iostat_sectors; ++ unsigned long long iostat_reqs; ++ unsigned long iostat_read_reqs; ++ unsigned long iostat_write_reqs; ++ ++ /* process time: how long it takes to process requests */ ++ unsigned long iostat_rtime[IOSTAT_NCOUNTERS]; ++ unsigned long iostat_wtime[IOSTAT_NCOUNTERS]; ++ ++ /* queue time: how long process spent in elevator's queue */ ++ unsigned long iostat_rtime_in_queue[IOSTAT_NCOUNTERS]; ++ unsigned long iostat_wtime_in_queue[IOSTAT_NCOUNTERS]; ++ ++ /* must be the last field, as it's used to know size to be memset'ed */ ++ spinlock_t iostat_lock; ++} ____cacheline_aligned_in_smp iostat_stats_t; ++#endif ++ + struct scsi_disk { + struct scsi_driver *driver; /* always &sd_template */ + struct scsi_device *device; +@@ -53,6 +93,9 @@ + unsigned RCD : 1; /* state of disk RCD bit, unused */ + unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ + unsigned first_scan : 1; ++#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS)) ++ iostat_stats_t *stats; /* scsi disk statistics */ ++#endif + }; + #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,dev) + diff -Nru lustre-1.8.3/lustre/kernel_patches/patches/vfs_races-2.6.22-vanilla.patch lustre-1.8.5+dfsg/lustre/kernel_patches/patches/vfs_races-2.6.22-vanilla.patch --- lustre-1.8.3/lustre/kernel_patches/patches/vfs_races-2.6.22-vanilla.patch 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/patches/vfs_races-2.6.22-vanilla.patch 2010-11-17 04:31:48.000000000 +0100 @@ -41,7 +41,7 @@ + d_rehash_cond(entry, 1); } - #define do_switch(x,y) do { \ + /* Index: linux-2.6.22.5/include/linux/dcache.h =================================================================== --- linux-2.6.22.5.orig/include/linux/dcache.h 2007-08-22 17:23:54.000000000 -0600 @@ -52,5 +52,5 @@ #define DCACHE_UNHASHED 0x0010 +#define DCACHE_LUSTRE_INVALID 0x0040 /* Lustre invalidated */ - #define DCACHE_INOTIFY_PARENT_WATCHED 0x0020 /* Parent inode is watched */ + #define DCACHE_INOTIFY_PARENT_WATCHED 0x0020 /* Parent inode is watched by inotify */ diff -Nru lustre-1.8.3/lustre/kernel_patches/series/2.6.26-vanilla.series lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6.26-vanilla.series --- lustre-1.8.3/lustre/kernel_patches/series/2.6.26-vanilla.series 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6.26-vanilla.series 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -lustre_version.patch -debian-2.6.26.diff diff -Nru lustre-1.8.3/lustre/kernel_patches/series/2.6.27-vanilla.series lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6.27-vanilla.series --- lustre-1.8.3/lustre/kernel_patches/series/2.6.27-vanilla.series 2012-01-08 21:11:57.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6.27-vanilla.series 1970-01-01 01:00:00.000000000 +0100 @@ -1,15 +0,0 @@ -lustre_version.patch -vfs_races-2.6.22-vanilla.patch -iopen-misc-2.6.22-vanilla.patch -export-truncate-2.6.18-vanilla.patch -export_symbols-2.6.22-vanilla.patch -dev_read_only-2.6.27-vanilla.patch -export-2.6.27-vanilla.patch -export-show_task-2.6.27-vanilla.patch -sd_iostats-2.6.27-vanilla.patch -md-mmp-unplug-dev-2.6.27-vanilla.patch -quota-Split-off-quota-tree-handling-into-a-separate.patch -quota-Increase-size-of-variables-for-limits-and-ino.patch -quota-support-64-bit-quota-format-2.6.27-vanilla.patch -jbd2-jcberr-2.6-sles11.patch -jbd2-commit-timer-no-jiffies-rounding.diff diff -Nru lustre-1.8.3/lustre/kernel_patches/series/2.6-rhel5.series lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6-rhel5.series --- lustre-1.8.3/lustre/kernel_patches/series/2.6-rhel5.series 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6-rhel5.series 2010-11-17 04:31:48.000000000 +0100 @@ -16,14 +16,13 @@ raid5-stripe-by-stripe-handling-rhel5.patch raid5-merge-ios-rhel5.patch raid5-zerocopy-rhel5.patch +raid5-maxsectors-rhel5.patch md-rebuild-policy.patch -md-soft-lockups.patch jbd-journal-chksum-2.6.18-vanilla.patch quota-large-limits-rhel5.patch md-mmp-unplug-dev.patch -prune-icache-use-trylock-rhel5.patch -jbd-slab-race-2.6-rhel5.patch mpt-fusion-max-sge.patch jbd2-jcberr-2.6-rhel5.patch jbd2-commit-timer-no-jiffies-rounding.diff md-avoid-bug_on-when-bmc-overflow.patch +jbd2_stats_proc_init-wrong-place.patch diff -Nru lustre-1.8.3/lustre/kernel_patches/series/2.6-sles10.series lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6-sles10.series --- lustre-1.8.3/lustre/kernel_patches/series/2.6-sles10.series 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6-sles10.series 2010-11-17 04:31:48.000000000 +0100 @@ -12,4 +12,3 @@ quota-fix-oops-in-invalidate_dquots.patch quota-large-limits-sles10.patch md-mmp-unplug-dev-sles10.patch -prune-icache-use-trylock-sles10.patch diff -Nru lustre-1.8.3/lustre/kernel_patches/series/2.6-sles11.series lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6-sles11.series --- lustre-1.8.3/lustre/kernel_patches/series/2.6-sles11.series 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/series/2.6-sles11.series 2010-11-17 04:31:48.000000000 +0100 @@ -2,14 +2,11 @@ vfs_races-2.6.22-vanilla.patch iopen-misc-2.6.22-vanilla.patch export-truncate-2.6.18-vanilla.patch -export_symbols-2.6.22-vanilla.patch dev_read_only-2.6.27-vanilla.patch export-2.6.27-vanilla.patch export-show_task-2.6.27-vanilla.patch -sd_iostats-2.6.27-vanilla.patch -blkdev_tunables-2.6-sles11.patch +sd_iostats-2.6.32-vanilla.patch md-mmp-unplug-dev-sles11.patch quota-support-64-bit-quota-format.patch jbd2-jcberr-2.6-sles11.patch -jbd2-commit-timer-no-jiffies-rounding.diff -prune-icache-use-trylock-rhel5.patch +jbd2_stats_proc_init-wrong-place.patch diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-fc5.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-fc5.target --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-fc5.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-fc5.target 2010-11-17 04:32:17.000000000 +0100 @@ -4,10 +4,10 @@ KERNEL=linux-${lnxmaj}-${lnxrel}.tar.bz2 SERIES=2.6-fc5.series VERSION=${lnxmaj} -EXTRA_VERSION=${lnxrel}_lustre.1.8.3 +EXTRA_VERSION=${lnxrel}_lustre.1.8.5 RHBUILD=1 LINUX26=1 -LUSTRE_VERSION=1.8.3 +LUSTRE_VERSION=1.8.5 BASE_ARCHS="i686" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-oel5.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-oel5.target --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-oel5.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-oel5.target 2010-11-17 04:32:17.000000000 +0100 @@ -1,14 +1,14 @@ lnxmaj="2.6.18" -lnxrel="164.11.1.0.1.el5" +lnxrel="194.17.1.0.1.el5" KERNEL_SRPM=kernel-$lnxmaj-$lnxrel.src.rpm SERIES=2.6-rhel5.series -EXTRA_VERSION=${lnxrel}_lustre.1.8.3 -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION=${lnxrel}_lustre.1.8.5 +LUSTRE_VERSION=1.8.5 OFED_VERSION=inkernel RDAC_VERSION="09.03.0C02.0013" -MPTLINUX_VERSION="4.16.00.00-2" +MPTLINUX_VERSION="4.18.20.04" BASE_ARCHS="i686 x86_64 ia64" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-oel5.target.in lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-oel5.target.in --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-oel5.target.in 2010-02-04 07:54:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-oel5.target.in 2010-11-17 04:31:48.000000000 +0100 @@ -1,5 +1,5 @@ lnxmaj="2.6.18" -lnxrel="164.11.1.0.1.el5" +lnxrel="194.17.1.0.1.el5" KERNEL_SRPM=kernel-$lnxmaj-$lnxrel.src.rpm SERIES=2.6-rhel5.series @@ -8,7 +8,7 @@ OFED_VERSION=inkernel RDAC_VERSION="09.03.0C02.0013" -MPTLINUX_VERSION="4.16.00.00-2" +MPTLINUX_VERSION="4.18.20.04" BASE_ARCHS="i686 x86_64 ia64" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-patchless.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-patchless.target --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-patchless.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-patchless.target 2010-11-17 04:32:17.000000000 +0100 @@ -7,7 +7,7 @@ EXTRA_VERSION=${lnxrel} RHBUILD=1 LINUX26=1 -LUSTRE_VERSION=1.8.3 +LUSTRE_VERSION=1.8.5 BASE_ARCHS="i686 x86_64 ia64" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-rhel4.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-rhel4.target --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-rhel4.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-rhel4.target 2010-11-17 04:32:17.000000000 +0100 @@ -4,12 +4,12 @@ KERNEL=linux-${lnxmaj}-${lnxrel}.tar.bz2 SERIES=2.6-rhel4.series VERSION=${lnxmaj} -EXTRA_VERSION=${lnxrel}_lustre.1.8.3 +EXTRA_VERSION=${lnxrel}_lustre.1.8.5 RHBUILD=1 LINUX26=1 -LUSTRE_VERSION=1.8.3 +LUSTRE_VERSION=1.8.5 -OFED_VERSION=1.4.2 +OFED_VERSION=1.5.2 BASE_ARCHS="i686 x86_64 ia64" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-rhel4.target.in lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-rhel4.target.in --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-rhel4.target.in 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-rhel4.target.in 2010-11-17 04:31:48.000000000 +0100 @@ -9,7 +9,7 @@ LINUX26=1 LUSTRE_VERSION=@VERSION@ -OFED_VERSION=1.4.2 +OFED_VERSION=1.5.2 BASE_ARCHS="i686 x86_64 ia64" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-rhel5.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-rhel5.target --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-rhel5.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-rhel5.target 2010-11-17 04:32:17.000000000 +0100 @@ -1,14 +1,14 @@ lnxmaj="2.6.18" -lnxrel="164.11.1.el5" +lnxrel="194.17.1.el5" KERNEL_SRPM=kernel-${lnxmaj}-${lnxrel}.src.rpm SERIES=2.6-rhel5.series -EXTRA_VERSION=${lnxrel}_lustre.1.8.3 -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION=${lnxrel}_lustre.1.8.5 +LUSTRE_VERSION=1.8.5 OFED_VERSION=inkernel RDAC_VERSION="09.03.0C02.0013" -MPTLINUX_VERSION="4.16.00.00-2" +MPTLINUX_VERSION="4.18.20.04" BASE_ARCHS="i686 x86_64 ia64 ppc64" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-rhel5.target.in lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-rhel5.target.in --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-rhel5.target.in 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-rhel5.target.in 2010-11-17 04:31:48.000000000 +0100 @@ -1,5 +1,5 @@ lnxmaj="2.6.18" -lnxrel="164.11.1.el5" +lnxrel="194.17.1.el5" KERNEL_SRPM=kernel-${lnxmaj}-${lnxrel}.src.rpm SERIES=2.6-rhel5.series @@ -8,7 +8,7 @@ OFED_VERSION=inkernel RDAC_VERSION="09.03.0C02.0013" -MPTLINUX_VERSION="4.16.00.00-2" +MPTLINUX_VERSION="4.18.20.04" BASE_ARCHS="i686 x86_64 ia64 ppc64" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-sles10.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-sles10.target --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-sles10.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-sles10.target 2010-11-17 04:32:17.000000000 +0100 @@ -1,6 +1,6 @@ lnxmaj="2.6.16" lnxmin=".60" -lnxrel="0.42.8" +lnxrel="0.69.1" # use this when there is an "RPM fix" which means that the name of the # (source) RPM has been updated but the version of the kernel inside the # RPM is not also updated @@ -13,20 +13,24 @@ KERNEL_SRPM=kernel-source-${lnxmaj}${lnxmin}-${lnxrel}${rpmfix}.src.rpm SERIES=2.6-sles10.series VERSION=$lnxmaj -EXTRA_VERSION="${lnxmin#.}-${lnxrel}_lustre.1.8.3" -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION="${lnxmin#.}-${lnxrel}_lustre.1.8.5" +LUSTRE_VERSION=1.8.5 -OFED_VERSION=1.4.2 +OFED_VERSION=inkernel +# if using "inkernel" on sles10, we need to know which version of ofed-devel +# to use +OFED_DEVEL_VERSION="1.4.2-0.8.4.1682.0.PTF.578796" RDAC_VERSION="09.03.0C02.0013" -MPTLINUX_VERSION="4.16.00.00-2" +MPTLINUX_VERSION="4.18.20.04" BASE_ARCHS="i686 ppc x86_64 ia64 ppc64" BIGMEM_ARCHS="" BOOT_ARCHS="" JENSEN_ARCHS="" -SMP_ARCHS="x86_64 ia64 ppc64" +SMP_ARCHS="x86_64 ia64" BIGSMP_ARCHS="i686" PSERIES64_ARCHS="ppc" +PPC64_ARCHS="ppc64" UP_ARCHS="" SRC_ARCHS="" #RPMSMPTYPE="smp" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-sles10.target.in lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-sles10.target.in --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-sles10.target.in 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-sles10.target.in 2010-11-17 04:31:48.000000000 +0100 @@ -1,6 +1,6 @@ lnxmaj="2.6.16" lnxmin=".60" -lnxrel="0.42.8" +lnxrel="0.69.1" # use this when there is an "RPM fix" which means that the name of the # (source) RPM has been updated but the version of the kernel inside the # RPM is not also updated @@ -16,17 +16,21 @@ EXTRA_VERSION="${lnxmin#.}-${lnxrel}_lustre.@VERSION@" LUSTRE_VERSION=@VERSION@ -OFED_VERSION=1.4.2 +OFED_VERSION=inkernel +# if using "inkernel" on sles10, we need to know which version of ofed-devel +# to use +OFED_DEVEL_VERSION="1.4.2-0.8.4.1682.0.PTF.578796" RDAC_VERSION="09.03.0C02.0013" -MPTLINUX_VERSION="4.16.00.00-2" +MPTLINUX_VERSION="4.18.20.04" BASE_ARCHS="i686 ppc x86_64 ia64 ppc64" BIGMEM_ARCHS="" BOOT_ARCHS="" JENSEN_ARCHS="" -SMP_ARCHS="x86_64 ia64 ppc64" +SMP_ARCHS="x86_64 ia64" BIGSMP_ARCHS="i686" PSERIES64_ARCHS="ppc" +PPC64_ARCHS="ppc64" UP_ARCHS="" SRC_ARCHS="" #RPMSMPTYPE="smp" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-sles11.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-sles11.target --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-sles11.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-sles11.target 2010-11-17 04:32:17.000000000 +0100 @@ -1,6 +1,6 @@ -lnxmaj="2.6.27" -lnxmin=".39" -lnxrel="0.3" +lnxmaj="2.6.32" +lnxmin=".19" +lnxrel="0.2" # use this when there is an "RPM fix" which means that the name of the # (source) RPM has been updated but the version of the kernel inside the # RPM is not also updated @@ -13,10 +13,11 @@ KERNEL_SRPM=kernel-source-${lnxmaj}${lnxmin}-${lnxrel}${rpmfix}.src.rpm SERIES=2.6-sles11.series VERSION=$lnxmaj -EXTRA_VERSION="${lnxmin#.}-${lnxrel}_lustre.1.8.3" -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION="${lnxmin#.}-${lnxrel}_lustre.1.8.5" +LUSTRE_VERSION=1.8.5 -OFED_VERSION=1.4.2 +OFED_VERSION=inkernel +MPTLINUX_VERSION="4.18.20.04" BASE_ARCHS="i686 ppc x86_64 ia64 ppc64" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-sles11.target.in lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-sles11.target.in --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-sles11.target.in 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-sles11.target.in 2010-11-17 04:31:48.000000000 +0100 @@ -1,6 +1,6 @@ -lnxmaj="2.6.27" -lnxmin=".39" -lnxrel="0.3" +lnxmaj="2.6.32" +lnxmin=".19" +lnxrel="0.2" # use this when there is an "RPM fix" which means that the name of the # (source) RPM has been updated but the version of the kernel inside the # RPM is not also updated @@ -16,7 +16,8 @@ EXTRA_VERSION="${lnxmin#.}-${lnxrel}_lustre.@VERSION@" LUSTRE_VERSION=@VERSION@ -OFED_VERSION=1.4.2 +OFED_VERSION=inkernel +MPTLINUX_VERSION="4.18.20.04" BASE_ARCHS="i686 ppc x86_64 ia64 ppc64" BIGMEM_ARCHS="" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-suse.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-suse.target --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-suse.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-suse.target 2010-11-17 04:32:17.000000000 +0100 @@ -5,8 +5,8 @@ # they include our patches SERIES=2.6-suse-newer.series VERSION=$lnxmaj -EXTRA_VERSION="${lnxrel}_lustre.1.8.3" -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION="${lnxrel}_lustre.1.8.5" +LUSTRE_VERSION=1.8.5 RHBUILD=0 LINUX26=1 SUSEBUILD=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/2.6-vanilla.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-vanilla.target --- lustre-1.8.3/lustre/kernel_patches/targets/2.6-vanilla.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/2.6-vanilla.target 2010-11-17 04:32:17.000000000 +0100 @@ -8,8 +8,8 @@ KERNEL=linux-$lnxmaj.$lnxrel.tar.bz2 SERIES=2.6.22-vanilla.series VERSION=$lnxmaj -EXTRA_VERSION="${lnxrel}_lustre.1.8.3" -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION="${lnxrel}_lustre.1.8.5" +LUSTRE_VERSION=1.8.5 RHBUILD=0 LINUX26=1 # No /boot/Kerntypes* in SLES10 diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/hp_pnnl-2.4.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/hp_pnnl-2.4.target --- lustre-1.8.3/lustre/kernel_patches/targets/hp_pnnl-2.4.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/hp_pnnl-2.4.target 2010-11-17 04:32:17.000000000 +0100 @@ -4,8 +4,8 @@ KERNEL=linux-$lnxmaj-$lnxrel.tar.gz SERIES=hp-pnnl-2.4.20 VERSION=$lnxmaj -EXTRA_VERSION=$lnxrel_lustre.1.8.3 -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION=$lnxrel_lustre.1.8.5 +LUSTRE_VERSION=1.8.5 RHBUILD=0 BASE_ARCHS="ia64" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/rh-2.4.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/rh-2.4.target --- lustre-1.8.3/lustre/kernel_patches/targets/rh-2.4.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/rh-2.4.target 2010-11-17 04:32:17.000000000 +0100 @@ -4,8 +4,8 @@ KERNEL=linux-${lnxmaj}-${lnxrel}.tar.gz SERIES=rh-2.4.20 VERSION=$lnxmaj -EXTRA_VERSION=${lnxrel}_lustre.1.8.3 -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION=${lnxrel}_lustre.1.8.5 +LUSTRE_VERSION=1.8.5 RHBUILD=1 BASE_ARCHS="i686" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/rhel-2.4.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/rhel-2.4.target --- lustre-1.8.3/lustre/kernel_patches/targets/rhel-2.4.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/rhel-2.4.target 2010-11-17 04:32:17.000000000 +0100 @@ -4,8 +4,8 @@ KERNEL=linux-${lnxmaj}-${lnxrel}.tar.bz2 SERIES=rhel-2.4.21 VERSION=${lnxmaj} -LUSTRE_VERSION=1.8.3 -EXTRA_VERSION=${lnxrel}_lustre.1.8.3 +LUSTRE_VERSION=1.8.5 +EXTRA_VERSION=${lnxrel}_lustre.1.8.5 RHBUILD=1 BASE_ARCHS="i686 x86_64 ia64" diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/sles-2.4.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/sles-2.4.target --- lustre-1.8.3/lustre/kernel_patches/targets/sles-2.4.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/sles-2.4.target 2010-11-17 04:32:17.000000000 +0100 @@ -4,8 +4,8 @@ KERNEL=linux-${lnxmaj}-${lnxrel}.tar.bz2 SERIES=suse-2.4.21-jvn VERSION=${lnxmaj} -EXTRA_VERSION=${lnxrel}_lustre.1.8.3 -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION=${lnxrel}_lustre.1.8.5 +LUSTRE_VERSION=1.8.5 RHBUILD=0 LINUX26=0 SUSEBUILD=1 diff -Nru lustre-1.8.3/lustre/kernel_patches/targets/suse-2.4.21-2.target lustre-1.8.5+dfsg/lustre/kernel_patches/targets/suse-2.4.21-2.target --- lustre-1.8.3/lustre/kernel_patches/targets/suse-2.4.21-2.target 2010-04-10 02:29:26.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/targets/suse-2.4.21-2.target 2010-11-17 04:32:17.000000000 +0100 @@ -1,8 +1,8 @@ KERNEL=linux-2.4.21-x86_64.tar.gz SERIES=suse-2.4.21-2 VERSION=2.4.21 -EXTRA_VERSION=lustre.1.8.3 -LUSTRE_VERSION=1.8.3 +EXTRA_VERSION=lustre.1.8.5 +LUSTRE_VERSION=1.8.5 RHBUILD=0 BASE_ARCHS="x86_64" diff -Nru lustre-1.8.3/lustre/kernel_patches/which_patch lustre-1.8.5+dfsg/lustre/kernel_patches/which_patch --- lustre-1.8.3/lustre/kernel_patches/which_patch 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/kernel_patches/which_patch 2010-11-17 04:31:48.000000000 +0100 @@ -1,10 +1,10 @@ SERIES VERSION COMMENT SUPPORTED KERNELS: -2.6-sles10 SLES10: 2.6.16.60-0.42.8 -2.6-rhel5 RHEL5: 2.6.18-164.11.1.el5 -2.6-sles11 SLES11: 2.6.27.39-0.3.1 -2.6-oel5 OEL5: 2.6.18-164.11.1.0.1.el5 +2.6-sles10 SLES10: 2.6.16.60-0.69.1 +2.6-rhel5 RHEL5: 2.6.18-194.17.1.el5 +2.6-sles11 SLES11: 2.6.32.19-0.2.1 +2.6-oel5 OEL5: 2.6.18-194.17.1.0.1.el5 CLIENT SUPPORT FOR UNPATCHED KERNELS: - kernel.org 2.6.16-2.6.30 + kernel.org 2.6.16-2.6.32 diff -Nru lustre-1.8.3/lustre/ldlm/interval_tree.c lustre-1.8.5+dfsg/lustre/ldlm/interval_tree.c --- lustre-1.8.3/lustre/ldlm/interval_tree.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ldlm/interval_tree.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/ldlm/ldlm_internal.h lustre-1.8.5+dfsg/lustre/ldlm/ldlm_internal.h --- lustre-1.8.3/lustre/ldlm/ldlm_internal.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ldlm/ldlm_internal.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -134,7 +134,7 @@ int ldlm_bl_to_thread_lock(struct ldlm_namespace *ns, struct ldlm_lock_desc *ld, struct ldlm_lock *lock); int ldlm_bl_to_thread_list(struct ldlm_namespace *ns, struct ldlm_lock_desc *ld, - struct list_head *cancels, int count); + struct list_head *cancels, int count, int mode); void ldlm_handle_bl_callback(struct ldlm_namespace *ns, struct ldlm_lock_desc *ld, struct ldlm_lock *lock); @@ -225,7 +225,7 @@ int rc; \ \ rc = lprocfs_wr_uint(file, buffer, count, &tmp); \ - if (rc) { \ + if (rc < 0) { \ CERROR("Can't parse user input, rc = %d\n", rc); \ return rc; \ } \ diff -Nru lustre-1.8.3/lustre/ldlm/ldlm_lib.c lustre-1.8.5+dfsg/lustre/ldlm/ldlm_lib.c --- lustre-1.8.3/lustre/ldlm/ldlm_lib.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ldlm/ldlm_lib.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -267,6 +267,8 @@ client_obd_list_lock_init(&cli->cl_loi_list_lock); cli->cl_r_in_flight = 0; cli->cl_w_in_flight = 0; + cli->cl_dio_r_in_flight = 0; + cli->cl_dio_w_in_flight = 0; spin_lock_init(&cli->cl_read_rpc_hist.oh_lock); spin_lock_init(&cli->cl_write_rpc_hist.oh_lock); spin_lock_init(&cli->cl_read_page_hist.oh_lock); @@ -551,9 +553,6 @@ } spin_unlock(&exp->exp_lock); - /* release nid stat refererence */ - lprocfs_exp_cleanup(exp); - RETURN(rc); } @@ -624,7 +623,7 @@ { int abort_recovery = 0; - if (obd->obd_stopping) + if (obd->obd_stopping || !obd->obd_recovering) return 1; spin_lock_bh(&obd->obd_processing_task_lock); @@ -633,7 +632,7 @@ spin_unlock_bh(&obd->obd_processing_task_lock); if (!abort_recovery) return 0; - /** check is fs version-capable */ + /** check if fs version-capable */ if (target_fs_version_capable(obd)) { class_handle_stale_exports(obd); } else { @@ -1172,7 +1171,9 @@ /* mark that request is in recovery queue, so request handler will not * drop rpc count in export, bug 19870*/ LASSERT(!req->rq_copy_queued); + spin_lock(&req->rq_lock); req->rq_copy_queued = 1; + spin_unlock(&req->rq_lock); /* increase refcount to keep request in queue */ atomic_inc(&req->rq_refcount); /* release service thread while request is queued @@ -1262,7 +1263,7 @@ list_for_each_entry_safe(req, n, &abort_list, rq_list) { target_exp_dequeue_req_replay(req); list_del_init(&req->rq_list); - DEBUG_REQ(D_ERROR, req, "aborted:"); + DEBUG_REQ(D_ERROR, req, "%s: aborted:", obd->obd_name); req->rq_status = -ENOTCONN; req->rq_type = PTL_RPC_MSG_ERR; rc = lustre_pack_reply(req, 1, NULL, NULL); @@ -1503,11 +1504,22 @@ __u64 next_transno, req_transno; if (obd->obd_stopping) { - CDEBUG(D_HA, "waking for stooping device\n"); + CDEBUG(D_HA, "waking for stopping device\n"); return 1; } spin_lock_bh(&obd->obd_processing_task_lock); + if (obd->obd_abort_recovery) { + CDEBUG(D_HA, "waking for aborted recovery\n"); + spin_unlock_bh(&obd->obd_processing_task_lock); + return 1; + } else if (!obd->obd_recovering) { + CDEBUG(D_HA, "waking for completed recovery (?)\n"); + spin_unlock_bh(&obd->obd_processing_task_lock); + return 1; + } + + LASSERT(!list_empty(&obd->obd_recovery_queue)); req = list_entry(obd->obd_recovery_queue.next, struct ptlrpc_request, rq_list); max = obd->obd_max_recoverable_clients; @@ -1522,20 +1534,15 @@ "queue_len: %d, req_transno: "LPU64", next_transno: "LPU64"\n", max, connected, obd->obd_delayed_clients, completed, queue_len, req_transno, next_transno); - if (obd->obd_abort_recovery) { - CDEBUG(D_HA, "waking for aborted recovery\n"); - wake_up = 1; - } else if (!obd->obd_recovering) { - CDEBUG(D_HA, "waking for completed recovery (?)\n"); - wake_up = 1; - } else if (req_transno == next_transno) { + if (req_transno == next_transno) { CDEBUG(D_HA, "waking for next ("LPD64")\n", next_transno); wake_up = 1; } else if (queue_len == obd->obd_recoverable_clients) { CDEBUG(D_ERROR, - "waking for skipped transno (skip: "LPD64 + "%s: waking for skipped transno (skip: "LPD64 ", ql: %d, comp: %d, conn: %d, next: "LPD64")\n", - next_transno, queue_len, completed, max, req_transno); + obd->obd_name, next_transno, queue_len, completed, max, + req_transno); obd->obd_next_recovery_transno = req_transno; wake_up = 1; } @@ -1552,22 +1559,34 @@ for (;;) { spin_lock_bh(&obd->obd_processing_task_lock); - LASSERT(obd->obd_processing_task == cfs_curproc_pid()); + + if (!obd->obd_recovering) { + spin_unlock_bh(&obd->obd_processing_task_lock); + EXIT; + return; + } + + LASSERTF(obd->obd_processing_task == cfs_curproc_pid(), + "%s: invalid pid in obd_processing_task (%d != %d)\n", + obd->obd_name, obd->obd_processing_task, + cfs_curproc_pid()); req = list_entry(obd->obd_recovery_queue.next, struct ptlrpc_request, rq_list); if (lustre_msg_get_transno(req->rq_reqmsg) != obd->obd_next_recovery_transno) { spin_unlock_bh(&obd->obd_processing_task_lock); - CDEBUG(D_HA, "Waiting for transno "LPD64" (1st is " - LPD64", x"LPU64")\n", + CDEBUG(D_HA, "%s: waiting for transno "LPD64" (1st is " + LPD64", x"LPU64")\n", obd->obd_name, obd->obd_next_recovery_transno, lustre_msg_get_transno(req->rq_reqmsg), req->rq_xid); l_wait_event(obd->obd_next_transno_waitq, check_for_next_transno(obd), &lwi); - if (target_recovery_check_and_stop(obd)) + if (target_recovery_check_and_stop(obd)) { + EXIT; return; + } continue; } list_del_init(&req->rq_list); @@ -1622,6 +1641,12 @@ } spin_lock_bh(&obd->obd_processing_task_lock); + + if (!obd->obd_recovering) { + spin_unlock_bh(&obd->obd_processing_task_lock); + RETURN(0); + } + /* If we're processing the queue, we want don't want to queue this * message. * @@ -1647,7 +1672,8 @@ if (target_exp_enqueue_req_replay(req)) { spin_unlock_bh(&obd->obd_processing_task_lock); - DEBUG_REQ(D_ERROR, req, "dropping resent queued req"); + DEBUG_REQ(D_ERROR, req, "%s: dropping resent queued req", + obd->obd_name); RETURN(0); } @@ -1665,8 +1691,9 @@ if (unlikely(lustre_msg_get_transno(reqiter->rq_reqmsg) == transno)) { spin_unlock_bh(&obd->obd_processing_task_lock); - DEBUG_REQ(D_ERROR, req, "dropping replay: transno " - "has been claimed by another client"); + DEBUG_REQ(D_ERROR, req, "%s: dropping replay: transno " + "has been claimed by another client", + obd->obd_name); target_exp_dequeue_req_replay(req); RETURN(0); } diff -Nru lustre-1.8.3/lustre/ldlm/ldlm_lock.c lustre-1.8.5+dfsg/lustre/ldlm/ldlm_lock.c --- lustre-1.8.3/lustre/ldlm/ldlm_lock.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ldlm/ldlm_lock.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/ldlm/ldlm_lockd.c lustre-1.8.5+dfsg/lustre/ldlm/ldlm_lockd.c --- lustre-1.8.3/lustre/ldlm/ldlm_lockd.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ldlm/ldlm_lockd.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -133,6 +133,9 @@ struct ldlm_lock *blwi_lock; struct list_head blwi_head; int blwi_count; + struct completion blwi_comp; + int blwi_mode; + int blwi_mem_pressure; }; #ifdef __KERNEL__ @@ -581,18 +584,28 @@ ldlm_failed_ast(lock, rc, ast_type); } } else if (rc) { - if (rc == -EINVAL) + if (rc == -EINVAL) { + struct ldlm_resource *res = lock->l_resource; + LDLM_DEBUG(lock, "client (nid %s) returned %d" " from %s AST - normal race", libcfs_nid2str(peer.nid), lustre_msg_get_status(req->rq_repmsg), ast_type); - else + if (res) { + /* update lvbo to return proper attributes. + * see bug 23174 */ + ldlm_resource_getref(res); + ldlm_res_lvbo_update(res, NULL, 0, 1); + ldlm_resource_putref(res); + } + } else { LDLM_ERROR(lock, "client (nid %s) returned %d " "from %s AST", libcfs_nid2str(peer.nid), (req->rq_repmsg != NULL) ? lustre_msg_get_status(req->rq_repmsg) : 0, ast_type); + } ldlm_lock_cancel(lock); /* Server-side AST functions are called from ldlm_reprocess_all, * which needs to be told to please restart its reprocessing. */ @@ -614,12 +627,6 @@ lock = req->rq_async_args.pointer_arg[1]; LASSERT(lock != NULL); if (rc != 0) { - /* If client canceled the lock but the cancel has not - * been recieved yet, we need to update lvbo to have the - * proper attributes cached. */ - if (rc == -EINVAL && arg->type == LDLM_BL_CALLBACK) - ldlm_res_lvbo_update(lock->l_resource, NULL, - 0, 1); rc = ldlm_handle_ast_error(lock, req, rc, arg->type == LDLM_BL_CALLBACK ? "blocking" : "completion"); @@ -1580,22 +1587,46 @@ } #ifdef __KERNEL__ -static int ldlm_bl_to_thread(struct ldlm_namespace *ns, - struct ldlm_lock_desc *ld, struct ldlm_lock *lock, - struct list_head *cancels, int count) +static int __ldlm_bl_to_thread(struct ldlm_bl_work_item *blwi, int mode) { struct ldlm_bl_pool *blp = ldlm_state->ldlm_bl_pool; - struct ldlm_bl_work_item *blwi; ENTRY; - if (cancels && count == 0) - RETURN(0); + spin_lock(&blp->blp_lock); + if (blwi->blwi_lock && blwi->blwi_lock->l_flags & LDLM_FL_DISCARD_DATA) { + /* add LDLM_FL_DISCARD_DATA requests to the priority list */ + list_add_tail(&blwi->blwi_entry, &blp->blp_prio_list); + } else { + /* other blocking callbacks are added to the regular list */ + list_add_tail(&blwi->blwi_entry, &blp->blp_list); + } + spin_unlock(&blp->blp_lock); - OBD_ALLOC(blwi, sizeof(*blwi)); - if (blwi == NULL) - RETURN(-ENOMEM); + cfs_waitq_signal(&blp->blp_waitq); + + /* can not use blwi->blwi_mode as blwi could be already freed in + LDLM_ASYNC mode */ + if (mode == LDLM_SYNC) + wait_for_completion(&blwi->blwi_comp); + + RETURN(0); +} + +static inline void init_blwi(struct ldlm_bl_work_item *blwi, + struct ldlm_namespace *ns, + struct ldlm_lock_desc *ld, + struct list_head *cancels, int count, + struct ldlm_lock *lock, + int mode) +{ + init_completion(&blwi->blwi_comp); + INIT_LIST_HEAD(&blwi->blwi_head); + + if (libcfs_memory_pressure_get()) + blwi->blwi_mem_pressure = 1; blwi->blwi_ns = ns; + blwi->blwi_mode = mode; if (ld != NULL) blwi->blwi_ld = *ld; if (count) { @@ -1605,18 +1636,34 @@ } else { blwi->blwi_lock = lock; } - spin_lock(&blp->blp_lock); - if (lock && lock->l_flags & LDLM_FL_DISCARD_DATA) { - /* add LDLM_FL_DISCARD_DATA requests to the priority list */ - list_add_tail(&blwi->blwi_entry, &blp->blp_prio_list); +} + +static int ldlm_bl_to_thread(struct ldlm_namespace *ns, + struct ldlm_lock_desc *ld, struct ldlm_lock *lock, + struct list_head *cancels, int count, int mode) +{ + ENTRY; + + if (cancels && count == 0) + RETURN(0); + + if (mode == LDLM_SYNC) { + /* if it is synchronous call do minimum mem alloc, as it could + * be triggered from kernel shrinker + */ + struct ldlm_bl_work_item blwi; + memset(&blwi, 0, sizeof(blwi)); + init_blwi(&blwi, ns, ld, cancels, count, lock, LDLM_SYNC); + RETURN(__ldlm_bl_to_thread(&blwi, LDLM_SYNC)); } else { - /* other blocking callbacks are added to the regular list */ - list_add_tail(&blwi->blwi_entry, &blp->blp_list); - } - cfs_waitq_signal(&blp->blp_waitq); - spin_unlock(&blp->blp_lock); + struct ldlm_bl_work_item *blwi; + OBD_ALLOC(blwi, sizeof(*blwi)); + if (blwi == NULL) + RETURN(-ENOMEM); + init_blwi(blwi, ns, ld, cancels, count, lock, LDLM_ASYNC); - RETURN(0); + RETURN(__ldlm_bl_to_thread(blwi, LDLM_ASYNC)); + } } #endif @@ -1624,17 +1671,17 @@ struct ldlm_lock *lock) { #ifdef __KERNEL__ - RETURN(ldlm_bl_to_thread(ns, ld, lock, NULL, 0)); + RETURN(ldlm_bl_to_thread(ns, ld, lock, NULL, 0, LDLM_ASYNC)); #else RETURN(-ENOSYS); #endif } int ldlm_bl_to_thread_list(struct ldlm_namespace *ns, struct ldlm_lock_desc *ld, - struct list_head *cancels, int count) + struct list_head *cancels, int count, int mode) { #ifdef __KERNEL__ - RETURN(ldlm_bl_to_thread(ns, ld, NULL, cancels, count)); + RETURN(ldlm_bl_to_thread(ns, ld, NULL, cancels, count, mode)); #else RETURN(-ENOSYS); #endif @@ -1818,9 +1865,11 @@ if (req->rq_export == NULL) { struct ldlm_request *dlm_req; - CERROR("operation %d from %s with bad export cookie "LPU64"\n", - lustre_msg_get_opc(req->rq_reqmsg), - libcfs_id2str(req->rq_peer), + CERROR("%s from %s arrived at %lu with bad export cookie " + LPU64"\n", + ll_opcode2str(lustre_msg_get_opc(req->rq_reqmsg)), + libcfs_nid2str(req->rq_peer.nid), + req->rq_arrival_time.tv_sec, lustre_msg_get_handle(req->rq_reqmsg)->cookie); if (lustre_msg_get_opc(req->rq_reqmsg) == LDLM_CANCEL) { @@ -1965,6 +2014,8 @@ /* added by ldlm_cleanup() */ break; } + if (blwi->blwi_mem_pressure) + libcfs_memory_pressure_set(); if (blwi->blwi_count) { /* The special case when we cancel locks in lru @@ -1977,7 +2028,13 @@ ldlm_handle_bl_callback(blwi->blwi_ns, &blwi->blwi_ld, blwi->blwi_lock); } - OBD_FREE(blwi, sizeof(*blwi)); + if (blwi->blwi_mem_pressure) + libcfs_memory_pressure_clr(); + + if (blwi->blwi_mode == LDLM_ASYNC) + OBD_FREE(blwi, sizeof(*blwi)); + else + complete(&blwi->blwi_comp); } atomic_dec(&blp->blp_busy_threads); diff -Nru lustre-1.8.3/lustre/ldlm/ldlm_pool.c lustre-1.8.5+dfsg/lustre/ldlm/ldlm_pool.c --- lustre-1.8.3/lustre/ldlm/ldlm_pool.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ldlm/ldlm_pool.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -239,6 +239,9 @@ grant_step = ldlm_pool_t2gsp(pl->pl_recalc_period); grant_step = ((limit - granted) * grant_step) / 100; pl->pl_grant_plan = granted + grant_step; + limit = (limit * 5) >> 2; + if (pl->pl_grant_plan > limit) + pl->pl_grant_plan = limit; } /** @@ -274,10 +277,6 @@ */ slv_factor = (grant_usage << LDLM_POOL_SLV_SHIFT); do_div(slv_factor, limit); - if (2 * abs(granted - limit) > limit) { - slv_factor *= slv_factor; - slv_factor = dru(slv_factor, LDLM_POOL_SLV_SHIFT, round_up); - } slv = slv * slv_factor; slv = dru(slv, LDLM_POOL_SLV_SHIFT, round_up); @@ -1063,7 +1062,8 @@ int total = 0, cached = 0, nr_ns; struct ldlm_namespace *ns; - if (nr != 0 && !(gfp_mask & __GFP_FS)) + if (client == LDLM_NAMESPACE_CLIENT && nr != 0 && + !(gfp_mask & __GFP_FS)) return -1; if (nr != 0) diff -Nru lustre-1.8.3/lustre/ldlm/ldlm_request.c lustre-1.8.5+dfsg/lustre/ldlm/ldlm_request.c --- lustre-1.8.3/lustre/ldlm/ldlm_request.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ldlm/ldlm_request.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -1466,7 +1466,7 @@ * in a thread and this function will return after the thread has been * asked to call the callback. when called with LDLM_SYNC the blocking * callback will be performed in this function. */ -int ldlm_cancel_lru(struct ldlm_namespace *ns, int nr, ldlm_sync_t sync, +int ldlm_cancel_lru(struct ldlm_namespace *ns, int nr, ldlm_sync_t mode, int flags) { CFS_LIST_HEAD(cancels); @@ -1474,19 +1474,15 @@ ENTRY; #ifndef __KERNEL__ - sync = LDLM_SYNC; /* force to be sync in user space */ + mode = LDLM_SYNC; /* force to be sync in user space */ #endif count = ldlm_cancel_lru_local(ns, &cancels, nr, 0, 0, flags); - if (sync == LDLM_ASYNC) { - rc = ldlm_bl_to_thread_list(ns, NULL, &cancels, count); - if (rc == 0) - RETURN(count); - } - /* If an error occured in ASYNC mode, or this is SYNC mode, - * cancel the list. */ - ldlm_cli_cancel_list(&cancels, count, NULL, 0); - RETURN(count); + rc = ldlm_bl_to_thread_list(ns, NULL, &cancels, count, mode); + if (rc == 0) + RETURN(count); + + RETURN(0); } /* Find and cancel locally unused locks found on resource, matched to the @@ -1823,11 +1819,16 @@ RETURN(rc); } -/* non-blocking function to manipulate a lock whose cb_data is being put away.*/ -void ldlm_resource_iterate(struct ldlm_namespace *ns, struct ldlm_res_id *res_id, +/* non-blocking function to manipulate a lock whose cb_data is being put away. + * return 0: find no resource + * > 0: must be LDLM_ITER_STOP/LDLM_ITER_CONTINUE. + * < 0: errors + */ +int ldlm_resource_iterate(struct ldlm_namespace *ns, struct ldlm_res_id *res_id, ldlm_iterator_t iter, void *data) { struct ldlm_resource *res; + int rc; ENTRY; if (ns == NULL) { @@ -1836,14 +1837,12 @@ } res = ldlm_resource_get(ns, NULL, *res_id, 0, 0); - if (res == NULL) { - EXIT; - return; - } + if (res == NULL) + RETURN(0); - ldlm_resource_foreach(res, iter, data); + rc = ldlm_resource_foreach(res, iter, data); ldlm_resource_putref(res); - EXIT; + RETURN(rc); } /* Lock replay */ diff -Nru lustre-1.8.3/lustre/ldlm/ldlm_resource.c lustre-1.8.5+dfsg/lustre/ldlm/ldlm_resource.c --- lustre-1.8.3/lustre/ldlm/ldlm_resource.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ldlm/ldlm_resource.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -177,7 +177,8 @@ canceled = ldlm_cancel_lru(ns, unused, LDLM_SYNC, LDLM_CANCEL_PASSED); if (canceled < unused) { - CERROR("not all requested locks are canceled, " + CDEBUG(D_DLMTRACE, + "not all requested locks are canceled, " "requested: %d, canceled: %d\n", unused, canceled); return -EINVAL; @@ -856,8 +857,9 @@ OBD_FAIL_TIMEOUT(OBD_FAIL_LDLM_CREATE_RESOURCE, 2); rc = ns->ns_lvbo->lvbo_init(res); if (rc) - CERROR("lvbo_init failed for resource " - LPU64": rc %d\n", name.name[0], rc); + CERROR("%s: lvbo_init failed for resource " + LPU64": rc %d\n", ns->ns_name, + name.name[0], rc); /* we create resource with locked lr_lvb_sem */ up(&res->lr_lvb_sem); } @@ -948,11 +950,9 @@ wake_up(&ns->ns_waitq); } -/* Returns 1 if the resource was freed, 0 if it remains. */ -int ldlm_resource_putref(struct ldlm_resource *res) +int ldlm_resource_putref_internal(struct ldlm_resource *res, int locked) { struct ldlm_namespace *ns = res->lr_namespace; - int rc = 0; ENTRY; CDEBUG(D_INFO, "putref res: %p count: %d\n", res, @@ -962,39 +962,35 @@ LASSERTF(atomic_read(&res->lr_refcount) < LI_POISON, "%d", atomic_read(&res->lr_refcount)); - if (atomic_dec_and_lock(&res->lr_refcount, &ns->ns_hash_lock)) { - __ldlm_resource_putref_final(res); + if (locked && !atomic_dec_and_test(&res->lr_refcount)) + RETURN(0); + if (!locked && !atomic_dec_and_lock(&res->lr_refcount, + &ns->ns_hash_lock)) + RETURN(0); + + __ldlm_resource_putref_final(res); + + if (!locked) spin_unlock(&ns->ns_hash_lock); - if (res->lr_lvb_data) - OBD_FREE(res->lr_lvb_data, res->lr_lvb_len); - OBD_SLAB_FREE(res, ldlm_resource_slab, sizeof *res); - rc = 1; - } - RETURN(rc); -} + if (ns->ns_lvbo && ns->ns_lvbo->lvbo_free) + ns->ns_lvbo->lvbo_free(res); -/* Returns 1 if the resource was freed, 0 if it remains. */ -int ldlm_resource_putref_locked(struct ldlm_resource *res) -{ - int rc = 0; - ENTRY; + LASSERT(res->lr_lvb_inode == NULL); - CDEBUG(D_INFO, "putref res: %p count: %d\n", res, - atomic_read(&res->lr_refcount) - 1); - LASSERT(atomic_read(&res->lr_refcount) > 0); - LASSERT(atomic_read(&res->lr_refcount) < LI_POISON); + OBD_SLAB_FREE(res, ldlm_resource_slab, sizeof *res); - LASSERT(atomic_read(&res->lr_refcount) >= 0); - if (atomic_dec_and_test(&res->lr_refcount)) { - __ldlm_resource_putref_final(res); - if (res->lr_lvb_data) - OBD_FREE(res->lr_lvb_data, res->lr_lvb_len); - OBD_SLAB_FREE(res, ldlm_resource_slab, sizeof *res); - rc = 1; - } + RETURN(1); +} - RETURN(rc); +int ldlm_resource_putref(struct ldlm_resource *res) +{ + return ldlm_resource_putref_internal(res, 0); +} + +int ldlm_resource_putref_locked(struct ldlm_resource *res) +{ + return ldlm_resource_putref_internal(res, 1); } void ldlm_resource_add_lock(struct ldlm_resource *res, struct list_head *head, diff -Nru lustre-1.8.3/lustre/liblustre/genlib.sh lustre-1.8.5+dfsg/lustre/liblustre/genlib.sh --- lustre-1.8.3/lustre/liblustre/genlib.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/liblustre/genlib.sh 2010-11-17 04:31:48.000000000 +0100 @@ -14,7 +14,7 @@ AR=/usr/bin/ar # see http://osdir.com/ml/gmane.comp.gnu.binutils.bugs/2006-01/msg00016.php ppc64_CPU=`uname -p` -if [ ${ppc64_CPU} == "ppc64" ]; then +if [ "x${ppc64_CPU}" = "xppc64" ]; then LD="gcc -m64" else LD="gcc" @@ -111,7 +111,12 @@ if test x$OS = xAIX; then $LD -shared -o $CWD/liblustre.so $ALL_OBJS -lpthread -Xlinker -bnoipath ../../libsyscall.so else -$LD -shared -nostdlib -o $CWD/liblustre.so $ALL_OBJS $CAP_LIBS $PTHREAD_LIBS $ZLIB +# using -nostdlib on Ubuntu causes errors such as: +#./llite_lib.o: In function `liblustre_process_log': +#/home/brian/rpm/BUILD/lustre-1.8.2.50/lustre/liblustre/llite_lib.c:234: undefined reference to `__stack_chk_fail_local' +# due to the use of SSP +#$LD -shared -nostdlib -o $CWD/liblustre.so $ALL_OBJS $CAP_LIBS $PTHREAD_LIBS $ZLIB +$LD -shared -o $CWD/liblustre.so $ALL_OBJS $CAP_LIBS $PTHREAD_LIBS $ZLIB fi rm -rf $sysio_tmp diff -Nru lustre-1.8.3/lustre/liblustre/llite_lib.h lustre-1.8.5+dfsg/lustre/liblustre/llite_lib.h --- lustre-1.8.3/lustre/liblustre/llite_lib.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/liblustre/llite_lib.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -107,7 +107,7 @@ /* not for stat, change it later */ int lli_st_flags; unsigned long lli_st_generation; - /* the most recent attributes from mds, it is used for timestampts + /* the most recent attributes from mds, it is used for timestamps * only so far */ struct ost_lvb lli_lvb; }; diff -Nru lustre-1.8.3/lustre/liblustre/rw.c lustre-1.8.5+dfsg/lustre/liblustre/rw.c --- lustre-1.8.3/lustre/liblustre/rw.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/liblustre/rw.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -274,7 +274,7 @@ lov_stripe_lock(lli->lli_smd); inode_init_lvb(inode, &lvb); - /* merge timestamps the most resently obtained from mds with + /* merge timestamps the most recently obtained from mds with timestamps obtained from osts */ lvb = lli->lli_lvb; rc = obd_merge_lvb(sbi->ll_osc_exp, lli->lli_smd, &lvb, 0); diff -Nru lustre-1.8.3/lustre/liblustre/super.c lustre-1.8.5+dfsg/lustre/liblustre/super.c --- lustre-1.8.3/lustre/liblustre/super.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/liblustre/super.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -1966,7 +1966,7 @@ struct lustre_md md; class_uuid_t uuid; struct config_llog_instance cfg = {0, }; - char ll_instance[sizeof(sbi) * 2 + 1]; + char ll_instance[sizeof(sbi) * 2 + 3]; struct lustre_profile *lprof; char *zconf_mgsnid, *zconf_profile; char *osc = NULL, *mdc = NULL; @@ -1996,7 +1996,7 @@ /* generate a string unique to this super, let's try the address of the super itself.*/ - sprintf(ll_instance, "%p", sbi); + snprintf(ll_instance, sizeof(ll_instance), "%p", sbi); /* retrive & parse config log */ cfg.cfg_instance = ll_instance; @@ -2076,10 +2076,6 @@ obd->obd_upcall.onu_owner = &sbi->ll_lco; obd->obd_upcall.onu_upcall = ll_ocd_update; - /* ask lov to generate OBD_NOTIFY_CREATE events for already registered - * targets */ - obd_notify(obd, NULL, OBD_NOTIFY_CREATE, NULL); - obd_register_lock_cancel_cb(obd, llu_extent_lock_cancel_cb); ocd.ocd_connect_flags = OBD_CONNECT_SRVLOCK | OBD_CONNECT_REQPORTAL | diff -Nru lustre-1.8.3/lustre/liblustre/tests/sanity.c lustre-1.8.5+dfsg/lustre/liblustre/tests/sanity.c --- lustre-1.8.3/lustre/liblustre/tests/sanity.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/liblustre/tests/sanity.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -705,8 +705,9 @@ } t_fcntl(fd, F_SETFL, O_APPEND); - if (!(ret = t_fcntl(fd, F_GETFL)) & O_APPEND) { - printf("error get flag: ret %x\n", ret); + ret = t_fcntl(fd, F_GETFL); + if ((ret & O_APPEND) == 0) { + printf("error get flag: ret %o\n", ret); return(-1); } diff -Nru lustre-1.8.3/lustre/llite/dcache.c lustre-1.8.5+dfsg/lustre/llite/dcache.c --- lustre-1.8.3/lustre/llite/dcache.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/dcache.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -111,6 +111,38 @@ RETURN(0); } +static inline int return_if_equal(struct ldlm_lock *lock, void *data) +{ + if (lock->l_flags & LDLM_FL_CANCELING) + return LDLM_ITER_CONTINUE; + return LDLM_ITER_STOP; +} + +/* find any ldlm lock of the inode in mdc and lov + * return 0 not find + * 1 find one + * < 0 error */ +int find_cbdata(struct inode *inode) +{ + struct ll_fid fid; + struct ll_inode_info *lli = ll_i2info(inode); + struct ll_sb_info *sbi = ll_i2sbi(inode); + int rc = 0; + ENTRY; + + LASSERT(inode); + ll_inode2fid(&fid, inode); + rc = mdc_find_cbdata(sbi->ll_mdc_exp, &fid, return_if_equal, NULL); + if (rc != 0) + RETURN(rc); + + if (lli->lli_smd) + rc = obd_find_cbdata(sbi->ll_osc_exp, lli->lli_smd, + return_if_equal, NULL); + + RETURN(rc); +} + /* should NOT be called with the dcache lock, see fs/dcache.c */ static int ll_ddelete(struct dentry *de) { @@ -123,6 +155,15 @@ d_unhashed(de) ? "" : "hashed,", list_empty(&de->d_subdirs) ? "" : "subdirs"); + /* if not ldlm lock for this inode, set i_nlink to 0 so that + * this inode can be recycled later b=20433 */ + LASSERT(atomic_read(&de->d_count) == 0); + if (de->d_inode && !find_cbdata(de->d_inode)) + de->d_inode->i_nlink = 0; + + if (de->d_flags & DCACHE_LUSTRE_INVALID) + RETURN(1); + RETURN(0); } @@ -345,7 +386,7 @@ struct lookup_intent lookup_it = { .it_op = IT_LOOKUP }; struct obd_export *exp; struct inode *parent = de->d_parent->d_inode; - int first = 0, rc; + int first = -1, rc; ENTRY; CDEBUG(D_VFSTRACE, "VFS Op:name=%s,intent=%s\n", de->d_name.name, @@ -365,7 +406,7 @@ RETURN(0); #endif - rc = ll_have_md_lock(parent, MDS_INODELOCK_UPDATE); + rc = ll_have_md_lock(parent, MDS_INODELOCK_UPDATE, LCK_MINMODE); GOTO(out_sa, rc); } @@ -418,7 +459,7 @@ och_usecount = &lli->lli_open_fd_read_count; } /* Check for the proper lock. */ - if (!ll_have_md_lock(inode, MDS_INODELOCK_LOOKUP)) + if (!ll_have_md_lock(inode, MDS_INODELOCK_LOOKUP, LCK_MINMODE)) goto do_lock; down(&lli->lli_och_sem); if (*och_p) { /* Everything is open already, do nothing */ @@ -757,10 +798,19 @@ } #endif +void ll_d_iput(struct dentry *de, struct inode *inode) +{ + LASSERT(inode); + if (inode && !find_cbdata(inode)) + inode->i_nlink = 0; + iput(inode); +} + struct dentry_operations ll_d_ops = { .d_revalidate = ll_revalidate_nd, .d_release = ll_release, .d_delete = ll_ddelete, + .d_iput = ll_d_iput, #ifdef DCACHE_LUSTRE_INVALID .d_compare = ll_dcompare, #endif diff -Nru lustre-1.8.3/lustre/llite/dir.c lustre-1.8.5+dfsg/lustre/llite/dir.c --- lustre-1.8.3/lustre/llite/dir.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/dir.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -803,19 +803,21 @@ static int ll_readdir_20(struct file *filp, void *cookie, filldir_t filldir) { struct inode *inode = filp->f_dentry->d_inode; - struct ll_sb_info *sbi = ll_i2sbi(inode); __u64 pos = filp->f_pos; + struct ll_sb_info *sbi = ll_i2sbi(inode); struct page *page; struct ll_dir_chain chain; int rc; int done; - int shift; + int shift,need_32bit; __u16 type; ENTRY; - CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p) pos %lu/%llu\n", + need_32bit = ll_need_32bit_api(sbi); + + CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p) pos %lu/%llu 32bit_api %d\n", inode->i_ino, inode->i_generation, inode, - (unsigned long)pos, i_size_read(inode)); + (unsigned long)pos, i_size_read(inode), need_32bit); if (pos == DIR_END_OFF) /* @@ -848,7 +850,7 @@ char *name; int namelen; struct lu_fid fid; - ino_t ino; + __u64 ino; hash = le64_to_cpu(ent->lde_hash); namelen = le16_to_cpu(ent->lde_namelen); @@ -869,7 +871,11 @@ fid = ent->lde_fid; name = ent->lde_name; fid_le_to_cpu(&fid, &fid); - ino = ll_fid_build_ino(sbi, (struct ll_fid*)&fid); + if (need_32bit) + ino = ll_fid_build_ino32((struct ll_fid *)&fid); + else + ino = ll_fid_build_ino((struct ll_fid *)&fid); + type = ll_dirent_type_get(ent); done = filldir(cookie, name, namelen, (loff_t)hash, ino, type); @@ -1196,13 +1202,11 @@ sizeof(lumv3p->lmm_objects[0])); /* first try with v1 which is smaller than v3 */ - rc = copy_from_user(lumv1, lumv1p, sizeof(*lumv1)); - if (rc) - return(-EFAULT); + if (copy_from_user(lumv1, lumv1p, sizeof(*lumv1))) + RETURN(-EFAULT); if (lumv1->lmm_magic == LOV_USER_MAGIC_V3) { - rc = copy_from_user(&lumv3, lumv3p, sizeof(lumv3)); - if (rc) + if (copy_from_user(&lumv3, lumv3p, sizeof(lumv3))) RETURN(-EFAULT); } @@ -1265,9 +1269,11 @@ lmdp = (struct lov_user_mds_data *)arg; lump = &lmdp->lmd_lmm; } - rc = copy_to_user(lump, lmm, lmmsize); - if (rc) - GOTO(out_lmm, rc = -EFAULT); + if (copy_to_user(lump, lmm, lmmsize) != 0) { + if (copy_to_user(lump, lmm, sizeof(*lump)) != 0) + GOTO(out_lmm, rc = -EFAULT); + rc = -EOVERFLOW; + } skip_lmm: if (cmd == IOC_MDC_GETFILEINFO || cmd == LL_IOC_MDC_GETINFO) { struct lov_user_mds_data *lmdp; @@ -1288,8 +1294,7 @@ st.st_ino = body->ino; lmdp = (struct lov_user_mds_data *)arg; - rc = copy_to_user(&lmdp->lmd_st, &st, sizeof(st)); - if (rc) + if (copy_to_user(&lmdp->lmd_st, &st, sizeof(st))) GOTO(out_lmm, rc = -EFAULT); } @@ -1320,8 +1325,7 @@ RETURN(rc); OBD_ALLOC(lmm, lmmsize); - rc = copy_from_user(lmm, lum, lmmsize); - if (rc) + if (copy_from_user(lmm, lum, lmmsize)) GOTO(free_lmm, rc = -EFAULT); if (LOV_USER_MAGIC != cpu_to_le32(LOV_USER_MAGIC)) { @@ -1350,8 +1354,7 @@ if (rc) GOTO(free_lsm, rc); - rc = copy_to_user(&lumd->lmd_st, &st, sizeof(st)); - if (rc) + if (copy_to_user(&lumd->lmd_st, &st, sizeof(st))) GOTO(free_lsm, rc = -EFAULT); EXIT; @@ -1402,7 +1405,8 @@ str = lustre_msg_string(req->rq_repmsg, REPLY_REC_OFF, data->ioc_plen1); if (!rc) - rc = copy_to_user(data->ioc_pbuf1, str,data->ioc_plen1); + if (copy_to_user(data->ioc_pbuf1, str,data->ioc_plen1)) + rc = -EFAULT; ptlrpc_req_finished(req); out_catinfo: obd_ioctl_freedata(buf, len); @@ -1448,7 +1452,7 @@ if (rc) { CDEBUG(D_QUOTA, "mdc ioctl %d failed: %d\n", cmd, rc); if (copy_to_user((void *)arg, check, sizeof(*check))) - rc = -EFAULT; + CDEBUG(D_QUOTA, "copy_to_user failed\n"); GOTO(out_poll, rc); } @@ -1457,7 +1461,7 @@ if (rc) { CDEBUG(D_QUOTA, "osc ioctl %d failed: %d\n", cmd, rc); if (copy_to_user((void *)arg, check, sizeof(*check))) - rc = -EFAULT; + CDEBUG(D_QUOTA, "copy_to_user failed\n"); GOTO(out_poll, rc); } out_poll: diff -Nru lustre-1.8.3/lustre/llite/file.c lustre-1.8.5+dfsg/lustre/llite/file.c --- lustre-1.8.3/lustre/llite/file.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/file.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -998,7 +998,7 @@ ll_inode_size_lock(inode, 1); inode_init_lvb(inode, &lvb); - /* merge timestamps the most resently obtained from mds with + /* merge timestamps the most recently obtained from mds with timestamps obtained from osts */ lvb.lvb_atime = lli->lli_lvb.lvb_atime; lvb.lvb_mtime = lli->lli_lvb.lvb_mtime; @@ -2190,12 +2190,11 @@ } #endif -static int ll_lov_recreate_obj(struct inode *inode, struct file *file, - unsigned long arg) +static int ll_lov_recreate(struct inode *inode, obd_id id, obd_gr gr, + obd_count ost_idx) { struct ll_inode_info *lli = ll_i2info(inode); struct obd_export *exp = ll_i2obdexp(inode); - struct ll_recreate_obj ucreatp; struct obd_trans_info oti = { 0 }; struct obdo *oa = NULL; int lsm_size; @@ -2203,14 +2202,6 @@ struct lov_stripe_md *lsm, *lsm2; ENTRY; - if (!cfs_capable(CFS_CAP_SYS_ADMIN)) - RETURN(-EPERM); - - rc = copy_from_user(&ucreatp, (struct ll_recreate_obj *)arg, - sizeof(struct ll_recreate_obj)); - if (rc) { - RETURN(-EFAULT); - } OBDO_ALLOC(oa); if (oa == NULL) RETURN(-ENOMEM); @@ -2226,8 +2217,9 @@ if (lsm2 == NULL) GOTO(out, rc = -ENOMEM); - oa->o_id = ucreatp.lrc_id; - oa->o_nlink = ucreatp.lrc_ost_idx; + oa->o_id = id; + oa->o_gr = gr; + oa->o_nlink = ost_idx; oa->o_flags |= OBD_FL_RECREATE_OBJS; oa->o_valid = OBD_MD_FLID | OBD_MD_FLFLAGS; obdo_from_inode(oa, inode, OBD_MD_FLTYPE | OBD_MD_FLATIME | @@ -2244,6 +2236,41 @@ return rc; } +static int ll_lov_recreate_obj(struct inode *inode, unsigned long arg) +{ + struct ll_recreate_obj ucreat; + ENTRY; + + if (!cfs_capable(CFS_CAP_SYS_ADMIN)) + RETURN(-EPERM); + + if (copy_from_user(&ucreat, (struct ll_recreate_obj *)arg, + sizeof(struct ll_recreate_obj))) + RETURN(-EFAULT); + + RETURN(ll_lov_recreate(inode, ucreat.lrc_id, 0, + ucreat.lrc_ost_idx)); +} + +static int ll_lov_recreate_fid(struct inode *inode, unsigned long arg) +{ + struct lu_fid fid; + obd_id id; + obd_count ost_idx; + ENTRY; + + if (!cfs_capable(CFS_CAP_SYS_ADMIN)) + RETURN(-EPERM); + + if (copy_from_user(&fid, (struct lu_fid *)arg, + sizeof(struct lu_fid))) + RETURN(-EFAULT); + + id = fid_oid(&fid) | ((fid_seq(&fid) & 0xffff) << 32); + ost_idx = (fid_seq(&fid) >> 16) & 0xffff; + RETURN(ll_lov_recreate(inode, id, 0, ost_idx)); +} + int ll_lov_setstripe_ea_info(struct inode *inode, struct file *file, int flags, struct lov_user_md *lum, int lum_size) @@ -2914,7 +2941,9 @@ case LL_IOC_LOV_GETSTRIPE: RETURN(ll_lov_getstripe(inode, arg)); case LL_IOC_RECREATE_OBJ: - RETURN(ll_lov_recreate_obj(inode, file, arg)); + RETURN(ll_lov_recreate_obj(inode, arg)); + case LL_IOC_RECREATE_FID: + RETURN(ll_lov_recreate_fid(inode, arg)); case FSFILT_IOC_FIEMAP: RETURN(ll_ioctl_fiemap(inode, arg)); case FSFILT_IOC_GETFLAGS: @@ -3029,6 +3058,30 @@ RETURN(retval); } +#ifdef HAVE_FLUSH_OWNER_ID +int ll_flush(struct file *file, fl_owner_t id) +#else +int ll_flush(struct file *file) +#endif +{ + struct inode *inode = file->f_dentry->d_inode; + struct ll_inode_info *lli = ll_i2info(inode); + struct lov_stripe_md *lsm = lli->lli_smd; + int rc, err; + + /* catch async errors that were recorded back when async writeback + * failed for pages in this mapping. */ + rc = lli->lli_async_rc; + lli->lli_async_rc = 0; + if (lsm) { + err = lov_test_and_clear_async_rc(lsm); + if (rc == 0) + rc = err; + } + + return rc ? -EIO : 0; +} + int ll_fsync(struct file *file, struct dentry *dentry, int data) { struct inode *inode = dentry->d_inode; @@ -3211,12 +3264,14 @@ RETURN(-ENOSYS); } -int ll_have_md_lock(struct inode *inode, __u64 bits) +int ll_have_md_lock(struct inode *inode, __u64 bits, ldlm_mode_t l_req_mode) { struct lustre_handle lockh; struct ldlm_res_id res_id; struct obd_device *obddev; ldlm_policy_data_t policy = { .l_inodebits = {bits}}; + ldlm_mode_t mode = (l_req_mode == LCK_MINMODE) ? + (LCK_CR|LCK_CW|LCK_PR|LCK_PW) : l_req_mode; int flags; ENTRY; @@ -3226,14 +3281,15 @@ obddev = ll_i2mdcexp(inode)->exp_obd; fid_build_reg_res_name(ll_inode_lu_fid(inode), &res_id); - CDEBUG(D_INFO, "trying to match res "LPU64":"LPU64":"LPU64"\n", + CDEBUG(D_INFO, "trying to match res "LPU64":"LPU64":"LPU64" mode %s\n", res_id.name[0], res_id.name[1], - res_id.name[2]); + res_id.name[2], + ldlm_lockname[mode]); flags = LDLM_FL_BLOCK_GRANTED | LDLM_FL_CBPENDING | LDLM_FL_TEST_LOCK; if (ldlm_lock_match(obddev->obd_namespace, flags, &res_id, LDLM_IBITS, - &policy, LCK_CR|LCK_CW|LCK_PR|LCK_PW, &lockh)) { + &policy, mode, &lockh)) { RETURN(1); } @@ -3317,7 +3373,7 @@ } ll_lookup_finish_locks(&oit, dentry); - } else if (!ll_have_md_lock(dentry->d_inode, ibits)) { + } else if (!ll_have_md_lock(dentry->d_inode, ibits, LCK_MINMODE)) { struct ll_sb_info *sbi = ll_i2sbi(dentry->d_inode); struct ll_fid fid; obd_valid valid = OBD_MD_FLGETATTR; @@ -3375,6 +3431,7 @@ struct lookup_intent *it, struct kstat *stat) { struct inode *inode = de->d_inode; + struct ll_inode_info *lli = ll_i2info(inode); int res = 0; res = ll_inode_revalidate_it(de, it); @@ -3384,7 +3441,10 @@ return res; stat->dev = inode->i_sb->s_dev; - stat->ino = inode->i_ino; + if (cfs_curproc_is_32bit()) + stat->ino = ll_fid_build_ino32((struct ll_fid *)&lli->lli_fid); + else + stat->ino = inode->i_ino; stat->mode = inode->i_mode; stat->nlink = inode->i_nlink; stat->uid = inode->i_uid; @@ -3582,6 +3642,7 @@ .sendfile = ll_file_sendfile, #endif .fsync = ll_fsync, + .flush = ll_flush }; struct file_operations ll_file_operations_flock = { @@ -3609,6 +3670,7 @@ .sendfile = ll_file_sendfile, #endif .fsync = ll_fsync, + .flush = ll_flush, #ifdef HAVE_F_OP_FLOCK .flock = ll_file_flock, #endif @@ -3641,6 +3703,7 @@ .sendfile = ll_file_sendfile, #endif .fsync = ll_fsync, + .flush = ll_flush, #ifdef HAVE_F_OP_FLOCK .flock = ll_file_noflock, #endif diff -Nru lustre-1.8.3/lustre/llite/llite_internal.h lustre-1.8.5+dfsg/lustre/llite/llite_internal.h --- lustre-1.8.3/lustre/llite/llite_internal.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/llite_internal.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -185,7 +185,7 @@ void *lli_opendir_key; struct ll_statahead_info *lli_sai; struct rw_semaphore lli_truncate_rwsem; - /* the most recent attributes from mds, it is used for timestampts + /* the most recent attributes from mds, it is used for timestamps * only so far */ struct ost_lvb lli_lvb; struct inode lli_vfs_inode; @@ -303,11 +303,12 @@ #define LL_SBI_LRU_RESIZE 0x80 /* support lru resize */ #define LL_SBI_LLITE_CHECKSUM 0x100 /* checksum each page in memory */ #define LL_SBI_LAZYSTATFS 0x200 /* lazystatfs mount option */ +#define LL_SBI_32BIT_API 0x400 /* generate 32 bit inodes. */ /* default value for ll_sb_info->contention_time */ #define SBI_DEFAULT_CONTENTION_SECONDS 60 /* default value for lockless_truncate_enable */ -#define SBI_DEFAULT_LOCKLESS_TRUNCATE_ENABLE 1 +#define SBI_DEFAULT_LOCKLESS_TRUNCATE_ENABLE 0 /* see bug 23175 */ /* default value for ll_direct_io_default */ #define SBI_DEFAULT_DIRECT_IO_DEFAULT 0 @@ -375,10 +376,6 @@ unsigned int ll_namelen; struct file_operations *ll_fop; -#ifdef HAVE_EXPORT___IGET - struct list_head ll_deathrow; /* inodes to be destroyed (b1443) */ - spinlock_t ll_deathrow_lock; -#endif /* =0 - hold lock over whole read/write * >0 - max. chunk to be read/written w/o lock re-acquiring */ unsigned long ll_max_rw_chunk; @@ -639,6 +636,15 @@ void ll_ra_read_ex(struct file *f, struct ll_ra_read *rar); struct ll_ra_read *ll_ra_read_get(struct file *f); +static inline int ll_need_32bit_api(struct ll_sb_info *sbi) +{ +#if BITS_PER_LONG == 32 + return 1; +#else + return unlikely(cfs_curproc_is_32bit() || (sbi->ll_flags & LL_SBI_32BIT_API)); +#endif +} + /* llite/lproc_llite.c */ #ifdef LPROCFS int lprocfs_register_mountpoint(struct proc_dir_entry *parent, @@ -743,7 +749,7 @@ extern struct file_operations ll_file_operations_noflock; extern struct inode_operations ll_file_inode_operations; extern int ll_inode_revalidate_it(struct dentry *, struct lookup_intent *); -extern int ll_have_md_lock(struct inode *inode, __u64 bits); +extern int ll_have_md_lock(struct inode *inode, __u64 bits, ldlm_mode_t l_req_mode); int ll_region_mapped(unsigned long addr, size_t count); int ll_extent_lock(struct ll_file_data *, struct inode *, struct lov_stripe_md *, int mode, ldlm_policy_data_t *, @@ -1189,8 +1195,8 @@ void *ll_iocontrol_register(llioc_callback_t cb, int count, unsigned int *cmd); void ll_iocontrol_unregister(void *magic); -ino_t ll_fid_build_ino(struct ll_sb_info *sbi, - struct ll_fid *fid); +__u64 ll_fid_build_ino(const struct ll_fid *fid); +__u32 ll_fid_build_ino32(const struct ll_fid *fid); __u32 ll_fid_build_gen(struct ll_sb_info *sbi, struct ll_fid *fid); diff -Nru lustre-1.8.3/lustre/llite/llite_lib.c lustre-1.8.5+dfsg/lustre/llite/llite_lib.c --- lustre-1.8.3/lustre/llite/llite_lib.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/llite_lib.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -199,10 +199,6 @@ sbi->ll_flags |= LL_SBI_LRU_RESIZE; #endif -#ifdef HAVE_EXPORT___IGET - INIT_LIST_HEAD(&sbi->ll_deathrow); - spin_lock_init(&sbi->ll_deathrow_lock); -#endif for (i = 0; i <= LL_PROCESS_HIST_MAX; i++) { spin_lock_init(&sbi->ll_rw_extents_info.pp_extents[i].pp_r_hist.oh_lock); spin_lock_init(&sbi->ll_rw_extents_info.pp_extents[i].pp_w_hist.oh_lock); @@ -416,10 +412,6 @@ obd->obd_upcall.onu_upcall = ll_ocd_update; data->ocd_brw_size = PTLRPC_MAX_BRW_PAGES << CFS_PAGE_SHIFT; - /* ask lov to generate OBD_NOTIFY_CREATE events for already registered - * targets */ - obd_notify(obd, NULL, OBD_NOTIFY_CREATE, NULL); - obd_register_lock_cancel_cb(obd, ll_extent_lock_cancel_cb); obd_register_page_removal_cb(obd, ll_page_removal_cb, ll_pin_extent_cb); @@ -501,7 +493,7 @@ } LASSERT(sbi->ll_rootino != 0); - root = ll_iget(sb, ll_fid_build_ino(sbi, &rootfid), &md); + root = ll_iget(sb, ll_fid_build_ino(&rootfid), &md); ptlrpc_req_finished(request); @@ -625,101 +617,6 @@ } } -#ifdef HAVE_EXPORT___IGET -static void prune_dir_dentries(struct inode *inode) -{ - struct dentry *dentry, *prev = NULL; - - /* due to lustre specific logic, a directory - * can have few dentries - a bug from VFS POV */ -restart: - spin_lock(&dcache_lock); - if (!list_empty(&inode->i_dentry)) { - dentry = list_entry(inode->i_dentry.prev, - struct dentry, d_alias); - /* in order to prevent infinite loops we - * break if previous dentry is busy */ - if (dentry != prev) { - prev = dentry; - dget_locked(dentry); - spin_unlock(&dcache_lock); - - /* try to kill all child dentries */ - shrink_dcache_parent(dentry); - dput(dentry); - - /* now try to get rid of current dentry */ - d_prune_aliases(inode); - goto restart; - } - } - spin_unlock(&dcache_lock); -} - -static void prune_deathrow_one(struct ll_inode_info *lli) -{ - struct inode *inode = ll_info2i(lli); - - /* first, try to drop any dentries - they hold a ref on the inode */ - if (S_ISDIR(inode->i_mode)) - prune_dir_dentries(inode); - else - d_prune_aliases(inode); - - - /* if somebody still uses it, leave it */ - LASSERT(atomic_read(&inode->i_count) > 0); - if (atomic_read(&inode->i_count) > 1) - goto out; - - CDEBUG(D_INODE, "inode %lu/%u(%d) looks a good candidate for prune\n", - inode->i_ino,inode->i_generation, atomic_read(&inode->i_count)); - - /* seems nobody uses it anymore */ - inode->i_nlink = 0; - -out: - iput(inode); - return; -} - -static void prune_deathrow(struct ll_sb_info *sbi, int try) -{ - struct ll_inode_info *lli; - int empty; - - do { - if (need_resched() && try) - break; - - if (try) { - if (!spin_trylock(&sbi->ll_deathrow_lock)) - break; - } else { - spin_lock(&sbi->ll_deathrow_lock); - } - - empty = 1; - lli = NULL; - if (!list_empty(&sbi->ll_deathrow)) { - lli = list_entry(sbi->ll_deathrow.next, - struct ll_inode_info, - lli_dead_list); - list_del_init(&lli->lli_dead_list); - if (!list_empty(&sbi->ll_deathrow)) - empty = 0; - } - spin_unlock(&sbi->ll_deathrow_lock); - - if (lli) - prune_deathrow_one(lli); - - } while (empty == 0); -} -#else /* !HAVE_EXPORT___IGET */ -#define prune_deathrow(sbi, try) do {} while (0) -#endif /* HAVE_EXPORT___IGET */ - void client_common_put_super(struct super_block *sb) { struct ll_sb_info *sbi = ll_s2sbi(sb); @@ -729,9 +626,6 @@ lprocfs_unregister_mountpoint(sbi); - /* destroy inodes in deathrow */ - prune_deathrow(sbi, 0); - list_del(&sbi->ll_conn_chain); /* callbacks is cleared after disconnect each target */ @@ -887,6 +781,11 @@ *flags &= ~tmp; goto next; } + tmp = ll_set_opt("32bitapi", s1, LL_SBI_32BIT_API); + if (tmp) { + *flags |= tmp; + goto next; + } LCONSOLE_ERROR_MSG(0x152, "Unknown option '%s', won't mount.\n", s1); RETURN(-EINVAL); @@ -1097,6 +996,10 @@ } /* end COMPAT_146 */ +#ifdef HAVE_NEW_BACKING_DEV_INFO +static atomic_t ll_bdi_num = ATOMIC_INIT(0); +#endif + int ll_fill_super(struct super_block *sb) { struct lustre_profile *lprof = NULL; @@ -1225,6 +1128,21 @@ /* connections, registrations, sb setup */ err = client_common_fill_super(sb, mdc, osc); + if (err) + GOTO(out_free, err); + +#ifdef HAVE_BDI_INIT + err = bdi_init(&lsi->bdi); + if (err) + GOTO(out_free, err); +#endif +#ifdef HAVE_NEW_BACKING_DEV_INFO + lsi->bdi.name = "lustre"; + lsi->bdi.capabilities = BDI_CAP_MAP_COPY; + err = bdi_register(&lsi->bdi, NULL, "lustre-%d", + atomic_inc_return(&ll_bdi_num)); + sb->s_bdi = &lsi->bdi; +#endif out_free: if (save && lprof) @@ -1288,6 +1206,16 @@ if (profilenm) class_del_profile(profilenm); +#ifdef HAVE_NEW_BACKING_DEV_INFO + if (lsi->bdi.wb_cnt > 0) { +#endif +#ifdef HAVE_BDI_INIT + bdi_destroy(&lsi->bdi); +#endif +#ifdef HAVE_NEW_BACKING_DEV_INFO + } +#endif + ll_free_sbi(sb); lsi->lsi_llsbi = NULL; @@ -1305,7 +1233,7 @@ struct ll_sb_info *sbi; int count = 0; - if ((nr_to_scan != 0) && (gfp_mask & __GFP_FS)) + if ((nr_to_scan != 0) && !(gfp_mask & __GFP_FS)) return -1; /* don't race with umount */ @@ -1412,12 +1340,6 @@ lli->lli_inode_magic = LLI_INODE_DEAD; -#ifdef HAVE_EXPORT___IGET - spin_lock(&sbi->ll_deathrow_lock); - list_del_init(&lli->lli_dead_list); - spin_unlock(&sbi->ll_deathrow_lock); -#endif - EXIT; } static int ll_setattr_do_truncate(struct inode *inode, loff_t new_size) @@ -1653,6 +1575,7 @@ if (LTIME_S(attr->ia_mtime) < LTIME_S(attr->ia_ctime)){ struct ost_lvb xtimes; + UNLOCK_INODE_MUTEX(inode); /* setting mtime to past is performed under PW * EOF extent lock */ oinfo->oi_policy.l_extent.start = 0; @@ -1660,7 +1583,9 @@ rc = ll_extent_lock(NULL, inode, lsm, LCK_PW, &oinfo->oi_policy, &lockh, 0); + LOCK_INODE_MUTEX(inode); if (rc) { + OBDO_FREE(oa); OBD_FREE_PTR(oinfo); RETURN(rc); } @@ -1997,7 +1922,7 @@ } #endif - inode->i_ino = ll_fid_build_ino(sbi, &body->fid1); + inode->i_ino = ll_fid_build_ino(&body->fid1); inode->i_generation = ll_fid_build_gen(sbi, &body->fid1); *ll_inode_lu_fid(inode) = *((struct lu_fid*)&md->body->fid1); @@ -2061,15 +1986,6 @@ EXIT; } -static struct backing_dev_info ll_backing_dev_info = { - .ra_pages = 0, /* No readahead */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)) - .capabilities = 0, /* Does contribute to dirty memory */ -#else - .memory_backed = 0, /* Does contribute to dirty memory */ -#endif -}; - void ll_read_inode2(struct inode *inode, void *opaque) { struct lustre_md *md = opaque; @@ -2095,6 +2011,9 @@ /* OIDEBUG(inode); */ + /* initializing backing dev info. */ + inode->i_mapping->backing_dev_info = &(s2lsi(inode->i_sb)->bdi); + if (S_ISREG(inode->i_mode)) { struct ll_sb_info *sbi = ll_i2sbi(inode); inode->i_op = &ll_file_inode_operations; @@ -2113,8 +2032,6 @@ inode->i_op = &ll_special_inode_operations; init_special_inode(inode, inode->i_mode, kdev_t_to_nr(inode->i_rdev)); - /* initializing backing dev info. */ - inode->i_mapping->backing_dev_info = &ll_backing_dev_info; EXIT; } } @@ -2328,7 +2245,6 @@ LASSERT(*inode || sb); sbi = sb ? ll_s2sbi(sb) : ll_i2sbi(*inode); - prune_deathrow(sbi, 1); rc = mdc_req2lustre_md(req, offset, exp, &md); if (rc) @@ -2341,7 +2257,7 @@ /** hashing VFS inode by FIDs. * IGIF will be used for for compatibility if needed. */ - *inode =ll_iget(sb, ll_fid_build_ino(sbi, &md.body->fid1), &md); + *inode =ll_iget(sb, ll_fid_build_ino(&md.body->fid1), &md); if (*inode == NULL || is_bad_inode(*inode)) { mdc_free_lustre_md(exp, &md); rc = -ENOMEM; diff -Nru lustre-1.8.3/lustre/llite/llite_nfs.c lustre-1.8.5+dfsg/lustre/llite/llite_nfs.c --- lustre-1.8.3/lustre/llite/llite_nfs.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/llite_nfs.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/llite/lloop.c lustre-1.8.5+dfsg/lustre/llite/lloop.c --- lustre-1.8.3/lustre/llite/lloop.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/lloop.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/llite/namei.c lustre-1.8.5+dfsg/lustre/llite/namei.c --- lustre-1.8.3/lustre/llite/namei.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/namei.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -61,38 +61,77 @@ RETURN(0); } -/* Get an inode by inode number (already instantiated by the intent lookup). - * Returns inode or NULL - */ - +/** + * Flatten 128-bit FID values into a 64-bit value for + * use as an inode number. For non-IGIF FIDs this + * starts just over 2^32, and continues without conflict + * until 2^64, at which point we wrap the high 32 bits + * of the SEQ into the range where there may not be many + * OID values in use, to minimize the risk of conflict. + * + * The time between re-used inode numbers is very long - + * 2^32 SEQ numbers, or about 2^32 client mounts. */ static inline __u64 fid_flatten(const struct lu_fid *fid) -{ - return (fid_seq(fid) - 1) * LUSTRE_SEQ_MAX_WIDTH + fid_oid(fid); +{ + __u64 ino; + __u64 seq; + + if (fid_is_igif(fid)) { + ino = lu_igif_ino(fid); + RETURN(ino); + } + + seq = fid_seq(fid); + + ino = (seq << 24) + ((seq >> (64-8)) & 0xffffff0000ULL) + fid_oid(fid); + + RETURN(ino ? ino : fid_oid(fid)); } -/* Build inode number on passed @fid */ -ino_t ll_fid_build_ino(struct ll_sb_info *sbi, - struct ll_fid *fid) + +/** + * map fid to 32 bit value for ino on 32bit systems. */ +static inline __u32 fid_flatten32(const struct lu_fid *fid) { - ino_t ino; - ENTRY; + __u32 ino; + __u64 seq; - if (fid_is_igif((struct lu_fid*)fid)) { - ino = lu_igif_ino((struct lu_fid*)fid); + if (fid_is_igif(fid)) { + ino = lu_igif_ino(fid); RETURN(ino); } + seq = fid_seq(fid) - FID_SEQ_START; + /* - * Very stupid and having many downsides inode allocation algorithm - * based on fid. - */ - ino = fid_flatten((struct lu_fid*)fid) & 0xFFFFFFFF; - - if (unlikely(ino == 0)) - /* the first result ino is 0xFFC001, so this is rarely used */ - ino = 0xffbcde; - ino = ino | 0x80000000; - RETURN(ino); + map the high bits of the OID into higher bits of the inode number so that + inodes generated at about the same time have a reduced chance of collisions. + This will give a period of 1024 clients and 128 k = 128M inodes without collisions. + */ + + ino = ((seq & 0x000fffffULL) << 12) + ((seq >> 8) & 0xfffff000) + + (seq >> (64 - (40-8)) & 0xffffff00) + + (fid_oid(fid) & 0xff000fff) + ((fid_oid(fid) & 0x00fff000) << 16); + + RETURN(ino ? ino : fid_oid(fid)); +} + +/** + * for 32 bit inode numbers directly map seq+oid to 32bit number. + */ +__u32 ll_fid_build_ino32(const struct ll_fid *fid) +{ + RETURN(fid_flatten32((struct lu_fid *)fid)); +} +/** + * build inode number from passed @fid */ +__u64 ll_fid_build_ino(const struct ll_fid *fid) +{ +#if BITS_PER_LONG == 32 + RETURN(fid_flatten32((struct lu_fid *)fid)); +#else + RETURN(fid_flatten((struct lu_fid *)fid)); +#endif } __u32 ll_fid_build_gen(struct ll_sb_info *sbi, struct ll_fid *fid) @@ -202,6 +241,7 @@ struct inode *inode = ll_inode_from_lock(lock); __u64 bits = lock->l_policy_data.l_inodebits.bits; struct lu_fid *fid; + ldlm_mode_t mode = lock->l_req_mode; /* Invalidate all dentries associated with this inode */ if (inode == NULL) @@ -210,14 +250,15 @@ fid = ll_inode_lu_fid(inode);; LASSERT(lock->l_flags & LDLM_FL_CANCELING); + /* For OPEN locks we differentiate between lock modes - CR, CW. PR - bug 22891 */ if ((bits & MDS_INODELOCK_LOOKUP) && - ll_have_md_lock(inode, MDS_INODELOCK_LOOKUP)) + ll_have_md_lock(inode, MDS_INODELOCK_LOOKUP, LCK_MINMODE)) bits &= ~MDS_INODELOCK_LOOKUP; if ((bits & MDS_INODELOCK_UPDATE) && - ll_have_md_lock(inode, MDS_INODELOCK_UPDATE)) + ll_have_md_lock(inode, MDS_INODELOCK_UPDATE, LCK_MINMODE)) bits &= ~MDS_INODELOCK_UPDATE; if ((bits & MDS_INODELOCK_OPEN) && - ll_have_md_lock(inode, MDS_INODELOCK_OPEN)) + ll_have_md_lock(inode, MDS_INODELOCK_OPEN, mode)) bits &= ~MDS_INODELOCK_OPEN; if (!fid_res_name_eq(fid, &lock->l_resource->lr_name)) { @@ -516,7 +557,7 @@ /* Check that parent has UPDATE lock. If there is none, we cannot afford to hash this dentry (done by ll_d_add) as it might get picked up later when UPDATE lock will appear */ - if (ll_have_md_lock(parent, MDS_INODELOCK_UPDATE)) { + if (ll_have_md_lock(parent, MDS_INODELOCK_UPDATE, LCK_MINMODE)) { spin_lock(&dcache_lock); ll_d_add(*de, inode); spin_unlock(&dcache_lock); @@ -1180,6 +1221,10 @@ return rc; } +/* ll_unlink_generic() doesn't update the inode with the new link count. + * Instead, ll_ddelete() and ll_d_iput() will update it based upon if there + * is any lock existing. They will recycle dentries and inodes based upon locks + * too. b=20433 */ static int ll_unlink_generic(struct inode * dir, struct qstr *name) { struct ptlrpc_request *request = NULL; diff -Nru lustre-1.8.3/lustre/llite/rw.c lustre-1.8.5+dfsg/lustre/llite/rw.c --- lustre-1.8.3/lustre/llite/rw.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/rw.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -492,6 +492,15 @@ } obdo_from_inode(oa, inode, valid_flags); + /* Bug11742 - set the OBD_FL_MMAP flag for memory mapped files */ + if (atomic_read(&(ll_i2info(inode)->lli_mmap_cnt)) != 0) { + if (!(oa->o_valid & OBD_MD_FLFLAGS)) { + oa->o_valid |= OBD_MD_FLFLAGS; + oa->o_flags = OBD_FL_MMAP; + } else { + oa->o_flags |= OBD_FL_MMAP; + } + } } static void ll_ap_fill_obdo(void *data, int cmd, struct obdo *oa) @@ -913,8 +922,17 @@ page, csum); } else { /* origin == LLAP_ORIGIN_WRITEPAGE */ - LL_CDEBUG_PAGE(D_ERROR, page, "old cksum %x != new " - "%x!\n", llap->llap_checksum, csum); + if (!atomic_read(&(ll_i2info(inode)->lli_mmap_cnt))) { + LL_CDEBUG_PAGE(D_ERROR, page, + "old cksum %x != new %x!\n", + llap->llap_checksum, csum); + } else { + /* mmapped page was modified */ + CDEBUG(D_PAGE, + "page %p old cksum %x != new %x\n", + page, llap->llap_checksum, csum); + } + llap->llap_checksum = csum; } } @@ -1497,23 +1515,26 @@ if (Page_Uptodate(page)) GOTO(unlock_page, rc = 0); + if (!lustre_handle_is_used(&lockh)) { + start = ((loff_t)index) << CFS_PAGE_SHIFT; + end = start + CFS_PAGE_SIZE - 1; + rc = obd_get_lock(exp, + ll_i2info(mapping->host)->lli_smd, + &llap->llap_cookie, OBD_BRW_READ, + start, end, &lockh, OBD_FAST_LOCK); + /* Is the lock being cancelling? */ + if (rc <= 0) + GOTO(unlock_page, rc = 0); + } + + llap->llap_lockh_granted = lockh; + rc = ll_issue_page_read(exp, llap, oig, 1); if (rc == 0) { LL_CDEBUG_PAGE(D_READA | D_PAGE, page, "started read-ahead\n"); rc = 1; - - if (!lustre_handle_is_used(&lockh)) { - start = ((loff_t)index) << CFS_PAGE_SHIFT; - end = start + CFS_PAGE_SIZE - 1; - rc = obd_get_lock(exp, - ll_i2info(mapping->host)->lli_smd, - &llap->llap_cookie, OBD_BRW_READ, - start, end, &lockh, OBD_FAST_LOCK); - LASSERT(rc); - } - - llap->llap_lockh_granted = lockh; } else { + llap->llap_lockh_granted.cookie = 0; unlock_page: if (lustre_handle_is_used(&lockh)) ldlm_lock_decref(&lockh, LCK_PR); diff -Nru lustre-1.8.3/lustre/llite/statahead.c lustre-1.8.5+dfsg/lustre/llite/statahead.c --- lustre-1.8.3/lustre/llite/statahead.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/statahead.c 2010-11-17 04:31:48.000000000 +0100 @@ -993,98 +993,15 @@ RETURN(rc); } -/** - * Start statahead thread if this is the first dir entry. - * Otherwise if a thread is started already, wait it until it is ahead of me. - * \retval 0 -- stat ahead thread process such dentry, for lookup, it miss - * \retval 1 -- stat ahead thread process such dentry, for lookup, it hit - * \retval -EEXIST -- stat ahead thread started, and this is the first dentry - * \retval -EBADFD -- statahead thread exit and not dentry available - * \retval -EAGAIN -- try to stat by caller - * \retval others -- error - */ -int do_statahead_enter(struct inode *dir, struct dentry **dentryp, int lookup) +static int trigger_statahead(struct inode *dir, struct dentry **dentryp) { - struct ll_inode_info *lli; + struct ll_inode_info *lli = ll_i2info(dir); + struct l_wait_info lwi = { 0 }; struct ll_statahead_info *sai; struct dentry *parent; - struct l_wait_info lwi = { 0 }; - int rc = 0; + int rc; ENTRY; - LASSERT(dir != NULL); - lli = ll_i2info(dir); - LASSERT(lli->lli_opendir_pid == cfs_curproc_pid()); - sai = lli->lli_sai; - - if (sai) { - struct ll_sb_info *sbi; - - if (unlikely(sa_is_stopped(sai) && - list_empty(&sai->sai_entries_stated))) - RETURN(-EBADFD); - - if ((*dentryp)->d_name.name[0] == '.') { - if (likely(sai->sai_ls_all || - sai->sai_miss_hidden >= sai->sai_skip_hidden)) { - /* - * Hidden dentry is the first one, or statahead - * thread does not skip so many hidden dentries - * before "sai_ls_all" enabled as below. - */ - } else { - if (!sai->sai_ls_all) - /* - * It maybe because hidden dentry is not - * the first one, "sai_ls_all" was not - * set, then "ls -al" missed. Enable - * "sai_ls_all" for such case. - */ - sai->sai_ls_all = 1; - - /* - * Such "getattr" has been skipped before - * "sai_ls_all" enabled as above. - */ - sai->sai_miss_hidden++; - RETURN(-ENOENT); - } - } - - sbi = ll_i2sbi(dir); - if (ll_sai_entry_stated(sai)) { - sbi->ll_sa_cached++; - } else { - sbi->ll_sa_blocked++; - /* - * thread started already, avoid double-stat. - */ - lwi = LWI_INTR(LWI_ON_SIGNAL_NOOP, NULL); - rc = l_wait_event(sai->sai_waitq, - ll_sai_entry_stated(sai) || - sa_is_stopped(sai), - &lwi); - } - - if (lookup) { - struct dentry *result; - - result = d_lookup((*dentryp)->d_parent, - &(*dentryp)->d_name); - if (result) { - LASSERT(result != *dentryp); - /* BUG 16303: do not drop reference count for - * "*dentryp", VFS will do that by itself. */ - *dentryp = result; - RETURN(1); - } - } - /* - * do nothing for revalidate. - */ - RETURN(rc); - } - /* I am the "lli_opendir_pid" owner, only me can set "lli_sai". */ rc = is_first_dirent(dir, *dentryp); if (rc == LS_NONE_FIRST_DE) @@ -1131,13 +1048,10 @@ } l_wait_event(sai->sai_thread.t_ctl_waitq, - sa_is_running(sai) || sa_is_stopped(sai), - &lwi); + sa_is_running(sai) || sa_is_stopped(sai), &lwi); - /* - * We don't stat-ahead for the first dirent since we are already in - * lookup, and -EEXIST also indicates that this is the first dirent. - */ + /* We don't stat-ahead for the first dirent since we are already in + * lookup, and -EEXIST also indicates that this is the first dirent. */ RETURN(-EEXIST); out: @@ -1149,21 +1063,115 @@ } /** + * Start statahead thread if this is the first dir entry. + * Otherwise if a thread is started already, wait it until it is ahead of me. + * \retval 0 -- stat ahead thread process such dentry, for lookup, it miss + * \retval 1 -- stat ahead thread process such dentry, for lookup, it hit + * \retval -EEXIST -- stat ahead thread started, and this is the first dentry + * \retval -EBADFD -- statahead thread exit and not dentry available + * \retval -EAGAIN -- try to stat by caller + * \retval others -- error + */ +int do_statahead_enter(struct inode *dir, struct dentry **dentryp, int lookup) +{ + struct ll_inode_info *lli = ll_i2info(dir); + struct ll_statahead_info *sai; + struct ll_sb_info *sbi; + int rc = 0; + ENTRY; + + spin_lock(&lli->lli_lock); + if (unlikely(lli->lli_opendir_pid != cfs_curproc_pid())) { + spin_unlock(&lli->lli_lock); + RETURN(-EAGAIN); + } + + if (likely(lli->lli_sai)) { + sai = ll_sai_get(lli->lli_sai); + spin_unlock(&lli->lli_lock); + } else { + spin_unlock(&lli->lli_lock); + RETURN(trigger_statahead(dir, dentryp)); + } + + if (unlikely(sa_is_stopped(sai) && + list_empty(&sai->sai_entries_stated))) + GOTO(out, rc = -EBADFD); + + if ((*dentryp)->d_name.name[0] == '.') { + if (likely(sai->sai_ls_all || + sai->sai_miss_hidden >= sai->sai_skip_hidden)) { + /* Hidden dentry is the first one, or statahead thread + * does not skip so many hidden dentries before + * "sai_ls_all" enabled as below. */ + } else { + if (!sai->sai_ls_all) + /* It maybe because hidden dentry is not the + * first one, "sai_ls_all" was not set, then + * "ls -al" missed. Enable "sai_ls_all" for + * such case. */ + sai->sai_ls_all = 1; + + /* Such "getattr" has been skipped before "sai_ls_all" + * enabled as above. */ + sai->sai_miss_hidden++; + GOTO(out, rc = -ENOENT); + } + } + + sbi = ll_i2sbi(dir); + if (ll_sai_entry_stated(sai)) { + sbi->ll_sa_cached++; + } else { + struct l_wait_info lwi =LWI_INTR(LWI_ON_SIGNAL_NOOP, NULL); + + sbi->ll_sa_blocked++; + /* thread started already, avoid double-stat. */ + rc = l_wait_event(sai->sai_waitq, + ll_sai_entry_stated(sai) || sa_is_stopped(sai), + &lwi); + } + + if (lookup) { + struct dentry *result; + + result = d_lookup((*dentryp)->d_parent, &(*dentryp)->d_name); + if (result) { + LASSERT(result != *dentryp); + /* BUG 16303: do not drop reference count for "*dentryp", + * VFS will do that by itself. */ + *dentryp = result; + GOTO(out, rc = 1); + } + } + /* do nothing for revalidate. */ + EXIT; + +out: + ll_sai_put(sai); + return rc; +} + +/** * update hit/miss count. */ void ll_statahead_exit(struct inode *dir, struct dentry *dentry, int result) { - struct ll_inode_info *lli; + struct ll_inode_info *lli = ll_i2info(dir); struct ll_statahead_info *sai; struct ll_sb_info *sbi; struct ll_dentry_data *ldd = ll_d2d(dentry); ENTRY; - LASSERT(dir != NULL); - lli = ll_i2info(dir); - LASSERT(lli->lli_opendir_pid == cfs_curproc_pid()); - sai = lli->lli_sai; - LASSERT(sai != NULL); + spin_lock(&lli->lli_lock); + if (unlikely(lli->lli_opendir_pid != cfs_curproc_pid())) { + spin_unlock(&lli->lli_lock); + EXIT; + return; + } else { + sai = ll_sai_get(lli->lli_sai); + spin_unlock(&lli->lli_lock); + } sbi = ll_i2sbi(dir); if (result >= 1) { @@ -1196,5 +1204,6 @@ if (likely(ldd != NULL)) ldd->lld_sa_generation = sai->sai_generation; + ll_sai_put(sai); EXIT; } diff -Nru lustre-1.8.3/lustre/llite/xattr.c lustre-1.8.5+dfsg/lustre/llite/xattr.c --- lustre-1.8.3/lustre/llite/xattr.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/llite/xattr.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -142,6 +142,11 @@ (xattr_type == XATTR_LUSTRE_T && strcmp(name, "lustre.lov") == 0)) RETURN(0); + /* b15587: ignore security.capability xattr for now */ + if ((xattr_type == XATTR_SECURITY_T && + strcmp(name, "security.capability") == 0)) + RETURN(0); + ll_inode2fid(&fid, inode); rc = mdc_setxattr(sbi->ll_mdc_exp, &fid, valid, name, value, size, 0, flags, &req); @@ -252,6 +257,11 @@ if (rc) RETURN(rc); + /* b15587: ignore security.capability xattr for now */ + if ((xattr_type == XATTR_SECURITY_T && + strcmp(name, "security.capability") == 0)) + RETURN(-ENODATA); + /* posix acl is under protection of LOOKUP lock. when calling to this, * we just have path resolution to the target inode, so we have great * chance that cached ACL is uptodate. diff -Nru lustre-1.8.3/lustre/lov/lov_internal.h lustre-1.8.5+dfsg/lustre/lov/lov_internal.h --- lustre-1.8.3/lustre/lov/lov_internal.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/lov/lov_internal.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -93,6 +93,7 @@ int lap_stripe; obd_off lap_sub_offset; obd_id lap_loi_id; + obd_gr lap_loi_gr; void *lap_sub_cookie; struct obd_async_page_ops *lap_caller_ops; void *lap_caller_data; diff -Nru lustre-1.8.3/lustre/lov/lov_merge.c lustre-1.8.5+dfsg/lustre/lov/lov_merge.c --- lustre-1.8.3/lustre/lov/lov_merge.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/lov/lov_merge.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -177,6 +177,7 @@ } else { memcpy(tgt, src, sizeof(*tgt)); tgt->o_id = lsm->lsm_object_id; + tgt->o_gr = lsm->lsm_object_gr; if (valid & OBD_MD_FLSIZE) tgt->o_size = lov_stripe_size(lsm,src->o_size,stripeno); *set = 1; diff -Nru lustre-1.8.3/lustre/lov/lov_obd.c lustre-1.8.5+dfsg/lustre/lov/lov_obd.c --- lustre-1.8.3/lustre/lov/lov_obd.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/lov/lov_obd.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -389,6 +389,9 @@ *exp = class_conn2export(conn); + /* generate OBD_NOTIFY_CREATE events for already registered targets */ + obd_notify(obd, NULL, OBD_NOTIFY_CREATE, NULL); + /* Why should there ever be more than 1 connect? */ lov->lov_connects++; LASSERT(lov->lov_connects == 1); @@ -675,8 +678,6 @@ CDEBUG(D_CONFIG, "idx=%d ltd_gen=%d ld_tgt_count=%d\n", index, tgt->ltd_gen, lov->desc.ld_tgt_count); - rc = obd_notify(obd, tgt_obd, OBD_NOTIFY_CREATE, &index); - if (lov->lov_connects == 0) { /* lov_connect hasn't been called yet. We'll do the lov_connect_obd on this target when that fn first runs, @@ -684,6 +685,8 @@ RETURN(0); } + rc = obd_notify(obd, tgt_obd, OBD_NOTIFY_CREATE, &index); + obd_getref(obd); rc = lov_connect_obd(obd, index, active, &lov->lov_ocd); @@ -1866,6 +1869,7 @@ lap->lap_caller_ops->ap_fill_obdo(lap->lap_caller_data, cmd, oa); /* XXX woah, shouldn't we be altering more here? size? */ oa->o_id = lap->lap_loi_id; + oa->o_gr = lap->lap_loi_gr; oa->o_stripe_idx = lap->lap_stripe; } @@ -1940,6 +1944,7 @@ /* so the callback doesn't need the lsm */ lap->lap_loi_id = loi->loi_id; + lap->lap_loi_gr = loi->loi_gr; lap->lap_sub_cookie = (void *)lap + size_round(sizeof(*lap)); @@ -2226,6 +2231,45 @@ RETURN(rc); } +/* find any ldlm lock of the inode in lov + * return 0 not find + * 1 find one + * < 0 error */ +static int lov_find_cbdata(struct obd_export *exp, + struct lov_stripe_md *lsm, ldlm_iterator_t it, + void *data) +{ + struct lov_obd *lov; + struct lov_oinfo *loi; + int rc = 0, i; + ENTRY; + + ASSERT_LSM_MAGIC(lsm); + + if (!exp || !exp->exp_obd) + RETURN(-ENODEV); + + lov = &exp->exp_obd->u.lov; + for (i = 0; i < lsm->lsm_stripe_count; i++) { + struct lov_stripe_md submd; + + loi = lsm->lsm_oinfo[i]; + if (!lov->lov_tgts[loi->loi_ost_idx]) { + CDEBUG(D_HA, "lov idx %d NULL \n", loi->loi_ost_idx); + continue; + } + submd.lsm_object_id = loi->loi_id; + submd.lsm_object_gr = loi->loi_gr; + submd.lsm_stripe_count = 0; + rc = obd_find_cbdata(lov->lov_tgts[loi->loi_ost_idx]->ltd_exp, + &submd, it, data); + if (rc != 0) + RETURN(rc); + } + RETURN(rc); +} + + static int lov_cancel(struct obd_export *exp, struct lov_stripe_md *lsm, __u32 mode, struct lustre_handle *lockh, int flags, obd_off end) @@ -2787,6 +2831,7 @@ fm_local->fm_flags = fiemap->fm_flags; fm_key->oa.o_id = lsm->lsm_oinfo[cur_stripe]->loi_id; + fm_key->oa.o_gr = lsm->lsm_oinfo[cur_stripe]->loi_gr; ost_index = lsm->lsm_oinfo[cur_stripe]->loi_ost_idx; if (ost_index < 0 || ost_index >=lov->desc.ld_tgt_count) @@ -3310,6 +3355,7 @@ .o_enqueue = lov_enqueue, .o_match = lov_match, .o_change_cbdata = lov_change_cbdata, + .o_find_cbdata = lov_find_cbdata, .o_cancel = lov_cancel, .o_cancel_unused = lov_cancel_unused, .o_join_lru = lov_join_lru, diff -Nru lustre-1.8.3/lustre/lov/lov_qos.c lustre-1.8.5+dfsg/lustre/lov/lov_qos.c --- lustre-1.8.3/lustre/lov/lov_qos.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/lov/lov_qos.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -976,6 +976,8 @@ lsm = set->set_oi->oi_md; lsm->lsm_object_id = src_oa->o_id; + lsm->lsm_object_gr = src_oa->o_gr; + if (!lsm->lsm_stripe_size) lsm->lsm_stripe_size = lov->desc.ld_default_stripe_size; if (!lsm->lsm_pattern) { diff -Nru lustre-1.8.3/lustre/lov/lov_request.c lustre-1.8.5+dfsg/lustre/lov/lov_request.c --- lustre-1.8.3/lustre/lov/lov_request.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/lov/lov_request.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -621,6 +621,8 @@ LBUG(); } ret_oa->o_id = src_oa->o_id; + ret_oa->o_gr = src_oa->o_gr; + ret_oa->o_valid |= OBD_MD_FLID | OBD_MD_FLGROUP; memcpy(src_oa, ret_oa, sizeof(*src_oa)); OBDO_FREE(ret_oa); @@ -704,6 +706,7 @@ } loi->loi_id = req->rq_oi.oi_oa->o_id; + loi->loi_gr = req->rq_oi.oi_oa->o_gr; loi->loi_ost_idx = req->rq_idx; loi_init(loi); @@ -802,6 +805,7 @@ rc = -EIO; } tmp_oa->o_id = set->set_oi->oi_oa->o_id; + tmp_oa->o_gr = set->set_oi->oi_oa->o_gr; memcpy(set->set_oi->oi_oa, tmp_oa, sizeof(*set->set_oi->oi_oa)); out: if (tmp_oa) @@ -919,6 +923,7 @@ sizeof(*req->rq_oi.oi_oa)); } req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_oa->o_stripe_idx = i; req->rq_buflen = sizeof(*req->rq_oi.oi_md); @@ -1037,6 +1042,7 @@ memcpy(req->rq_oi.oi_oa, oinfo->oi_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_cb_up = cb_getattr_update; lov_set_add_req(req, set); @@ -1114,6 +1120,7 @@ } memcpy(req->rq_oi.oi_oa, src_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; lov_set_add_req(req, set); } if (!set->set_count) @@ -1225,6 +1232,7 @@ memcpy(req->rq_oi.oi_oa, oinfo->oi_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_oa->o_stripe_idx = i; req->rq_oi.oi_cb_up = cb_setattr_update; @@ -1357,6 +1365,7 @@ memcpy(req->rq_oi.oi_oa, oinfo->oi_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_oa->o_stripe_idx = i; req->rq_oi.oi_cb_up = cb_update_punch; @@ -1452,6 +1461,7 @@ memcpy(req->rq_oi.oi_oa, oinfo->oi_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_oa->o_stripe_idx = i; req->rq_oi.oi_policy.l_extent.start = rs; @@ -1591,14 +1601,12 @@ { struct lov_request *lovreq; struct obd_statfs *osfs, *lov_sfs; - struct obd_device *obd; struct lov_obd *lov; int success; ENTRY; lovreq = container_of(oinfo, struct lov_request, rq_oi); lov = &lovreq->rq_rqset->set_obd->u.lov; - obd = class_exp2obd(lov->lov_tgts[lovreq->rq_idx]->ltd_exp); osfs = lovreq->rq_rqset->set_oi->oi_osfs; lov_sfs = oinfo->oi_osfs; @@ -1615,11 +1623,20 @@ GOTO(out, rc); } - spin_lock(&obd->obd_osfs_lock); - memcpy(&obd->obd_osfs, lov_sfs, sizeof(*lov_sfs)); - if ((oinfo->oi_flags & OBD_STATFS_FROM_CACHE) == 0) - obd->obd_osfs_age = cfs_time_current_64(); - spin_unlock(&obd->obd_osfs_lock); + obd_getref(lovreq->rq_rqset->set_obd); + if (lov->lov_tgts[lovreq->rq_idx] && + lov->lov_tgts[lovreq->rq_idx]->ltd_exp) { + /* lov_disconnect() might have already removed the target */ + struct obd_device *obd; + + obd = class_exp2obd(lov->lov_tgts[lovreq->rq_idx]->ltd_exp); + spin_lock(&obd->obd_osfs_lock); + memcpy(&obd->obd_osfs, lov_sfs, sizeof(*lov_sfs)); + if ((oinfo->oi_flags & OBD_STATFS_FROM_CACHE) == 0) + obd->obd_osfs_age = cfs_time_current_64(); + spin_unlock(&obd->obd_osfs_lock); + } + obd_putref(lovreq->rq_rqset->set_obd); lov_update_statfs(osfs, lov_sfs, success); qos_update(lov); diff -Nru lustre-1.8.3/lustre/lvfs/fsfilt_ext3.c lustre-1.8.5+dfsg/lustre/lvfs/fsfilt_ext3.c --- lustre-1.8.3/lustre/lvfs/fsfilt_ext3.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/lvfs/fsfilt_ext3.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -60,6 +60,11 @@ #ifdef HAVE_QUOTAIO_V1_H # include # include +#elif defined(HAVE_FS_QUOTA_QUOTAIO_V1_H) +# include +# include +# include +# define V2_DQTREEOFF QT_TREEOFF #else # include # include @@ -82,13 +87,11 @@ #include #include -#ifdef EXT3_MULTIBLOCK_ALLOCATOR #ifdef HAVE_EXT4_LDISKFS #include #else #include #endif -#endif #include "lustre_quota_fmt.h" @@ -107,6 +110,15 @@ #define FSFILT_SINGLEDATA_TRANS_BLOCKS(sb) EXT3_SINGLEDATA_TRANS_BLOCKS #endif +#ifdef EXT_INSERT_EXTENT_WITH_5ARGS +#define fsfilt_ext3_ext_insert_extent(handle, inode, path, newext, flag) \ + ext3_ext_insert_extent(handle, inode, path, newext, flag) +#else +#define fsfilt_ext3_ext_insert_extent(handle, inode, path, newext, flag) \ + ext3_ext_insert_extent(handle, inode, path, newext) +#endif + + static cfs_mem_cache_t *fcb_cache; struct fsfilt_cb_data { @@ -642,9 +654,21 @@ ENTRY; /* FIXME: Can't do this because of nested transaction deadlock */ - if (cmd == EXT3_IOC_SETFLAGS && (*(int *)arg) & EXT3_JOURNAL_DATA_FL) { - CERROR("can't set data journal flag on file\n"); - RETURN(-EPERM); + if (cmd == EXT3_IOC_SETFLAGS) { + /* We can't enable data journaling on OST objects, because + * this forces the transaction to be closed in order to + * flush the journal, but the caller will already have a + * compound transaction open to update the last_rcvd file, + * and this thread would deadlock trying to set the flag. */ + if ((*(int *)arg) & EXT3_JOURNAL_DATA_FL) { + CERROR("can't set data journal flag on file\n"); + RETURN(-EPERM); + } + /* Because the MDS does not see the EXTENTS_FL set on the + * OST objects, mask this flag into all set flags. It is + * not legal to clear this flag in any case, so we are not + * changing the functionality by doing this. b=22911 */ + *(int *)arg |= EXT3_I(inode)->i_flags & EXT3_EXTENTS_FL; } #ifdef HAVE_EXT4_LDISKFS @@ -824,26 +848,21 @@ return ext3_force_commit(sb); } -#if defined(EXT3_MULTIBLOCK_ALLOCATOR) && (!defined(EXT3_EXT_CACHE_NO) || defined(EXT_CACHE_MARK)) -#warning "kernel code has old extents/mballoc patch, disabling" -#undef EXT3_MULTIBLOCK_ALLOCATOR -#endif #ifndef EXT3_EXTENTS_FL #define EXT3_EXTENTS_FL 0x00080000 /* Inode uses extents */ #endif -#ifdef EXT3_MULTIBLOCK_ALLOCATOR #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)) -#define fsfilt_up_truncate_sem(inode) up(&EXT3_I(inode)->truncate_sem); -#define fsfilt_down_truncate_sem(inode) down(&EXT3_I(inode)->truncate_sem); +# define fsfilt_up_truncate_sem(inode) up(&LDISKFS_I(inode)->truncate_sem); +# define fsfilt_down_truncate_sem(inode) down(&LDISKFS_I(inode)->truncate_sem); #else -#ifdef HAVE_EXT4_LDISKFS -#define fsfilt_up_truncate_sem(inode) up_write((&EXT4_I(inode)->i_data_sem)); -#define fsfilt_down_truncate_sem(inode) down_write((&EXT4_I(inode)->i_data_sem)); -#else -#define fsfilt_up_truncate_sem(inode) mutex_unlock(&EXT3_I(inode)->truncate_mutex); -#define fsfilt_down_truncate_sem(inode) mutex_lock(&EXT3_I(inode)->truncate_mutex); -#endif +# ifdef HAVE_EXT4_LDISKFS +# define fsfilt_up_truncate_sem(inode) up_write((&LDISKFS_I(inode)->i_data_sem)); +# define fsfilt_down_truncate_sem(inode) down_write((&LDISKFS_I(inode)->i_data_sem)); +# else +# define fsfilt_up_truncate_sem(inode) mutex_unlock(&LDISKFS_I(inode)->truncate_mutex); +# define fsfilt_down_truncate_sem(inode) mutex_lock(&LDISKFS_I(inode)->truncate_mutex); +# endif #endif #ifndef EXT_ASSERT @@ -869,6 +888,14 @@ ext3_ext_walk_space(tree, block, num, cb); #endif +#ifdef EXT_INSERT_EXTENT_WITH_5ARGS +#define fsfilt_ext3_ext_insert_extent(handle, inode, path, newext, flag) \ + ext3_ext_insert_extent(handle, inode, path, newext, flag) +#else +#define fsfilt_ext3_ext_insert_extent(handle, inode, path, newext, flag) \ + ext3_ext_insert_extent(handle, inode, path, newext) +#endif + #include struct bpointers { @@ -1043,7 +1070,7 @@ nex.ee_block = cpu_to_le32(cex->ec_block); ext3_ext_store_pblock(&nex, pblock); nex.ee_len = cpu_to_le16(count); - err = ext3_ext_insert_extent(handle, base, path, &nex); + err = fsfilt_ext3_ext_insert_extent(handle, base, path, &nex, 0); if (err) { /* free data blocks we just allocated */ /* not a good idea to call discard here directly, @@ -1189,7 +1216,6 @@ cleanup: return rc; } -#endif /* EXT3_MULTIBLOCK_ALLOCATOR */ extern int ext3_map_inode_page(struct inode *inode, struct page *page, unsigned long *blocks, int *created, int create); @@ -1221,13 +1247,12 @@ struct semaphore *optional_sem) { int rc; -#ifdef EXT3_MULTIBLOCK_ALLOCATOR + if (EXT3_I(inode)->i_flags & EXT3_EXTENTS_FL) { rc = fsfilt_ext3_map_ext_inode_pages(inode, page, pages, blocks, created, create); return rc; } -#endif if (optional_sem != NULL) down(optional_sem); rc = fsfilt_ext3_map_bm_inode_pages(inode, page, pages, blocks, @@ -1462,7 +1487,7 @@ struct obd_quotactl *oqc) { int i, rc = 0, error = 0; - struct quotactl_ops *qcop; + const struct quotactl_ops *qcop; struct if_dqinfo *info; struct if_dqblk *dqblk; ENTRY; @@ -1896,7 +1921,7 @@ GOTO(out, rc = -EINVAL); } - DQUOT_DROP(file->f_dentry->d_inode); + ll_vfs_dq_drop(file->f_dentry->d_inode); switch (oqc->qc_id) { case LUSTRE_QUOTA_V1 : write_dqheader = v2_write_dqheader; @@ -2034,7 +2059,11 @@ /* number of inodes that have been allocated */ inode_inuse = sbi->s_inodes_per_group * sbi->s_groups_count - +#ifdef EXT3_SBI_WITH_COUNTER64 + percpu_counter64_sum(&sbi->s_freeinodes_counter); +#else percpu_counter_sum(&sbi->s_freeinodes_counter); +#endif /* check quota and update in hash */ for (group = 0; group < sbi->s_groups_count && inode_inuse > 0; @@ -2050,14 +2079,27 @@ /* we don't really need to take the group lock here, * but it may be useful if one day we support online * quotacheck */ +#ifdef HAVE_EXT4_LDISKFS + ext4_lock_group(sb, group); +#else spin_lock(sb_bgl_lock(sbi, group)); +#endif if (desc->bg_flags & cpu_to_le16(EXT3_BG_INODE_UNINIT)) { /* no inode in use in this group, just skip it */ +#ifdef HAVE_EXT4_LDISKFS + ext3_unlock_group(sb, group); +#else spin_unlock(sb_bgl_lock(sbi, group)); +#endif continue; } + used_count -= ext3_itable_unused_count(sb, desc); +#ifdef HAVE_EXT4_LDISKFS + ext3_unlock_group(sb, group); +#else spin_unlock(sb_bgl_lock(sbi, group)); +#endif } bitmap_bh = ext3_read_inode_bitmap(sb, group); diff -Nru lustre-1.8.3/lustre/lvfs/lvfs_lib.c lustre-1.8.5+dfsg/lustre/lvfs/lvfs_lib.c --- lustre-1.8.3/lustre/lvfs/lvfs_lib.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/lvfs/lvfs_lib.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/mdc/mdc_fid.c lustre-1.8.5+dfsg/lustre/mdc/mdc_fid.c --- lustre-1.8.3/lustre/mdc/mdc_fid.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mdc/mdc_fid.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -224,11 +224,16 @@ * Finish the current sequence due to disconnect. * See mdc_import_event() */ -static void seq_client_flush(struct lu_client_seq *seq) +void seq_client_flush(struct lu_client_seq *seq) { LASSERT(seq != NULL); down(&seq->lcs_sem); fid_init(&seq->lcs_fid); + /** + * this id shld not be used for seq range allocation. + * set to -1 for dgb check. + */ + seq->lcs_space.lsr_mdt = -1; range_init(&seq->lcs_space); up(&seq->lcs_sem); } diff -Nru lustre-1.8.3/lustre/mdc/mdc_internal.h lustre-1.8.5+dfsg/lustre/mdc/mdc_internal.h --- lustre-1.8.3/lustre/mdc/mdc_internal.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mdc/mdc_internal.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -79,7 +79,7 @@ struct obdo *oa, __u64 valid, struct obd_client_handle *och); void mdc_exit_request(struct client_obd *cli); -void mdc_enter_request(struct client_obd *cli); +int mdc_enter_request(struct client_obd *cli); int seq_client_init(struct lu_client_seq *seq, struct obd_export *exp, @@ -91,6 +91,8 @@ int mdc_fid_alloc(struct lu_client_seq *seq, struct lu_fid *fid); +void seq_client_flush(struct lu_client_seq *seq); + struct mdc_open_data { struct obd_client_handle *mod_och; struct ptlrpc_request *mod_open_req; diff -Nru lustre-1.8.3/lustre/mdc/mdc_lib.c lustre-1.8.5+dfsg/lustre/mdc/mdc_lib.c --- lustre-1.8.3/lustre/mdc/mdc_lib.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mdc/mdc_lib.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -498,6 +498,7 @@ { struct mdt_rec_setattr *rec = lustre_msg_buf(req->rq_reqmsg, offset, sizeof(*rec)); + struct lov_user_md *lum = NULL; ENTRY; rec->sa_opcode = REINT_SETATTR; @@ -528,9 +529,15 @@ EXIT; return; } - if (ea) - memcpy(lustre_msg_buf(req->rq_reqmsg, offset + 3, ealen), - ea, ealen); + lum = lustre_msg_buf(req->rq_reqmsg, offset + 3, ealen); + if (ea == NULL) { /* Remove LOV EA */ + lum->lmm_magic = LOV_USER_MAGIC_V1; + lum->lmm_stripe_size = 0; + lum->lmm_stripe_count = 0; + lum->lmm_stripe_offset = (typeof(lum->lmm_stripe_offset))(-1); + } else { + memcpy(lum, ea, ealen); + } if (ea2len == 0) { EXIT; @@ -940,21 +947,24 @@ /* We record requests in flight in cli->cl_r_in_flight here. * There is only one write rpc possible in mdc anyway. If this to change * in the future - the code may need to be revisited. */ -void mdc_enter_request(struct client_obd *cli) +int mdc_enter_request(struct client_obd *cli) { + int rc = 0; struct mdc_cache_waiter mcw; - struct l_wait_info lwi = { 0 }; + struct l_wait_info lwi = LWI_INTR(LWI_ON_SIGNAL_NOOP, NULL); spin_lock(&cli->cl_loi_list_lock); if (cli->cl_r_in_flight >= cli->cl_max_rpcs_in_flight) { list_add_tail(&mcw.mcw_entry, &cli->cl_cache_waiters); init_waitqueue_head(&mcw.mcw_waitq); spin_unlock(&cli->cl_loi_list_lock); - l_wait_event(mcw.mcw_waitq, mdc_req_avail(cli, &mcw), &lwi); + rc = l_wait_event(mcw.mcw_waitq, mdc_req_avail(cli, &mcw), + &lwi); } else { cli->cl_r_in_flight++; spin_unlock(&cli->cl_loi_list_lock); } + return rc; } void mdc_exit_request(struct client_obd *cli) diff -Nru lustre-1.8.3/lustre/mdc/mdc_locks.c lustre-1.8.5+dfsg/lustre/mdc/mdc_locks.c --- lustre-1.8.3/lustre/mdc/mdc_locks.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mdc/mdc_locks.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -144,6 +144,27 @@ return 0; } +/* find any ldlm lock of the inode in mdc + * return 0 not find + * 1 find one + * < 0 error */ +int mdc_find_cbdata(struct obd_export *exp, struct ll_fid *fid, + ldlm_iterator_t it, void *data) +{ + struct ldlm_res_id res_id; + int rc = 0; + ENTRY; + + fid_build_reg_res_name((struct lu_fid*)fid, &res_id); + rc = ldlm_resource_iterate(class_exp2obd(exp)->obd_namespace, &res_id, + it, data); + if (rc == LDLM_ITER_STOP) + RETURN(1); + else if (rc == LDLM_ITER_CONTINUE) + RETURN(0); + RETURN(rc); +} + static inline void mdc_clear_replay_flag(struct ptlrpc_request *req, int rc) { /* Don't hold error requests for replay. */ @@ -616,10 +637,12 @@ * threads that are serialised with rpc_lock are not polluting our * rpcs in flight counter */ mdc_get_rpc_lock(obddev->u.cli.cl_rpc_lock, it); - mdc_enter_request(&obddev->u.cli); - rc = ldlm_cli_enqueue(exp, &req, einfo, res_id, &policy, &flags, NULL, - 0, NULL, lockh, 0); - mdc_exit_request(&obddev->u.cli); + rc = mdc_enter_request(&obddev->u.cli); + if (rc == 0) { + rc = ldlm_cli_enqueue(exp, &req, einfo, res_id, &policy, &flags, + NULL, 0, NULL, lockh, 0); + mdc_exit_request(&obddev->u.cli); + } mdc_put_rpc_lock(obddev->u.cli.cl_rpc_lock, it); if (rc < 0) { CERROR("ldlm_cli_enqueue: %d\n", rc); @@ -924,7 +947,9 @@ if (!req) RETURN(-ENOMEM); - mdc_enter_request(&obddev->u.cli); + rc = mdc_enter_request(&obddev->u.cli); + if (rc) + RETURN(rc); rc = ldlm_cli_enqueue(exp, &req, einfo, res_id, &policy, &flags, NULL, 0, NULL, &minfo->mi_lockh, 1); if (rc < 0) { diff -Nru lustre-1.8.3/lustre/mdc/mdc_request.c lustre-1.8.5+dfsg/lustre/mdc/mdc_request.c --- lustre-1.8.3/lustre/mdc/mdc_request.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mdc/mdc_request.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -148,7 +148,9 @@ ptlrpc_req_set_repsize(req, bufcount, size); - mdc_enter_request(&obddev->u.cli); + rc = mdc_enter_request(&obddev->u.cli); + if (rc != 0) + RETURN(rc); rc = ptlrpc_queue_wait(req); mdc_exit_request(&obddev->u.cli); if (rc != 0) @@ -271,7 +273,7 @@ [REQ_REC_OFF + 1] = 0, /* capa */ [REQ_REC_OFF + 2] = 0, /* name */ [REQ_REC_OFF + 3] = 0 }; - int rc, xattr_namelen = 0, bufcnt = 2, offset = REQ_REC_OFF + 1; + int rc = 0, xattr_namelen = 0, bufcnt = 2, offset = REQ_REC_OFF + 1; void *tmp; ENTRY; @@ -348,8 +350,11 @@ /* make rpc */ if (opcode == MDS_SETXATTR || opcode == MDS_REINT) mdc_get_rpc_lock(exp->exp_obd->u.cli.cl_rpc_lock, NULL); - else - mdc_enter_request(&obddev->u.cli); + else { + rc = mdc_enter_request(&obddev->u.cli); + if (rc != 0) + GOTO(err_out, rc); + } rc = ptlrpc_queue_wait(req); @@ -1331,6 +1336,13 @@ break; } case IMP_EVENT_INACTIVE: { + struct client_obd *cli = &obd->u.cli; + /* Flush current sequence to make client obtain new one + * from server in case of disconnect/reconnect. + * If range is already empty then no need to flush it. */ + if (cli->cl_seq != NULL) + seq_client_flush(cli->cl_seq); + rc = obd_notify_observer(obd, obd, OBD_NOTIFY_INACTIVE, NULL); break; } @@ -1691,6 +1703,7 @@ EXPORT_SYMBOL(mdc_req2lustre_md); EXPORT_SYMBOL(mdc_free_lustre_md); EXPORT_SYMBOL(mdc_change_cbdata); +EXPORT_SYMBOL(mdc_find_cbdata); EXPORT_SYMBOL(mdc_getstatus); EXPORT_SYMBOL(mdc_getattr); EXPORT_SYMBOL(mdc_getattr_name); diff -Nru lustre-1.8.3/lustre/mds/handler.c lustre-1.8.5+dfsg/lustre/mds/handler.c --- lustre-1.8.3/lustre/mds/handler.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mds/handler.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -388,8 +388,6 @@ med->med_lcd = NULL; } class_disconnect(exp); - /* release nid stat refererence */ - lprocfs_exp_cleanup(exp); } else { class_export_put(exp); } @@ -584,7 +582,7 @@ rc = fsfilt_get_md(obd, inode, md, *size, "lov"); if (rc == 0 && flags == MDS_GETATTR) - rc = mds_get_default_md(obd, md, &lmm_size); + rc = mds_get_default_md(obd, md); if (rc < 0) { CERROR("Error %d reading eadata for ino %lu\n", @@ -1050,7 +1048,7 @@ int rc = 0; ENTRY; - OBD_COUNTER_INCREMENT(obd, getattr); + mds_counter_incr(req->rq_export, LPROC_MDS_GETATTR); body = lustre_swab_reqbuf(req, offset, sizeof(*body), lustre_swab_mds_body); @@ -1122,7 +1120,7 @@ OBD_FAIL_TIMEOUT(OBD_FAIL_MDS_STATFS_LCW_SLEEP, (MDS_SERVICE_WATCHDOG_FACTOR * at_get(&svc->srv_at_estimate)) + 1); - OBD_COUNTER_INCREMENT(obd, statfs); + mds_counter_incr(req->rq_export, LPROC_MDS_STATFS); if (OBD_FAIL_CHECK(OBD_FAIL_MDS_STATFS_PACK)) GOTO(out, rc = -ENOMEM); @@ -1160,6 +1158,8 @@ if (OBD_FAIL_CHECK(OBD_FAIL_MDS_SYNC_PACK)) GOTO(out, rc = -ENOMEM); + mds_counter_incr(req->rq_export, LPROC_MDS_SYNC); + rc = lustre_pack_reply(req, 2, size, NULL); if (rc) GOTO(out, rc); @@ -1223,7 +1223,7 @@ CDEBUG(D_INODE, "ino %lu\n", de->d_inode->i_ino); - file = dentry_open(de, mnt, O_RDONLY | O_LARGEFILE); + file = ll_dentry_open(de, mnt, O_RDONLY | O_LARGEFILE, current_cred()); /* note: in case of an error, dentry_open puts dentry */ if (IS_ERR(file)) GOTO(out_pop, rc = PTR_ERR(file)); @@ -2459,7 +2459,7 @@ getattr_part = MDS_INODELOCK_LOOKUP; case IT_GETATTR: getattr_part |= MDS_INODELOCK_LOOKUP; - OBD_COUNTER_INCREMENT(req->rq_export->exp_obd, getattr); + mds_counter_incr(req->rq_export, LPROC_MDS_GETATTR); case IT_READDIR: fixup_handle_for_resent_req(req, DLM_LOCKREQ_OFF, lock, &new_lock, &lockh); diff -Nru lustre-1.8.3/lustre/mds/lproc_mds.c lustre-1.8.5+dfsg/lustre/mds/lproc_mds.c --- lustre-1.8.3/lustre/mds/lproc_mds.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mds/lproc_mds.c 2010-11-17 04:31:48.000000000 +0100 @@ -520,8 +520,12 @@ lprocfs_counter_init(stats, LPROC_MDS_MKDIR, 0, "mkdir", "reqs"); lprocfs_counter_init(stats, LPROC_MDS_RMDIR, 0, "rmdir", "reqs"); lprocfs_counter_init(stats, LPROC_MDS_RENAME, 0, "rename", "reqs"); + lprocfs_counter_init(stats, LPROC_MDS_GETATTR, 0, "getattr", "reqs"); + lprocfs_counter_init(stats, LPROC_MDS_SETATTR, 0, "setattr", "reqs"); lprocfs_counter_init(stats, LPROC_MDS_GETXATTR, 0, "getxattr", "reqs"); lprocfs_counter_init(stats, LPROC_MDS_SETXATTR, 0, "setxattr", "reqs"); + lprocfs_counter_init(stats, LPROC_MDS_STATFS, 0, "statfs", "reqs"); + lprocfs_counter_init(stats, LPROC_MDS_SYNC, 0, "sync", "reqs"); } void lprocfs_mds_init_vars(struct lprocfs_static_vars *lvars) diff -Nru lustre-1.8.3/lustre/mds/mds_fs.c lustre-1.8.5+dfsg/lustre/mds/mds_fs.c --- lustre-1.8.3/lustre/mds/mds_fs.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mds/mds_fs.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -283,6 +283,10 @@ if (!med->med_lcd) RETURN(0); + /* Do not erase record for recoverable client. */ + if (obd->obd_fail && !exp->exp_failed) + GOTO(free, 0); + /* XXX if lcd_uuid were a real obd_uuid, I could use obd_uuid_equals */ if (!strcmp(med->med_lcd->lcd_uuid, obd->obd_uuid.uuid)) GOTO(free, 0); @@ -767,8 +771,8 @@ dput(dentry); - dentry = lookup_one_len("__iopen__", cfs_fs_pwd(current->fs), - strlen("__iopen__")); + dentry = ll_lookup_one_len("__iopen__", cfs_fs_pwd(current->fs), + strlen("__iopen__")); if (IS_ERR(dentry)) { rc = PTR_ERR(dentry); CERROR("cannot lookup __iopen__ directory: rc = %d\n", rc); @@ -973,7 +977,7 @@ push_ctxt(saved, &exp->exp_obd->obd_lvfs_ctxt, &ucred); sprintf(fidname, "%u.%u", tmpname, current->pid); - dchild = lookup_one_len(fidname, mds->mds_objects_dir, strlen(fidname)); + dchild = ll_lookup_one_len(fidname, mds->mds_objects_dir, strlen(fidname)); if (IS_ERR(dchild)) { CERROR("getting neg dentry for obj: %u\n", tmpname); GOTO(out_pop, rc = PTR_ERR(dchild)); diff -Nru lustre-1.8.3/lustre/mds/mds_internal.h lustre-1.8.5+dfsg/lustre/mds/mds_internal.h --- lustre-1.8.3/lustre/mds/mds_internal.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mds/mds_internal.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -69,7 +69,7 @@ #ifdef __KERNEL__ /* Open counts for files. No longer atomic, must hold inode->i_sem */ -# define mds_inode_oatomic(inode) ((inode)->i_cindex) +#define mds_inode_oatomic(inode) (*((long*)&((inode)->i_pipe))) #define MDS_UP_READ_ORPHAN_SEM(i) UP_READ_I_ALLOC_SEM(i) #define MDS_DOWN_READ_ORPHAN_SEM(i) DOWN_READ_I_ALLOC_SEM(i) @@ -237,8 +237,7 @@ int mds_post_mds_lovconf(struct obd_device *obd); int mds_notify(struct obd_device *obd, struct obd_device *watched, enum obd_notify_event ev, void *data); -int mds_get_default_md(struct obd_device *obd, struct lov_mds_md *lmm, - int *lmmsize); +int mds_get_default_md(struct obd_device *obd, struct lov_user_md *lmm); int mds_convert_lov_ea(struct obd_device *obd, struct inode *inode, struct lov_mds_md *lmm, int lmm_size, __u64 connect_flags); @@ -313,8 +312,12 @@ LPROC_MDS_MKDIR, LPROC_MDS_RMDIR, LPROC_MDS_RENAME, + LPROC_MDS_GETATTR, + LPROC_MDS_SETATTR, LPROC_MDS_GETXATTR, LPROC_MDS_SETXATTR, + LPROC_MDS_STATFS, + LPROC_MDS_SYNC, LPROC_MDS_LAST, }; void mds_counter_incr(struct obd_export *exp, int opcode); diff -Nru lustre-1.8.3/lustre/mds/mds_lov.c lustre-1.8.5+dfsg/lustre/mds/mds_lov.c --- lustre-1.8.3/lustre/mds/mds_lov.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mds/mds_lov.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -263,7 +263,7 @@ * Special lsm is allocated with single stripe, caller should deallocated it * after use */ -static int mds_log_lost_precreated(struct obd_device *obd, +static int noinline mds_log_lost_precreated(struct obd_device *obd, struct lov_stripe_md **lsmp, int *stripes, obd_id id, obd_count count, int idx) { @@ -387,7 +387,7 @@ if (size == 0) RETURN(0); - page = (size/(OBJID_PER_PAGE()*sizeof(obd_id)))+1; + page = (size + MDS_LOV_ALLOC_SIZE - 1) / MDS_LOV_ALLOC_SIZE; CDEBUG(D_INFO, "file size %d pages %d\n", (int)size, page); for (i = 0; i < page; i++) { obd_id *data; @@ -401,23 +401,22 @@ data = mds->mds_lov_page_array[i]; rc = fsfilt_read_record(obd, mds->mds_lov_objid_filp, data, - OBJID_PER_PAGE()*sizeof(obd_id), &off); + MDS_LOV_ALLOC_SIZE, &off); if (rc < 0) { CERROR("Error reading objids %d\n", rc); GOTO(out, rc); } + if (off == off_old) /* hole is read */ + off += MDS_LOV_ALLOC_SIZE; count = (off - off_old) / sizeof(obd_id); if (mds_lov_update_from_read(mds, data, count)) { CERROR("Can't update mds data\n"); GOTO(out, rc = -EIO); } - - if (off == off_old) - break; /* eof */ - } - mds->mds_lov_objid_lastpage = i; - mds->mds_lov_objid_lastidx = count; + } + mds->mds_lov_objid_lastpage = page - 1; + mds->mds_lov_objid_lastidx = count - 1; CDEBUG(D_INFO, "Read %u - %u %u objid\n", mds->mds_lov_objid_count, mds->mds_lov_objid_lastpage, mds->mds_lov_objid_lastidx); @@ -440,7 +439,7 @@ cfs_foreach_bit(mds->mds_lov_page_dirty, i) { obd_id *data = mds->mds_lov_page_array[i]; - unsigned int size = OBJID_PER_PAGE()*sizeof(obd_id); + unsigned int size = MDS_LOV_ALLOC_SIZE; loff_t off = i * size; LASSERT(data != NULL); @@ -475,7 +474,6 @@ unsigned int page; unsigned int off; obd_id *data; - __u64 connect_flags; __u32 size; int rc = 0; ENTRY; @@ -486,14 +484,8 @@ off = idx % OBJID_PER_PAGE(); data = mds->mds_lov_page_array[page]; - size = sizeof(__u64); - connect_flags = idx; - rc = obd_get_info(lov_exp, sizeof(KEY_CONNECT_FLAG), KEY_CONNECT_FLAG, - &size, &connect_flags, NULL); - if (rc) - GOTO(out, rc); - if (data[off] < 2 || connect_flags & OBD_CONNECT_SKIP_ORPHAN) { + if (data[off] < 2) { /* We never read this lastid; ask the osc */ struct obd_id_info lastid; @@ -699,10 +691,6 @@ GOTO(error_exit, rc); } - /* ask lov to generate OBD_NOTIFY_CREATE events for already registered - * targets */ - obd_notify(obd->u.mds.mds_lov_obd, NULL, OBD_NOTIFY_CREATE, NULL); - OBD_ALLOC(data, sizeof(*data)); if (data == NULL) RETURN(-ENOMEM); @@ -1214,26 +1202,31 @@ RETURN(rc); } -int mds_get_default_md(struct obd_device *obd, struct lov_mds_md *lmm, - int *size) +int mds_get_default_md(struct obd_device *obd, struct lov_user_md *lum) { struct lov_desc *ldesc; + int rc, size = sizeof(*ldesc); ENTRY; + if (!lum) + RETURN(0); + ldesc = &obd->u.mds.mds_lov_desc; LASSERT(ldesc != NULL); - if (!lmm) - RETURN(0); + rc = obd_get_info(obd->u.mds.mds_lov_exp, sizeof(KEY_LOVDESC), + KEY_LOVDESC, &size, ldesc, NULL); + if (rc) + RETURN(rc); - lmm->lmm_magic = LOV_MAGIC_V1; - lmm->lmm_object_gr = LOV_OBJECT_GROUP_DEFAULT; - lmm->lmm_pattern = ldesc->ld_pattern; - lmm->lmm_stripe_size = ldesc->ld_default_stripe_size; - lmm->lmm_stripe_count = ldesc->ld_default_stripe_count; - *size = sizeof(struct lov_mds_md); + lum->lmm_magic = LOV_MAGIC_V1; + lum->lmm_object_gr = LOV_OBJECT_GROUP_DEFAULT; + lum->lmm_pattern = ldesc->ld_pattern; + lum->lmm_stripe_size = ldesc->ld_default_stripe_size; + lum->lmm_stripe_count = ldesc->ld_default_stripe_count; + lum->lmm_stripe_offset = ldesc->ld_default_stripe_offset; - RETURN(sizeof(struct lov_mds_md)); + RETURN(sizeof(*lum)); } /* Convert the on-disk LOV EA structre. diff -Nru lustre-1.8.3/lustre/mds/mds_open.c lustre-1.8.5+dfsg/lustre/mds/mds_open.c --- lustre-1.8.3/lustre/mds/mds_open.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mds/mds_open.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -757,7 +757,7 @@ * NFSD uses the MDS_OPEN_OWNEROVERRIDE flag to say that a file * owner can write to a file even if it is marked readonly to hide * its brokenness. (bug 5781) */ - if (flags & MDS_OPEN_OWNEROVERRIDE && inode->i_uid == current->fsuid) + if (flags & MDS_OPEN_OWNEROVERRIDE && inode->i_uid == current_fsuid()) return 0; if (flags & FMODE_READ) @@ -997,6 +997,35 @@ RETURN(rc); } +int noinline mds_get_open_lock(struct obd_device *obd, struct dentry *dchild, + int child_mode, struct lustre_handle *child_lockh, + struct ldlm_reply *rep) +{ + ldlm_policy_data_t policy = { .l_inodebits = { MDS_INODELOCK_LOOKUP | MDS_INODELOCK_OPEN } }; + struct ldlm_res_id child_res_id; + int rc = 0, lock_flags = 0; + + /* In case of replay we do not get a lock assuming that the + caller has it already */ + memset(&child_res_id, 0, sizeof(child_res_id)); + child_res_id.name[0] = dchild->d_inode->i_ino; + child_res_id.name[1] = dchild->d_inode->i_generation; + + rc = ldlm_cli_enqueue_local(obd->obd_namespace, &child_res_id, + LDLM_IBITS, &policy, child_mode, + &lock_flags, ldlm_blocking_ast, + ldlm_completion_ast, NULL, NULL, + 0, NULL, child_lockh); + if (rc != ELDLM_OK) + goto out; + + /* Let mds_intent_policy know that we have a lock to return */ + ldlm_reply_set_disposition(rep, DISP_OPEN_LOCK); + +out: + return rc; +} + int mds_open(struct mds_update_record *rec, int offset, struct ptlrpc_request *req, struct lustre_handle *child_lockh) { @@ -1013,16 +1042,15 @@ int parent_mode = LCK_CR; void *handle = NULL; struct lvfs_dentry_params dp = LVFS_DENTRY_PARAMS_INIT; - unsigned int qcids[MAXQUOTAS] = { current->fsuid, current->fsgid }; + unsigned int qcids[MAXQUOTAS] = { current_fsuid(), current_fsgid() }; unsigned int qpids[MAXQUOTAS] = { 0, 0 }; unsigned int ids[MAXQUOTAS] = { 0, 0 }; int child_mode = LCK_CR; /* Always returning LOOKUP lock if open succesful to guard dentry on client. */ - int lock_flags = 0; int quota_pending[2] = {0, 0}; int use_parent, need_open_lock; - unsigned int gid = current->fsgid; + unsigned int gid = current_fsgid(); ENTRY; mds_counter_incr(req->rq_export, LPROC_MDS_OPEN); @@ -1177,7 +1205,7 @@ /*Step 3: If the child was negative, and we're supposed to, create it.*/ if (dchild->d_inode == NULL) { unsigned long ino = rec->ur_fid2->id; - struct iattr iattr; + struct iattr *iattr; struct inode *inode; if (!(rec->ur_flags & MDS_OPEN_CREAT)) { @@ -1201,13 +1229,13 @@ if (dparent->d_inode->i_mode & S_ISGID) gid = dparent->d_inode->i_gid; else - gid = current->fsgid; + gid = current_fsgid(); /* we try to get enough quota to write here, and let ldiskfs * decide if it is out of quota or not b=14783 * FIXME: after CMD is used, pointer to obd_trans_info* couldn't * be NULL, b=14840 */ - ids[0] = current->fsuid; + ids[0] = current_fsuid(); ids[1] = gid; lquota_chkquota(mds_quota_interface_ref, req->rq_export, ids[0], ids[1], 1, quota_pending, @@ -1246,6 +1274,8 @@ rc = -EOVERFLOW; else rc = -EFAULT; + CERROR("file recreated with wrong inode number" + " %lu != %lu\n", ino, inode->i_ino); GOTO(cleanup, rc); } /* Written as part of setattr */ @@ -1254,26 +1284,32 @@ inode->i_ino, inode->i_generation); } - LTIME_S(iattr.ia_atime) = rec->ur_time; - LTIME_S(iattr.ia_ctime) = rec->ur_time; - LTIME_S(iattr.ia_mtime) = rec->ur_time; + OBD_ALLOC_PTR(iattr); + if (iattr == NULL) + GOTO(cleanup, rc = -ENOMEM); + + LTIME_S(iattr->ia_atime) = rec->ur_time; + LTIME_S(iattr->ia_ctime) = rec->ur_time; + LTIME_S(iattr->ia_mtime) = rec->ur_time; - iattr.ia_uid = current->fsuid; /* set by push_ctxt already */ - iattr.ia_gid = gid; + iattr->ia_uid = current_fsuid(); /* set by push_ctxt already */ + iattr->ia_gid = gid; - iattr.ia_valid = ATTR_UID | ATTR_GID | ATTR_ATIME | + iattr->ia_valid = ATTR_UID | ATTR_GID | ATTR_ATIME | ATTR_MTIME | ATTR_CTIME; - rc = fsfilt_setattr(obd, dchild, handle, &iattr, 0); + rc = fsfilt_setattr(obd, dchild, handle, iattr, 0); if (rc) CERROR("error on child setattr: rc = %d\n", rc); - iattr.ia_valid = ATTR_MTIME | ATTR_CTIME; + iattr->ia_valid = ATTR_MTIME | ATTR_CTIME; - rc = fsfilt_setattr(obd, dparent, handle, &iattr, 0); + rc = fsfilt_setattr(obd, dparent, handle, iattr, 0); if (rc) CERROR("error on parent setattr: rc = %d\n", rc); + OBD_FREE_PTR(iattr); + rc = fsfilt_commit(obd, dchild->d_inode, handle, 0); handle = NULL; acc_mode = 0; /* Don't check for permissions */ @@ -1349,25 +1385,9 @@ } if (need_open_lock) { - ldlm_policy_data_t policy = { .l_inodebits = { MDS_INODELOCK_LOOKUP | MDS_INODELOCK_OPEN } }; - struct ldlm_res_id child_res_id; - - /* In case of replay we do not get a lock assuming that the - caller has it already */ - memset(&child_res_id, 0, sizeof(child_res_id)); - child_res_id.name[0] = dchild->d_inode->i_ino; - child_res_id.name[1] = dchild->d_inode->i_generation; - - rc = ldlm_cli_enqueue_local(obd->obd_namespace, &child_res_id, - LDLM_IBITS, &policy, child_mode, - &lock_flags, ldlm_blocking_ast, - ldlm_completion_ast, NULL, NULL, - 0, NULL, child_lockh); + rc = mds_get_open_lock(obd, dchild, child_mode, child_lockh, rep); if (rc != ELDLM_OK) GOTO(cleanup, rc); - - /* Let mds_intent_policy know that we have a lock to return */ - ldlm_reply_set_disposition(rep, DISP_OPEN_LOCK); } if (!S_ISREG(dchild->d_inode->i_mode) && @@ -1555,10 +1575,8 @@ * is more out-of-date than the specified limit. If we are * already going to write out the atime then do it anyway. */ if ((request_body->valid & OBD_MD_FLATIME) && - ((LTIME_S(iattr.ia_atime) > - LTIME_S(inode->i_atime) + mds->mds_atime_diff) || - (iattr.ia_valid != 0 && - LTIME_S(iattr.ia_atime) > LTIME_S(inode->i_atime)))) { + ((request_body->atime > LTIME_S(inode->i_atime) + + mds->mds_atime_diff) )) { LTIME_S(iattr.ia_atime) = request_body->atime; iattr.ia_valid |= ATTR_ATIME; } diff -Nru lustre-1.8.3/lustre/mds/mds_reint.c lustre-1.8.5+dfsg/lustre/mds/mds_reint.c --- lustre-1.8.3/lustre/mds/mds_reint.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mds/mds_reint.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -223,7 +223,6 @@ __u64 transno, prev_transno; int err; loff_t off; - int log_pri = D_RPCTRACE; struct inode *inode = inodes ? inodes[0] : NULL; int version_set = handle ? 1 : 0; ENTRY; @@ -335,23 +334,21 @@ mds_commit_cb(obd, transno, exp, err); } + DEBUG_REQ(err ? D_ERROR : D_INFO, req, + "wrote trans #"LPU64" rc %d client %s at idx %u: err = %d", + transno, rc, lcd->lcd_uuid, med->med_lr_idx, err); + if (err) { - log_pri = D_ERROR; if (rc == 0) rc = err; } - DEBUG_REQ(log_pri, req, - "wrote trans #"LPU64" rc %d client %s at idx %u: err = %d", - transno, rc, lcd->lcd_uuid, med->med_lr_idx, err); - err = mds_lov_write_objids(obd); if (err) { - log_pri = D_ERROR; + CERROR("wrote objids: err = %d\n", err); if (rc == 0) rc = err; } - CDEBUG(log_pri, "wrote objids: err = %d\n", err); commit: err = fsfilt_commit(obd, inode, handle, 0); @@ -394,7 +391,7 @@ /* times */ if ((ia_valid & (ATTR_MTIME|ATTR_ATIME)) == (ATTR_MTIME|ATTR_ATIME)) { - if (current->fsuid != inode->i_uid && + if (current_fsuid() != inode->i_uid && (error = ll_permission(inode, MAY_WRITE, NULL)) != 0) RETURN(error); } @@ -686,7 +683,7 @@ DEBUG_REQ(D_INODE, req, "setattr "LPU64"/%u %x", rec->ur_fid1->id, rec->ur_fid1->generation, rec->ur_iattr.ia_valid); - OBD_COUNTER_INCREMENT(obd, setattr); + mds_counter_incr(req->rq_export, LPROC_MDS_SETATTR); MDS_CHECK_RESENT(req, reconstruct_reint_setattr(rec, offset, req)); @@ -806,11 +803,10 @@ * (i.e. all default values specified) then delete default * striping from dir. */ if (S_ISDIR(inode->i_mode) && - (lum->lmm_stripe_size == 0 && - lum->lmm_stripe_offset == - (typeof(lum->lmm_stripe_offset))(-1) && - lum->lmm_stripe_count == 0 && - le32_to_cpu(lum->lmm_magic) != LOV_USER_MAGIC_V3)){ + LOVEA_DELETE_VALUES(lum->lmm_stripe_size, + lum->lmm_stripe_count, + lum->lmm_stripe_offset) && + (le32_to_cpu(lum->lmm_magic) != LOV_USER_MAGIC_V3)) { rc = fsfilt_set_md(obd, inode, handle, NULL, 0, "lov"); if (rc) GOTO(cleanup, rc); @@ -976,12 +972,12 @@ struct lustre_handle lockh; int rc = 0, err = 0, type = rec->ur_mode & S_IFMT, cleanup_phase = 0; int created = 0; - unsigned int qcids[MAXQUOTAS] = { current->fsuid, current->fsgid }; + unsigned int qcids[MAXQUOTAS] = { current_fsuid(), current_fsgid() }; unsigned int qpids[MAXQUOTAS] = { 0, 0 }; unsigned int ids[MAXQUOTAS] = { 0, 0 }; struct lvfs_dentry_params dp = LVFS_DENTRY_PARAMS_INIT; int quota_pending[2] = {0, 0}; - unsigned int gid = current->fsgid; + unsigned int gid = current_fsgid(); ENTRY; LASSERT(offset == REQ_REC_OFF); @@ -1055,13 +1051,13 @@ if (dir->i_mode & S_ISGID) gid = dir->i_gid; else - gid = current->fsgid; + gid = current_fsgid(); /* we try to get enough quota to write here, and let ldiskfs * decide if it is out of quota or not b=14783 * FIXME: after CMD is used, pointer to obd_trans_info* couldn't * be NULL, b=14840 */ - ids[0] = current->fsuid; + ids[0] = current_fsuid(); ids[1] = gid; lquota_chkquota(mds_quota_interface_ref, req->rq_export, ids[0], ids[1], 1, quota_pending, NULL, NULL, 0); @@ -1142,7 +1138,7 @@ LTIME_S(iattr.ia_atime) = rec->ur_time; LTIME_S(iattr.ia_ctime) = rec->ur_time; LTIME_S(iattr.ia_mtime) = rec->ur_time; - iattr.ia_uid = current->fsuid; /* set by push_ctxt already */ + iattr.ia_uid = current_fsuid(); /* set by push_ctxt already */ iattr.ia_gid = gid; iattr.ia_valid = ATTR_UID | ATTR_GID | ATTR_ATIME | ATTR_MTIME | ATTR_CTIME; @@ -1727,6 +1723,7 @@ struct dentry *pending_child; char fidname[LL_FID_NAMELEN]; int fidlen = 0, rc, mode; + int ignoring_quota; ENTRY; LASSERT(inode != NULL); @@ -1760,6 +1757,11 @@ /* avoid vfs_link upon 0 nlink inode, inc by 2 instead of 1 because * ext3_inc_count() can reset i_nlink for indexed directory */ inode->i_nlink += 2; + + /* Temporarily raise the resource capability as we do not want to + * get -EDQUOT from VFS during this unlink operation */ + ignoring_quota = lquota_enforce(mds_quota_interface_ref, obd, 1); + rc = ll_vfs_link(dentry, mds->mds_vfsmnt, pending_dir, pending_child, mds->mds_vfsmnt); if (rc) @@ -1785,6 +1787,9 @@ if (inode->i_sb->s_op->dirty_inode) inode->i_sb->s_op->dirty_inode(inode); + if (!ignoring_quota) + lquota_enforce(mds_quota_interface_ref, obd, 0); + if (rc) GOTO(out_dput, rc); @@ -2851,13 +2856,19 @@ { struct obd_device *obd = req->rq_export->exp_obd; struct mds_obd *mds = &obd->u.mds; - struct lvfs_run_ctxt saved; + struct lvfs_run_ctxt *saved; int rc; #ifdef CRAY_XT3 gid_t fsgid = rec->ur_uc.luc_fsgid; #endif ENTRY; + OBD_SLAB_ALLOC_PTR(saved, obd_lvfs_ctxt_cache); + if (saved == NULL) { + CERROR("cannot allocate memory for run ctxt\n"); + RETURN(-ENOMEM); + } + #ifdef CRAY_XT3 if (req->rq_uid != LNET_UID_ANY) { /* non-root local cluster client @@ -2877,7 +2888,7 @@ if (IS_ERR(rec->ur_uc.luc_uce)) { rc = PTR_ERR(rec->ur_uc.luc_uce); rec->ur_uc.luc_uce = NULL; - RETURN(rc); + goto out; } /* checked by unpacker */ @@ -2888,19 +2899,26 @@ rec->ur_uc.luc_fsgid = rec->ur_uc.luc_uce->ue_primary; #endif - push_ctxt(&saved, &obd->obd_lvfs_ctxt, &rec->ur_uc); + push_ctxt(saved, &obd->obd_lvfs_ctxt, &rec->ur_uc); #ifdef CRAY_XT3 if (rec->ur_uc.luc_uce && fsgid != rec->ur_uc.luc_fsgid && in_group_p(fsgid)) { - rec->ur_uc.luc_fsgid = fsgid; - current->fsgid = saved.luc.luc_fsgid = fsgid; + struct cred *cred; + rec->ur_uc.luc_fsgid = saved->luc.luc_fsgid = fsgid; + if ((cred = prepare_creds())) { + cred->fsgid = fsgid; + commit_creds(cred); + } } #endif rc = reinters[rec->ur_opcode] (rec, offset, req, lockh); - pop_ctxt(&saved, &obd->obd_lvfs_ctxt, &rec->ur_uc); - + pop_ctxt(saved, &obd->obd_lvfs_ctxt, &rec->ur_uc); upcall_cache_put_entry(mds->mds_group_hash, rec->ur_uc.luc_uce); + +out: + OBD_SLAB_FREE_PTR(saved, obd_lvfs_ctxt_cache); + RETURN(rc); } diff -Nru lustre-1.8.3/lustre/mds/mds_unlink_open.c lustre-1.8.5+dfsg/lustre/mds/mds_unlink_open.c --- lustre-1.8.3/lustre/mds/mds_unlink_open.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mds/mds_unlink_open.c 2010-11-17 04:31:48.000000000 +0100 @@ -226,8 +226,8 @@ if (IS_ERR(mnt)) GOTO(err_mntget, rc = PTR_ERR(mnt)); - file = dentry_open(mds->mds_pending_dir, mds->mds_vfsmnt, - O_RDONLY | O_LARGEFILE); + file = ll_dentry_open(mds->mds_pending_dir, mds->mds_vfsmnt, + O_RDONLY | O_LARGEFILE, current_cred()); if (IS_ERR(file)) GOTO(err_pop, rc = PTR_ERR(file)); diff -Nru lustre-1.8.3/lustre/mds/mds_xattr.c lustre-1.8.5+dfsg/lustre/mds/mds_xattr.c --- lustre-1.8.3/lustre/mds/mds_xattr.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mds/mds_xattr.c 2010-11-17 04:31:48.000000000 +0100 @@ -60,6 +60,10 @@ #define XATTR_NAME_ACL_ACCESS "system.posix_acl_access" #endif +#ifndef XATTR_NAME_ACL_DEFAULT +#define XATTR_NAME_ACL_DEFAULT "system.posix_acl_default" +#endif + static int mds_getxattr_pack_msg(struct ptlrpc_request *req, struct dentry *de, struct mds_body *body) @@ -270,7 +274,9 @@ } /* currently lustre limit xattr size */ - if (body->valid & OBD_MD_FLXATTR && !strcmp(xattr_name, XATTR_NAME_ACL_ACCESS)) { + if (body->valid & OBD_MD_FLXATTR && + (strcmp(xattr_name, XATTR_NAME_ACL_ACCESS) == 0 || + strcmp(xattr_name, XATTR_NAME_ACL_DEFAULT) == 0 )) { xattrlen = lustre_msg_buflen(req->rq_reqmsg, REQ_REC_OFF + 2); @@ -278,7 +284,12 @@ GOTO(out, -ERANGE); } - + /* Revoke all clients' lookup lock, since the access + * permissions for this inode is changed when ACL_ACCESS is + * set. This isn't needed for ACL_DEFAULT, since that does + * not change the access permissions of this inode, nor any + * other existing inodes. It is setting the ACLs inherited + * by new directories/files at create time. */ if (!strcmp(xattr_name, XATTR_NAME_ACL_ACCESS)) lockpart |= MDS_INODELOCK_LOOKUP; diff -Nru lustre-1.8.3/lustre/mgc/mgc_request.c lustre-1.8.5+dfsg/lustre/mgc/mgc_request.c --- lustre-1.8.3/lustre/mgc/mgc_request.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mgc/mgc_request.c 2010-11-17 04:31:48.000000000 +0100 @@ -414,8 +414,8 @@ obd->obd_lvfs_ctxt.fs = get_ds(); push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); - dentry = lookup_one_len(MOUNT_CONFIGS_DIR, cfs_fs_pwd(current->fs), - strlen(MOUNT_CONFIGS_DIR)); + dentry = ll_lookup_one_len(MOUNT_CONFIGS_DIR, cfs_fs_pwd(current->fs), + strlen(MOUNT_CONFIGS_DIR)); pop_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); if (IS_ERR(dentry)) { err = PTR_ERR(dentry); diff -Nru lustre-1.8.3/lustre/mgs/mgs_fs.c lustre-1.8.5+dfsg/lustre/mgs/mgs_fs.c --- lustre-1.8.3/lustre/mgs/mgs_fs.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mgs/mgs_fs.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -222,8 +222,8 @@ /* Need the iopen dir for fid2dentry, required by LLOG_ORIGIN_HANDLE_READ_HEADER */ - dentry = lookup_one_len("__iopen__", cfs_fs_pwd(current->fs), - strlen("__iopen__")); + dentry = ll_lookup_one_len("__iopen__", cfs_fs_pwd(current->fs), + strlen("__iopen__")); if (IS_ERR(dentry)) { rc = PTR_ERR(dentry); CERROR("cannot lookup __iopen__ directory: rc = %d\n", rc); diff -Nru lustre-1.8.3/lustre/mgs/mgs_handler.c lustre-1.8.5+dfsg/lustre/mgs/mgs_handler.c --- lustre-1.8.3/lustre/mgs/mgs_handler.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mgs/mgs_handler.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -42,7 +42,7 @@ # define EXPORT_SYMTAB #endif #define DEBUG_SUBSYSTEM S_MGS -#define D_MGS D_CONFIG/*|D_WARNING*/ +#define D_MGS D_CONFIG #ifdef __KERNEL__ # include @@ -59,7 +59,7 @@ #include #include #include "mgs_internal.h" - +#include /* Establish a connection to the MGS.*/ static int mgs_connect(struct lustre_handle *conn, struct obd_device *obd, @@ -90,7 +90,6 @@ rc = mgs_export_stats_init(obd, exp, 0, localdata); if (rc) { class_disconnect(exp); - lprocfs_exp_cleanup(exp); } else { class_export_put(exp); } @@ -368,6 +367,30 @@ RETURN(rc); } +/* Ensure this is not a failover node that is connecting first*/ +static int mgs_check_failover_reg(struct mgs_target_info *mti) +{ + lnet_nid_t nid; + char *ptr; + int i; + + ptr = mti->mti_params; + while (class_find_param(ptr, PARAM_FAILNODE, &ptr) == 0) { + while (class_parse_nid(ptr, &nid, &ptr) == 0) { + for (i = 0; i < mti->mti_nid_count; i++) { + if (nid == mti->mti_nids[i]) { + LCONSOLE_WARN("Denying initial registra" + "tion attempt from nid %s" + ", specified as failover" + "\n",libcfs_nid2str(nid)); + return -EADDRNOTAVAIL; + } + } + } + } + return 0; +} + /* Called whenever a target starts up. Flags indicate first connect, etc. */ static int mgs_handle_target_reg(struct ptlrpc_request *req) { @@ -384,16 +407,23 @@ lustre_swab_mgs_target_info); LASSERT(mti); + if (mti->mti_flags & LDD_F_NEED_INDEX) + mti->mti_flags |= LDD_F_WRITECONF; + if (!(mti->mti_flags & (LDD_F_WRITECONF | LDD_F_UPGRADE14 | LDD_F_UPDATE))) { /* We're just here as a startup ping. */ CDEBUG(D_MGS, "Server %s is running on %s\n", mti->mti_svname, obd_export_nid2str(req->rq_export)); rc = mgs_check_target(obd, mti); + /* above will set appropriate mti flags */ if (rc <= 0) /* Nothing wrong, or fatal error */ GOTO(out_nolock, rc); + } else { + if ((rc = mgs_check_failover_reg(mti))) + GOTO(out_nolock, rc); } /* Revoke the config lock to make sure nobody is reading. */ @@ -471,7 +501,8 @@ out_nolock: CDEBUG(D_MGS, "replying with %s, index=%d, rc=%d\n", mti->mti_svname, mti->mti_stripe_index, rc); - lustre_pack_reply(req, 2, rep_size, NULL); + req->rq_status = rc; + rc = lustre_pack_reply(req, 2, rep_size, NULL); /* send back the whole mti in the reply */ rep_mti = lustre_msg_buf(req->rq_repmsg, REPLY_REC_OFF, sizeof(*rep_mti)); diff -Nru lustre-1.8.3/lustre/mgs/mgs_llog.c lustre-1.8.5+dfsg/lustre/mgs/mgs_llog.c --- lustre-1.8.3/lustre/mgs/mgs_llog.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/mgs/mgs_llog.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -44,7 +44,7 @@ #define EXPORT_SYMTAB #endif #define DEBUG_SUBSYSTEM S_MGS -#define D_MGS D_CONFIG /*|D_WARNING*/ +#define D_MGS D_CONFIG #ifdef __KERNEL__ #include @@ -89,7 +89,7 @@ GOTO(out_pop, rc = PTR_ERR(mnt)); } - file = dentry_open(dentry, mnt, O_RDONLY); + file = ll_dentry_open(dentry, mnt, O_RDONLY, current_cred()); if (IS_ERR(file)) /* dentry_open_it() drops the dentry, mnt refs */ GOTO(out_pop, rc = PTR_ERR(file)); @@ -583,7 +583,8 @@ int rc, rc2; ENTRY; - CDEBUG(D_MGS, "modify %s/%s/%s\n", logname, devname, comment); + CDEBUG(D_MGS, "modify %s/%s/%s fl=%x\n", logname, devname, comment, + flags); push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); @@ -930,11 +931,15 @@ mgs_modify(obd, fsdb, mti, dirent->lld_name, devname, comment, CM_SKIP); /* Write the new one */ - rc = mgs_write_log_direct(obd, fsdb, dirent->lld_name, - lcfg, devname, comment); - if (rc) - CERROR("err %d writing log %s\n", rc, - dirent->lld_name); + if (lcfg) { + rc = mgs_write_log_direct(obd, fsdb, + dirent->lld_name, + lcfg, devname, + comment); + if (rc) + CERROR("err %d writing log %s\n", rc, + dirent->lld_name); + } } OBD_FREE(dirent, sizeof(*dirent)); } @@ -971,7 +976,7 @@ lovdesc->ld_default_stripe_count = 1; lovdesc->ld_pattern = LOV_PATTERN_RAID0; lovdesc->ld_default_stripe_size = 1024 * 1024; - lovdesc->ld_default_stripe_offset = 0; + lovdesc->ld_default_stripe_offset = -1; lovdesc->ld_qos_maxage = QOS_DEFAULT_MAXAGE; sprintf((char*)lovdesc->ld_uuid.uuid, "%s_UUID", lovname); /* can these be the same? */ @@ -1039,6 +1044,48 @@ return rc; } +static int __mgs_write_log_mdt(struct obd_device *obd, struct fs_db *fsdb, + struct mgs_target_info *mti) +{ + struct llog_handle *llh = NULL; + char mdt_uuid[sizeof(struct obd_uuid)]; + char *svname; + int rc; + + ENTRY; + name_create(&svname, mti->mti_fsname, "-MDT0000"); + if (!mgs_log_is_empty(obd, svname)) + GOTO(out, rc = 0); + + /* Make up our own uuid */ + snprintf(mdt_uuid, sizeof(struct obd_uuid), "%s_UUID", svname); + + rc = mgs_write_log_lov(obd, fsdb, mti, svname, + fsdb->fsdb_mdtlov); + if (rc) + GOTO(out, rc); + + rc = record_start_log(obd, &llh, svname); + if (rc) + GOTO(out, rc); + /* FIXME this whole fn should be a single journal transaction */ + record_marker(obd, llh, fsdb, CM_START, svname,"add mdt"); + record_mount_opt(obd, llh, svname, fsdb->fsdb_mdtlov, 0); + record_attach(obd, llh, svname, LUSTRE_MDS_NAME, mdt_uuid); + + record_setup(obd, llh, svname, + mdt_uuid /* Ignored. Compatible with future. */, + "0" /* MDT Index, default to zero. */, + svname, + 0 /* options */); + record_marker(obd, llh, fsdb, CM_END, svname, "add mdt"); + record_end_log(obd, &llh); + EXIT; +out: + name_destroy(&svname); + return rc; +} + static int mgs_write_log_mdt(struct obd_device *obd, struct fs_db *fsdb, struct mgs_target_info *mti) { @@ -1060,8 +1107,7 @@ /* This is the first time for all logs for this fs, since any ost should have already started the mdt log. */ first_log++; - rc = mgs_write_log_lov(obd, fsdb, mti, mti->mti_svname, - fsdb->fsdb_mdtlov); + rc = __mgs_write_log_mdt(obd, fsdb, mti); } /* else there's already some ost entries in the mdt log. */ @@ -1070,27 +1116,6 @@ of this log, this is when the mdt will start. (This was not formerly part of the old mds log, it was directly executed by lconf.) */ - /* - mount_option 0: 1:mdsA 2:lov_mdsA - attach mds mdsA mdsA_UUID - setup /dev/loop2 ldiskfs mdsA errors=remount-ro,user_xattr - */ - rc = record_start_log(obd, &llh, mti->mti_svname); - if (rc) - RETURN(rc); - /* FIXME this whole fn should be a single journal transaction */ - rc = record_marker(obd, llh, fsdb, CM_START, mti->mti_svname,"add mdt"); - rc = record_mount_opt(obd, llh, mti->mti_svname, fsdb->fsdb_mdtlov, 0); - rc = record_attach(obd, llh, mti->mti_svname, LUSTRE_MDS_NAME, - mti->mti_uuid); - rc = record_setup(obd, llh, mti->mti_svname, - mti->mti_uuid /* Ignored. Compatible with future. */, - "0" /* MDT Index, default to zero. */, - mti->mti_svname, - 0 /* options */); - rc = record_marker(obd, llh, fsdb, CM_END, mti->mti_svname, "add mdt"); - rc = record_end_log(obd, &llh); - /* Append the mdt info to the client log */ name_create(&cliname, mti->mti_fsname, "-client"); if (first_log) { @@ -1158,7 +1183,7 @@ { struct llog_handle *llh = NULL; char *nodeuuid, *oscname, *oscuuid, *lovuuid; - char index[5]; + char index[6]; int i, rc; if (mgs_log_is_empty(obd, logname)) { @@ -1278,7 +1303,9 @@ /* Append ost info to mdt log */ /* FIXME add to all MDT logs for CMD */ /* FIXME need real MDT name, but MDT may not have registered yet! */ + name_create(&logname, mti->mti_fsname, "-MDT0000"); + rc = __mgs_write_log_mdt(obd, fsdb, mti); rc = mgs_write_log_osc(obd, fsdb, mti, logname, fsdb->fsdb_mdtlov, flags); name_destroy(&logname); @@ -1292,6 +1319,45 @@ RETURN(rc); } +static __inline__ int mgs_param_empty(char *ptr) +{ + char *tmp; + + if ((tmp = strchr(ptr, '=')) && (*(++tmp) == '\0')) + return 1; + return 0; +} + +static int mgs_write_log_failnid_internal(struct obd_device *obd, + struct fs_db *fsdb, + struct mgs_target_info *mti, + char *logname, char *cliname) +{ + int rc; + struct llog_handle *llh = NULL; + + if (mgs_param_empty(mti->mti_params)) { + /* Remove _all_ failnids */ + rc = mgs_modify(obd, fsdb, mti, logname, + mti->mti_svname, "add failnid", CM_SKIP); + return rc; + } + + /* Otherwise failover nids are additive */ + rc = record_start_log(obd, &llh, logname); + if (!rc) { + /* FIXME this should be a single journal transaction */ + rc = record_marker(obd, llh, fsdb, CM_START, + mti->mti_svname, "add failnid"); + rc = mgs_write_log_failnids(obd, mti, llh, cliname); + rc = record_marker(obd, llh, fsdb, CM_END, + mti->mti_svname, "add failnid"); + rc = record_end_log(obd, &llh); + } + + return rc; +} + /* Add additional failnids to an existing log. The mdc/osc must have been added to logs first */ /* tcp nids must be in dotted-quad ascii - @@ -1300,15 +1366,12 @@ struct mgs_target_info *mti) { char *logname, *cliname; - struct llog_handle *llh = NULL; int rc; ENTRY; - /* FIXME how do we delete a failnid? Currently --writeconf is the - only way. Maybe make --erase-params pass a flag to really - erase all params from logs - except it can't erase the failnids - given when a target first registers, since they aren't processed - as params... */ + /* FIXME we currently can't erase the failnids + * given when a target first registers, since they aren't part of + * an "add uuid" stanza */ /* Verify that we know about this target */ if (mgs_log_is_empty(obd, mti->mti_svname)) { @@ -1340,32 +1403,16 @@ RETURN(-EINVAL); } - /* Add failover nids to client log */ + /* Add failover nids to the client log */ name_create(&logname, mti->mti_fsname, "-client"); - rc = record_start_log(obd, &llh, logname); - if (!rc) { - /* FIXME this fn should be a single journal transaction */ - rc = record_marker(obd, llh, fsdb, CM_START, mti->mti_svname, - "add failnid"); - rc = mgs_write_log_failnids(obd, mti, llh, cliname); - rc = record_marker(obd, llh, fsdb, CM_END, mti->mti_svname, - "add failnid"); - rc = record_end_log(obd, &llh); - } + rc = mgs_write_log_failnid_internal(obd, fsdb, mti, logname, cliname); name_destroy(&logname); if (mti->mti_flags & LDD_F_SV_TYPE_OST) { /* Add OST failover nids to the MDT log as well */ name_create(&logname, mti->mti_fsname, "-MDT0000"); - rc = record_start_log(obd, &llh, logname); - if (!rc) { - rc = record_marker(obd, llh, fsdb, CM_START, - mti->mti_svname, "add failnid"); - rc = mgs_write_log_failnids(obd, mti, llh, cliname); - rc = record_marker(obd, llh, fsdb, CM_END, - mti->mti_svname, "add failnid"); - rc = record_end_log(obd, &llh); - } + rc = mgs_write_log_failnid_internal(obd, fsdb, mti, logname, + cliname); name_destroy(&logname); } @@ -1381,7 +1428,7 @@ char comment[MTI_NAME_MAXLEN]; char *tmp; struct lustre_cfg *lcfg; - int rc; + int rc, del; /* Erase any old settings of this same parameter */ memcpy(comment, ptr, MTI_NAME_MAXLEN); @@ -1391,8 +1438,12 @@ *tmp = 0; /* FIXME we should skip settings that are the same as old values */ rc = mgs_modify(obd, fsdb, mti, logname, tgtname, comment, CM_SKIP); - LCONSOLE_INFO("%sing parameter %s.%s in log %s\n", rc ? + del = mgs_param_empty(ptr); + + LCONSOLE_INFO("%sing parameter %s.%s in log %s\n", del ? "Disabl" : rc ? "Sett" : "Modify", tgtname, comment, logname); + if (del) + return rc; lustre_cfg_bufs_reset(bufs, tgtname); lustre_cfg_bufs_set_string(bufs, 1, ptr); @@ -1411,6 +1462,7 @@ struct lustre_cfg_bufs bufs; struct lustre_cfg *lcfg; char *tmp; + char sep; int cmd, val; int rc; @@ -1428,16 +1480,26 @@ else return -EINVAL; + /* separate the value */ val = simple_strtoul(tmp, NULL, 0); - CDEBUG(D_MGS, "global %s = %d\n", ptr, val); + if (*tmp == '\0') + CDEBUG(D_MGS, "global '%s' removed\n", sys); + else + CDEBUG(D_MGS, "global '%s' val=%d\n", sys, val); lustre_cfg_bufs_reset(&bufs, NULL); lustre_cfg_bufs_set_string(&bufs, 1, sys); lcfg = lustre_cfg_new(cmd, &bufs); lcfg->lcfg_num = val; + /* truncate the comment to the parameter name */ + ptr = tmp - 1; + sep = *ptr; + *ptr = '\0'; /* modify all servers and clients */ - rc = mgs_write_log_direct_all(obd, fsdb, mti, lcfg, mti->mti_fsname, - ptr); + rc = mgs_write_log_direct_all(obd, fsdb, mti, + *tmp == '\0' ? NULL : lcfg, + mti->mti_fsname, sys); + *ptr = sep; lustre_cfg_free(lcfg); return rc; } @@ -1449,7 +1511,7 @@ char *logname; char *ptr = mti->mti_params; char *endptr, *tmp; - int rc = 0; + int rc = 0, rc2 = 0; ENTRY; if (!mti->mti_params) @@ -1649,6 +1711,7 @@ } LCONSOLE_WARN("Ignoring unrecognized param '%s'\n", ptr); + rc2 = -ENOSYS; end_while: if (rc) { @@ -1664,7 +1727,7 @@ ptr = endptr + 1; } - RETURN(rc); + RETURN(rc ?: rc2); } int mgs_check_failnid(struct obd_device *obd, struct mgs_target_info *mti) @@ -1787,6 +1850,11 @@ } /* COMPAT_146 */ +/* Permanent settings of all parameters by writing into the appropriate + * configuration logs. + * A parameter with null value ("='\0'") means to erase it out of + * the logs. + */ /* verify that we can handle the old config logs */ int mgs_upgrade_sv_14(struct obd_device *obd, struct mgs_target_info *mti) { @@ -1953,7 +2021,10 @@ EXIT; } -/* Set a permanent (config log) param for a target or fs */ +/* Set a permanent (config log) param for a target or fs + * \param lcfg buf0 may contain the device (testfs-MDT0000) name + * buf1 contains the single parameter + */ int mgs_setparam(struct obd_device *obd, struct lustre_cfg *lcfg, char *fsname) { struct fs_db *fsdb; @@ -1998,7 +2069,7 @@ strncpy(fsname, devname, MTI_NAME_MAXLEN); } fsname[MTI_NAME_MAXLEN - 1] = 0; - CDEBUG(D_MGS, "setparam on fs %s device %s\n", fsname, devname); + CDEBUG(D_MGS, "setparam fs='%s' device='%s'\n", fsname, devname); rc = mgs_find_or_make_fsdb(obd, fsname, &fsdb); if (rc) diff -Nru lustre-1.8.3/lustre/obdclass/class_hash.c lustre-1.8.5+dfsg/lustre/obdclass/class_hash.c --- lustre-1.8.3/lustre/obdclass/class_hash.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdclass/class_hash.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/obdclass/genops.c lustre-1.8.5+dfsg/lustre/obdclass/genops.c --- lustre-1.8.3/lustre/obdclass/genops.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdclass/genops.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -654,6 +654,9 @@ CDEBUG(D_IOCTL, "final put %p/%s\n", exp, exp->exp_client_uuid.uuid); + /* release nid stat refererence */ + lprocfs_exp_cleanup(exp); + spin_lock(&obd_zombie_impexp_lock); list_add(&exp->exp_obd_chain, &obd_zombie_exports); spin_unlock(&obd_zombie_impexp_lock); diff -Nru lustre-1.8.3/lustre/obdclass/linux/linux-sysctl.c lustre-1.8.5+dfsg/lustre/obdclass/linux/linux-sysctl.c --- lustre-1.8.3/lustre/obdclass/linux/linux-sysctl.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdclass/linux/linux-sysctl.c 2010-11-17 04:31:48.000000000 +0100 @@ -54,7 +54,9 @@ #include #include +#ifdef CONFIG_SYSCTL cfs_sysctl_table_header_t *obd_table_header = NULL; +#endif #ifndef HAVE_SYSCTL_UNNUMBERED @@ -337,6 +339,7 @@ return ll_proc_dointvec(table, write, filp, buffer, lenp, ppos); } +#ifdef CONFIG_SYSCTL static cfs_sysctl_table_t obd_table[] = { { .ctl_name = OBD_FAIL_LOC, @@ -499,6 +502,7 @@ }, {0} }; +#endif void obd_sysctl_init (void) { diff -Nru lustre-1.8.3/lustre/obdclass/llog_cat.c lustre-1.8.5+dfsg/lustre/obdclass/llog_cat.c --- lustre-1.8.3/lustre/obdclass/llog_cat.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdclass/llog_cat.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -416,7 +416,7 @@ struct llog_process_cat_args *args = data; struct llog_ctxt *ctxt = args->lpca_ctxt; struct llog_handle *llh = NULL; - void *cb = args->lpca_cb; + llog_cb_t cb = args->lpca_cb; struct llog_logid logid; int rc; ENTRY; @@ -436,9 +436,10 @@ } if (cb) { - rc = llog_cat_process(llh, (llog_cb_t)cb, NULL); + rc = llog_cat_process(llh, cb, NULL); if (rc != LLOG_PROC_BREAK && rc != 0) CERROR("llog_cat_process() failed %d\n", rc); + cb(llh, NULL, NULL); } else { CWARN("No callback function for recovery\n"); } diff -Nru lustre-1.8.3/lustre/obdclass/llog_obd.c lustre-1.8.5+dfsg/lustre/obdclass/llog_obd.c --- lustre-1.8.3/lustre/obdclass/llog_obd.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdclass/llog_obd.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -289,6 +289,10 @@ if (rc) { CERROR("Cannot find handle for log "LPX64"\n", lir->lid_id.lgl_oid); + if (rc == -ENOENT) { + index = rec->lrh_index; + goto cat_cleanup; + } RETURN(rc); } @@ -302,6 +306,7 @@ index = loghandle->u.phd.phd_cookie.lgc_index; llog_free_handle(loghandle); +cat_cleanup: LASSERT(index); llog_cat_set_first_idx(cathandle, index); rc = llog_cancel_rec(cathandle, index); diff -Nru lustre-1.8.3/lustre/obdclass/lprocfs_status.c lustre-1.8.5+dfsg/lustre/obdclass/lprocfs_status.c --- lustre-1.8.3/lustre/obdclass/lprocfs_status.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdclass/lprocfs_status.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -622,16 +622,21 @@ int lprocfs_rd_conn_uuid(char *page, char **start, off_t off, int count, int *eof, void *data) { - struct obd_device *obd = (struct obd_device*)data; + struct obd_device *obd = data; struct ptlrpc_connection *conn; int rc = 0; LASSERT(obd != NULL); + LPROCFS_CLIMP_CHECK(obd); conn = obd->u.cli.cl_import->imp_connection; - LASSERT(conn != NULL); *eof = 1; - rc = snprintf(page, count, "%s\n", conn->c_remote_uuid.uuid); + if (conn) { + rc = snprintf(page, count, "%s\n", + conn->c_remote_uuid.uuid); + } else { + rc = snprintf(page, count, "%s\n", ""); + } LPROCFS_CLIMP_EXIT(obd); return rc; @@ -744,6 +749,9 @@ "pools", "grant_shrink", "skip_orphan", + "large_ea", + "full20", + "layout_lock", NULL }; @@ -770,6 +778,7 @@ struct lprocfs_counter ret; struct obd_device *obd = (struct obd_device *)data; struct obd_import *imp; + struct obd_import_conn *conn; int i, j, k, rw = 0; LASSERT(obd != NULL); @@ -781,12 +790,10 @@ "import:\n" " name: %s\n" " target: %s\n" - " current_connection: %s\n" " state: %s\n" " connect_flags: [", obd->obd_name, obd2cli_tgt(obd), - imp->imp_connection->c_remote_uuid.uuid, ptlrpc_import_state_name(imp->imp_state)); i += obd_connect_flags2str(page + i, count - i, imp->imp_connect_data.ocd_connect_flags, @@ -799,17 +806,33 @@ i += snprintf(page + i, count - i, "]\n" " connection:\n" + " failover_nids: ["); + spin_lock(&imp->imp_lock); + j = 0; + list_for_each_entry(conn, &imp->imp_conn_list, oic_item) { + i += snprintf(page + i, count - i, "%s%s", j ? ", " : "", + libcfs_nid2str(conn->oic_conn->c_peer.nid)); + j++; + } + spin_unlock(&imp->imp_lock); + i += snprintf(page + i, count - i, + "]\n" + " current_connection: %s\n" " connection_attempts: %u\n" " generation: %u\n" " in-progress_invalidations: %u\n", + libcfs_nid2str(imp->imp_connection->c_peer.nid), imp->imp_conn_cnt, imp->imp_generation, atomic_read(&imp->imp_inval_count)); lprocfs_stats_collect(obd->obd_svc_stats, PTLRPC_REQWAIT_CNTR, &ret); - if (ret.lc_count != 0) - do_div(ret.lc_sum, ret.lc_count); - else + if (ret.lc_count != 0) { + /* first argument to do_div MUST be __u64 */ + __u64 sum = ret.lc_sum; + do_div(sum, ret.lc_count); + ret.lc_sum = sum; + } else ret.lc_sum = 0; i += snprintf(page + i, count - i, " rpcs:\n" @@ -851,7 +874,10 @@ PTLRPC_LAST_CNTR + BRW_READ_BYTES + rw, &ret); if (ret.lc_sum > 0 && ret.lc_count > 0) { - do_div(ret.lc_sum, ret.lc_count); + /* first argument to do_div MUST be __u64 */ + __u64 sum = ret.lc_sum; + do_div(sum, ret.lc_count); + ret.lc_sum = sum; i += snprintf(page + i, count - i, " %s_data_averages:\n" " bytes_per_rpc: "LPU64"\n", @@ -862,7 +888,10 @@ j = opcode_offset(OST_READ + rw) + EXTRA_MAX_OPCODES; lprocfs_stats_collect(obd->obd_svc_stats, j, &ret); if (ret.lc_sum > 0 && ret.lc_count != 0) { - do_div(ret.lc_sum, ret.lc_count); + /* first argument to do_div MUST be __u64 */ + __u64 sum = ret.lc_sum; + do_div(sum, ret.lc_count); + ret.lc_sum = sum; i += snprintf(page + i, count - i, " %s_per_rpc: "LPU64"\n", ret.lc_units, ret.lc_sum); @@ -1396,6 +1425,7 @@ LPROCFS_OBD_OP_INIT(num_private_stats, stats, enqueue); LPROCFS_OBD_OP_INIT(num_private_stats, stats, match); LPROCFS_OBD_OP_INIT(num_private_stats, stats, change_cbdata); + LPROCFS_OBD_OP_INIT(num_private_stats, stats, find_cbdata); LPROCFS_OBD_OP_INIT(num_private_stats, stats, cancel); LPROCFS_OBD_OP_INIT(num_private_stats, stats, cancel_unused); LPROCFS_OBD_OP_INIT(num_private_stats, stats, join_lru); @@ -1403,6 +1433,7 @@ LPROCFS_OBD_OP_INIT(num_private_stats, stats, destroy_export); LPROCFS_OBD_OP_INIT(num_private_stats, stats, extent_calc); LPROCFS_OBD_OP_INIT(num_private_stats, stats, llog_init); + LPROCFS_OBD_OP_INIT(num_private_stats, stats, llog_connect); LPROCFS_OBD_OP_INIT(num_private_stats, stats, llog_finish); LPROCFS_OBD_OP_INIT(num_private_stats, stats, pin); LPROCFS_OBD_OP_INIT(num_private_stats, stats, unpin); @@ -2112,6 +2143,11 @@ c += lustre_hash_debug_str(obd->obd_uuid_hash, page + c, count - c); c += lustre_hash_debug_str(obd->obd_nid_hash, page + c, count - c); c += lustre_hash_debug_str(obd->obd_nid_stats_hash, page+c, count-c); +#ifdef HAVE_QUOTA_SUPPORT + if (obd->u.obt.obt_qctxt.lqc_lqs_hash) + c += lustre_hash_debug_str(obd->u.obt.obt_qctxt.lqc_lqs_hash, + page + c, count - c); +#endif return c; } diff -Nru lustre-1.8.3/lustre/obdclass/obd_config.c lustre-1.8.5+dfsg/lustre/obdclass/obd_config.c --- lustre-1.8.3/lustre/obdclass/obd_config.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdclass/obd_config.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -466,11 +466,11 @@ obd->obd_fail = 1; obd->obd_no_transno = 1; obd->obd_no_recov = 1; - /* Set the obd readonly if we can */ - if (OBP(obd, iocontrol)) - obd_iocontrol(OBD_IOC_SET_READONLY, + if (OBP(obd, iocontrol)) { + obd_iocontrol(OBD_IOC_SYNC, obd->obd_self_export, 0, NULL, NULL); + } break; default: CERROR("unrecognised flag '%c'\n", diff -Nru lustre-1.8.3/lustre/obdclass/obd_mount.c lustre-1.8.5+dfsg/lustre/obdclass/obd_mount.c --- lustre-1.8.3/lustre/obdclass/obd_mount.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdclass/obd_mount.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -949,6 +949,8 @@ mti->mti_lustre_ver = LUSTRE_VERSION_CODE; mti->mti_config_ver = 0; + if (lsi->lsi_lmd->lmd_flags & LMD_FLG_WRITECONF) + ldd->ldd_flags |= LDD_F_WRITECONF; mti->mti_flags = ldd->ldd_flags; mti->mti_stripe_index = ldd->ldd_svindex; memcpy(mti->mti_uuid, ldd->ldd_uuid, sizeof(mti->mti_uuid)); @@ -1352,7 +1354,7 @@ /* Wait here forever until the mount refcount is 0 before completing umount, * else we risk dereferencing a null pointer. - * LNET may take e.g. 165s before killing zombies. + * LNET may take e.g. 165s before killing zombies. */ static void server_wait_finished(struct vfsmount *mnt) { @@ -1370,16 +1372,16 @@ waited); /* Cannot use l_event_wait() for an interruptible sleep. */ waited += 3; - blocked = l_w_e_set_sigs(sigmask(SIGKILL)); + blocked = l_w_e_set_sigs(sigmask(SIGKILL)); rc = cfs_waitq_wait_event_interruptible_timeout( - waitq, + waitq, (cfs_atomic_read(&mnt->mnt_count) == 1), cfs_time_seconds(3)); cfs_block_sigs(blocked); if (rc < 0) { LCONSOLE_EMERG("Danger: interrupted umount %p with " "%d refs!\n", - mnt, atomic_read(&mnt->mnt_count)); + mnt, atomic_read(&mnt->mnt_count)); break; } } @@ -1902,6 +1904,9 @@ } else if (strncmp(s1, "nomgs", 5) == 0) { lmd->lmd_flags |= LMD_FLG_NOMGS; clear++; + } else if (strncmp(s1, "writeconf", 9) == 0) { + lmd->lmd_flags |= LMD_FLG_WRITECONF; + clear++; /* ost exclusion list */ } else if (strncmp(s1, "exclude=", 8) == 0) { rc = lmd_make_exclusion(lmd, s1 + 7); diff -Nru lustre-1.8.3/lustre/obdecho/echo.c lustre-1.8.5+dfsg/lustre/obdecho/echo.c --- lustre-1.8.3/lustre/obdecho/echo.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdecho/echo.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -52,7 +52,9 @@ #include #include -#define ECHO_INIT_OBJID 0x1000000000000000ULL +/* The echo objid needs to be below 2^32, because regular FID numbers are + * limited to 2^32 objects in f_oid for the FID_SEQ_ECHO range. b=23335 */ +#define ECHO_INIT_OID 0x10000000ULL #define ECHO_HANDLE_MAGIC 0xabcd0123fedc9876ULL #define ECHO_PERSISTENT_PAGES (ECHO_PERSISTENT_SIZE >> CFS_PAGE_SHIFT) @@ -150,7 +152,7 @@ RETURN(-EINVAL); } - if (oa->o_id > obd->u.echo.eo_lastino || oa->o_id < ECHO_INIT_OBJID) { + if (oa->o_id > obd->u.echo.eo_lastino || oa->o_id < ECHO_INIT_OID) { CERROR("bad destroy objid: "LPX64"\n", oa->o_id); RETURN(-EINVAL); } @@ -418,6 +420,7 @@ { struct obd_device *obd; struct niobuf_local *r = res; + struct niobuf_remote *rbc = rb; int i, vrc = 0; ENTRY; @@ -450,33 +453,36 @@ (oa->o_flags & OBD_FL_DEBUG_CHECK) != 0); int j; - for (j = 0 ; j < obj->ioo_bufcnt ; j++, r++) { - cfs_page_t *page = r->page; - void *addr; - - if (page == NULL) { - CERROR("null page objid "LPU64":%p, buf %d/%d\n", - obj->ioo_id, page, j, obj->ioo_bufcnt); - GOTO(commitrw_cleanup, rc = -EFAULT); + for (j = 0 ; j < obj->ioo_bufcnt ; j++, rbc++) { + long l; + for (l = rbc->len; l>0; l-=r->len, r++) { + cfs_page_t *page = r->page; + void *addr; + + if (page == NULL) { + CERROR("null page objid "LPU64":%p, buf %d/%d\n", + obj->ioo_id, page, j, obj->ioo_bufcnt); + GOTO(commitrw_cleanup, rc = -EFAULT); + } + + addr = cfs_kmap(page); + + CDEBUG(D_PAGE, "$$$$ use page %p, addr %p@"LPU64"\n", + r->page, addr, r->offset); + + if (verify) { + vrc = echo_page_debug_check(page, obj->ioo_id, + r->offset, r->len); + /* check all the pages always */ + if (vrc != 0 && rc == 0) + rc = vrc; + } + + cfs_kunmap(page); + /* NB see comment above regarding persistent pages */ + OBD_PAGE_FREE(page); + atomic_dec(&obd->u.echo.eo_prep); } - - addr = cfs_kmap(page); - - CDEBUG(D_PAGE, "$$$$ use page %p, addr %p@"LPU64"\n", - r->page, addr, r->offset); - - if (verify) { - vrc = echo_page_debug_check(page, obj->ioo_id, - r->offset, r->len); - /* check all the pages always */ - if (vrc != 0 && rc == 0) - rc = vrc; - } - - cfs_kunmap(page); - /* NB see comment above regarding persistent pages */ - OBD_PAGE_FREE(page); - atomic_dec(&obd->u.echo.eo_prep); } } CDEBUG(D_PAGE, "%d pages remain after commit\n", @@ -506,7 +512,7 @@ ENTRY; spin_lock_init(&obd->u.echo.eo_lock); - obd->u.echo.eo_lastino = ECHO_INIT_OBJID; + obd->u.echo.eo_lastino = ECHO_INIT_OID; sprintf(ns_name, "echotgt-%s", obd->obd_uuid.uuid); obd->obd_namespace = ldlm_namespace_new(obd, ns_name, diff -Nru lustre-1.8.3/lustre/obdecho/echo_client.c lustre-1.8.5+dfsg/lustre/obdecho/echo_client.c --- lustre-1.8.3/lustre/obdecho/echo_client.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdecho/echo_client.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -528,6 +528,7 @@ int rc; int verify; int gfp_mask; + int brw_flags = 0; verify = ((oa->o_id) != ECHO_PERSISTENT_OBJID && (oa->o_valid & OBD_MD_FLFLAGS) != 0 && @@ -543,6 +544,9 @@ (count & (~CFS_PAGE_MASK)) != 0) return (-EINVAL); + if (rw == OBD_BRW_WRITE) + brw_flags = OBD_BRW_ASYNC; + set = ptlrpc_prep_set(); if (set == NULL) RETURN(-ENOMEM); @@ -551,8 +555,10 @@ npages = count >> CFS_PAGE_SHIFT; OBD_ALLOC(pga, npages * sizeof(*pga)); - if (pga == NULL) - return (-ENOMEM); + if (pga == NULL) { + rc = -ENOMEM; + goto out_set; + } for (i = 0, pgp = pga, off = offset; i < npages; @@ -567,7 +573,7 @@ pgp->count = CFS_PAGE_SIZE; pgp->off = off; - pgp->flag = 0; + pgp->flag = brw_flags; if (verify) echo_client_page_debug_setup(lsm, pgp->pg, rw, @@ -593,7 +599,6 @@ if (rc) CDEBUG_LIMIT(rc == -ENOSPC ? D_INODE : D_ERROR, "error from obd_brw_async: rc = %d\n", rc); - ptlrpc_set_destroy(set); out: if (rc != 0 || rw != OBD_BRW_READ) verify = 0; @@ -612,6 +617,8 @@ OBD_PAGE_FREE(pgp->pg); } OBD_FREE(pga, npages * sizeof(*pga)); + out_set: + ptlrpc_set_destroy(set); return (rc); } @@ -715,6 +722,7 @@ struct echo_async_state *eas; int rc = 0; struct echo_async_page **aps = NULL; + int brw_flags = 0; ENTRY; #if 0 @@ -743,6 +751,9 @@ if (NULL == eas) return(-ENOMEM); + if (rw == OBD_BRW_WRITE) + brw_flags = OBD_BRW_ASYNC; + memcpy(&eas->eas_oa, oa, sizeof(*oa)); eas->eas_next_offset = offset; eas->eas_end_offset = offset + count; @@ -828,7 +839,7 @@ /* always asserts urgent, which isn't quite right */ rc = obd_queue_async_io(exp, lsm, NULL, eap->eap_cookie, - rw, 0, CFS_PAGE_SIZE, 0, + rw, 0, CFS_PAGE_SIZE, brw_flags, ASYNC_READY | ASYNC_URGENT | ASYNC_COUNT_STABLE); spin_lock(&eas->eas_lock); @@ -855,15 +866,17 @@ out: if (aps != NULL) { for (i = 0; i < npages; ++ i) { - cfs_page_t *page; - eap = aps[i]; - page = eap->eap_page; - if (eap->eap_cookie != NULL) - obd_teardown_async_page(exp, lsm, NULL, - eap->eap_cookie); - OBD_FREE(eap, sizeof(*eap)); - OBD_PAGE_FREE(page); + if (eap != NULL) { + cfs_page_t *page; + + page = eap->eap_page; + if (eap->eap_cookie != NULL) + obd_teardown_async_page(exp, lsm, NULL, + eap->eap_cookie); + OBD_FREE(eap, sizeof(*eap)); + OBD_PAGE_FREE(page); + } } OBD_FREE(aps, npages * sizeof aps[0]); } @@ -1398,7 +1411,8 @@ el = ec->ec_objects.next; eco = list_entry(el, struct ec_object, eco_obj_chain); - LASSERT(eco->eco_refcount == 0); + if (eco->eco_refcount > 0) + RETURN(-EBUSY); eco->eco_refcount = 1; eco->eco_deleted = 1; echo_put_object(eco); diff -Nru lustre-1.8.3/lustre/obdfilter/filter.c lustre-1.8.5+dfsg/lustre/obdfilter/filter.c --- lustre-1.8.3/lustre/obdfilter/filter.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdfilter/filter.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -470,6 +470,10 @@ if (fed->fed_lcd == NULL) RETURN(0); + /* Do not erase record for recoverable client. */ + if (obd->obd_fail && !exp->exp_failed) + GOTO(free, 0); + /* XXX if lcd_uuid were a real obd_uuid, I could use obd_uuid_equals */ if (strcmp(fed->fed_lcd->lcd_uuid, obd->obd_uuid.uuid ) == 0) GOTO(free, 0); @@ -933,6 +937,7 @@ "bug 10479.\n"); lcd->lcd_uuid[0] = '\0'; } else { + OBD_FREE_PTR(lcd); GOTO(err_client, rc = PTR_ERR(exp)); } } else { @@ -1500,7 +1505,7 @@ GOTO(out, rc = -EPERM); /* check_sticky() */ - if ((dentry->d_inode->i_uid != current->fsuid && + if ((dentry->d_inode->i_uid != current_fsuid() && !cfs_capable(CFS_CAP_FOWNER)) || IS_APPEND(dentry->d_inode) || IS_IMMUTABLE(dentry->d_inode)) GOTO(out, rc = -EPERM); @@ -1508,7 +1513,7 @@ /* NOTE: This might need to go outside i_mutex, though it isn't clear if * that was done because of journal_start (which is already done * here) or some other ordering issue. */ - DQUOT_INIT(dir); + ll_vfs_dq_init(dir); rc = ll_security_inode_unlink(dir, dentry, mnt); if (rc) @@ -1534,7 +1539,10 @@ struct filter_obd *filter = &obd->u.filter; int rc; - if (inode->i_nlink != 1 || atomic_read(&inode->i_count) != 1) { + /* There should be 2 references to the inode: + * 1) taken by filter_prepare_destroy + * 2) taken by filter_destroy */ + if (inode->i_nlink != 1 || atomic_read(&inode->i_count) != 2) { CERROR("destroying objid %.*s ino %lu nlink %lu count %d\n", dchild->d_name.len, dchild->d_name.name, inode->i_ino, (unsigned long)inode->i_nlink, @@ -1735,13 +1743,6 @@ LASSERTF(l->l_glimpse_ast != NULL, "l == %p", l); rc = l->l_glimpse_ast(l, NULL); /* this will update the LVB */ - /* Update the LVB from disk if the AST failed (this is a legal race) */ - /* - * XXX nikita: situation when ldlm_server_glimpse_ast() failed before - * sending ast is not handled. This can result in lost client writes. - */ - if (rc != 0) - ldlm_res_lvbo_update(res, NULL, 0, 1); lock_res(res); *reply_lvb = *res_lvb; @@ -1954,6 +1955,7 @@ filter->fo_fmd_max_num = FILTER_FMD_MAX_NUM_DEFAULT; filter->fo_fmd_max_age = FILTER_FMD_MAX_AGE_DEFAULT; filter->fo_syncjournal = 1; /* Sync journals on i/o by default b=19128 */ + filter_slc_set(filter); /* initialize sync on lock cancel */ rc = filter_prep(obd); if (rc) @@ -1983,13 +1985,13 @@ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,9) q = bdev_get_queue(mnt->mnt_sb->s_bdev); - if (q->max_sectors < q->max_hw_sectors && - q->max_sectors < PTLRPC_MAX_BRW_SIZE >> 9) + if (queue_max_sectors(q) < queue_max_hw_sectors(q) && + queue_max_sectors(q) < PTLRPC_MAX_BRW_SIZE >> 9) LCONSOLE_INFO("%s: underlying device %s should be tuned " "for larger I/O requests: max_sectors = %u " "could be up to max_hw_sectors=%u\n", obd->obd_name, mnt->mnt_sb->s_id, - q->max_sectors, q->max_hw_sectors); + queue_max_sectors(q), queue_max_hw_sectors(q)); #endif uuid_ptr = fsfilt_uuid(obd, obd->u.obt.obt_sb); @@ -2200,6 +2202,37 @@ RETURN(rc); } +static int filter_llog_connect(struct obd_export *exp, + struct llogd_conn_body *body) +{ + struct obd_device *obd = exp->exp_obd; + struct llog_ctxt *ctxt; + int rc; + ENTRY; + + CDEBUG(D_OTHER, "%s: Recovery from log "LPX64"/"LPX64":%x\n", + obd->obd_name, body->lgdc_logid.lgl_oid, + body->lgdc_logid.lgl_ogr, body->lgdc_logid.lgl_ogen); + + spin_lock_bh(&obd->obd_processing_task_lock); + obd->u.filter.fo_mds_ost_sync = 1; + spin_unlock_bh(&obd->obd_processing_task_lock); + + ctxt = llog_get_context(obd, body->lgdc_ctxt_idx); + if (ctxt == NULL) { + CERROR("NULL ctxt at idx %d\n", body->lgdc_ctxt_idx); + RETURN(-ENOENT); + } + + rc = llog_connect(ctxt, &body->lgdc_logid, &body->lgdc_gen, NULL); + llog_ctxt_put(ctxt); + if (rc != 0) + CERROR("%s: failed to connect rc %d idx %d\n", obd->obd_name, + rc, body->lgdc_ctxt_idx); + + RETURN(rc); +} + static int filter_precleanup(struct obd_device *obd, enum obd_cleanup_stage stage) { @@ -2453,7 +2486,6 @@ fed->fed_lcd = NULL; } class_disconnect(exp); - lprocfs_exp_cleanup(exp); } else { class_export_put(exp); } @@ -2775,7 +2807,7 @@ *fcc = oa->o_lcookie; } if (ia_valid & (ATTR_SIZE | ATTR_UID | ATTR_GID)) { - DQUOT_INIT(inode); + ll_vfs_dq_init(inode); /* Filter truncates and writes are serialized by * i_alloc_sem, see the comment in * filter_preprw_write.*/ @@ -2862,9 +2894,9 @@ if (OBD_FAIL_CHECK(OBD_FAIL_OST_SETATTR_CREDITS)) fsfilt_extend(exp->exp_obd, inode, 0, handle); - /* The truncate might have used up our transaction credits. Make - * sure we have one left for the last_rcvd update. */ - err = fsfilt_extend(exp->exp_obd, inode, 1, handle); + /* The truncate might have used up our transaction credits. Make sure + * we have two left for the last_rcvd and VBR inode version updates. */ + err = fsfilt_extend(exp->exp_obd, inode, 2, handle); rc = filter_finish_transno(exp, inode, oti, rc, sync); if (sync) { filter_cancel_cookies_cb(exp->exp_obd, 0, fcc, rc); @@ -3089,7 +3121,14 @@ filter_set_last_id(filter, id, doa.o_gr); rc = filter_update_last_objid(exp->exp_obd, doa.o_gr, 1); } else { - /* don't reuse orphan object, return last used objid */ + /* + * We have destroyed orphan objects, but don't want to reuse + * them. Therefore we don't reset last_id to the last created + * objects. Instead, we report back to the MDS the object id + * of the last orphan, so that the MDS can restart allocating + * objects from this id + 1 and thus skip the whole orphan + * object id range + */ oa->o_id = last; rc = 0; } @@ -3609,7 +3648,7 @@ if (fcc != NULL) *fcc = oa->o_lcookie; } - DQUOT_INIT(dchild->d_inode); + ll_vfs_dq_init(dchild->d_inode); /* we're gonna truncate it first in order to avoid possible deadlock: * P1 P2 @@ -3891,6 +3930,12 @@ RETURN(rc); } + if (KEY_IS(KEY_SYNC_LOCK_CANCEL)) { + *((__u32 *) val) = obd->u.filter.fo_sync_lock_cancel; + *vallen = sizeof(__u32); + RETURN(0); + } + CDEBUG(D_IOCTL, "invalid key\n"); RETURN(-EINVAL); } @@ -4092,6 +4137,7 @@ .o_preprw = filter_preprw, .o_commitrw = filter_commitrw, .o_llog_init = filter_llog_init, + .o_llog_connect = filter_llog_connect, .o_llog_finish = filter_llog_finish, .o_iocontrol = filter_iocontrol, .o_health_check = filter_health_check, diff -Nru lustre-1.8.3/lustre/obdfilter/filter_internal.h lustre-1.8.5+dfsg/lustre/obdfilter/filter_internal.h --- lustre-1.8.3/lustre/obdfilter/filter_internal.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdfilter/filter_internal.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -225,5 +225,14 @@ /* Quota stuff */ extern quota_interface_t *filter_quota_interface_ref; - +/* sync on lock cancel is useless when we force a journal flush, + * and if we enable async journal commit, we should also turn on + * sync on lock cancel if it is not enabled already. */ +static inline void filter_slc_set(struct filter_obd *filter) +{ + if (filter->fo_syncjournal == 1) + filter->fo_sync_lock_cancel = NEVER_SYNC_ON_CANCEL; + else if (filter->fo_sync_lock_cancel == NEVER_SYNC_ON_CANCEL) + filter->fo_sync_lock_cancel = ALWAYS_SYNC_ON_CANCEL; +} #endif /* _FILTER_INTERNAL_H */ diff -Nru lustre-1.8.3/lustre/obdfilter/filter_io_26.c lustre-1.8.5+dfsg/lustre/obdfilter/filter_io_26.c --- lustre-1.8.3/lustre/obdfilter/filter_io_26.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdfilter/filter_io_26.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -101,7 +101,7 @@ if (exp->exp_nid_stats && exp->exp_nid_stats->nid_brw_stats) { lprocfs_oh_tally(&exp->exp_nid_stats->nid_brw_stats-> hist[BRW_W_RPC_HIST], - atomic_read(&filter->fo_r_in_flight)); + atomic_read(&filter->fo_w_in_flight)); lprocfs_oh_tally_log2(&exp->exp_nid_stats-> nid_brw_stats->hist[BRW_W_DISK_IOSIZE], size); @@ -374,14 +374,17 @@ /* Dang! I have to fragment this I/O */ CDEBUG(D_INODE, "bio++ sz %d vcnt %d(%d) " - "sectors %d(%d) psg %d(%d) hsg %d(%d)\n", + "sectors %d(%d) psg %d(%d) hsg %d(%d) " + "sector "LPU64" next "LPU64"\n", bio->bi_size, bio->bi_vcnt, bio->bi_max_vecs, - bio->bi_size >> 9, q->max_sectors, + bio->bi_size >> 9, queue_max_sectors(q), bio_phys_segments(q, bio), - q->max_phys_segments, + queue_max_phys_segments(q), bio_hw_segments(q, bio), - q->max_hw_segments); + queue_max_hw_segments(q), + (u64)bio->bi_sector, + (u64)sector); record_start_io(iobuf, rw, bio->bi_size, exp); rc = fsfilt_send_bio(rw, obd, inode, bio); @@ -676,7 +679,8 @@ push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); cleanup_phase = 2; - DQUOT_INIT(inode); + ll_vfs_dq_init(inode); + fsfilt_check_slow(obd, now, "quota init"); LOCK_INODE_MUTEX(inode); fsfilt_check_slow(obd, now, "i_mutex"); diff -Nru lustre-1.8.3/lustre/obdfilter/filter_io.c lustre-1.8.5+dfsg/lustre/obdfilter/filter_io.c --- lustre-1.8.3/lustre/obdfilter/filter_io.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdfilter/filter_io.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -108,7 +108,7 @@ fed->fed_grant -= oa->o_dropped; fed->fed_dirty = oa->o_dirty; - if (oa->o_flags & OBD_FL_SHRINK_GRANT) { + if (oa->o_valid & OBD_MD_FLFLAGS && oa->o_flags & OBD_FL_SHRINK_GRANT) { obd_size left_space = filter_grant_space_left(exp); struct filter_obd *filter = &exp->exp_obd->u.filter; @@ -395,7 +395,8 @@ spin_lock(&obd->obd_osfs_lock); filter_grant_incoming(exp, oa); - if (!(oa->o_flags & OBD_FL_SHRINK_GRANT)) + if (!(oa->o_valid & OBD_MD_FLFLAGS) || + !(oa->o_flags & OBD_FL_SHRINK_GRANT)) oa->o_grant = 0; spin_unlock(&obd->obd_osfs_lock); } @@ -525,6 +526,14 @@ int blocksize = exp->exp_obd->u.obt.obt_sb->s_blocksize; unsigned long used = 0, ungranted = 0, using; int i, rc = -ENOSPC, obj, n = 0; + int resend = 0; + + if ((oa->o_valid & OBD_MD_FLFLAGS) && + (oa->o_flags & OBD_FL_RECOV_RESEND)) { + resend = 1; + CDEBUG(D_CACHE, "Recoverable resend arrived, skipping " + "accounting\n"); + } LASSERT_SPIN_LOCKED(&exp->exp_obd->obd_osfs_lock); @@ -541,7 +550,13 @@ if ((lnb[n].flags & OBD_BRW_FROM_GRANT) && (oa->o_valid & OBD_MD_FLGRANT)) { - if (fed->fed_grant < used + bytes) { + if (resend) { + /* this is a recoverable resent */ + lnb[n].flags |= OBD_BRW_GRANTED; + lnb[n].lnb_grant_used = 0; + rc = 0; + continue; + } else if (fed->fed_grant < used + bytes) { CDEBUG(D_CACHE, "%s: cli %s/%p claims %ld+%d " "GRANT, real grant %lu idx %d\n", @@ -745,7 +760,13 @@ /* do not zero out oa->o_valid as it is used in filter_commitrw_write() * for setting UID/GID and fid EA in first write time. */ - if (oa->o_valid & OBD_MD_FLGRANT) + /* If OBD_FL_SHRINK_GRANT is set, the client just returned us some grant + * so no sense in allocating it some more. We either return the grant + * back to the client if we have plenty of space or we don't return + * anything if we are short. This was decided in filter_grant_incoming*/ + if ((oa->o_valid & OBD_MD_FLGRANT) && + (!(oa->o_valid & OBD_MD_FLFLAGS) || + !(oa->o_flags & OBD_FL_SHRINK_GRANT))) oa->o_grant = filter_grant(exp, oa->o_grant, oa->o_undirty, left, 1); @@ -1002,6 +1023,7 @@ lnb[i].page = pga[i].pg; rnb[i].offset = pga[i].off; rnb[i].len = pga[i].count; + lnb[i].flags = rnb[i].flags = pga[i].flag; } obdo_to_ioobj(oinfo->oi_oa, &ioo); diff -Nru lustre-1.8.3/lustre/obdfilter/filter_log.c lustre-1.8.5+dfsg/lustre/obdfilter/filter_log.c --- lustre-1.8.3/lustre/obdfilter/filter_log.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdfilter/filter_log.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -244,6 +244,13 @@ if (ctxt->loc_obd->obd_stopping) RETURN(LLOG_PROC_BREAK); + if (rec == NULL) { + cfs_spin_lock_bh(&ctxt->loc_obd->obd_processing_task_lock); + ctxt->loc_obd->u.filter.fo_mds_ost_sync = 0; + cfs_spin_unlock_bh(&ctxt->loc_obd->obd_processing_task_lock); + RETURN(0); + } + if (!(llh->lgh_hdr->llh_flags & LLOG_F_IS_PLAIN)) { CERROR("log is not plain\n"); RETURN(-EINVAL); diff -Nru lustre-1.8.3/lustre/obdfilter/filter_lvb.c lustre-1.8.5+dfsg/lustre/obdfilter/filter_lvb.c --- lustre-1.8.3/lustre/obdfilter/filter_lvb.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdfilter/filter_lvb.c 2010-11-17 04:31:48.000000000 +0100 @@ -54,6 +54,18 @@ #include "filter_internal.h" +static int filter_lvbo_free(struct ldlm_resource *res) { + if (res->lr_lvb_inode) { + iput(res->lr_lvb_inode); + res->lr_lvb_inode = NULL; + } + + if (res->lr_lvb_data) + OBD_FREE(res->lr_lvb_data, res->lr_lvb_len); + + return 0; +} + /* Called with res->lr_lvb_sem held */ static int filter_lvbo_init(struct ldlm_resource *res) { @@ -102,6 +114,8 @@ res->lr_name.name[0], lvb->lvb_size, lvb->lvb_mtime, lvb->lvb_blocks); + res->lr_lvb_inode = igrab(dentry->d_inode); + EXIT; out_dentry: f_dput(dentry); @@ -125,7 +139,7 @@ int rc = 0; struct ost_lvb *lvb; struct obd_device *obd; - struct dentry *dentry; + struct inode *inode; ENTRY; LASSERT(res); @@ -179,48 +193,54 @@ obd = res->lr_namespace->ns_lvbp; LASSERT(obd); - dentry = filter_fid2dentry(obd, NULL, 0, res->lr_name.name[0]); - if (IS_ERR(dentry)) - GOTO(out, rc = PTR_ERR(dentry)); + inode = res->lr_lvb_inode; + /* filter_fid2dentry could fail */ + if (unlikely(!inode)) { + struct dentry *dentry; + + dentry = filter_fid2dentry(obd, NULL, 0, res->lr_name.name[0]); + if (IS_ERR(dentry)) + GOTO(out, rc = PTR_ERR(dentry)); + if (dentry->d_inode) + inode = res->lr_lvb_inode = igrab(dentry->d_inode); + f_dput(dentry); + } - if (dentry->d_inode == NULL) - GOTO(out_dentry, rc = -ENOENT); + if (!inode || !inode->i_nlink) + GOTO(out, rc = -ENOENT); - if (i_size_read(dentry->d_inode) > lvb->lvb_size || !increase_only) { + if (i_size_read(inode) > lvb->lvb_size || !increase_only) { CDEBUG(D_DLMTRACE, "res: "LPU64" updating lvb size from disk: " LPU64" -> %llu\n", res->lr_name.name[0], - lvb->lvb_size, i_size_read(dentry->d_inode)); - lvb->lvb_size = i_size_read(dentry->d_inode); + lvb->lvb_size, i_size_read(inode)); + lvb->lvb_size = i_size_read(inode); } - if (LTIME_S(dentry->d_inode->i_mtime) >lvb->lvb_mtime|| !increase_only){ + if (LTIME_S(inode->i_mtime) >lvb->lvb_mtime|| !increase_only){ CDEBUG(D_DLMTRACE, "res: "LPU64" updating lvb mtime from disk: " LPU64" -> %lu\n", res->lr_name.name[0], - lvb->lvb_mtime, LTIME_S(dentry->d_inode->i_mtime)); - lvb->lvb_mtime = LTIME_S(dentry->d_inode->i_mtime); + lvb->lvb_mtime, LTIME_S(inode->i_mtime)); + lvb->lvb_mtime = LTIME_S(inode->i_mtime); } - if (LTIME_S(dentry->d_inode->i_atime) >lvb->lvb_atime|| !increase_only){ + if (LTIME_S(inode->i_atime) >lvb->lvb_atime|| !increase_only){ CDEBUG(D_DLMTRACE, "res: "LPU64" updating lvb atime from disk: " LPU64" -> %lu\n", res->lr_name.name[0], - lvb->lvb_atime, LTIME_S(dentry->d_inode->i_atime)); - lvb->lvb_atime = LTIME_S(dentry->d_inode->i_atime); + lvb->lvb_atime, LTIME_S(inode->i_atime)); + lvb->lvb_atime = LTIME_S(inode->i_atime); } - if (LTIME_S(dentry->d_inode->i_ctime) >lvb->lvb_ctime|| !increase_only){ + if (LTIME_S(inode->i_ctime) >lvb->lvb_ctime|| !increase_only){ CDEBUG(D_DLMTRACE, "res: "LPU64" updating lvb ctime from disk: " LPU64" -> %lu\n", res->lr_name.name[0], - lvb->lvb_ctime, LTIME_S(dentry->d_inode->i_ctime)); - lvb->lvb_ctime = LTIME_S(dentry->d_inode->i_ctime); + lvb->lvb_ctime, LTIME_S(inode->i_ctime)); + lvb->lvb_ctime = LTIME_S(inode->i_ctime); } - if (lvb->lvb_blocks != dentry->d_inode->i_blocks) { + if (lvb->lvb_blocks != inode->i_blocks) { CDEBUG(D_DLMTRACE,"res: "LPU64" updating lvb blocks from disk: " LPU64" -> "LPU64"\n", res->lr_name.name[0], - lvb->lvb_blocks, (__u64)dentry->d_inode->i_blocks); - lvb->lvb_blocks = dentry->d_inode->i_blocks; + lvb->lvb_blocks, (__u64)inode->i_blocks); + lvb->lvb_blocks = inode->i_blocks; } -out_dentry: - f_dput(dentry); - out: up(&res->lr_lvb_sem); return rc; @@ -228,5 +248,6 @@ struct ldlm_valblock_ops filter_lvbo = { lvbo_init: filter_lvbo_init, - lvbo_update: filter_lvbo_update + lvbo_update: filter_lvbo_update, + lvbo_free: filter_lvbo_free }; diff -Nru lustre-1.8.3/lustre/obdfilter/lproc_obdfilter.c lustre-1.8.5+dfsg/lustre/obdfilter/lproc_obdfilter.c --- lustre-1.8.3/lustre/obdfilter/lproc_obdfilter.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/obdfilter/lproc_obdfilter.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -262,9 +262,63 @@ return -EINVAL; obd->u.filter.fo_syncjournal = !!val; + filter_slc_set(&obd->u.filter); + return count; } +static char *sync_on_cancel_states[] = {"never", + "blocking", + "always" }; + +int lprocfs_filter_rd_sync_lock_cancel(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct obd_device *obd = data; + int rc; + + rc = snprintf(page, count, "%s\n", + sync_on_cancel_states[obd->u.filter.fo_sync_lock_cancel]); + return rc; +} + +int lprocfs_filter_wr_sync_lock_cancel(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct obd_device *obd = data; + int val = -1; + int i; + + for (i = 0 ; i < NUM_SYNC_ON_CANCEL_STATES; i++) { + if (memcmp(buffer, sync_on_cancel_states[i], + strlen(sync_on_cancel_states[i])) == 0) { + val = i; + break; + } + } + if (val == -1) { + int rc; + rc = lprocfs_write_helper(buffer, count, &val); + if (rc) + return rc; + } + + if (val < 0 || val > 2) + return -EINVAL; + + obd->u.filter.fo_sync_lock_cancel = val; + return count; +} + +static int lprocfs_filter_rd_mds_sync(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct obd_device *obd = (struct obd_device *)data; + LASSERT(obd != NULL); + + return snprintf(page, count, "%u\n", obd->u.filter.fo_mds_ost_sync); +} + int lprocfs_filter_rd_degraded(char *page, char **start, off_t off, int count, int *eof, void *data) { @@ -344,6 +398,9 @@ #endif { "sync_journal", lprocfs_filter_rd_syncjournal, lprocfs_filter_wr_syncjournal, 0 }, + { "sync_on_lock_cancel", lprocfs_filter_rd_sync_lock_cancel, + lprocfs_filter_wr_sync_lock_cancel, 0 }, + { "mds_sync", lprocfs_filter_rd_mds_sync, 0, 0}, { "degraded", lprocfs_filter_rd_degraded, lprocfs_filter_wr_degraded, 0 }, { 0 } diff -Nru lustre-1.8.3/lustre/osc/cache.c lustre-1.8.5+dfsg/lustre/osc/cache.c --- lustre-1.8.3/lustre/osc/cache.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/osc/cache.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -340,6 +340,9 @@ spin_lock(&lock->l_extents_list_lock); while (!list_empty(&lock->l_extents_list)) { + if (unlikely(cfs_cond_resched_lock(&lock->l_extents_list_lock))) + continue; + extent = list_entry(lock->l_extents_list.next, struct osc_async_page, oap_page_list); diff -Nru lustre-1.8.3/lustre/osc/lproc_osc.c lustre-1.8.5+dfsg/lustre/osc/lproc_osc.c --- lustre-1.8.3/lustre/osc/lproc_osc.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/osc/lproc_osc.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -255,6 +255,19 @@ return count; } +static int osc_rd_cur_lost_grant_bytes(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct obd_device *dev = data; + struct client_obd *cli = &dev->u.cli; + int rc; + + client_obd_list_lock(&cli->cl_loi_list_lock); + rc = snprintf(page, count, "%lu\n", cli->cl_lost_grant); + client_obd_list_unlock(&cli->cl_loi_list_lock); + return rc; +} + static int osc_rd_grant_shrink_interval(char *page, char **start, off_t off, int count, int *eof, void *data) { @@ -508,6 +521,14 @@ return count; } +static int osc_rd_destroys_in_flight(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct obd_device *obd = data; + return snprintf(page, count, "%u\n", + atomic_read(&obd->u.cli.cl_destroy_in_flight)); +} + static struct lprocfs_vars lprocfs_osc_obd_vars[] = { { "uuid", lprocfs_rd_uuid, 0, 0 }, { "ping", 0, lprocfs_wr_ping, 0, 0, 0222 }, @@ -527,10 +548,12 @@ osc_wr_max_pages_per_rpc, 0 }, { "max_rpcs_in_flight", osc_rd_max_rpcs_in_flight, osc_wr_max_rpcs_in_flight, 0 }, + { "destroys_in_flight", osc_rd_destroys_in_flight, 0, 0 }, { "max_dirty_mb", osc_rd_max_dirty_mb, osc_wr_max_dirty_mb, 0 }, { "cur_dirty_bytes", osc_rd_cur_dirty_bytes, 0, 0 }, { "cur_grant_bytes", osc_rd_cur_grant_bytes, osc_wr_cur_grant_bytes, 0 }, + { "cur_lost_grant_bytes", osc_rd_cur_lost_grant_bytes, 0, 0}, { "grant_shrink_interval", osc_rd_grant_shrink_interval, osc_wr_grant_shrink_interval, 0 }, { "create_count", osc_rd_create_count, osc_wr_create_count, 0 }, @@ -566,15 +589,19 @@ client_obd_list_lock(&cli->cl_loi_list_lock); - seq_printf(seq, "snapshot_time: %lu.%lu (secs.usecs)\n", + seq_printf(seq, "snapshot_time: %lu.%lu (secs.usecs)\n", now.tv_sec, now.tv_usec); - seq_printf(seq, "read RPCs in flight: %d\n", + seq_printf(seq, "read RPCs in flight: %d\n", cli->cl_r_in_flight); - seq_printf(seq, "write RPCs in flight: %d\n", + seq_printf(seq, "write RPCs in flight: %d\n", cli->cl_w_in_flight); - seq_printf(seq, "pending write pages: %d\n", + seq_printf(seq, "dio read RPCs in flight: %d\n", + cli->cl_dio_r_in_flight); + seq_printf(seq, "dio write RPCs in flight: %d\n", + cli->cl_dio_w_in_flight); + seq_printf(seq, "pending write pages: %d\n", cli->cl_pending_w_pages); - seq_printf(seq, "pending read pages: %d\n", + seq_printf(seq, "pending read pages: %d\n", cli->cl_pending_r_pages); seq_printf(seq, "\n\t\t\tread\t\t\twrite\n"); diff -Nru lustre-1.8.3/lustre/osc/osc_create.c lustre-1.8.5+dfsg/lustre/osc/osc_create.c --- lustre-1.8.3/lustre/osc/osc_create.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/osc/osc_create.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -197,8 +197,8 @@ LASSERT_SPIN_LOCKED(&oscc->oscc_lock); - if ((oscc->oscc_flags & OSCC_FLAG_RECOVERING) || - (oscc->oscc_flags & OSCC_FLAG_DEGRADED)) { + /* Do not check for a degraded OST here - bug21563/bug18539 */ + if (oscc->oscc_flags & OSCC_FLAG_RECOVERING) { spin_unlock(&oscc->oscc_lock); RETURN(0); } @@ -327,8 +327,9 @@ } /* decide if the OST has remaining object, return value : - 0 : the OST has remaining object, and don't need to do precreate. - 1 : the OST has no remaining object, and will send a RPC for precreate. + 0 : the OST has remaining objects, may or may not send precreation RPC. + 1 : the OST has no remaining object, and the sent precreation RPC + has not been completed yet. 2 : the OST has no remaining object, and will not get any for a potentially very long time 1000 : unusable @@ -337,41 +338,44 @@ { struct osc_creator *oscc = &exp->exp_obd->u.cli.cl_oscc; struct obd_import *imp = exp->exp_imp_reverse; + int rc; ENTRY; LASSERT(oscc != NULL); if (imp != NULL && imp->imp_deactive) - RETURN(1000); + GOTO(out_nolock, rc = 1000); /* Handle critical states first */ spin_lock(&oscc->oscc_lock); if (oscc->oscc_flags & OSCC_FLAG_NOSPC || oscc->oscc_flags & OSCC_FLAG_RDONLY || - oscc->oscc_flags & OSCC_FLAG_EXITING) { - spin_unlock(&oscc->oscc_lock); - RETURN(1000); - } + oscc->oscc_flags & OSCC_FLAG_EXITING) + GOTO(out, rc = 1000); if (oscc->oscc_flags & OSCC_FLAG_RECOVERING || - oscc->oscc_flags & OSCC_FLAG_DEGRADED) { - spin_unlock(&oscc->oscc_lock); - RETURN(2); - } + oscc->oscc_flags & OSCC_FLAG_DEGRADED) + GOTO(out, rc = 2); - if (oscc_has_objects_nolock(oscc, oscc->oscc_grow_count / 2)) { - spin_unlock(&oscc->oscc_lock); - RETURN(0); - } + if (oscc_has_objects_nolock(oscc, oscc->oscc_grow_count / 2)) + GOTO(out, rc = 0); - if ((oscc->oscc_flags & OSCC_FLAG_SYNC_IN_PROGRESS) || - (oscc->oscc_flags & OSCC_FLAG_CREATING)) { - spin_unlock(&oscc->oscc_lock); - RETURN(1); - } + /* Return 0, if we have at least one object - bug 22884 */ + rc = oscc_has_objects_nolock(oscc, 1) ? 0 : 1; + + /* Do not check for OSCC_FLAG_CREATING flag here, let + * osc_precreate() call oscc_internal_create() and + * adjust oscc_grow_count bug21563 */ + if (oscc->oscc_flags & OSCC_FLAG_SYNC_IN_PROGRESS) + GOTO(out, rc); if (oscc_internal_create(oscc)) - RETURN(1000); - RETURN(1); + GOTO(out_nolock, rc = 1000); + + RETURN(rc); +out: + spin_unlock(&oscc->oscc_lock); +out_nolock: + return rc; } static int handle_async_create(struct ptlrpc_request *req, int rc) @@ -567,6 +571,11 @@ ocd = &imp->imp_connect_data; if (ocd->ocd_connect_flags & OBD_CONNECT_SKIP_ORPHAN) { + /* + * The OST reports back in oa->o_id from where + * we should restart in order to skip orphan + * objects + */ CDEBUG(D_HA, "%s: Skip orphan set, reset last " "objid\n", oscc->oscc_obd->obd_name); oscc->oscc_next_id = oa->o_id + 1; diff -Nru lustre-1.8.3/lustre/osc/osc_request.c lustre-1.8.5+dfsg/lustre/osc/osc_request.c --- lustre-1.8.3/lustre/osc/osc_request.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/osc/osc_request.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -880,7 +880,7 @@ lustre_swab_ost_body); osc_update_grant(cli, body); out: - OBD_FREE_PTR(oa); + OBDO_FREE(oa); return rc; } @@ -890,6 +890,10 @@ oa->o_grant = cli->cl_avail_grant / 4; cli->cl_avail_grant -= oa->o_grant; client_obd_list_unlock(&cli->cl_loi_list_lock); + if (!(oa->o_valid & OBD_MD_FLFLAGS)) { + oa->o_valid |= OBD_MD_FLFLAGS; + oa->o_flags = 0; + } oa->o_flags |= OBD_FL_SHRINK_GRANT; osc_update_next_shrink(cli); } @@ -940,6 +944,10 @@ body->oa.o_grant = cli->cl_avail_grant - target; cli->cl_avail_grant = target; client_obd_list_unlock(&cli->cl_loi_list_lock); + if (!(body->oa.o_valid & OBD_MD_FLFLAGS)) { + body->oa.o_valid |= OBD_MD_FLFLAGS; + body->oa.o_flags = 0; + } body->oa.o_flags |= OBD_FL_SHRINK_GRANT; osc_update_next_shrink(cli); @@ -960,6 +968,11 @@ { cfs_time_t time = cfs_time_current(); cfs_time_t next_shrink = client->cl_next_shrink_grant; + + if ((client->cl_import->imp_connect_data.ocd_connect_flags & + OBD_CONNECT_GRANT_SHRINK) == 0) + return 0; + if (cfs_time_aftereq(time, next_shrink - 5 * CFS_TICK)) { if (client->cl_import->imp_state == LUSTRE_IMP_FULL && client->cl_avail_grant > GRANT_SHRINK_LIMIT) @@ -1021,11 +1034,20 @@ cli->cl_avail_grant = ocd->ocd_grant; else cli->cl_avail_grant = ocd->ocd_grant - cli->cl_dirty; + + if (cli->cl_avail_grant < 0) { + CWARN("%s: available grant < 0, the OSS is probaly not running" + " with patch from bug 20278 (%ld)\n", + cli->cl_import->imp_obd->obd_name, cli->cl_avail_grant); + /* workaround for 1.6 servers which do not have + * the patch from bug 20278 */ + cli->cl_avail_grant = ocd->ocd_grant; + } client_obd_list_unlock(&cli->cl_loi_list_lock); - CDEBUG(D_CACHE, "setting cl_avail_grant: %ld cl_lost_grant: %ld \n", + CDEBUG(D_CACHE, "%s: setting cl_avail_grant: %ld cl_lost_grant: %ld \n", + cli->cl_import->imp_obd->obd_name, cli->cl_avail_grant, cli->cl_lost_grant); - LASSERT(cli->cl_avail_grant >= 0); if (ocd->ocd_connect_flags & OBD_CONNECT_GRANT_SHRINK && list_empty(&cli->cl_grant_shrink_list)) @@ -1164,7 +1186,8 @@ static int osc_brw_prep_request(int cmd, struct client_obd *cli,struct obdo *oa, struct lov_stripe_md *lsm, obd_count page_count, struct brw_page **pga, - struct ptlrpc_request **reqp, int pshift) + struct ptlrpc_request **reqp, int pshift, + int resend) { struct ptlrpc_request *req; struct ptlrpc_bulk_desc *desc; @@ -1268,6 +1291,14 @@ (void *)(niobuf - niocount)); osc_announce_cached(cli, &body->oa, opc == OST_WRITE ? requested_nob:0); + if (resend) { + if ((body->oa.o_valid & OBD_MD_FLFLAGS) == 0) { + body->oa.o_valid |= OBD_MD_FLFLAGS; + body->oa.o_flags = 0; + } + body->oa.o_flags |= OBD_FL_RECOV_RESEND; + } + if (osc_should_shrink_grant(cli)) osc_shrink_grant_local(cli, &body->oa); @@ -1347,6 +1378,10 @@ return 0; } + /* If this is mmaped file - it can be changed at any time */ + if (oa->o_valid & OBD_MD_FLFLAGS && oa->o_flags & OBD_FL_MMAP) + return 1; + if (oa->o_valid & OBD_MD_FLFLAGS) cksum_type = cksum_type_unpack(oa->o_flags); else @@ -1414,14 +1449,14 @@ body->oa.o_gid, body->oa.o_valid, body->oa.o_flags); + osc_update_grant(cli, body); + if (rc < 0) RETURN(rc); if (aa->aa_oa->o_valid & OBD_MD_FLCKSUM) client_cksum = aa->aa_oa->o_cksum; /* save for later */ - osc_update_grant(cli, body); - if (lustre_msg_get_opc(req->rq_reqmsg) == OST_WRITE) { if (rc > 0) { CERROR ("Unexpected +ve rc %d\n", rc); @@ -1546,7 +1581,7 @@ restart_bulk: rc = osc_brw_prep_request(cmd, &exp->exp_obd->u.cli, oa, lsm, - page_count, pga, &request, 0); + page_count, pga, &request, 0, resends); if (rc != 0) return (rc); @@ -1587,7 +1622,7 @@ ENTRY; if (!osc_should_resend(aa->aa_resends, aa->aa_cli)) { - CERROR("too many resend retries, returning error\n"); + CERROR("too many resent retries, returning error\n"); RETURN(-EIO); } @@ -1598,7 +1633,7 @@ aa->aa_cli, aa->aa_oa, NULL /* lsm unused by osc currently */, aa->aa_page_count, aa->aa_ppga, &new_req, - aa->aa_pshift); + aa->aa_pshift, 1); if (rc) RETURN(rc); @@ -1672,12 +1707,13 @@ } rc = osc_brw_prep_request(cmd, &exp->exp_obd->u.cli, oa, lsm, - page_count, pga, &request, pshift); + page_count, pga, &request, pshift, 0); CLASSERT(sizeof(*aa) <= sizeof(request->rq_async_args)); if (rc == 0) { aa = ptlrpc_req_async_args(request); + /* Do we need to separate dio stats? */ if (cmd == OBD_BRW_READ) { lprocfs_oh_tally_log2(&cli->cl_read_page_hist, page_count); lprocfs_oh_tally(&cli->cl_read_rpc_hist, cli->cl_r_in_flight); @@ -1692,12 +1728,14 @@ request->rq_interpret_reply = brw_interpret; ptlrpc_set_add_req(set, request); + client_obd_list_lock(&cli->cl_loi_list_lock); if (cmd == OBD_BRW_READ) - cli->cl_r_in_flight++; + cli->cl_dio_r_in_flight++; else - cli->cl_w_in_flight++; + cli->cl_dio_w_in_flight++; client_obd_list_unlock(&cli->cl_loi_list_lock); + OBD_FAIL_TIMEOUT(OBD_FAIL_OSC_DIO_PAUSE, 3); } else if (cmd == OBD_BRW_WRITE) { client_obd_list_lock(&cli->cl_loi_list_lock); @@ -1914,7 +1952,12 @@ GOTO(out, rc = -ENOMEM); } memcpy(oa, oinfo->oi_oa, sizeof(*oa)); - oa->o_flags |= OBD_FL_TEMPORARY; + if (oa->o_valid & OBD_MD_FLFLAGS) { + oa->o_flags |= OBD_FL_TEMPORARY; + } else { + oa->o_valid |= OBD_MD_FLFLAGS; + oa->o_flags = OBD_FL_TEMPORARY; + } } else { copy = ppga; oa = oinfo->oi_oa; @@ -1928,7 +1971,8 @@ if (copy != ppga) OBD_FREE(copy, pages_per_brw * sizeof(*copy)); - if (oa->o_flags & OBD_FL_TEMPORARY) + if (oa->o_valid & OBD_MD_FLFLAGS && + oa->o_flags & OBD_FL_TEMPORARY) OBDO_FREE(oa); break; } @@ -2223,23 +2267,35 @@ CDEBUG(D_INODE, "request %p aa %p rc %d\n", request, aa, rc); if (osc_recoverable_error(rc)) { - rc = osc_brw_redo_request(request, aa); - if (rc == 0) - RETURN(0); + /* Only retry once for mmaped files since the mmaped page + * might be modified at anytime. We have to retry at least + * once in case there WAS really a corruption of the page + * on the network, that was not caused by mmap() modifying + * the page. bug 11742 */ + if ((rc == -EAGAIN) && (aa->aa_resends > 0) && + aa->aa_oa->o_valid & OBD_MD_FLFLAGS && + aa->aa_oa->o_flags & OBD_FL_MMAP) { + rc = 0; + } else { + rc = osc_brw_redo_request(request, aa); + if (rc == 0) + RETURN(0); + } } cli = aa->aa_cli; client_obd_list_lock(&cli->cl_loi_list_lock); - /* We need to decrement before osc_ap_completion->osc_wake_cache_waiters - * is called so we know whether to go to sync BRWs or wait for more - * RPCs to complete */ - if (lustre_msg_get_opc(request->rq_reqmsg) == OST_WRITE) - cli->cl_w_in_flight--; - else - cli->cl_r_in_flight--; - if (!list_empty(&aa->aa_oaps)) { /* from osc_send_oap_rpc() */ struct osc_async_page *oap, *tmp; + + /* We need to decrement before osc_ap_completion->osc_wake_cache_waiters + * is called so we know whether to go to sync BRWs or wait for more + * RPCs to complete */ + if (lustre_msg_get_opc(request->rq_reqmsg) == OST_WRITE) + cli->cl_w_in_flight--; + else + cli->cl_r_in_flight--; + /* the caller may re-use the oap after the completion call so * we need to clean it up a little */ list_for_each_entry_safe(oap, tmp, &aa->aa_oaps, oap_rpc_item) { @@ -2252,8 +2308,14 @@ for (i = 0; i < aa->aa_page_count; i++) osc_release_write_grant(aa->aa_cli, aa->aa_ppga[i], 1); - if (aa->aa_oa->o_flags & OBD_FL_TEMPORARY) + if (aa->aa_oa->o_valid & OBD_MD_FLFLAGS && + aa->aa_oa->o_flags & OBD_FL_TEMPORARY) OBDO_FREE(aa->aa_oa); + + if (lustre_msg_get_opc(request->rq_reqmsg) == OST_WRITE) + cli->cl_dio_w_in_flight--; + else + cli->cl_dio_r_in_flight--; } osc_wake_cache_waiters(cli); osc_check_rpcs(cli); @@ -2313,7 +2375,8 @@ } sort_brw_pages(pga, page_count); - rc = osc_brw_prep_request(cmd, cli, oa, NULL, page_count, pga, &req, 0); + rc = osc_brw_prep_request(cmd, cli, oa, NULL, page_count, pga, &req, 0, + 0); if (rc != 0) { CERROR("prep_req failed: %d\n", rc); GOTO(out, req = ERR_PTR(rc)); @@ -3283,6 +3346,26 @@ return 0; } +/* find any ldlm lock of the inode in osc + * return 0 not find + * 1 find one + * < 0 error */ +static int osc_find_cbdata(struct obd_export *exp, struct lov_stripe_md *lsm, + ldlm_iterator_t replace, void *data) +{ + struct ldlm_res_id res_id; + struct obd_device *obd = class_exp2obd(exp); + int rc = 0; + + osc_build_res_name(lsm->lsm_object_id, lsm->lsm_object_gr, &res_id); + rc = ldlm_resource_iterate(obd->obd_namespace, &res_id, replace, data); + if (rc == LDLM_ITER_STOP) + return(1); + if (rc == LDLM_ITER_CONTINUE) + return(0); + return(rc); +} + static int osc_enqueue_fini(struct obd_device *obd, struct ptlrpc_request *req, struct obd_info *oinfo, int intent, int rc) { @@ -4104,7 +4187,7 @@ CLASSERT(sizeof(*aa) <= sizeof(req->rq_async_args)); aa = ptlrpc_req_async_args(req); - OBD_ALLOC_PTR(oa); + OBDO_ALLOC(oa); if (!oa) { ptlrpc_req_finished(req); RETURN(-ENOMEM); @@ -4590,6 +4673,7 @@ .o_enqueue = osc_enqueue, .o_match = osc_match, .o_change_cbdata = osc_change_cbdata, + .o_find_cbdata = osc_find_cbdata, .o_cancel = osc_cancel, .o_cancel_unused = osc_cancel_unused, .o_join_lru = osc_join_lru, diff -Nru lustre-1.8.3/lustre/ost/lproc_ost.c lustre-1.8.5+dfsg/lustre/ost/lproc_ost.c --- lustre-1.8.3/lustre/ost/lproc_ost.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ost/lproc_ost.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -41,54 +41,8 @@ #include "ost_internal.h" #ifdef LPROCFS -static char *sync_on_cancel_states[] = {"never", - "blocking", - "always" }; - -int lprocfs_ost_rd_ost_sync_on_lock_cancel(char *page, char **start, off_t off, - int count, int *eof, void *data) -{ - struct obd_device *obd = data; - int rc; - - rc = snprintf(page, count, "%s\n", - sync_on_cancel_states[obd->u.ost.ost_sync_on_lock_cancel]); - return rc; -} - -int lprocfs_ost_wr_ost_sync_on_lock_cancel(struct file *file, - const char *buffer, - unsigned long count, void *data) -{ - struct obd_device *obd = data; - int val = -1; - int i; - - for (i = 0 ; i < NUM_SYNC_ON_CANCEL_STATES; i++) { - if (memcmp(buffer, sync_on_cancel_states[i], - strlen(sync_on_cancel_states[i])) == 0) { - val = i; - break; - } - } - if (val == -1) { - int rc; - rc = lprocfs_write_helper(buffer, count, &val); - if (rc) - return rc; - } - - if (val < 0 || val > 2) - return -EINVAL; - - obd->u.ost.ost_sync_on_lock_cancel = val; - return count; -} - static struct lprocfs_vars lprocfs_ost_obd_vars[] = { { "uuid", lprocfs_rd_uuid, 0, 0 }, - { "sync_on_lock_cancel", lprocfs_ost_rd_ost_sync_on_lock_cancel, - lprocfs_ost_wr_ost_sync_on_lock_cancel, 0 }, { 0 } }; diff -Nru lustre-1.8.3/lustre/ost/ost_handler.c lustre-1.8.5+dfsg/lustre/ost/ost_handler.c --- lustre-1.8.3/lustre/ost/ost_handler.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ost/ost_handler.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -727,7 +727,7 @@ desc = ptlrpc_prep_bulk_exp(req, npages, BULK_PUT_SOURCE, OST_BULK_PORTAL); if (desc == NULL) - GOTO(out_lock, rc = -ENOMEM); + GOTO(out_commitrw, rc = -ENOMEM); if (!lustre_handle_is_used(&lockh)) /* no needs to try to prolong lock if server is asked @@ -846,6 +846,7 @@ no_reply = rc != 0; } + out_commitrw: /* Must commit after prep above in all cases */ rc = obd_commitrw(OBD_BRW_READ, exp, &body->oa, 1, ioo, remote_nb, npages, local_nb, oti, rc); @@ -905,7 +906,7 @@ int rc, i, j; obd_count client_cksum = 0, server_cksum = 0; cksum_type_t cksum_type = OBD_CKSUM_CRC32; - int no_reply = 0; + int no_reply = 0, mmap = 0; struct ost_thread_local_cache *tls; ENTRY; @@ -933,10 +934,6 @@ body = lustre_msg_buf(req->rq_reqmsg, REQ_REC_OFF, sizeof(*body)); LASSERT(body != NULL); - if ((body->oa.o_flags & OBD_BRW_MEMALLOC) && - (exp->exp_connection->c_peer.nid == exp->exp_connection->c_self)) - libcfs_memory_pressure_set(); - objcount = lustre_msg_buflen(req->rq_reqmsg, REQ_REC_OFF + 1) / sizeof(*ioo); ioo = lustre_msg_buf(req->rq_reqmsg, REQ_REC_OFF + 1, @@ -949,6 +946,10 @@ niocount * sizeof(*remote_nb)); LASSERT(remote_nb != NULL); + if ((remote_nb[0].flags & OBD_BRW_MEMALLOC) && + (exp->exp_connection->c_peer.nid == exp->exp_connection->c_self)) + libcfs_memory_pressure_set(); + size[REPLY_REC_OFF + 1] = niocount * sizeof(*rcs); rc = lustre_pack_reply(req, 3, size, NULL); if (rc != 0) @@ -993,6 +994,8 @@ if (body->oa.o_valid & OBD_MD_FLFLAGS) cksum_type = cksum_type_unpack(body->oa.o_flags); } + if (body->oa.o_valid & OBD_MD_FLFLAGS && body->oa.o_flags & OBD_FL_MMAP) + mmap = 1; /* Because we already sync grant info with client when reconnect, * grant info will be cleared for resent req, then fed_grant and @@ -1011,7 +1014,7 @@ desc = ptlrpc_prep_bulk_exp(req, npages, BULK_GET_SINK, OST_BULK_PORTAL); if (desc == NULL) - GOTO(out_lock, rc = -ENOMEM); + GOTO(skip_transfer, rc = -ENOMEM); /* NB Having prepped, we must commit... */ @@ -1076,6 +1079,7 @@ } no_reply = rc != 0; +skip_transfer: repbody = lustre_msg_buf(req->rq_repmsg, REPLY_REC_OFF, sizeof(*repbody)); memcpy(&repbody->oa, &body->oa, sizeof(repbody->oa)); @@ -1090,8 +1094,9 @@ repbody->oa.o_cksum = server_cksum; cksum_counter++; if (unlikely(client_cksum != server_cksum)) { - CERROR("client csum %x, server csum %x\n", - client_cksum, server_cksum); + CDEBUG_LIMIT(mmap ? D_INFO : D_ERROR, + "client csum %x, server csum %x\n", + client_cksum, server_cksum); cksum_counter = 0; } else if ((cksum_counter & (-cksum_counter)) == cksum_counter){ CDEBUG(D_INFO, "Checksum %u from %s OK: %x\n", @@ -1128,7 +1133,7 @@ */ repbody->oa.o_valid &= ~(OBD_MD_FLMTIME | OBD_MD_FLATIME); - if (unlikely(client_cksum != server_cksum && rc == 0)) { + if (unlikely(client_cksum != server_cksum && rc == 0 && !mmap)) { int new_cksum = ost_checksum_bulk(desc, OST_WRITE, cksum_type); char *msg; char *via; @@ -1384,14 +1389,20 @@ struct ldlm_lock_desc *desc, void *data, int flag) { - struct obd_device *obd = lock->l_export->exp_obd; - if (flag == LDLM_CB_CANCELING && + __u32 sync_lock_cancel = 0; + __u32 len = sizeof(sync_lock_cancel); + int rc = 0; + ENTRY; + + rc = obd_get_info(lock->l_export, sizeof(KEY_SYNC_LOCK_CANCEL), + KEY_SYNC_LOCK_CANCEL, &len, &sync_lock_cancel, NULL); + + if (!rc && flag == LDLM_CB_CANCELING && (lock->l_granted_mode & (LCK_PW|LCK_GROUP)) && - (obd->u.ost.ost_sync_on_lock_cancel == ALWAYS_SYNC_ON_CANCEL || - (obd->u.ost.ost_sync_on_lock_cancel == BLOCKING_SYNC_ON_CANCEL && + (sync_lock_cancel == ALWAYS_SYNC_ON_CANCEL || + (sync_lock_cancel == BLOCKING_SYNC_ON_CANCEL && lock->l_flags & LDLM_FL_CBPENDING))) { struct obd_info *oinfo; - int rc; OBD_ALLOC_PTR(oinfo); if (!oinfo) @@ -1765,6 +1776,7 @@ struct obd_trans_info *oti = &trans_info; int should_process, fail = OBD_FAIL_OST_ALL_REPLY_NET, rc = 0; struct obd_device *obd = NULL; + struct llogd_conn_body *body; ENTRY; LASSERT(current->journal_info == NULL); @@ -1921,7 +1933,9 @@ /* FIXME - just reply status */ case LLOG_ORIGIN_CONNECT: DEBUG_REQ(D_INODE, req, "log connect"); - rc = llog_handle_connect(req); + body = lustre_msg_buf(req->rq_reqmsg, REQ_REC_OFF, + sizeof(*body)); + rc = obd_llog_connect(req->rq_export, body); req->rq_status = rc; rc = lustre_pack_reply(req, 1, NULL, NULL); if (rc) @@ -2045,9 +2059,6 @@ sema_init(&ost->ost_health_sem, 1); - /* Always sync on lock cancel */ - ost->ost_sync_on_lock_cancel = ALWAYS_SYNC_ON_CANCEL; - if (oss_num_threads) { /* If oss_num_threads is set, it is the min and the max. */ if (oss_num_threads > OSS_THREADS_MAX) diff -Nru lustre-1.8.3/lustre/ost/ost_internal.h lustre-1.8.5+dfsg/lustre/ost/ost_internal.h --- lustre-1.8.3/lustre/ost/ost_internal.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ost/ost_internal.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -76,12 +76,4 @@ memset(lvars, 0, sizeof(*lvars)); } #endif - -enum { - NEVER_SYNC_ON_CANCEL = 0, - BLOCKING_SYNC_ON_CANCEL = 1, - ALWAYS_SYNC_ON_CANCEL = 2, - NUM_SYNC_ON_CANCEL_STATES -}; - #endif /* OST_INTERNAL_H */ diff -Nru lustre-1.8.3/lustre/ptlrpc/client.c lustre-1.8.5+dfsg/lustre/ptlrpc/client.c --- lustre-1.8.3/lustre/ptlrpc/client.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/client.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -66,7 +66,7 @@ err = ptlrpc_uuid_to_peer(uuid, &peer, &self); if (err != 0) { - CERROR("cannot find peer %s!\n", uuid->uuid); + CNETERR("cannot find peer %s!\n", uuid->uuid); return NULL; } @@ -1031,7 +1031,10 @@ * space for early reply) */ req->rq_replen = size_round(req->rq_nob_received); req->rq_nob_received = 0; + + spin_lock(&req->rq_lock); req->rq_resend = 1; + spin_unlock(&req->rq_lock); RETURN(0); } @@ -1173,7 +1176,10 @@ rc = ptl_send_rpc(req, 0); if (rc) { DEBUG_REQ(D_HA, req, "send failed (%d); expect timeout", rc); + + spin_lock(&req->rq_lock); req->rq_net_err = 1; + spin_unlock(&req->rq_lock); RETURN(rc); } RETURN(0); @@ -1311,12 +1317,16 @@ spin_unlock(&imp->imp_lock); + spin_lock(&req->rq_lock); req->rq_waiting = 0; + spin_unlock(&req->rq_lock); if (req->rq_timedout||req->rq_resend) { /* This is re-sending anyways, * let's mark req as resend. */ + spin_lock(&req->rq_lock); req->rq_resend = 1; + spin_unlock(&req->rq_lock); if (req->rq_bulk) { __u64 old_xid; @@ -1338,7 +1348,10 @@ DEBUG_REQ(D_HA, req, "send failed (%d)", rc); force_timer_recalc = 1; + + spin_lock(&req->rq_lock); req->rq_net_err = 1; + spin_unlock(&req->rq_lock); } /* need to reset the timeout */ force_timer_recalc = 1; @@ -1892,7 +1905,7 @@ if (imp->imp_peer_committed_transno == imp->imp_last_transno_checked && imp->imp_generation == imp->imp_last_generation_checked) { - CDEBUG(D_RPCTRACE, "%s: skip recheck: last_committed "LPU64"\n", + CDEBUG(D_INFO, "%s: skip recheck: last_committed "LPU64"\n", imp->imp_obd->obd_name, imp->imp_peer_committed_transno); EXIT; return; @@ -1927,7 +1940,7 @@ break; } - DEBUG_REQ(D_RPCTRACE, req, "commit (last_committed "LPU64")", + DEBUG_REQ(D_INFO, req, "commit (last_committed "LPU64")", imp->imp_peer_committed_transno); free_req: spin_lock(&req->rq_lock); @@ -2209,7 +2222,9 @@ /* we can have rq_timeout on dlm fake import which not support * recovery - but me need resend request on this import instead * of return error */ + spin_lock(&req->rq_lock); req->rq_resend = 1; + spin_unlock(&req->rq_lock); goto restart; } @@ -2292,9 +2307,15 @@ spin_unlock(&imp->imp_lock); } else { /* The transno had better not change over replay. */ - LASSERT(lustre_msg_get_transno(req->rq_reqmsg) == - lustre_msg_get_transno(req->rq_repmsg) || - lustre_msg_get_transno(req->rq_repmsg) == 0); + if (unlikely(lustre_msg_get_transno(req->rq_reqmsg) != + lustre_msg_get_transno(req->rq_repmsg) && + lustre_msg_get_transno(req->rq_repmsg) != 0)) { + DEBUG_REQ(D_ERROR, req, "Transno has changed over " + "replay ("LPU64"/"LPU64")\n", + lustre_msg_get_transno(req->rq_reqmsg), + lustre_msg_get_transno(req->rq_repmsg)); + ptlrpc_evict_imp(imp); + } } spin_lock(&imp->imp_lock); diff -Nru lustre-1.8.3/lustre/ptlrpc/events.c lustre-1.8.5+dfsg/lustre/ptlrpc/events.c --- lustre-1.8.3/lustre/ptlrpc/events.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/events.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -62,8 +62,7 @@ ev->type == LNET_EVENT_UNLINK); LASSERT (ev->unlinked); - DEBUG_REQ((ev->status == 0) ? D_NET : D_ERROR, req, - "type %d, status %d", ev->type, ev->status); + DEBUG_REQ(D_NET, req, "type %d, status %d", ev->type, ev->status); if (ev->type == LNET_EVENT_UNLINK || ev->status != 0) { @@ -91,8 +90,7 @@ struct ptlrpc_request *req = cbid->cbid_arg; ENTRY; - DEBUG_REQ((ev->status == 0) ? D_NET : D_ERROR, req, - "type %d, status %d", ev->type, ev->status); + DEBUG_REQ(D_NET, req, "type %d, status %d", ev->type, ev->status); LASSERT(ev->type == LNET_EVENT_PUT || ev->type == LNET_EVENT_UNLINK); LASSERT(ev->md.start == req->rq_repbuf); @@ -113,7 +111,7 @@ if (ev->type == LNET_EVENT_UNLINK) { LASSERT(ev->unlinked); - DEBUG_REQ(D_RPCTRACE, req, "unlink"); + DEBUG_REQ(D_NET, req, "unlink"); goto out_wake; } @@ -287,7 +285,7 @@ CFS_INIT_LIST_HEAD(&req->rq_exp_list); atomic_set(&req->rq_refcount, 1); if (ev->type == LNET_EVENT_PUT) - DEBUG_REQ(D_RPCTRACE, req, "incoming req"); + DEBUG_REQ(D_NET, req, "incoming req"); spin_lock(&service->srv_lock); @@ -472,8 +470,6 @@ } CDEBUG(D_NET,"%s->%s\n", uuid->uuid, libcfs_id2str(*peer)); - if (rc != 0) - CERROR("No NID found for %s\n", uuid->uuid); return rc; } diff -Nru lustre-1.8.3/lustre/ptlrpc/import.c lustre-1.8.5+dfsg/lustre/ptlrpc/import.c --- lustre-1.8.3/lustre/ptlrpc/import.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/import.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -1429,6 +1429,13 @@ LNetSetAsync(imp->imp_connection->c_peer, count); } +void ptlrpc_evict_imp(struct obd_import *imp) +{ + ENTRY; + IMPORT_SET_STATE(imp, LUSTRE_IMP_EVICTED); + EXIT; +} + void ptlrpc_cleanup_imp(struct obd_import *imp) { ENTRY; diff -Nru lustre-1.8.3/lustre/ptlrpc/llog_net.c lustre-1.8.5+dfsg/lustre/ptlrpc/llog_net.c --- lustre-1.8.3/lustre/ptlrpc/llog_net.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/llog_net.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/ptlrpc/llog_server.c lustre-1.8.5+dfsg/lustre/ptlrpc/llog_server.c --- lustre-1.8.3/lustre/ptlrpc/llog_server.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/llog_server.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -439,21 +439,16 @@ rc = llog_cat_cancel_records(cathandle, 1, logcookies); + err = fsfilt_commit(disk_obd, inode, handle, 0); + /* Do not raise -ENOENT errors for resent rpcs. This rec already * might be killed. */ if (rc == -ENOENT && (lustre_msg_get_flags(req->rq_reqmsg) & MSG_RESENT)) { - /* Do not change this message, reply-single.sh test_59b - * expects to find this in dmesg. */ - CDEBUG(D_RPCTRACE, "RESENT cancel req %p - ignored\n", - req); + CDEBUG(D_INFO, "RESENT cancel req %p - ignored\n", req); rc = 0; - } else if (rc == 0) { - CDEBUG(D_RPCTRACE, "Canceled %d llog-records\n", - num_cookies); } - err = fsfilt_commit(disk_obd, inode, handle, 0); if (err) { CERROR("Error committing transaction: %d\n", err); if (!rc) @@ -469,6 +464,9 @@ if (rc) CERROR("Cancel %d of %d llog-records failed: %d\n", failed, num_cookies, rc); + else + CDEBUG(D_RPCTRACE, "Canceled %d llog-records\n", + num_cookies); llog_ctxt_put(ctxt); return rc; diff -Nru lustre-1.8.3/lustre/ptlrpc/niobuf.c lustre-1.8.5+dfsg/lustre/ptlrpc/niobuf.c --- lustre-1.8.3/lustre/ptlrpc/niobuf.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/niobuf.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -507,7 +507,10 @@ CDEBUG(D_HA, "muting rpc for failed imp obd %s\n", request->rq_import->imp_obd->obd_name); /* this prevents us from waiting in ptlrpc_queue_wait */ + spin_lock(&request->rq_lock); request->rq_err = 1; + spin_unlock(&request->rq_lock); + request->rq_status = -ENODEV; RETURN(-ENODEV); } @@ -537,7 +540,10 @@ OBD_ALLOC(request->rq_repbuf, request->rq_replen); if (request->rq_repbuf == NULL) { /* this prevents us from looping in ptlrpc_queue_wait */ + spin_lock(&request->rq_lock); request->rq_err = 1; + spin_unlock(&request->rq_lock); + request->rq_status = -ENOMEM; GOTO(cleanup_bulk, rc = -ENOMEM); } diff -Nru lustre-1.8.3/lustre/ptlrpc/pack_generic.c lustre-1.8.5+dfsg/lustre/ptlrpc/pack_generic.c --- lustre-1.8.3/lustre/ptlrpc/pack_generic.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/pack_generic.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -416,8 +416,11 @@ LASSERT(req->rq_reply_state == NULL); - if ((flags & LPRFL_EARLY_REPLY) == 0) + if ((flags & LPRFL_EARLY_REPLY) == 0) { + spin_lock(&req->rq_lock); req->rq_packed_final = 1; + spin_unlock(&req->rq_lock); + } msg_len = lustre_msg_size_v1(count, lens); size = sizeof(struct ptlrpc_reply_state) + msg_len; @@ -457,8 +460,11 @@ LASSERT(req->rq_reply_state == NULL); - if ((flags & LPRFL_EARLY_REPLY) == 0) + if ((flags & LPRFL_EARLY_REPLY) == 0) { + spin_lock(&req->rq_lock); req->rq_packed_final = 1; + spin_unlock(&req->rq_lock); + } /* use the same size of ptlrpc_body as client requested for * interoperability cases */ diff -Nru lustre-1.8.3/lustre/ptlrpc/pinger.c lustre-1.8.5+dfsg/lustre/ptlrpc/pinger.c --- lustre-1.8.3/lustre/ptlrpc/pinger.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/pinger.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -626,10 +626,12 @@ obd_evict_list); spin_unlock(&pet_lock); - /* bug 18948: ensure recovery is aborted in a timely fashion */ - if (target_recovery_check_and_stop(obd) || - obd->obd_recovering /* no evictor during recovery */) - GOTO(skip, 0); + if (obd->obd_recovering) { + /* bug 18948: ensure recovery is aborted in a timely fashion */ + target_recovery_check_and_stop(obd); + /* no evictor during recovery */ + GOTO(skip, 0); + } expire_time = cfs_time_current_sec() - PING_EVICT_TIMEOUT; diff -Nru lustre-1.8.3/lustre/ptlrpc/ptlrpcd.c lustre-1.8.5+dfsg/lustre/ptlrpc/ptlrpcd.c --- lustre-1.8.3/lustre/ptlrpc/ptlrpcd.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/ptlrpcd.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -107,10 +107,10 @@ req->rq_invalid_rqset = 0; spin_unlock(&req->rq_lock); - + timeout = cfs_time_seconds(5); lwi = LWI_TIMEOUT(timeout, back_to_sleep, NULL); - l_wait_event(req->rq_reply_waitq, (req->rq_set == NULL), &lwi); + l_wait_event(req->rq_set_waitq, (req->rq_set == NULL), &lwi); } else if (req->rq_set) { LASSERT(req->rq_phase == RQ_PHASE_NEW); LASSERT(req->rq_send_state == LUSTRE_IMP_REPLAY); diff -Nru lustre-1.8.3/lustre/ptlrpc/ptlrpc_internal.h lustre-1.8.5+dfsg/lustre/ptlrpc/ptlrpc_internal.h --- lustre-1.8.3/lustre/ptlrpc/ptlrpc_internal.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/ptlrpc_internal.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/ptlrpc/service.c lustre-1.8.5+dfsg/lustre/ptlrpc/service.c --- lustre-1.8.3/lustre/ptlrpc/service.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/service.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -471,7 +471,9 @@ struct ptlrpc_at_array *array = &svc->srv_at_array; __u32 index = req->rq_at_index; + spin_lock(&req->rq_lock); req->rq_at_linked = 0; + spin_unlock(&req->rq_lock); array->paa_reqs_count[index]--; array->paa_count--; } @@ -722,7 +724,10 @@ if (list_empty(&req->rq_timed_list)) list_add(&req->rq_timed_list, &array->paa_reqs_array[index]); + spin_lock(&req->rq_lock); req->rq_at_linked = 1; + spin_unlock(&req->rq_lock); + req->rq_at_index = index; array->paa_reqs_count[index]++; array->paa_count++; @@ -927,7 +932,9 @@ counter++; array->paa_reqs_count[index]--; array->paa_count--; + spin_lock(&rq->rq_lock); rq->rq_at_linked = 0; + spin_unlock(&rq->rq_lock); continue; } @@ -1242,6 +1249,55 @@ RETURN(1); } +#ifndef noinline +#define noinline __attribute__((noinline)) +#endif + +/* + * The sole purpose of these functions is to avoid unreasonable stack frame + * sizes such as assigned by the gcc compiler. Should NOT be inlined. + */ +static void noinline +ptlrpc_server_log_handling_request(struct ptlrpc_request *request) +{ + CDEBUG(D_RPCTRACE, "Handling RPC pname:cluuid+ref:pid:xid:nid:opc " + "%s:%s+%d:%d:x"LPU64":%s:%d\n", cfs_curproc_comm(), + (request->rq_export ? + (char *)request->rq_export->exp_client_uuid.uuid : "0"), + (request->rq_export ? + atomic_read(&request->rq_export->exp_refcount) : -99), + lustre_msg_get_status(request->rq_reqmsg), request->rq_xid, + libcfs_id2str(request->rq_peer), + lustre_msg_get_opc(request->rq_reqmsg)); +} + +static void noinline +ptlrpc_server_log_handled_request(struct ptlrpc_request *request, + long timediff, + struct timeval *work_end) +{ + CDEBUG(D_RPCTRACE, "Handled RPC pname:cluuid+ref:pid:xid:nid:opc " + "%s:%s+%d:%d:x"LPU64":%s:%d Request procesed in " + "%ldus (%ldus total) trans "LPU64" rc %d/%d\n", + cfs_curproc_comm(), + (request->rq_export ? + (char *)request->rq_export->exp_client_uuid.uuid : "0"), + (request->rq_export ? + atomic_read(&request->rq_export->exp_refcount) : -99), + lustre_msg_get_status(request->rq_reqmsg), + request->rq_xid, + libcfs_id2str(request->rq_peer), + lustre_msg_get_opc(request->rq_reqmsg), + timediff, + cfs_timeval_sub(work_end, &request->rq_arrival_time, NULL), + (request->rq_repmsg ? + lustre_msg_get_transno(request->rq_repmsg) : + request->rq_transno), + request->rq_status, + (request->rq_repmsg ? + lustre_msg_get_status(request->rq_repmsg) : -999)); +} + static int ptlrpc_server_handle_request(struct ptlrpc_service *svc, struct ptlrpc_thread *thread) @@ -1351,15 +1407,7 @@ goto put_rpc_export; } - CDEBUG(D_RPCTRACE, "Handling RPC pname:cluuid+ref:pid:xid:nid:opc " - "%s:%s+%d:%d:x"LPU64":%s:%d\n", cfs_curproc_comm(), - (request->rq_export ? - (char *)request->rq_export->exp_client_uuid.uuid : "0"), - (request->rq_export ? - atomic_read(&request->rq_export->exp_refcount) : -99), - lustre_msg_get_status(request->rq_reqmsg), request->rq_xid, - libcfs_id2str(request->rq_peer), - lustre_msg_get_opc(request->rq_reqmsg)); + ptlrpc_server_log_handling_request(request); if (lustre_msg_get_opc(request->rq_reqmsg) != OBD_PING) OBD_FAIL_TIMEOUT_MS(OBD_FAIL_PTLRPC_PAUSE_REQ, obd_fail_val); @@ -1384,26 +1432,7 @@ do_gettimeofday(&work_end); timediff = cfs_timeval_sub(&work_end, &work_start, NULL); - CDEBUG(D_RPCTRACE, "Handled RPC pname:cluuid+ref:pid:xid:nid:opc " - "%s:%s+%d:%d:x"LPU64":%s:%d Request procesed in " - "%ldus (%ldus total) trans "LPU64" rc %d/%d\n", - cfs_curproc_comm(), - (request->rq_export ? - (char *)request->rq_export->exp_client_uuid.uuid : "0"), - (request->rq_export ? - atomic_read(&request->rq_export->exp_refcount) : -99), - lustre_msg_get_status(request->rq_reqmsg), - request->rq_xid, - libcfs_id2str(request->rq_peer), - lustre_msg_get_opc(request->rq_reqmsg), - timediff, - cfs_timeval_sub(&work_end, &request->rq_arrival_time, NULL), - (request->rq_repmsg ? - lustre_msg_get_transno(request->rq_repmsg) : - request->rq_transno), - request->rq_status, - (request->rq_repmsg ? - lustre_msg_get_status(request->rq_repmsg) : -999)); + ptlrpc_server_log_handled_request(request, timediff, &work_end); if (svc->srv_stats != NULL) { __u32 op = lustre_msg_get_opc(request->rq_reqmsg); @@ -1598,6 +1627,33 @@ return (-ETIMEDOUT); } +static void noinline ptlrpc_wait_event(struct ptlrpc_service *svc, + struct ptlrpc_thread *thread) +{ + /* Don't exit while there are replies to be handled */ + struct l_wait_info lwi = LWI_TIMEOUT(svc->srv_rqbd_timeout, + ptlrpc_retry_rqbds, svc); + + lc_watchdog_disable(thread->t_watchdog); + + cfs_cond_resched(); + + l_wait_event_exclusive (svc->srv_waitq, + ((thread->t_flags & SVC_STOPPING) != 0 && + svc->srv_n_difficult_replies == 0) || + (!list_empty(&svc->srv_idle_rqbds) && + svc->srv_rqbd_timeout == 0) || + !list_empty(&svc->srv_req_in_queue) || + !list_empty(&svc->srv_reply_queue) || + (ptlrpc_server_request_pending(svc, 0) && + (svc->srv_n_active_reqs < + (svc->srv_threads_running - 1))) || + svc->srv_at_check, + &lwi); + + lc_watchdog_touch(thread->t_watchdog, GET_TIMEOUT(svc)); +} + static int ptlrpc_main(void *arg) { struct ptlrpc_svc_data *data = (struct ptlrpc_svc_data *)arg; @@ -1683,28 +1739,7 @@ while ((thread->t_flags & SVC_STOPPING) == 0 || svc->srv_n_difficult_replies != 0) { - /* Don't exit while there are replies to be handled */ - struct l_wait_info lwi = LWI_TIMEOUT(svc->srv_rqbd_timeout, - ptlrpc_retry_rqbds, svc); - - lc_watchdog_disable(thread->t_watchdog); - - cfs_cond_resched(); - - l_wait_event_exclusive (svc->srv_waitq, - ((thread->t_flags & SVC_STOPPING) != 0 && - svc->srv_n_difficult_replies == 0) || - (!list_empty(&svc->srv_idle_rqbds) && - svc->srv_rqbd_timeout == 0) || - !list_empty(&svc->srv_req_in_queue) || - !list_empty(&svc->srv_reply_queue) || - (ptlrpc_server_request_pending(svc, 0) && - (svc->srv_n_active_reqs < - (svc->srv_threads_running - 1))) || - svc->srv_at_check, - &lwi); - - lc_watchdog_touch(thread->t_watchdog, GET_TIMEOUT(svc)); + ptlrpc_wait_event(svc, thread); ptlrpc_check_rqbd_pool(svc); diff -Nru lustre-1.8.3/lustre/ptlrpc/wiretest.c lustre-1.8.5+dfsg/lustre/ptlrpc/wiretest.c --- lustre-1.8.3/lustre/ptlrpc/wiretest.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/ptlrpc/wiretest.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -723,6 +723,8 @@ CLASSERT(OBD_FL_CKSUM_CRC32 == (0x00001000)); CLASSERT(OBD_FL_CKSUM_ADLER == (0x00002000)); CLASSERT(OBD_FL_SHRINK_GRANT == (0x00020000)); + CLASSERT(OBD_FL_MMAP == (0x00040000)); + CLASSERT(OBD_FL_RECOV_RESEND == (0x00080000)); CLASSERT(OBD_CKSUM_CRC32 == 1); CLASSERT(OBD_CKSUM_ADLER == 2); diff -Nru lustre-1.8.3/lustre/quota/quota_adjust_qunit.c lustre-1.8.5+dfsg/lustre/quota/quota_adjust_qunit.c --- lustre-1.8.3/lustre/quota/quota_adjust_qunit.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/quota/quota_adjust_qunit.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -356,10 +356,11 @@ RETURN(-EFAULT); } + obd_getref(obd); for (i = 0; i < lov->desc.ld_tgt_count; i++) { int err; - if (!lov->lov_tgts[i]->ltd_active) { + if (!lov->lov_tgts[i] || !lov->lov_tgts[i]->ltd_active) { CDEBUG(D_HA, "ost %d is inactive\n", i); continue; } @@ -372,5 +373,6 @@ continue; } } + obd_putref(obd); RETURN(rc); } diff -Nru lustre-1.8.3/lustre/quota/quota_check.c lustre-1.8.5+dfsg/lustre/quota/quota_check.c --- lustre-1.8.3/lustre/quota/quota_check.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/quota/quota_check.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -246,20 +246,32 @@ int i, rc = 0; ENTRY; + obd_getref(obd); + for (i = 0; i < lov->desc.ld_tgt_count; i++) { - if (!lov->lov_tgts[i] || !lov->lov_tgts[i]->ltd_active) { + if (!lov->lov_tgts[i]) + continue; + + if (!lov->lov_tgts[i]->ltd_active) { CERROR("lov idx %d inactive\n", i); - RETURN(-EIO); + rc = -EIO; + goto out; } } for (i = 0; i < lov->desc.ld_tgt_count; i++) { int err; + if (!lov->lov_tgts[i]) + continue; + err = obd_quotacheck(lov->lov_tgts[i]->ltd_exp, oqctl); if (err && !rc) rc = err; } +out: + obd_putref(obd); + RETURN(rc); } diff -Nru lustre-1.8.3/lustre/quota/quota_context.c lustre-1.8.5+dfsg/lustre/quota/quota_context.c --- lustre-1.8.3/lustre/quota/quota_context.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/quota/quota_context.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -61,6 +61,10 @@ #include #include "quota_internal.h" +static int hash_lqs_cur_bits = HASH_LQS_CUR_BITS; +CFS_MODULE_PARM(hash_lqs_cur_bits, "i", int, 0444, + "the current bits of lqs hash"); + #ifdef HAVE_QUOTA_SUPPORT static lustre_hash_ops_t lqs_hash_ops; @@ -1256,9 +1260,9 @@ spin_unlock(&qctxt->lqc_lock); qctxt->lqc_lqs_hash = lustre_hash_init("LQS_HASH", - HASH_LQS_CUR_BITS, - HASH_LQS_CUR_BITS, - &lqs_hash_ops, 0); + hash_lqs_cur_bits, + HASH_LQS_MAX_BITS, + &lqs_hash_ops, LH_REHASH); if (!qctxt->lqc_lqs_hash) CERROR("%s: initialize hash lqs failed\n", obd->obd_name); @@ -1485,18 +1489,10 @@ static int lqs_compare(void *key, struct hlist_node *hnode) { - struct lustre_qunit_size *q; - int rc; - ENTRY; + struct lustre_qunit_size *q = + hlist_entry(hnode, struct lustre_qunit_size, lqs_hash); - LASSERT(key); - q = hlist_entry(hnode, struct lustre_qunit_size, lqs_hash); - - spin_lock(&q->lqs_lock); - rc = (q->lqs_key == *((unsigned long long *)key)); - spin_unlock(&q->lqs_lock); - - RETURN(rc); + RETURN(q->lqs_key == *((unsigned long long *)key)); } static void * diff -Nru lustre-1.8.3/lustre/quota/quota_ctl.c lustre-1.8.5+dfsg/lustre/quota/quota_ctl.c --- lustre-1.8.3/lustre/quota/quota_ctl.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/quota/quota_ctl.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/quota/quota_interface.c lustre-1.8.5+dfsg/lustre/quota/quota_interface.c --- lustre-1.8.3/lustre/quota/quota_interface.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/quota/quota_interface.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -145,12 +145,15 @@ RETURN(0); } -static int filter_quota_enforce(struct obd_device *obd, unsigned int ignore) +static int target_quota_enforce(struct obd_device *obd, unsigned int ignore) { ENTRY; if (!ll_sb_any_quota_active(obd->u.obt.obt_sb)) - RETURN(0); + RETURN(-EINVAL); + + if (!!cfs_cap_raised(CFS_CAP_SYS_RESOURCE) == !!ignore) + RETURN(-EALREADY); if (ignore) { CDEBUG(D_QUOTA, "blocks will be written with ignoring quota.\n"); @@ -895,6 +898,7 @@ .quota_recovery = mds_quota_recovery, .quota_adjust = mds_quota_adjust, .quota_chkquota = mds_quota_check, + .quota_enforce = target_quota_enforce, .quota_acquire = mds_quota_acquire, .quota_pending_commit = mds_quota_pending_commit, }; @@ -906,7 +910,7 @@ .quota_ctl = filter_quota_ctl, .quota_setinfo = filter_quota_setinfo, .quota_clearinfo = filter_quota_clearinfo, - .quota_enforce = filter_quota_enforce, + .quota_enforce = target_quota_enforce, .quota_getflag = filter_quota_getflag, .quota_acquire = filter_quota_acquire, .quota_adjust = filter_quota_adjust, diff -Nru lustre-1.8.3/lustre/quota/quota_master.c lustre-1.8.5+dfsg/lustre/quota/quota_master.c --- lustre-1.8.3/lustre/quota/quota_master.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/quota/quota_master.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* diff -Nru lustre-1.8.3/lustre/scripts/lc_net.in lustre-1.8.5+dfsg/lustre/scripts/lc_net.in --- lustre-1.8.3/lustre/scripts/lc_net.in 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/scripts/lc_net.in 2010-09-01 09:17:45.000000000 +0200 @@ -169,11 +169,8 @@ fi # Get the IP address of ${HOST_NAMES[i]} from its own ping - if is_pdsh; then - ip_addr=`echo "${ret_str}" | head -1 | awk '{print $4}'` - else - ip_addr=`echo "${ret_str}" | head -1 | awk '{print $3}'` - fi + ip_pattern="[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" + ip_addr=`echo "${ret_str}" | egrep -o "${ip_pattern}"` ip_addr=`echo "${ip_addr}" | sed -e 's/^(//' -e 's/)$//'` # Compare IP addresses diff -Nru lustre-1.8.3/lustre/scripts/lfs_migrate lustre-1.8.5+dfsg/lustre/scripts/lfs_migrate --- lustre-1.8.3/lustre/scripts/lfs_migrate 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/scripts/lfs_migrate 2010-08-11 10:42:40.000000000 +0200 @@ -0,0 +1,153 @@ +#!/bin/bash +# set -x +set -e + +# lfs_migrate: a simple tool to copy and check files. +# +# To avoid allocating objects on one or more OSTs, they should be +# deactivated on the MDS via "lctl --device {device_number} deactivate", +# where {device_number} is from the output of "lctl dl" on the MDS. +# +# To guard against corruption, the file is compared after migration +# to verify the copy is correct and the file has not been modified. +# This is not a protection against the file being open by another +# process, but it would catch the worst cases of in-use files, but +# to be 100% safe the administrator needs to ensure this is safe. + +RSYNC=${RSYNC:-rsync} +ECHO=echo +LFS=${LFS:-lfs} + +usage() { + cat -- <&2 +usage: lfs_migrate [-c|-s] [-h] [-l] [-n] [-y] [file|dir ...] + -c compare file data after migrate (default) + -s skip file data comparison after migrate + -h show this usage message + -l migrate files with hard links (skip by default) + -n only print the names of files to be migrated + -q run quietly (don't print filenames or status) + -y answer 'y' to usage question + +If a directory is an argument, all files in the directory are migrated. +If no file/directory is given, the file list is read from standard input. + +e.g.: lfs_migrate /mnt/lustre/file + lfs find /test -O test-OST0004 -size +4G | lfs_migrate -y +USAGE + exit 1 +} + +OPT_CHECK=y + +while getopts "chlnqsy" opt $*; do + case $opt in + c) OPT_CHECK=y;; + l) OPT_NLINK=y;; + n) OPT_DRYRUN=n; OPT_YES=y;; + q) ECHO=:;; + s) OPT_CHECK="";; + y) OPT_YES=y;; + h|\?) usage;; + esac +done +shift $((OPTIND - 1)) + +if [ -z "$OPT_YES" ]; then + echo "" + echo "lfs_migrate is currently NOT SAFE for moving in-use files." 1>&2 + echo "Use it only when you are sure migrated files are unused." 1>&2 + echo "" 1>&2 + echo "If emptying OST(s) that are not disabled on the MDS, new" 1>&2 + echo "files may use them. To prevent MDS allocating any files on" 1>&2 + echo "OSTNNNN run 'lctl --device %{fsname}-OSTNNNN-osc deactivate'" 1>&2 + echo "on the MDS." 1>&2 + echo -n "Continue? (y/n) " + read CHECK + [ "$CHECK" != "y" -a "$CHECK" != "yes" ] && exit 1 +fi + +# if rsync has --xattr support, then try to copy the xattrs. +$RSYNC --help 2>&1 | grep -q xattr && RSYNC_OPTS="$RSYNC_OPTS -X" +$RSYNC --help 2>&1 | grep -q acls && RSYNC_OPTS="$RSYNC_OPTS -A" +# If rsync copies lustre xattrs in the future, then we can skip lfs (bug 22189) +strings $(which $RSYNC) 2>&1 | grep -q lustre && LFS=: + +lfs_migrate() { + while read OLDNAME; do + $ECHO -n "$OLDNAME: " + + # avoid duplicate stat if possible + TYPE_LINK=($(stat -c "%h %F" "$OLDNAME" || true)) + + # skip non-regular files, since they don't have any objects + # and there is no point in trying to migrate them. + if [ "${TYPE_LINK[1]}" != "regular" ]; then + echo -e "not a regular file, skipped" + continue + fi + + if [ -z "$OPT_NLINK" -a ${TYPE_LINK[0]} -gt 1 ]; then + echo -e "multiple hard links, skipped" + continue + fi + + # working out write perms is hard, let the shell do it + if [ ! -w "$OLDNAME" ]; then + echo -e "no write permission, skipped" + continue + fi + + if [ "$OPT_DRYRUN" ]; then + echo -e "dry run, skipped" + continue + fi + + + # if rsync copies Lustre xattrs properly in the future + # (i.e. before the file data, so that it preserves striping) + # then we don't need to do this getstripe/mktemp stuff. + UNLINK="-u" + COUNT=$($LFS getstripe -c "$OLDNAME" 2> /dev/null) + SIZE=$($LFS getstripe -s "$OLDNAME" 2> /dev/null) + [ -z "$COUNT" -o -z "$SIZE" ] && UNLINK="" + NEWNAME=$(mktemp $UNLINK "$OLDNAME.tmp.XXXXXX") + if [ $? -ne 0 -o -z "$NEWNAME" ]; then + echo -e "\r$OLDNAME: can't make temp file, skipped" 1>&2 + continue + fi + + [ "$UNLINK" ] && $LFS setstripe -c${COUNT} -s${SIZE} "$NEWNAME" + + # we use --inplace, since we created our own temp file already + if ! $RSYNC -a --inplace $RSYNC_OPTS "$OLDNAME" "$NEWNAME";then + echo -e "\r$OLDNAME: copy error, exiting" 1>&2 + rm -f "$NEWNAME" + exit 4 + fi + + if [ "$OPT_CHECK" ] && ! cmp "$OLDNAME" "$NEWNAME"; then + echo -e "\r$NEWNAME: compare failed, exiting" 1>&2 + exit 8 + fi + + if ! mv "$NEWNAME" "$OLDNAME"; then + echo -e "\r$OLDNAME: rename error, exiting" 1>&2 + exit 12 + fi + $ECHO "done" + done +} + +if [ "$#" -eq 0 ]; then + lfs_migrate +else + while [ "$1" ]; do + if [ -d "$1" ]; then + lfs find "$1" -type f | lfs_migrate + else + echo $1 | lfs_migrate + fi + shift + done +fi diff -Nru lustre-1.8.3/lustre/scripts/Makefile.am lustre-1.8.5+dfsg/lustre/scripts/Makefile.am --- lustre-1.8.3/lustre/scripts/Makefile.am 2010-03-31 08:29:42.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/scripts/Makefile.am 2010-11-17 04:31:48.000000000 +0100 @@ -25,7 +25,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved +# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. # Use is subject to license terms. # @@ -41,7 +41,7 @@ lc_md lc_lvm lustre_start sbin_SCRIPTS = $(genscripts) $(sbinscripts) -bin_SCRIPTS = lustre_req_history +bin_SCRIPTS = lustre_req_history lfs_migrate EXTRA_DIST = license-status maketags.sh version_tag.pl lc_common \ $(addsuffix .in,$(genscripts)) lc_mon $(sbinscripts) \ diff -Nru lustre-1.8.3/lustre/scripts/Makefile.in lustre-1.8.5+dfsg/lustre/scripts/Makefile.in --- lustre-1.8.3/lustre/scripts/Makefile.in 2010-04-10 02:29:12.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/scripts/Makefile.in 2010-11-17 04:32:03.000000000 +0100 @@ -41,7 +41,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved +# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. # Use is subject to license terms. # @@ -339,7 +339,7 @@ sbin_SCRIPTS = $(genscripts) $(sbinscripts) -bin_SCRIPTS = lustre_req_history +bin_SCRIPTS = lustre_req_history lfs_migrate EXTRA_DIST = license-status maketags.sh version_tag.pl lc_common \ $(addsuffix .in,$(genscripts)) lc_mon $(sbinscripts) \ diff -Nru lustre-1.8.3/lustre/tests/acceptance-small.sh lustre-1.8.5+dfsg/lustre/tests/acceptance-small.sh --- lustre-1.8.3/lustre/tests/acceptance-small.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/acceptance-small.sh 2010-11-17 04:31:48.000000000 +0100 @@ -23,7 +23,7 @@ [ "$DEBUG_OFF" ] || DEBUG_OFF="eval lctl set_param debug=\"$DEBUG_LVL\"" [ "$DEBUG_ON" ] || DEBUG_ON="eval lctl set_param debug=0x33f0484" -export TESTSUITE_LIST="RUNTESTS SANITY DBENCH BONNIE IOZONE FSX SANITYN LFSCK LIBLUSTRE RACER REPLAY_SINGLE CONF_SANITY RECOVERY_SMALL REPLAY_OST_SINGLE REPLAY_DUAL REPLAY_VBR INSANITY SANITY_QUOTA PERFORMANCE_SANITY LARGE_SCALE RECOVERY_MDS_SCALE RECOVERY_DOUBLE_SCALE RECOVERY_RANDOM_SCALE PARALLEL_SCALE METADATA_UPDATES OST_POOLS SANITY_BENCHMARK LNET_SELFTEST" +export TESTSUITE_LIST="RUNTESTS SANITY DBENCH BONNIE IOZONE FSX SANITYN LFSCK LIBLUSTRE RACER REPLAY_SINGLE CONF_SANITY RECOVERY_SMALL REPLAY_OST_SINGLE REPLAY_DUAL REPLAY_VBR INSANITY SANITY_QUOTA PERFORMANCE_SANITY LARGE_SCALE RECOVERY_MDS_SCALE RECOVERY_DOUBLE_SCALE RECOVERY_RANDOM_SCALE PARALLEL_SCALE METADATA_UPDATES OST_POOLS SANITY_BENCHMARK LNET_SELFTEST MMP OBDFILTER_SURVEY SGPDD_SURVEY" if [ "$ACC_SM_ONLY" ]; then for O in $TESTSUITE_LIST; do @@ -137,9 +137,11 @@ $DEBUG_OFF myUID=$RUNAS_ID + myGID=$RUNAS_GID myRUNAS=$RUNAS - FAIL_ON_ERROR=false check_runas_id_ret $myUID $myUID $myRUNAS || { myRUNAS="" && myUID=$UID; } - chown $myUID:$myUID $DBENCHDIR + FAIL_ON_ERROR=false check_runas_id_ret $myUID $myGID $myRUNAS || \ + { myRUNAS="" && myUID=$UID && myGID=`id -g $USER`; } + chown $myUID:$myGID $DBENCHDIR duration="" [ "$SLOW" = "no" ] && duration=" -t 120" if [ "$SLOW" != "no" -o $DB_THREADS -eq 1 ]; then @@ -172,10 +174,12 @@ log "min OST has ${MIN}kB available, using ${SIZE}kB file size" $DEBUG_OFF myUID=$RUNAS_ID + myGID=$RUNAS_GID myRUNAS=$RUNAS - FAIL_ON_ERROR=false check_runas_id_ret $myUID $myUID $myRUNAS || { myRUNAS="" && myUID=$UID; } - chown $myUID:$myUID $BONDIR - $myRUNAS bonnie++ -f -r 0 -s$((SIZE / 1024)) -n 10 -u$myUID:$myUID -d$BONDIR + FAIL_ON_ERROR=false check_runas_id_ret $myUID $myGID $myRUNAS || \ + { myRUNAS="" && myUID=$UID && myGID=`id -g $USER`; } + chown $myUID:$myGID $BONDIR + $myRUNAS bonnie++ -f -r 0 -s$((SIZE / 1024)) -n 10 -u$myUID:$myGID -d$BONDIR $DEBUG_ON $CLEANUP $SETUP @@ -202,9 +206,11 @@ # $SPACE was calculated with all OSTs $DEBUG_OFF myUID=$RUNAS_ID + myGID=$RUNAS_GID myRUNAS=$RUNAS - FAIL_ON_ERROR=false check_runas_id_ret $myUID $myUID $myRUNAS || { myRUNAS="" && myUID=$UID; } - chown $myUID:$myUID $IOZDIR + FAIL_ON_ERROR=false check_runas_id_ret $myUID $myGID $myRUNAS || \ + { myRUNAS="" && myUID=$UID && myGID=`id -g $USER`; } + chown $myUID:$myGID $IOZDIR $myRUNAS iozone $IOZONE_OPTS -s $SIZE -f $IOZFILE 2>&1 | tee $IOZLOG tail -1 $IOZLOG | grep -q complete || \ { error "iozone (1) failed" && false; } @@ -286,16 +292,9 @@ SANITYN="done" fi - [ "$LFSCK" != "no" ] && remote_mds && log "Remote MDS, skipping LFSCK test" && LFSCK=no && MSKIPPED=1 - [ "$LFSCK" != "no" ] && remote_ost && log "Remote OST, skipping LFSCK test" && LFSCK=no && OSKIPPED=1 if [ "$LFSCK" != "no" ]; then title lfsck - if [ -x /usr/sbin/lfsck ]; then - bash lfscktest.sh - else - log "$($E2FSCK -V)" - log "SKIP: $E2FSCK does not support lfsck" - fi + bash lfscktest.sh LFSCK="done" fi @@ -474,6 +473,24 @@ LNET_SELFTEST="done" fi +if [ "$MMP" != "no" ]; then + title mmp + bash mmp.sh + MMP="done" +fi + +if [ "$OBDFILTER_SURVEY" != "no" ]; then + title obdfilter-survey + bash obdfilter-survey.sh + OBDFILTER_SURVEY="done" +fi + +if [ "$SGPDD_SURVEY" != "no" ] && [ "$SGPDD_YES" ] && [ "$REFORMAT" ]; then + title sgpdd-survey + bash sgpdd-survey.sh + SGPDD_SURVEY="done" +fi + RC=$? title FINISHED echo "Finished at `date` in $((`date +%s` - $STARTTIME))s" diff -Nru lustre-1.8.3/lustre/tests/acl/run lustre-1.8.5+dfsg/lustre/tests/acl/run --- lustre-1.8.3/lustre/tests/acl/run 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/tests/acl/run 2010-07-21 10:34:50.000000000 +0200 @@ -89,7 +89,7 @@ my $nmax = (@$out > @$result) ? @$out : @$result; for (my $n=0; $n < $nmax; $n++) { if (!defined($out->[$n]) || !defined($result->[$n]) || - $out->[$n] ne $result->[$n]) { + ($result->[$n] !~ m/\Q$out->[$n]\E/)) { $good = 0; } } diff -Nru lustre-1.8.3/lustre/tests/acl/setfacl.test lustre-1.8.5+dfsg/lustre/tests/acl/setfacl.test --- lustre-1.8.3/lustre/tests/acl/setfacl.test 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/tests/acl/setfacl.test 2010-07-21 10:34:50.000000000 +0200 @@ -111,16 +111,16 @@ > $ setfacl --test -x u: g - > setfacl: g: Malformed access ACL `user:root:---,user:daemon:rw-,group::r-x,mask::rwx,other::---': Missing or wrong entry at entry 1 + > g: Malformed access ACL `user:root:---,user:daemon:rw-,group::r-x,mask::rwx,other::---': Missing or wrong entry at entry 1 $ setfacl --test -x u:x > setfacl: Option -x: Invalid argument near character 3 $ setfacl -m d:u:root:rwx g - > setfacl: g: Only directories can have default ACLs + > g: Only directories can have default ACLs $ setfacl -x m g - > setfacl: g: Malformed access ACL `user::rwx,user:root:---,user:daemon:rw-,group::r-x,other::---': Missing or wrong entry at entry 5 + > g: Malformed access ACL `user::rwx,user:root:---,user:daemon:rw-,group::r-x,other::---': Missing or wrong entry at entry 5 setfacl --test -m d:u:daemon:rwx setfacl setfacl --test -n -m d:u:daemon:rwx setfacl diff -Nru lustre-1.8.3/lustre/tests/cfg/local.sh lustre-1.8.5+dfsg/lustre/tests/cfg/local.sh --- lustre-1.8.3/lustre/tests/cfg/local.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/cfg/local.sh 2010-11-17 04:31:48.000000000 +0100 @@ -44,6 +44,7 @@ ENABLE_QUOTA=${ENABLE_QUOTA:-""} QUOTA_TYPE=${QUOTA_TYPE:-"ug3"} QUOTA_USERS=${QUOTA_USERS:-"quota_usr quota_2usr sanityusr sanityusr1"} +LQUOTAOPTS=${LQUOTAOPTS:-"hash_lqs_cur_bits=3"} MKFSOPT="" [ "x$MDSJOURNALSIZE" != "x" ] && @@ -65,7 +66,7 @@ MDS_MKFS_OPTS="--mgs $MDS_MKFS_OPTS" else MDS_MKFS_OPTS="--mgsnode=$MGSNID $MDS_MKFS_OPTS" - mgs_MKFS_OPTS="--mgs " + MGS_MKFS_OPTS="--mgs --device-size=$MGSSIZE" fi MKFSOPT="" @@ -79,7 +80,7 @@ MDS_MOUNT_OPTS=${MDS_MOUNT_OPTS:-"-o loop"} OST_MOUNT_OPTS=${OST_MOUNT_OPTS:-"-o loop"} -mgs_MOUNT_OPTS=${mgs_MOUNT_OPTS:-$MDS_MOUNT_OPTS} +MGS_MOUNT_OPTS=${MGS_MOUNT_OPTS:-$MDS_MOUNT_OPTS} #client MOUNT=${MOUNT:-/mnt/${FSNAME}} @@ -93,10 +94,12 @@ if [ $UID -ne 0 ]; then log "running as non-root uid $UID" RUNAS_ID="$UID" + RUNAS_GID=`id -g $USER` RUNAS="" else RUNAS_ID=${RUNAS_ID:-500} - RUNAS=${RUNAS:-"runas -u $RUNAS_ID"} + RUNAS_GID=${RUNAS_GID:-$RUNAS_ID} + RUNAS=${RUNAS:-"runas -u $RUNAS_ID -g $RUNAS_GID"} fi FAILURE_MODE=${FAILURE_MODE:-SOFT} # or HARD diff -Nru lustre-1.8.3/lustre/tests/cfg/ncli.sh lustre-1.8.5+dfsg/lustre/tests/cfg/ncli.sh --- lustre-1.8.3/lustre/tests/cfg/ncli.sh 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/tests/cfg/ncli.sh 2010-06-25 06:23:17.000000000 +0200 @@ -15,5 +15,9 @@ # default boulder cluster iozone location export PATH=/opt/iozone/bin:$PATH SHARED_DIRECTORY=${SHARED_DIRECTORY:-""} # bug 17839 comment 65 -LOADS="dd tar dbench iozone" +LOADS=${LOADS:-"dd tar dbench iozone"} +for i in $LOADS; do + [ -f $LUSTRE/tests/run_${i}.sh ] || \ + error "incorrect load: $i" +done CLIENT_LOADS=($LOADS) diff -Nru lustre-1.8.3/lustre/tests/conf-sanity.sh lustre-1.8.5+dfsg/lustre/tests/conf-sanity.sh --- lustre-1.8.3/lustre/tests/conf-sanity.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/conf-sanity.sh 2010-11-17 04:31:48.000000000 +0100 @@ -15,6 +15,12 @@ ALWAYS_EXCEPT=" $CONF_SANITY_EXCEPT 34a" # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT! +if [ "$FAILURE_MODE" = "HARD" ]; then + CONFIG_EXCEPTIONS="24a " && \ + echo "Except the tests: $CONFIG_EXCEPTIONS for FAILURE_MODE=$FAILURE_MODE, bug 23573" && \ + ALWAYS_EXCEPT="$ALWAYS_EXCEPT $CONFIG_EXCEPTIONS" +fi + SRCDIR=`dirname $0` PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH @@ -38,7 +44,7 @@ remote_ost_nodsh && skip "remote OST with nodsh" && exit 0 # -[ "$SLOW" = "no" ] && EXCEPT_SLOW="0 1 2 3 6 7 15 18 24b 25 30 31 32 33 34a 45" +[ "$SLOW" = "no" ] && EXCEPT_SLOW="30 31 45" assert_DIR @@ -46,15 +52,25 @@ formatall } -writeconf() { - local facet=mds - shift +writeconf1() { + local facet=$1 + local dev=$2 + stop ${facet} -f rm -f ${facet}active # who knows if/where $TUNEFS is installed? Better reformat if it fails... - do_facet ${facet} "$TUNEFS --writeconf $MDSDEV" || - echo "tunefs failed, reformatting instead" && reformat_and_config + do_facet ${facet} "$TUNEFS --quiet --writeconf $dev" || + { echo "tunefs failed, reformatting instead" && reformat_and_config && return 1; } + return 0 +} +writeconf() { + # we need ldiskfs + load_modules + # if writeconf fails anywhere, we reformat everything + writeconf1 mds $MDSDEV || return 0 + writeconf1 ost1 `ostdevname 1` || return 0 + writeconf1 ost2 `ostdevname 2` || return 0 } gen_config() { @@ -77,12 +93,25 @@ start_mgs () { echo "start mgs" - start mgs $MGSDEV $mgs_MOUNT_OPTS + start mgs $MGSDEV $MGS_MOUNT_OPTS } start_mds() { echo "start mds service on `facet_active_host mds`" - start mds $MDSDEV $MDS_MOUNT_OPTS || return 94 + start mds $MDSDEV $MDS_MOUNT_OPTS $@ || return 94 +} + +stop_mgs() { + echo "stop mgs service on `facet_active_host mgs`" + # These tests all use non-failover stop + stop mgs -f || return 97 +} + +start_mgsmds() { + if ! combined_mgs_mds ; then + start_mgs + fi + start_mds $@ } stop_mds() { @@ -93,7 +122,7 @@ start_ost() { echo "start ost1 service on `facet_active_host ost1`" - start ost1 `ostdevname 1` $OST_MOUNT_OPTS || return 95 + start ost1 `ostdevname 1` $OST_MOUNT_OPTS $@ || return 95 } stop_ost() { @@ -104,7 +133,7 @@ start_ost2() { echo "start ost2 service on `facet_active_host ost2`" - start ost2 `ostdevname 2` $OST_MOUNT_OPTS || return 92 + start ost2 `ostdevname 2` $OST_MOUNT_OPTS $@ || return 92 } stop_ost2() { @@ -154,9 +183,9 @@ } setup() { - start_ost - start_mds - mount_client $MOUNT + start_mds || error "MDT start failed" + start_ost || error "OST start failed" + mount_client $MOUNT || error "client start failed" df $MOUNT } @@ -224,7 +253,9 @@ test_1() { start_ost echo "start ost second time..." - setup + start_ost && error "2nd OST start should fail" + start_mds || error "MDT start failed" + mount_client $MOUNT || error "client start failed" check_mount || return 42 cleanup || return $? } @@ -234,7 +265,7 @@ start_ost start_mds echo "start mds second time.." - start_mds + start_mds && error "2nd MDT start should fail" mount_client $MOUNT check_mount || return 43 cleanup || return $? @@ -244,7 +275,7 @@ test_3() { setup #mount.lustre returns an error if already in mtab - mount_client $MOUNT && return $? + mount_client $MOUNT && error "2nd client mount should fail" check_mount || return 44 cleanup || return $? } @@ -313,60 +344,132 @@ } run_test 5a "force cleanup mds, then cleanup" +cleanup_5b () { + trap 0 + start_mgs +} + test_5b() { + grep " $MOUNT " /etc/mtab && \ + error false "unexpected entry in mtab before mount" && return 10 + + local rc=0 start_ost + if ! combined_mgs_mds ; then + trap cleanup_5b EXIT ERR + start_mds + stop mgs + fi + [ -d $MOUNT ] || mkdir -p $MOUNT - grep " $MOUNT " /etc/mtab && echo "test 5b: mtab before mount" && return 10 - mount_client $MOUNT && return 1 - grep " $MOUNT " /etc/mtab && echo "test 5b: mtab after failed mount" && return 11 + mount_client $MOUNT && rc=1 + grep " $MOUNT " /etc/mtab && \ + error "$MOUNT entry in mtab after failed mount" && rc=11 umount_client $MOUNT # stop_mds is a no-op here, and should not fail - cleanup_nocli || return $? - return 0 + cleanup_nocli || rc=$? + if ! combined_mgs_mds ; then + cleanup_5b + fi + return $rc } -run_test 5b "mds down, cleanup after failed mount (bug 2712) (should return errs)" +run_test 5b "Try to start a client with no MGS (should return errs)" test_5c() { + grep " $MOUNT " /etc/mtab && \ + error false "unexpected entry in mtab before mount" && return 10 + + local rc=0 start_ost start_mds [ -d $MOUNT ] || mkdir -p $MOUNT - grep " $MOUNT " /etc/mtab && echo "test 5c: mtab before mount" && return 10 local oldfs="${FSNAME}" FSNAME="wrong.${FSNAME}" mount_client $MOUNT || : FSNAME=${oldfs} - grep " $MOUNT " /etc/mtab && echo "test 5c: mtab after failed mount" && return 11 + grep " $MOUNT " /etc/mtab && \ + error "$MOUNT entry in mtab after failed mount" && rc=11 umount_client $MOUNT - cleanup_nocli || return $? + cleanup_nocli || rc=$? + return $rc } run_test 5c "cleanup after failed mount (bug 2712) (should return errs)" test_5d() { + grep " $MOUNT " /etc/mtab && \ + error false "unexpected entry in mtab before mount" && return 10 + + local rc=0 start_ost start_mds stop_ost -f - grep " $MOUNT " /etc/mtab && echo "test 5d: mtab before mount" && return 10 - mount_client $MOUNT || return 1 - cleanup || return $? - grep " $MOUNT " /etc/mtab && echo "test 5d: mtab after unmount" && return 11 - return 0 + mount_client $MOUNT || rc=1 + cleanup || rc=$? + grep " $MOUNT " /etc/mtab && \ + error "$MOUNT entry in mtab after unmount" && rc=11 + return $rc } run_test 5d "mount with ost down" test_5e() { + grep " $MOUNT " /etc/mtab && \ + error false "unexpected entry in mtab before mount" && return 10 + + local rc=0 start_ost start_mds #define OBD_FAIL_PTLRPC_DELAY_SEND 0x506 do_facet client "lctl set_param fail_loc=0x80000506" - grep " $MOUNT " /etc/mtab && echo "test 5e: mtab before mount" && return 10 mount_client $MOUNT || echo "mount failed (not fatal)" - cleanup || return $? - grep " $MOUNT " /etc/mtab && echo "test 5e: mtab after unmount" && return 11 - return 0 + cleanup || rc=$? + grep " $MOUNT " /etc/mtab && \ + error "$MOUNT entry in mtab after unmount" && rc=11 + return $rc } run_test 5e "delayed connect, don't crash (bug 10268)" +test_5f() { + if combined_mgs_mds ; then + skip "combined mgs and mds" + return 0 + fi + + grep " $MOUNT " /etc/mtab && \ + error false "unexpected entry in mtab before mount" && return 10 + + local rc=0 + start_ost + [ -d $MOUNT ] || mkdir -p $MOUNT + mount_client $MOUNT & + local pid=$! + echo client_mount pid is $pid + + sleep 5 + + if ! ps -f -p $pid >/dev/null; then + wait $pid + rc=$? + grep " $MOUNT " /etc/mtab && echo "test 5f: mtab after mount" + error "mount returns $rc, expected to hang" + rc=11 + cleanup || rc=$? + return $rc + fi + + # start mds + start_mds + + # mount should succeed after start mds + wait $pid + rc=$? + [ $rc -eq 0 ] || error "mount returned $rc" + grep " $MOUNT " /etc/mtab && echo "test 5f: mtab after mount" + cleanup || return $? + return $rc +} +run_test 5f "mds down, cleanup after failed mount (bug 2712)" + test_6() { setup manual_umount_client @@ -420,7 +523,6 @@ fi stop_ost || return $? } - run_test 9 "test ptldebug and subsystem for mkfs" is_blkdev () { @@ -440,17 +542,18 @@ test_16() { setup - # interop 1.8 <-> 2.0: 20: no LOGS - local files="{OBJECTS,PENDING}" - local lustre_version=$(get_lustre_version mds) - if [[ $lustre_version = 1.8* ]]; then - files="{OBJECTS,PENDING,LOGS}" + # Skip this test if MDS is 2.0+, see bug 22944. + if [[ "$(get_mds_version_major)" != "1" ]]; then + skip "not running on 2.0 server" + cleanup + return 0 fi - + check_mount || return 41 cleanup || return $? local TMPMTPT="${TMP}/conf16" + local files="{OBJECTS,PENDING,LOGS}" is_blkdev mds $MDSDEV || LOOPOPT="-o loop" @@ -630,6 +733,28 @@ } run_test 21c "start mds between two osts, stop mds last" +test_21d() { + if combined_mgs_mds ; then + skip "need separate mgs device" && return 0 + fi + stopall + + reformat + + start_mgs + start_ost + start_ost2 + start_mds + wait_osc_import_state mds ost2 FULL + + stop_ost + stop_ost2 + stop_mds + stop_mgs +} +run_test 21d "start mgs then ost and then mds" + + test_22() { start_mds @@ -771,8 +896,11 @@ umount_client $MOUNT # the MDS must remain up until last MDT stop_mds - MDS=$(do_facet mds "lctl get_param -n devices" | awk '($3 ~ "mdt" && $4 ~ "MDS") { print $4 }') - [ -z "$MDS" ] && error "No MDS" && return 8 + + local mdt_obdname=$(do_facet mds "lctl get_param -n devices" | \ + awk '/ mdt / { print $4 }' | head -1) + [ -z "$mdt_obdname" ] && error "No MDT" && return 8 + cleanup_24a cleanup_nocli || return 6 } @@ -947,9 +1075,10 @@ } run_test 29 "permanently remove an OST" -test_30() { +test_30a() { setup + echo Big config llog TEST="lctl get_param -n llite.$FSNAME-*.max_read_ahead_whole_mb" ORIG=$($TEST) LIST=(1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2 3 4 5) @@ -959,11 +1088,54 @@ # make sure client restart still works umount_client $MOUNT mount_client $MOUNT || return 4 - [ "$($TEST)" -ne "$i" ] && return 5 - set_and_check client "$TEST" "$FSNAME.llite.max_read_ahead_whole_mb" $ORIG || return 6 + [ "$($TEST)" -ne "$i" ] && error "Param didn't stick across restart $($TEST) != $i" + pass + + echo Erase parameter setting + do_facet mgs "$LCTL conf_param -d $FSNAME.llite.max_read_ahead_whole_mb" || return 6 + umount_client $MOUNT + mount_client $MOUNT || return 6 + FINAL=$($TEST) + echo "deleted (default) value=$FINAL, orig=$ORIG" + # assumes this parameter started at the default value + [ "$FINAL" -eq "$ORIG" ] || fail "Deleted value=$FINAL, orig=$ORIG" + cleanup } -run_test 30 "Big config llog" +run_test 30a "Big config llog and conf_param deletion" + +test_30b() { + setup + + # Make a fake nid. Use the OST nid, and add 20 to the least significant + # numerical part of it. Hopefully that's not already a failover address for + # the server. + OSTNID=$(do_facet ost1 "$LCTL get_param nis" | tail -1 | awk '{print $1}') + ORIGVAL=$(echo $OSTNID | egrep -oi "[0-9]*@") + NEWVAL=$((($(echo $ORIGVAL | egrep -oi "[0-9]*") + 20) % 256)) + NEW=$(echo $OSTNID | sed "s/$ORIGVAL/$NEWVAL@/") + echo "Using fake nid $NEW" + + TEST="$LCTL get_param -n osc.$FSNAME-OST0000-osc-[^M]*.import | grep failover_nids | sed -n 's/.*\($NEW\).*/\1/p'" + set_and_check client "$TEST" "$FSNAME-OST0000.failover.node" $NEW || error "didn't add failover nid $NEW" + NIDS=$($LCTL get_param -n osc.$FSNAME-OST0000-osc-[^M]*.import | grep failover_nids) + echo $NIDS + NIDCOUNT=$(($(echo "$NIDS" | wc -w) - 1)) + echo "should have 2 failover nids: $NIDCOUNT" + [ $NIDCOUNT -eq 2 ] || error "Failover nid not added" + do_facet mgs "$LCTL conf_param -d $FSNAME-OST0000.failover.node" || error "conf_param delete failed" + umount_client $MOUNT + mount_client $MOUNT || return 3 + + NIDS=$($LCTL get_param -n osc.$FSNAME-OST0000-osc-[^M]*.import | grep failover_nids) + echo $NIDS + NIDCOUNT=$(($(echo "$NIDS" | wc -w) - 1)) + echo "only 1 final nid should remain: $NIDCOUNT" + [ $NIDCOUNT -eq 1 ] || error "Failover nids not removed" + + cleanup +} +run_test 30b "Remove failover nids" test_31() { # bug 10734 # ipaddr must not exist @@ -1114,9 +1286,11 @@ echo OST uuid $UUID [ "$UUID" == "lustre-OST0000_UUID" ] || error "UUID is wrong: $UUID" + local NID=$($LCTL list_nids | head -1) + echo "OSC changes should succeed:" - $LCTL conf_param lustre-OST0000.osc.max_dirty_mb=15 || return 7 - $LCTL conf_param lustre-OST0000.failover.node=$NID || return 8 + $LCTL conf_param lustre-OST0000.osc.max_dirty_mb=15 || error "OSC conf_param failed" + $LCTL conf_param lustre-OST0000.failover.node=$NID || error "add failover nid=$NID failed" echo "ok." echo "MDC changes should succeed:" $LCTL conf_param lustre-MDT0000.mdc.max_rpcs_in_flight=9 || return 9 @@ -1154,9 +1328,19 @@ skip_env "mixed loopback and real device not working" && return fi + # interop 1.8 <-> 2.0 + local mkfs_opts + local major=$(get_mds_version_major) + local minor=$(get_mds_version_minor) + if [ $major -le 1 -a $minor -le 8 ]; then + mkfs_opts="" + else + mkfs_opts="--mkfsoptions='-J size=8'" # bug 17931 + fi + local fs2mdsdev=${fs2mds_DEV:-${MDSDEV}_2} local fs2ostdev=${fs2ost_DEV:-$(ostdevname 1)_2} - add fs2mds $MDS_MKFS_OPTS --fsname=${FSNAME2} --reformat $fs2mdsdev || exit 10 + add fs2mds $MDS_MKFS_OPTS --fsname=${FSNAME2} $mkfs_opts --reformat $fs2mdsdev || exit 10 add fs2ost $OST_MKFS_OPTS --fsname=${FSNAME2} --index=8191 --mgsnode=$MGSNID --reformat $fs2ostdev || exit 10 start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS && trap cleanup_24a EXIT INT @@ -1282,6 +1466,8 @@ }" $TMP/lustre-log-$TESTNAME.log` [ "$NEXTCONN" != "0" ] && log "The client didn't try to reconnect to the last active server (tried ${NEXTCONN} instead)" && return 7 cleanup + # remove nid settings + writeconf } run_test 35a "Reconnect to the last active server first" @@ -1357,6 +1543,8 @@ return 6 cleanup + # remove nid settings + writeconf } run_test 35b "Continue reconnection retries, if the active server is busy" @@ -1654,10 +1842,9 @@ let count=count-1 done stop_mds || rc=$? - # writeconf is needed after the test, otherwise, - # we might end up with extra OSTs - writeconf || rc=$? cleanup_nocli || rc=$? + #writeconf to remove all ost2 traces for subsequent tests + writeconf return $rc } @@ -1990,6 +2177,7 @@ umount_client $MOUNT || error "Unable to unmount client" stop_ost || error "Unable to stop OST1" stop_mds || error "Unable to stop MDS" + #writeconf to remove all ost2 traces for subsequent tests writeconf } run_test 50f "normal statfs one server in down ==========================" @@ -1998,6 +2186,8 @@ [ "$OSTCOUNT" -lt "2" ] && skip_env "$OSTCOUNT < 2, skipping" && return setup start_ost2 || error "Unable to start OST2" + wait_osc_import_state mds ost2 FULL + wait_osc_import_state client ost2 FULL local PARAM="${FSNAME}-OST0001.osc.active" @@ -2015,13 +2205,139 @@ stop_ost2 || error "Unable to stop OST2" stop_ost || error "Unable to stop OST1" stop_mds || error "Unable to stop MDS" + #writeconf to remove all ost2 traces for subsequent tests writeconf } run_test 50g "deactivated OST should not cause panic=====================" +lov_objid_size() +{ + local max_ost_index=$1 + echo -n $(($max_ost_index * 8 + 8)) +} + +test_55() { + local saved_opts=$OST_MKFS_OPTS + + for i in 0 1023 2048 + do + OST_MKFS_OPTS="$saved_opts --index $i" + reformat + + setup_noconfig + cp /etc/passwd $DIR/1 + stopall + + setup + cp /etc/passwd $DIR/2 + sync + + echo checking size of lov_objid for ost index $i + local file_size=`do_facet mds \ + "$DEBUGFS -R 'stat lov_objid' $MDSDEV 2>/dev/null" | \ + grep ^User | awk '{print $6}'` + if [ "$file_size" != $(lov_objid_size $i) ]; then + error "lov_objid size has to be $(lov_objid_size $i), \ +not $file_size" + else + echo ok, lov_objid size is correct: $file_size + fi + stopall + done + + OST_MKFS_OPTS=$saved_opts + reformat +} +run_test 55 "check lov_objid size" + +test_56() { + add mds $MDS_MKFS_OPTS --mkfsoptions='\"-J size=16\"' --reformat $MDSDEV + add ost1 $OST_MKFS_OPTS --index=1000 --reformat `ostdevname 1` + add ost2 $OST_MKFS_OPTS --index=10000 --reformat `ostdevname 2` + + start_mds + start_ost + start_ost2 || error "Unable to start second ost" + mount_client $MOUNT || error "Unable to mount client" + [ -n "$ENABLE_QUOTA" ] && { $LFS quotacheck -ug $MOUNT || error "quotacheck has failed" ; } + + stopall + reformat +} +run_test 56 "check big indexes" + +test_57() { # bug 22656 + local NID=$(do_facet ost1 "$LCTL get_param nis" | tail -1 | awk '{print $1}') + writeconf + do_facet ost1 "$TUNEFS --failnode=$NID `ostdevname 1`" || error "tunefs failed" + start_mgsmds + stop_mds + start_ost && error "OST registration from failnode should fail" + reformat +} +run_test 57 "initial registration from failnode should fail (should return errs)" + +test_58() { # bug 22658 + [ "$FSTYPE" != "ldiskfs" ] && skip "not supported for $FSTYPE" && return + setup + mkdir -p $DIR/$tdir + createmany -o $DIR/$tdir/$tfile-%d 100 + # make sure that OSTs do not cancel llog cookies before we unmount the MDS +#define OBD_FAIL_OBD_LOG_CANCEL_NET 0x601 + do_facet mds "lctl set_param fail_loc=0x601" + unlinkmany $DIR/$tdir/$tfile-%d 100 + stop mds + local MNTDIR=$(facet_mntpt mds) + # remove all files from the OBJECTS dir + do_facet mds "mount -t ldiskfs $MDSDEV $MNTDIR" + do_facet mds "find $MNTDIR/OBJECTS -type f -delete" + do_facet mds "umount $MNTDIR" + # restart MDS with missing llog files + start_mds + do_facet mds "lctl set_param fail_loc=0" + reformat +} +run_test 58 "missing llog files must not prevent MDT from mounting" + +count_osts() { + do_facet mgs $LCTL get_param mgs.MGS.live.$FSNAME | grep OST | wc -l +} + +test_59() { + start_mgsmds >> /dev/null + local C1=$(count_osts) + if [ $C1 -eq 0 ]; then + start_ost >> /dev/null + C1=$(count_osts) + fi + stopall + echo "original ost count: $C1 (expect > 0)" + [ $C1 -gt 0 ] || error "No OSTs in $FSNAME log" + start_mgsmds -o writeconf >> /dev/null || error "MDT start failed" + local C2=$(count_osts) + echo "after mdt writeconf count: $C2 (expect 0)" + [ $C2 -gt 0 ] && error "MDT writeconf should erase OST logs" + echo "OST start without writeconf should fail:" + start_ost >> /dev/null && error "OST start without writeconf didn't fail" + echo "OST start with writeconf should succeed:" + start_ost -o writeconf >> /dev/null || error "OST1 start failed" + local C3=$(count_osts) + echo "after ost writeconf count: $C3 (expect 1)" + [ $C3 -eq 1 ] || error "new OST writeconf should add:" + start_ost2 -o writeconf >> /dev/null || error "OST2 start failed" + local C4=$(count_osts) + echo "after ost2 writeconf count: $C4 (expect 2)" + [ $C4 -eq 2 ] || error "OST2 writeconf should add log" + stop_ost2 >> /dev/null + cleanup_nocli >> /dev/null +} +run_test 59 "writeconf mount option" + if ! combined_mgs_mds ; then stop mgs fi equals_msg `basename $0`: test complete [ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && grep -q FAIL $TESTSUITELOG && exit 1 || true + + diff -Nru lustre-1.8.3/lustre/tests/createmany.c lustre-1.8.5+dfsg/lustre/tests/createmany.c --- lustre-1.8.3/lustre/tests/createmany.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/createmany.c 2010-07-01 12:31:32.000000000 +0200 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -37,75 +37,117 @@ #include #include #include +#include #include #include #include #include #include #include +#include -void usage(char *prog) +static void usage(char *prog) { - printf("usage: %s {-o|-m|-d|-l} filenamefmt count\n", prog); - printf(" %s {-o|-m|-d|-l} filenamefmt -seconds\n", prog); - printf(" %s {-o|-m|-d|-l} filenamefmt start count\n", prog); + printf("usage: %s {-o|-m|-d|-l} [-r altpath ] filenamefmt count\n", prog); + printf(" %s {-o|-m|-d|-l} [-r altpath ] filenamefmt ] -seconds\n", prog); + printf(" %s {-o|-m|-d|-l} [-r altpath ] filenamefmt start count\n", prog); + exit(EXIT_FAILURE); } -int main(int argc, char ** argv) +static char *get_file_name(const char *fmt, long n, int has_fmt_spec) { - int i, rc = 0, do_open = 0, do_link = 0, do_mkdir = 0; - char format[4096], *fmt, *tgt = NULL; - char filename[4096]; - long start, last, end; - long begin = 0, count; + static char filename[4096]; + int bytes; - if (argc < 4 || argc > 5) { - usage(argv[0]); - return 1; + bytes = has_fmt_spec ? snprintf(filename, 4095, fmt, n) : + snprintf(filename, 4095, "%s%ld", fmt, n); + if (bytes >= 4095) { + printf("file name too long\n"); + exit(EXIT_FAILURE); } + return filename; +} - if (strcmp(argv[1], "-d") == 0) { - do_mkdir = 1; - } else if (strcmp(argv[1], "-o") == 0) { - do_open = 1; - } else if (strncmp(argv[1], "-l", 2) == 0 && argv[1][2]) { - tgt = argv[1] + 2; - do_link = 1; - } else if (strcmp(argv[1], "-m") != 0) { - usage(argv[0]); - return 1; - } +double now(void) +{ + struct timeval tv; + gettimeofday(&tv, NULL); + return (double)tv.tv_sec + (double)tv.tv_usec / 1000000; +} - if (strlen(argv[2]) > 4080) { - printf("name too long\n"); - return 1; +int main(int argc, char ** argv) +{ + long i; + int rc = 0, do_open = 0, do_link = 0, do_mkdir = 0; + int do_unlink = 0, do_mknod = 0; + char *filename; + char *fmt = NULL, *fmt_unlink = NULL, *tgt = NULL; + double start, last; + long begin = 0, end = ~0UL >> 1, count = ~0UL >> 1; + int c, has_fmt_spec = 0, unlink_has_fmt_spec = 0; + + /* Handle the last argument in form of "-seconds" */ + if (argc > 1 && argv[argc - 1][0] == '-') { + char *endp; + + argc--; + end = strtol(argv[argc] + 1, &endp, 0); + if (end <= 0 || *endp != '\0') + usage(argv[0]); + end = end + time(NULL); + } + + while ((c = getopt(argc, argv, "omdl:r:")) != -1) { + switch(c) { + case 'o': + do_open++; + break; + case 'm': + do_mknod++; + break; + case 'd': + do_mkdir++; + break; + case 'l': + do_link++; + tgt = optarg; + break; + case 'r': + do_unlink++; + fmt_unlink = optarg; + break; + case '?': + printf("Unknown option '%c'\n", optopt); + usage(argv[0]); + } } - start = last = time(0); + if (do_open + do_mkdir + do_link + do_mknod != 1 || + do_unlink > 1) + usage(argv[0]); - if (argc == 4) { - end = strtol(argv[3], NULL, 0); - } else { - begin = strtol(argv[3], NULL, 0); - end = strtol(argv[4], NULL, 0); + switch (argc - optind) { + case 3: + begin = strtol(argv[argc - 2], NULL, 0); + case 2: + count = strtol(argv[argc - 1], NULL, 0); + if (end != ~0UL >> 1) + usage(argv[0]); + case 1: + fmt = argv[optind]; + break; + default: + usage(argv[0]); } - if (end > 0) { - count = end; - end = -1UL >> 1; - } else { - end = start - end; - count = -1UL >> 1; - } + start = last = now(); - if (strchr(argv[2], '%')) - fmt = argv[2]; - else { - sprintf(format, "%s%%d", argv[2]); - fmt = format; - } - for (i = 0; i < count && time(0) < end; i++, begin++) { - sprintf(filename, fmt, begin); + has_fmt_spec = strchr(fmt, '%') != NULL; + if (do_unlink) + unlink_has_fmt_spec = strchr(fmt_unlink, '%') != NULL; + + for (i = 0; i < count && time(NULL) < end; i++, begin++) { + filename = get_file_name(fmt, begin, has_fmt_spec); if (do_open) { int fd = open(filename, O_CREAT|O_RDWR, 0644); if (fd < 0) { @@ -140,14 +182,27 @@ break; } } - if ((i % 10000) == 0) { - printf(" - created %d (time %ld total %ld last %ld)\n", - i, time(0), time(0) - start, time(0) - last); - last = time(0); + if (do_unlink) { + filename = get_file_name(fmt_unlink, begin, + unlink_has_fmt_spec); + rc = do_mkdir ? rmdir(filename) : unlink(filename); + if (rc) { + printf("unlink(%s) error: %s\n", + filename, strerror(errno)); + rc = errno; + break; + } + } + + if (i && (i % 10000) == 0) { + printf(" - created %ld (time %.2f total %.2f last %.2f)" + "\n", i, now(), now() - start, now() - last); + last = now(); } } - printf("total: %d creates in %ld seconds: %f creates/second\n", i, - time(0) - start, ((float)i / (time(0) - start))); + printf("total: %ld creates%s in %.2f seconds: %.2f creates/second\n", i, + do_unlink ? "/deletions" : "", + now() - start, ((double)i / (now() - start))); return rc; } diff -Nru lustre-1.8.3/lustre/tests/functions.sh lustre-1.8.5+dfsg/lustre/tests/functions.sh --- lustre-1.8.3/lustre/tests/functions.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/functions.sh 2010-11-17 04:31:48.000000000 +0100 @@ -29,6 +29,7 @@ local command="$mpirun $@" local mpilog=$TMP/mpi.log local rc + $LFS df -i if [ "$MPI_USER" != root -a $mpirun ]; then echo "+ chmod 0777 $MOUNT" @@ -38,13 +39,13 @@ ls -ald $MOUNT echo "+ $command" - eval $command 2>&1 > $mpilog || true + eval $command 2>&1 | tee $mpilog || true rc=${PIPESTATUS[0]} - if [ $rc -eq 0 ] && grep -q "p4_error: : [^0]" $mpilog ; then + if [ $rc -eq 0 ] && grep -q "p4_error:" $mpilog ; then rc=1 fi - cat $mpilog + $LFS df -i return $rc } diff -Nru lustre-1.8.3/lustre/tests/insanity.sh lustre-1.8.5+dfsg/lustre/tests/insanity.sh --- lustre-1.8.3/lustre/tests/insanity.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/insanity.sh 2010-11-17 04:31:48.000000000 +0100 @@ -13,10 +13,8 @@ ALWAYS_EXCEPT="10 $INSANITY_EXCEPT" if [ "$FAILURE_MODE" = "HARD" ]; then - mixed_ost_devs && CONFIG_EXCEPTIONS="0 2 4 5 6 8" && \ - echo -n "Several ost services on one ost node are used with FAILURE_MODE=$FAILURE_MODE. " && \ - echo "Except the tests: $CONFIG_EXCEPTIONS" && \ - ALWAYS_EXCEPT="$ALWAYS_EXCEPT $CONFIG_EXCEPTIONS" + skip_env "$0: is not functional with FAILURE_MODE = HARD, please use recovery-double-scale, bz20407" + exit 0 fi # @@ -194,10 +192,10 @@ echo "Reintegrating OST" reboot_facet ost1 - wait_for ost1 + wait_for_facet ost1 start_ost 1 || return 2 - wait_for mds + wait_for_facet mds start mds $MDSDEV $MDS_MOUNT_OPTS || return $? #Check FS @@ -270,10 +268,10 @@ #Reintegration echo "Reintegrating OST" reboot_facet ost1 - wait_for ost1 + wait_for_facet ost1 start_ost 1 - wait_for mds + wait_for_facet mds start mds $MDSDEV $MDS_MOUNT_OPTS #Check FS @@ -320,9 +318,9 @@ #Reintegration echo "Reintegrating OSTs" - wait_for ost1 + wait_for_facet ost1 start_ost 1 - wait_for ost2 + wait_for_facet ost2 start_ost 2 clients_recover_osts ost1 @@ -371,7 +369,7 @@ #Reintegration echo "Reintegrating OST/CLIENTs" - wait_for ost1 + wait_for_facet ost1 start_ost 1 reintegrate_clients || return 1 sleep 5 @@ -491,7 +489,7 @@ #Reintegration echo "Reintegrating CLIENTs/OST" reintegrate_clients || return 3 - wait_for ost1 + wait_for_facet ost1 start_ost 1 wait $DFPID clients_up || return 1 diff -Nru lustre-1.8.3/lustre/tests/it_test.c lustre-1.8.5+dfsg/lustre/tests/it_test.c --- lustre-1.8.3/lustre/tests/it_test.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/it_test.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -243,8 +243,9 @@ } if (!has) { - int count = 1; + int count; err: + count = 1; dprintf("node"__S":%llu Child list:\n", node->in_extent.start, node->in_extent.end, diff -Nru lustre-1.8.3/lustre/tests/large-scale.sh lustre-1.8.5+dfsg/lustre/tests/large-scale.sh --- lustre-1.8.3/lustre/tests/large-scale.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/large-scale.sh 2010-11-17 04:31:48.000000000 +0100 @@ -194,7 +194,7 @@ local IFree=$(inodes_available) [ $IFree -gt $nfiles ] || nfiles=$IFree - local dir=$DIR/$tdir + local dir=$DIR/d0.$TESTNAME mkdir -p $dir chmod 0777 $dir diff -Nru lustre-1.8.3/lustre/tests/lfscktest.sh lustre-1.8.5+dfsg/lustre/tests/lfscktest.sh --- lustre-1.8.3/lustre/tests/lfscktest.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/lfscktest.sh 2010-11-17 04:31:48.000000000 +0100 @@ -1,241 +1,284 @@ #!/bin/bash +# +# test e2fsck and lfsck to detect and fix filesystem corruption +# #set -vx set -e -TESTNAME="lfscktest" -TMP=${TMP:-/tmp} -MDSDB=${MDSDB:-$TMP/mdsdb} -OSTDB=${OSTDB:-$TMP/ostdb} -LOG=${LOG:-"$TMP/lfscktest.log"} -L2FSCK_PATH=${L2FSCK_PATH:-""} +LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} +. $LUSTRE/tests/test-framework.sh +init_test_env $@ +. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} + NUMFILES=${NUMFILES:-10} NUMDIRS=${NUMDIRS:-4} -GETSTRIPE=${GETSTRIPE:-"lfs getstripe"} -GETFATTR=${GETFATTR:-getfattr} -SETFATTR=${SETFATTR:-setfattr} -MAX_ERR=1 +OSTIDX=${OSTIDX:-0} # the OST index in LOV +OBJGRP=${OBJGRP:-0} # the OST object group -export PATH=$LFSCK_PATH:`dirname $0`:`dirname $0`/../utils:$PATH +[ -d "$SHARED_DIRECTORY" ] || \ + { skip "SHARED_DIRECTORY should be specified with a shared directory \ +which can be accessable on all of the nodes" && exit 0; } + +which getfattr > /dev/null 2>&1 || { skip "could not find getfattr" && exit 0; } +which setfattr > /dev/null 2>&1 || { skip "could not find setfattr" && exit 0; } + +MOUNT_2="" +check_and_setup_lustre + +assert_DIR + +# Create some dirs and files on the filesystem. +create_files_sub() { + local test_dir=$1 + local num_dirs=$2 + local file_name=$3 + local first_num=$4 + local last_num=$5 + local d e f + + for d in $(seq -f d%g $first_num $last_num); do + echo "creating files in $test_dir/$d" + for e in $(seq -f d%g $num_dirs); do + mkdir -p $test_dir/$d/$e || error "mkdir $test_dir/$d/$e failed" + for f in $(seq -f test%g $num_dirs); do + cp $file_name $test_dir/$d/$e/$f || \ + error "cp $file_name $test_dir/$d/$e/$f failed" + done + done + done +} -[ -z "`which $GETFATTR`" ] && echo "$0: $GETFATTR not found" && exit 5 -[ -z "`which $SETFATTR`" ] && echo "$0: $SETFATTR not found" && exit 6 +create_files() { + local test_dir=$1 + local num_dirs=$2 + local num_files=$3 + local f + + # create some files on the filesystem + local first_num=1 + local last_num=$num_dirs + create_files_sub $test_dir $num_dirs /etc/fstab $first_num $last_num + + # create files to be modified + for f in $(seq -f $test_dir/testfile.%g $((num_files * 3))); do + echo "creating $f" + cp /etc/termcap $f || error "cp /etc/termcap $f failed" + done + + # create some more files + first_num=$((num_dirs * 2 + 1)) + last_num=$((num_dirs * 2 + 3)) + create_files_sub $test_dir $num_dirs /etc/hosts $first_num $last_num + + # these should NOT be taken as duplicates + for f in $(seq -f $test_dir/d$last_num/linkfile.%g $num_files); do + echo "linking files in $test_dir/d$last_num" + cp /etc/hosts $f || error "cp /etc/hosts $f failed" + ln $f $f.link || error "ln $f $f.link failed" + done +} -LUSTRE=${LUSTRE:-`dirname $0`/..} -. $LUSTRE/tests/test-framework.sh -init_test_env $@ -. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} +# Get the objids for files on the OST (given the OST index and object group). +get_objects() { + local obdidx=$1 + shift + local group=$1 + shift + local ost_files="$@" + local ost_objids + ost_objids=$($LFS getstripe $ost_files | \ + awk '{if ($1 == '$obdidx' && $4 == '$group') print $2 }') + echo $ost_objids +} -remote_mds && skip "remote MDS" && exit 0 -remote_ost && skip "remote OST" && exit 0 +# Get the OST nodet name (given the OST index). +get_ost_node() { + local obdidx=$1 + local ost_uuid + local ost_node + local node + + ost_uuid=$($LFS osts | grep "^$obdidx: " | cut -d' ' -f2 | head -n1) + + for node in $(osts_nodes); do + do_node $node "lctl get_param -n obdfilter.*.uuid" | grep -q $ost_uuid + [ ${PIPESTATUS[1]} -eq 0 ] && ost_node=$node && break + done + [ -z "$ost_node" ] && \ + echo "failed to find the OST with index $obdidx" && return 1 + echo $ost_node +} -# if nothing mounted, don't nuke MOUNT variable needed in llmount.sh -WAS_MOUNTED=$(mounted_lustre_filesystems | head -1) -if [ -z "$WAS_MOUNTED" ]; then - # This code doesn't handle multiple mounts well, so nuke MOUNT2 variable - MOUNT2="" sh llmount.sh - MOUNT=$(mounted_lustre_filesystems) - [ -z "$MOUNT" ] && echo "NAME=$NAME not mounted" && exit 2 -else - MOUNT=${WAS_MOUNTED} -fi +# Get the OST target device (given the OST facet name and OST index). +get_ost_dev() { + local node=$1 + local obdidx=$2 + local ost_name + local ost_dev + + ost_name=$($LFS osts | grep "^$obdidx: " | cut -d' ' -f2 | \ + head -n1 | sed -e 's/_UUID$//') + + ost_dev=$(do_node $node "lctl get_param -n obdfilter.$ost_name.mntdev") + [ ${PIPESTATUS[0]} -ne 0 ] && \ + echo "failed to find the OST device with index $obdidx on $facet" && \ + return 1 + + if [[ $ost_dev = *loop* ]]; then + ost_dev=$(do_node $node "losetup $ost_dev" | \ + sed -e "s/.*(//" -e "s/).*//") + fi -DIR=$DIR/$TESTNAME -[ -z "`echo $DIR | grep $MOUNT`" ] && echo "$DIR not in $MOUNT" && exit 3 + echo $ost_dev +} -if [ "$WAS_MOUNTED" ]; then - LFSCK_SETUP=no - MAX_ERR=4 # max expected error from e2fsck -fi +# Get the file names to be duplicated or removed on the MDS. +get_files() { + local flavor=$1 + local test_dir=$2 + local num_files=$3 + local first last + local test_file + + case $flavor in + dup) + first=$((num_files + 1)) + last=$((num_files * 2)) + ;; + remove) + first=$((num_files * 2 + 1)) + last=$((num_files * 3)) + ;; + *) echo "get_files(): invalid flavor" && return 1 ;; + esac + + local files="" + local f + for f in $(seq -f testfile.%g $first $last); do + test_file=$test_dir/$f + files="$files $test_file" + done + files=$(echo $files | sed "s#$DIR/##g") + echo $files +} -get_mnt_devs() { - DEVS=`lctl get_param -n $1.*.mntdev` - for DEV in $DEVS; do - case $DEV in - *loop*) losetup $DEV | sed -e "s/.*(//" -e "s/).*//" ;; - *) echo $DEV ;; - esac - done -} - -if [ "$LFSCK_SETUP" != "no" ]; then - #Create test directory - # -- can't remove the mountpoint... - [ -z "$DIR" ] && rm -rf $DIR/* - mkdir -p $DIR - OSTCOUNT=`$LFS osts | grep -c "^[0-9]*: " || true` - - # Create some files on the filesystem - for d in `seq -f d%g $NUMDIRS`; do - echo "creating files in $DIR/$d" - for e in `seq -f d%g $NUMDIRS`; do - mkdir -p $DIR/$d/$e - for f in `seq -f test%g $NUMDIRS`; do - cp /etc/fstab $DIR/$d/$e/$f ||exit 5 - done - done - done - - # Create Files to be modified - for f in `seq -f $DIR/testfile.%g $((NUMFILES * 3))`; do - echo "creating $f" - cp /etc/termcap $f || exit 10 - done - - #Create some more files - for d in `seq -f d%g $((NUMDIRS * 2 + 1)) $((NUMDIRS * 2 + 3))`; do - echo "creating files in $DIR/$d" - for e in `seq -f d%g $NUMDIRS`; do - mkdir -p $DIR/$d/$e - for f in `seq -f test%g $NUMDIRS`; do - cp /etc/hosts $DIR/$d/$e/$f ||exit 15 - done - done - done - - # these should NOT be taken as duplicates - for f in `seq -f $DIR/$d/linkfile.%g $NUMFILES`; do - echo "linking files in $DIR/$d" - cp /etc/hosts $f - ln $f $f.link - done - - # Get objids for a file on the OST - OST_FILES=`seq -f $DIR/testfile.%g $NUMFILES` - OST_REMOVE=`$GETSTRIPE $OST_FILES | awk '$1 == 0 { print $2 }' | head -n $NUMFILES` - - export MDS_DUPE="" - for f in `seq -f testfile.%g $((NUMFILES + 1)) $((NUMFILES * 2))`; do - TEST_FILE=$DIR/$f - echo "DUPLICATING MDS file $TEST_FILE" - $GETSTRIPE -v $TEST_FILE >> $LOG || exit 20 - MDS_DUPE="$MDS_DUPE $TEST_FILE" - done - MDS_DUPE=`echo $MDS_DUPE | sed "s#$MOUNT/##g"` - - export MDS_REMOVE="" - for f in `seq -f testfile.%g $((NUMFILES * 2 + 1)) $((NUMFILES * 3))`; do - TEST_FILE=$DIR/$f - echo "REMOVING MDS file $TEST_FILE which has info:" - $GETSTRIPE -v $TEST_FILE >> $LOG || exit 30 - MDS_REMOVE="$MDS_REMOVE $TEST_FILE" - done - MDS_REMOVE=`echo $MDS_REMOVE | sed "s#$MOUNT/##g"` - - MDTDEVS=`get_mnt_devs mds` - OSTDEVS=`get_mnt_devs obdfilter` - OSTCOUNT=`echo $OSTDEVS | wc -w` - sh llmountcleanup.sh || exit 40 - - # Remove objects associated with files - echo "removing objects: `echo $OST_REMOVE`" - DEBUGTMP=`mktemp $TMP/debugfs.XXXXXXXXXX` - for i in $OST_REMOVE; do - echo "rm O/0/d$((i % 32))/$i" >> $DEBUGTMP - done - $DEBUGFS -w -f $DEBUGTMP `echo $OSTDEVS | cut -d' ' -f 1` - RET=$? - rm $DEBUGTMP - [ $RET -ne 0 ] && exit 50 - - SAVE_PWD=$PWD - [ "$FSTYPE" = "ldiskfs" ] && load_module ../ldiskfs/ldiskfs/ldiskfs - mount -t $FSTYPE -o loop $MDSDEV $MOUNT || exit 60 - do_umount() { - trap 0 - cd $SAVE_PWD - umount -f $MOUNT - } - trap do_umount EXIT - - #Remove files from mds - for f in $MDS_REMOVE; do - rm $MOUNT/ROOT/$f || exit 70 - done - - #Create EAs on files so objects are referenced from different files - ATTRTMP=`mktemp $TMP/setfattr.XXXXXXXXXX` - cd $MOUNT/ROOT || exit 78 - for f in $MDS_DUPE; do - touch $f.bad || exit 74 - getfattr -n trusted.lov $f | sed "s#$f#&.bad#" > $ATTRTMP - setfattr --restore $ATTRTMP || exit 80 - done - cd $SAVE_PWD - rm $ATTRTMP +# Remove objects associated with files. +remove_objects() { + local node=$1 + shift + local ostdev=$1 + shift + local group=$1 + shift + local objids="$@" + local tmp + local i + local rc + + echo "removing objects from $ostdev on $facet: $objids" + tmp=$(mktemp $SHARED_DIRECTORY/debugfs.XXXXXXXXXX) + for i in $objids; do + echo "rm O/$group/d$((i % 32))/$i" >> $tmp + done + + do_node $node "$DEBUGFS -w -f $tmp $ostdev" + rc=${PIPESTATUS[0]} + rm -f $tmp - do_umount -else - MDTDEVS=`get_mnt_devs mds` - OSTDEVS=`get_mnt_devs obdfilter` - OSTCOUNT=`echo $OSTDEVS | wc -w` -fi # LFSCK_SETUP - -# Run e2fsck to get mds and ost info -# a return status of 1 indicates e2fsck successfuly fixed problems found -set +e - -echo "$E2FSCK -d -v -fn --mdsdb $MDSDB $MDSDEV" -df > /dev/null # update statfs data on disk -$E2FSCK -d -v -fn --mdsdb $MDSDB $MDSDEV -RET=$? -[ $RET -gt $MAX_ERR ] && echo "$E2FSCK returned $RET" && exit 90 || true - -export OSTDB_LIST="" -i=0 -for OSTDEV in $OSTDEVS; do - df > /dev/null # update statfs data on disk - $E2FSCK -d -v -fn --mdsdb $MDSDB --ostdb $OSTDB-$i $OSTDEV - RET=$? - [ $RET -gt $MAX_ERR ] && echo "$E2FSCK returned $RET" && exit 100 - OSTDB_LIST="$OSTDB_LIST $OSTDB-$i" - i=$((i + 1)) -done + return $rc +} -#Remount filesystem -[ "`mount | grep $MOUNT`" ] || setupall +# Remove files from MDS. +remove_files() { + do_rpc_nodes $(facet_host $1) remove_mdt_files $@ +} + +# Create EAs on files so objects are referenced from different files. +duplicate_files() { + do_rpc_nodes $(facet_host $1) duplicate_mdt_files $@ +} -# need to turn off shell error detection to get proper error return +#********************************* Main Flow **********************************# + +# get the server target devices +get_svr_devs + +if [ "$SKIP_LFSCK" = "no" ] && is_empty_fs $MOUNT; then + # create test directory + TESTDIR=$DIR/d0.$TESTSUITE + mkdir -p $TESTDIR || error "mkdir $TESTDIR failed" + + # create some dirs and files on the filesystem + create_files $TESTDIR $NUMDIRS $NUMFILES + + # get the objids for files in group $OBJGRP on the OST with index $OSTIDX + OST_REMOVE=$(get_objects $OSTIDX $OBJGRP \ + $(seq -f $TESTDIR/testfile.%g $NUMFILES)) + + # get the node name and target device for the OST with index $OSTIDX + OSTNODE=$(get_ost_node $OSTIDX) || error "get_ost_node by index $OSTIDX failed" + OSTDEV=$(get_ost_dev $OSTNODE $OSTIDX) || \ + error "get_ost_dev $OSTNODE $OSTIDX failed" + + # get the file names to be duplicated on the MDS + MDS_DUPE=$(get_files dup $TESTDIR $NUMFILES) || error "$MDS_DUPE" + # get the file names to be removed from the MDS + MDS_REMOVE=$(get_files remove $TESTDIR $NUMFILES) || error "$MDS_REMOVE" + + stopall -f || error "cleanupall failed" + + # remove objects associated with files in group $OBJGRP + # on the OST with index $OSTIDX + remove_objects $OSTNODE $OSTDEV $OBJGRP $OST_REMOVE || \ + error "removing objects failed" + + # remove files from MDS + remove_files mds $MDSDEV $MDS_REMOVE || error "removing files failed" + + # create EAs on files so objects are referenced from different files + duplicate_files mds $MDSDEV $MDS_DUPE || \ + error "duplicating files failed" + FSCK_MAX_ERR=1 # file system errors corrected +else # $SKIP_LFSCK = yes || !is_empty_fs $MOUNT + FSCK_MAX_ERR=4 # file system errors left uncorrected +fi + +# Test 1a - check and repair the filesystem # lfsck will return 1 if the filesystem had errors fixed -echo "LFSCK TEST 1" -echo "lfsck -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT" -echo y | lfsck -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT -RET=$? -[ $RET -eq 0 ] && echo "clean after first check" && exit 0 -echo "LFSCK TEST 1 - finished with rc=$RET" -[ $RET -gt $MAX_ERR ] && exit 110 || true - -# make sure everything gets to the backing store -sync; sleep 2; sync - -echo "LFSCK TEST 2" -echo "$E2FSCK -d -v -fn --mdsdb $MDSDB $MDSDEV" -df > /dev/null # update statfs data on disk -$E2FSCK -d -v -fn --mdsdb $MDSDB $MDSDEV -RET=$? -[ $RET -gt $MAX_ERR ] && echo "$E2FSCK returned $RET" && exit 123 || true - -i=0 -export OSTDB_LIST="" -for OSTDEV in $OSTDEVS; do - df > /dev/null # update statfs data on disk - $E2FSCK -d -v -fn --mdsdb $MDSDB --ostdb $OSTDB-$i $OSTDEV - RET=$? - [ $RET -gt $MAX_ERR ] && echo "$E2FSCK returned $RET" && exit 124 - OSTDB_LIST="$OSTDB_LIST $OSTDB-$i" - i=$((i + 1)) -done - -echo "LFSCK TEST 2" -echo "lfsck -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT" -lfsck -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT -RET=$? -echo "LFSCK TEST 2 - finished with rc=$RET" -[ $RET -ne 0 ] && exit 125 || true -if [ -z "$WAS_MOUNTED" ]; then - sh llmountcleanup.sh || exit 120 +# run e2fsck to generate databases used for lfsck +generate_db +if [ "$SKIP_LFSCK" != "no" ]; then + echo "skip lfsck" +else + # remount filesystem + REFORMAT="" + check_and_setup_lustre + + # run lfsck + rc=0 + run_lfsck || rc=$? + if [ $rc -eq 0 ]; then + echo "clean after the first check" + else + # run e2fsck again to generate databases used for lfsck + generate_db + + # run lfsck again + rc=0 + run_lfsck || rc=$? + if [ $rc -eq 0 ]; then + echo "clean after the second check" + else + error "lfsck test 2 - finished with rc=$rc" + fi + fi fi -#Cleanup -rm -f $MDSDB $OSTDB-* || true +equals_msg $(basename $0): test complete, cleaning up + +LFSCK_ALWAYS=no +check_and_cleanup_lustre +[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && \ + grep -q FAIL $TESTSUITELOG && exit 1 || true echo "$0: completed" diff -Nru lustre-1.8.3/lustre/tests/lnet-selftest.sh lustre-1.8.5+dfsg/lustre/tests/lnet-selftest.sh --- lustre-1.8.3/lustre/tests/lnet-selftest.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/lnet-selftest.sh 2010-11-17 04:31:48.000000000 +0100 @@ -99,7 +99,7 @@ echo $LST run b echo sleep 1 - echo "$LST stat --delay 10 c s &" + echo "$LST stat --delay 10 --timeout 10 c s &" echo 'pid=$!' echo 'trap "cleanup $pid" INT TERM' echo sleep $smoke_DURATION diff -Nru lustre-1.8.3/lustre/tests/lockorder.sh lustre-1.8.5+dfsg/lustre/tests/lockorder.sh --- lustre-1.8.3/lustre/tests/lockorder.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/lockorder.sh 2010-06-25 06:23:17.000000000 +0200 @@ -42,7 +42,7 @@ MAXDIR=$DIRTMP MAXRES=$DIRRES fi - if [ $FILERES -lt $MINRES ]; then + if [ $FILERES -lt $MINRES -o -z "$MINFILE" ]; then [ -f "$MINFILE" ] && rm $MINFILE MINFILE=$FILETMP MINRES=$FILERES diff -Nru lustre-1.8.3/lustre/tests/Makefile.am lustre-1.8.5+dfsg/lustre/tests/Makefile.am --- lustre-1.8.3/lustre/tests/Makefile.am 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/Makefile.am 2010-11-17 04:31:48.000000000 +0100 @@ -22,7 +22,8 @@ noinst_SCRIPTS += recovery-mds-scale.sh run_dd.sh run_tar.sh run_iozone.sh noinst_SCRIPTS += run_dbench.sh run_IOR.sh recovery-double-scale.sh noinst_SCRIPTS += recovery-random-scale.sh parallel-scale.sh metadata-updates.sh -noinst_SCRIPTS += ost-pools.sh rpc.sh lnet-selftest.sh +noinst_SCRIPTS += ost-pools.sh rpc.sh lnet-selftest.sh obdfilter-survey.sh mmp.sh +noinst_SCRIPTS += sgpdd-survey.sh nobase_noinst_SCRIPTS = cfg/local.sh nobase_noinst_SCRIPTS += acl/make-tree acl/run cfg/ncli.sh nobase_noinst_SCRIPTS += racer/dir_create.sh racer/file_create.sh racer/file_list.sh diff -Nru lustre-1.8.3/lustre/tests/Makefile.in lustre-1.8.5+dfsg/lustre/tests/Makefile.in --- lustre-1.8.3/lustre/tests/Makefile.in 2010-04-10 02:29:12.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/Makefile.in 2010-11-17 04:32:03.000000000 +0100 @@ -304,7 +304,7 @@ DIST_SUBDIRS := mpi noinst_DATA = disk1_6.tar.bz2 -noinst_SCRIPTS = leak_finder.pl llmount.sh llmountcleanup.sh functions.sh test-framework.sh runvmstat runiozone runtests sanity.sh rundbench acceptance-small.sh compile.sh conf-sanity.sh insanity.sh lfscktest.sh oos.sh oos2.sh llog-test.sh recovery-small.sh replay-dual.sh sanity-quota.sh replay-ost-single.sh replay-single.sh run-llog.sh sanityN.sh large-scale.sh runracer performance-sanity.sh mdsrate-create-small.sh mdsrate-create-large.sh mdsrate-lookup-1dir.sh mdsrate-lookup-10dirs.sh mdsrate-stat-small.sh mdsrate-stat-large.sh replay-vbr.sh sanity-benchmark.sh lockorder.sh socketclient socketserver runmultiop_bg_pause recovery-mds-scale.sh run_dd.sh run_tar.sh run_iozone.sh run_dbench.sh run_IOR.sh recovery-double-scale.sh recovery-random-scale.sh parallel-scale.sh metadata-updates.sh ost-pools.sh rpc.sh lnet-selftest.sh +noinst_SCRIPTS = leak_finder.pl llmount.sh llmountcleanup.sh functions.sh test-framework.sh runvmstat runiozone runtests sanity.sh rundbench acceptance-small.sh compile.sh conf-sanity.sh insanity.sh lfscktest.sh oos.sh oos2.sh llog-test.sh recovery-small.sh replay-dual.sh sanity-quota.sh replay-ost-single.sh replay-single.sh run-llog.sh sanityN.sh large-scale.sh runracer performance-sanity.sh mdsrate-create-small.sh mdsrate-create-large.sh mdsrate-lookup-1dir.sh mdsrate-lookup-10dirs.sh mdsrate-stat-small.sh mdsrate-stat-large.sh replay-vbr.sh sanity-benchmark.sh lockorder.sh socketclient socketserver runmultiop_bg_pause recovery-mds-scale.sh run_dd.sh run_tar.sh run_iozone.sh run_dbench.sh run_IOR.sh recovery-double-scale.sh recovery-random-scale.sh parallel-scale.sh metadata-updates.sh ost-pools.sh rpc.sh lnet-selftest.sh obdfilter-survey.sh mmp.sh sgpdd-survey.sh nobase_noinst_SCRIPTS = cfg/local.sh acl/make-tree acl/run cfg/ncli.sh racer/dir_create.sh racer/file_create.sh racer/file_list.sh racer/file_rm.sh racer/racer.sh racer/file_concat.sh racer/file_link.sh racer/file_rename.sh racer/file_symlink.sh nobase_noinst_DATA = acl/cp.test acl/getfacl-noacl.test acl/inheritance.test acl/misc.test acl/permissions.test acl/setfacl.test diff -Nru lustre-1.8.3/lustre/tests/mdsrate-create-large.sh lustre-1.8.5+dfsg/lustre/tests/mdsrate-create-large.sh --- lustre-1.8.3/lustre/tests/mdsrate-create-large.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/mdsrate-create-large.sh 2010-11-17 04:31:48.000000000 +0100 @@ -32,7 +32,7 @@ check_and_setup_lustre -IFree=$(inodes_available) +IFree=$(mdsrate_inodes_available) if [ $IFree -lt $NUM_FILES ]; then NUM_FILES=$IFree fi @@ -66,7 +66,7 @@ log "===== $0 ### 1 NODE UNLINK ###" if [ -f "$LOG" ]; then - CREATED=$(awk '/total:/ { print $7 }' $LOG) + CREATED=$(sed -n '/^Rate:/s/^.* \([0-9]*\) creates .*/\1/p' $LOG) [ $CREATED -gt 0 ] && NUM_FILES=$CREATED fi @@ -81,7 +81,7 @@ fi fi -IFree=$(inodes_available) +IFree=$(mdsrate_inodes_available) if [ $IFree -lt $NUM_FILES ]; then NUM_FILES=$IFree fi @@ -107,7 +107,7 @@ log "===== $0 ### $NUM_CLIENTS NODES UNLINK ###" if [ -f "$LOG" ]; then - CREATED=$(awk '/total:/ { print $7 }' $LOG) + CREATED=$(sed -n '/^Rate:/s/^.* \([0-9]*\) creates .*/\1/p' $LOG) [ $CREATED -gt 0 ] && NUM_FILES=$CREATED fi diff -Nru lustre-1.8.3/lustre/tests/mdsrate-create-small.sh lustre-1.8.5+dfsg/lustre/tests/mdsrate-create-small.sh --- lustre-1.8.3/lustre/tests/mdsrate-create-small.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/mdsrate-create-small.sh 2010-11-17 04:31:48.000000000 +0100 @@ -1,4 +1,4 @@ -#!/bin/bash + #!/bin/bash # # This test was used in a set of CMD3 tests (cmd3-3 test). @@ -40,7 +40,7 @@ check_and_setup_lustre -IFree=$(inodes_available) +IFree=$(mdsrate_inodes_available) if [ $IFree -lt $NUM_FILES ]; then NUM_FILES=$IFree fi @@ -78,7 +78,7 @@ log "===== $0 ### 1 NODE UNLINK ###" if [ -f "$LOG" ]; then - CREATED=$(awk '/total:/ { print $7 }' $LOG) + CREATED=$(sed -n '/^Rate:/s/^.* \([0-9]*\) creates .*/\1/p' $LOG) [ $CREATED -gt 0 ] && NUM_FILES=$CREATED fi @@ -94,7 +94,7 @@ fi fi -IFree=$(inodes_available) +IFree=$(mdsrate_inodes_available) if [ $IFree -lt $NUM_FILES ]; then NUM_FILES=$IFree fi @@ -126,7 +126,7 @@ log "===== $0 ### $NUM_CLIENTS NODES UNLINK with $THREADS_PER_CLIENT threads per client ###" if [ -f "$LOG" ]; then - CREATED=$(awk '/total:/ { print $7 }' $LOG) + CREATED=$(sed -n '/^Rate:/s/^.* \([0-9]*\) creates .*/\1/p' $LOG) [ $CREATED -gt 0 ] && NUM_FILES=$CREATED fi diff -Nru lustre-1.8.3/lustre/tests/mdsrate-lookup-10dirs.sh lustre-1.8.5+dfsg/lustre/tests/mdsrate-lookup-10dirs.sh --- lustre-1.8.3/lustre/tests/mdsrate-lookup-10dirs.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/mdsrate-lookup-10dirs.sh 2010-11-17 04:31:48.000000000 +0100 @@ -40,7 +40,7 @@ mkdir -p $TESTDIR chmod 0777 $TESTDIR -IFree=$(inodes_available) +IFree=$(($(mdsrate_inodes_available) - NUM_DIRS)) if [ $IFree -lt $((NUM_FILES * NUM_DIRS)) ]; then NUM_FILES=$((IFree / NUM_DIRS)) fi diff -Nru lustre-1.8.3/lustre/tests/mdsrate-lookup-1dir.sh lustre-1.8.5+dfsg/lustre/tests/mdsrate-lookup-1dir.sh --- lustre-1.8.3/lustre/tests/mdsrate-lookup-1dir.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/mdsrate-lookup-1dir.sh 2010-11-17 04:31:48.000000000 +0100 @@ -38,7 +38,7 @@ mkdir -p $TESTDIR chmod 0777 $TESTDIR -IFree=$(inodes_available) +IFree=$(mdsrate_inodes_available) if [ $IFree -lt $NUM_FILES ]; then NUM_FILES=$IFree fi diff -Nru lustre-1.8.3/lustre/tests/mdsrate-stat-large.sh lustre-1.8.5+dfsg/lustre/tests/mdsrate-stat-large.sh --- lustre-1.8.3/lustre/tests/mdsrate-stat-large.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/mdsrate-stat-large.sh 2010-11-17 04:31:48.000000000 +0100 @@ -25,9 +25,6 @@ NUM_FILES=${NUM_FILES:-1000000} TIME_PERIOD=${TIME_PERIOD:-600} # seconds -# --random_order (default) -OR- --readdir_order -DIR_ORDER=${DIR_ORDER:-"--readdir_order"} - LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log} CLIENT=$SINGLECLIENT NODES_TO_USE=${NODES_TO_USE:-$CLIENTS} @@ -43,7 +40,7 @@ mkdir -p $TESTDIR chmod 0777 $TESTDIR -IFree=$(inodes_available) +IFree=$(mdsrate_inodes_available) if [ $IFree -lt $NUM_FILES ]; then NUM_FILES=$IFree fi @@ -70,8 +67,7 @@ fi COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --stat --time ${TIME_PERIOD} - --dir ${TESTDIR} --nfiles ${NUM_FILES} --filefmt 'f%%d' - ${DIR_ORDER} ${SEED_OPTION}" + --dir ${TESTDIR} --nfiles ${NUM_FILES} --filefmt 'f%%d'" # 1 if [ -n "$NOSINGLE" ]; then diff -Nru lustre-1.8.3/lustre/tests/mdsrate-stat-small.sh lustre-1.8.5+dfsg/lustre/tests/mdsrate-stat-small.sh --- lustre-1.8.3/lustre/tests/mdsrate-stat-small.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/mdsrate-stat-small.sh 2010-11-17 04:31:48.000000000 +0100 @@ -25,9 +25,6 @@ NUM_FILES=${NUM_FILES:-1000000} TIME_PERIOD=${TIME_PERIOD:-600} # seconds -# --random_order (default) -OR- --readdir_order -DIR_ORDER=${DIR_ORDER:-"--readdir_order"} - LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log} CLIENT=$SINGLECLIENT NODES_TO_USE=${NODES_TO_USE:-$CLIENTS} @@ -43,7 +40,7 @@ mkdir -p $TESTDIR chmod 0777 $TESTDIR -IFree=$(inodes_available) +IFree=$(mdsrate_inodes_available) if [ $IFree -lt $NUM_FILES ]; then NUM_FILES=$IFree fi @@ -70,8 +67,7 @@ fi COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --stat --time ${TIME_PERIOD} - --dir ${TESTDIR} --nfiles ${NUM_FILES} --filefmt 'f%%d' - ${DIR_ORDER} ${SEED_OPTION}" + --dir ${TESTDIR} --nfiles ${NUM_FILES} --filefmt 'f%%d'" # 1 if [ -n "$NOSINGLE" ]; then diff -Nru lustre-1.8.3/lustre/tests/metadata-updates.sh lustre-1.8.5+dfsg/lustre/tests/metadata-updates.sh --- lustre-1.8.3/lustre/tests/metadata-updates.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/metadata-updates.sh 2010-11-17 04:31:48.000000000 +0100 @@ -29,6 +29,8 @@ test_UID=$(id -u) test_GID=$(id -g) +SUMFILE=$TESTDIR/mdsum + NUM_FILES=1000 WRITE_DISJOINT=${WRITE_DISJOINT:-$(which write_disjoint 2> /dev/null)} || true @@ -45,6 +47,7 @@ DIR=$TESTDIR/\\\$(hostname); TESTFILE=\\\$DIR/$FILE; rm -f \\\$TESTFILE; +rm -f $SUMFILE; rmdir \\\$DIR 2>/dev/null; mkdir -p \\\$DIR" || return ${PIPESTATUS[0]} return 0; @@ -64,17 +67,15 @@ TESTFILE=$TESTDIR/\\\$(hostname)/$FILE; dd if=/dev/zero of=\\\$TESTFILE bs=$FILE_SIZE count=1 2>/dev/null || exit 54; echo \\\$(hostname) | dd of=\\\$TESTFILE conv=notrunc 2>/dev/null || exit 55; -md5sum \\\$TESTFILE; " || return ${PIPESTATUS[0]} +md5sum \\\$TESTFILE >> $SUMFILE; " || return ${PIPESTATUS[0]} return 0 } do_check_data () { - local sums=$1 - local HOST echo "Checking file(s) data ... md5sum : " - echo "$sums" + cat $SUMFILE - do_nodesv $NODES_TO_USE "echo \\\"$sums\\\" | md5sum --check $sum" || \ + do_nodesv $NODES_TO_USE "md5sum --check $SUMFILE" || \ return ${PIPESTATUS[0]} return 0 } @@ -215,8 +216,8 @@ echo "Part 1. create file(s) (mknod (2)), write data, check data, check file attributes." do_mknod || error_exit "mknod failed" echo "Writing data to file(s) ... store md5sum ... " -sums="$(do_write)" || error_exit "write data failed" -do_check_data "$sums" || error_exit "md5sum verification failed" +do_write || error_exit "write data failed" +do_check_data || error_exit "md5sum verification failed" get_stat || { error_noexit "attributes check failed" ; STATUS=1; } # file(s) attributes modification diff -Nru lustre-1.8.3/lustre/tests/mmp.sh lustre-1.8.5+dfsg/lustre/tests/mmp.sh --- lustre-1.8.3/lustre/tests/mmp.sh 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/tests/mmp.sh 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,627 @@ +#!/bin/bash +# vim:expandtab:shiftwidth=4:softtabstop=4:tabstop=4: +# +# Tests for multiple mount protection (MMP) feature. +# +# Run select tests by setting ONLY, or as arguments to the script. +# Skip specific tests by setting EXCEPT. +# +# e.g. ONLY="5 6" or ONLY="`seq 8 11`" or EXCEPT="7" +set -e + +ONLY=${ONLY:-"$*"} + +# bug number for skipped test: +ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-"$MMP_EXCEPT"} +# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT! + +SRCDIR=$(cd $(dirname $0); echo $PWD) +export PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH:/sbin + +LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} +. $LUSTRE/tests/test-framework.sh +init_test_env $@ +. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} + +remote_mds_nodsh && skip "remote MDS with nodsh" && exit 0 +remote_ost_nodsh && skip "remote OST with nodsh" && exit 0 + +# unmount and cleanup the Lustre filesystem +MMP_RESTORE_MOUNT=false +if is_mounted $MOUNT || is_mounted $MOUNT2; then + cleanupall + MMP_RESTORE_MOUNT=true +fi + +SAVED_FAIL_ON_ERROR=$FAIL_ON_ERROR +FAIL_ON_ERROR=false + +build_test_filter + +# Get the failover facet. +get_failover_facet() { + local facet=$1 + local failover_facet=${facet}failover + + local host=$(facet_host $facet) + local failover_host=$(facet_host $failover_facet) + + [ -z "$failover_host" -o "$host" = "$failover_host" ] && \ + failover_facet=$facet + + echo $failover_facet +} + +# Initiate the variables for Lustre servers and targets. +init_vars() { + MMP_MDS=mds + MMP_MDS_FAILOVER=$(get_failover_facet $MMP_MDS) + + MMP_MDSDEV=$MDSDEV + + MMP_OSS=${MMP_OSS:-ost1} + MMP_OSS_FAILOVER=$(get_failover_facet $MMP_OSS) + + local oss_num=$(echo $MMP_OSS | tr -d "ost") + MMP_OSTDEV=$(ostdevname $oss_num) +} + +# Stop the MDS and OSS services on the primary or failover servers. +stop_services() { + local flavor=$1 + shift + local opts="$@" + local mds_facet + local oss_facet + + if [ "$flavor" = "failover" ]; then + mds_facet=$MMP_MDS_FAILOVER + oss_facet=$MMP_OSS_FAILOVER + else + mds_facet=$MMP_MDS + oss_facet=$MMP_OSS + fi + + stop $mds_facet $opts || return ${PIPESTATUS[0]} + stop $oss_facet $opts || return ${PIPESTATUS[0]} +} + +# Enable the MMP feature. +enable_mmp() { + local facet=$1 + local device=$2 + + do_facet $facet "$TUNE2FS -O mmp $device" + return ${PIPESTATUS[0]} +} + +# Disable the MMP feature. +disable_mmp() { + local facet=$1 + local device=$2 + + do_facet $facet "$TUNE2FS -O ^mmp $device" + return ${PIPESTATUS[0]} +} + +# Reset the MMP block (if any) back to the clean state. +reset_mmp_block() { + local facet=$1 + local device=$2 + + do_facet $facet "$TUNE2FS -f -E clear-mmp $device" + return ${PIPESTATUS[0]} +} + +# Check whether the MMP feature is enabled or not. +mmp_is_enabled() { + local facet=$1 + local device=$2 + + do_facet $facet "$DUMPE2FS -h $device | grep mmp" + return ${PIPESTATUS[0]} +} + +# Get MMP update interval (in seconds) from the Lustre server target. +get_mmp_update_interval() { + local facet=$1 + local device=$2 + local interval + + interval=$(do_facet $facet "$DEBUGFS -c -R dump_mmp $device 2>/dev/null \ + | grep 'MMP Update Interval' | cut -d' ' -f4") + [ -z "$interval" ] && interval=1 + + echo $interval +} + +# Get MMP check interval (in seconds) from the Lustre server target. +get_mmp_check_interval() { + local facet=$1 + local device=$2 + local interval + + interval=$(do_facet $facet "$DEBUGFS -c -R dump_mmp $device 2>/dev/null \ + | grep 'MMP Check Interval' | cut -d' ' -f4") + [ -z "$interval" ] && interval=5 + + echo $interval +} + +# Enable the MMP feature on the Lustre server targets. +mmp_init() { + init_vars + + # The MMP feature is automatically enabled by mkfs.lustre for + # new file system at format time if failover is being used. + # Otherwise, the Lustre administrator has to manually enable + # this feature when the file system is unmounted. + + if [ -z "$mdsfailover_HOST" ]; then + log "Failover is not used on MDS, enabling MMP manually..." + enable_mmp $MMP_MDS $MMP_MDSDEV || \ + error "failed to enable MMP on $MMP_MDSDEV on $MMP_MDS" + fi + + local var=${MMP_OSS}failover_HOST + + if [ -z "${!var}" ]; then + log "Failover is not used on OSS, enabling MMP manually..." + enable_mmp $MMP_OSS $MMP_OSTDEV || \ + error "failed to enable MMP on $MMP_OSTDEV on $MMP_OSS" + fi + + # check whether the MMP feature is enabled or not + mmp_is_enabled $MMP_MDS $MMP_MDSDEV || \ + error "MMP was not enabled on $MMP_MDSDEV on $MMP_MDS" + + mmp_is_enabled $MMP_OSS $MMP_OSTDEV || \ + error "MMP was not enabled on $MMP_OSTDEV on $MMP_OSS" +} + +# Disable the MMP feature on the Lustre server targets +# which did not use failover. +mmp_fini() { + + if [ -z "$mdsfailover_HOST" ]; then + log "Failover is not used on MDS, disabling MMP manually..." + disable_mmp $MMP_MDS $MMP_MDSDEV || \ + error "failed to disable MMP on $MMP_MDSDEV on $MMP_MDS" + mmp_is_enabled $MMP_MDS $MMP_MDSDEV && \ + error "MMP was not disabled on $MMP_MDSDEV on $MMP_MDS" + fi + + if [ -z "$ostfailover_HOST" ]; then + log "Failover is not used on OSS, disabling MMP manually..." + disable_mmp $MMP_OSS $MMP_OSTDEV || \ + error "failed to disable MMP on $MMP_OSTDEV on $MMP_OSS" + mmp_is_enabled $MMP_OSS $MMP_OSTDEV && \ + error "MMP was not disabled on $MMP_OSTDEV on $MMP_OSS" + fi + + return 0 +} + +# Mount the shared target on the failover server after some interval it's +# mounted on the primary server. +mount_after_interval_sub() { + local interval=$1 + shift + local device=$1 + shift + local facet=$1 + shift + local opts="$@" + local failover_facet=$(get_failover_facet $facet) + + local mount_pid + local first_mount_rc=0 + local second_mount_rc=0 + + log "Mounting $device on $facet..." + start $facet $device $opts & + mount_pid=$! + + if [ $interval -ne 0 ]; then + log "sleep $interval..." + sleep $interval + fi + + log "Mounting $device on $failover_facet..." + start $failover_facet $device $opts + second_mount_rc=${PIPESTATUS[0]} + + wait $mount_pid + first_mount_rc=${PIPESTATUS[0]} + + if [ $second_mount_rc -eq 0 -a $first_mount_rc -eq 0 ]; then + error_noexit "one mount delayed by mmp interval $interval should fail" + stop $facet || return ${PIPESTATUS[0]} + [ "$failover_facet" != "$facet" ] && stop $failover_facet || \ + return ${PIPESTATUS[0]} + return 1 + elif [ $second_mount_rc -ne 0 -a $first_mount_rc -ne 0 ]; then + error_noexit "failed to mount on the failover pair $facet,$failover_facet" + return $first_mount_rc + fi + + return 0 +} + +mount_after_interval() { + local mdt_interval=$1 + local ost_interval=$2 + local rc=0 + + mount_after_interval_sub $mdt_interval $MMP_MDSDEV $MMP_MDS \ + $MDS_MOUNT_OPTS || return ${PIPESTATUS[0]} + + echo + mount_after_interval_sub $ost_interval $MMP_OSTDEV $MMP_OSS $OST_MOUNT_OPTS + rc=${PIPESTATUS[0]} + if [ $rc -ne 0 ]; then + stop $MMP_MDS + return $rc + fi + + return 0 +} + +# Mount the shared target on the failover server +# during unmounting it on the primary server. +mount_during_unmount() { + local device=$1 + shift + local facet=$1 + shift + local mnt_opts="$@" + local failover_facet=$(get_failover_facet $facet) + + local unmount_pid + local unmount_rc=0 + local mount_rc=0 + + log "Mounting $device on $facet..." + start $facet $device $mnt_opts || return ${PIPESTATUS[0]} + + stop $facet & + unmount_pid=$! + + start $failover_facet $device $mnt_opts + mount_rc=${PIPESTATUS[0]} + + wait $unmount_pid + unmount_rc=${PIPESTATUS[0]} + + if [ $mount_rc -eq 0 ]; then + error_noexit "mount during unmount of the first filesystem should fail" + stop $failover_facet || return ${PIPESTATUS[0]} + return 1 + fi + + if [ $unmount_rc -ne 0 ]; then + error_noexit "unmount the $device on $facet should succeed" + return $unmount_rc + fi + + return 0 +} + +# Mount the shared target on the failover server +# after clean unmounting it on the primary server. +mount_after_unmount() { + local device=$1 + shift + local facet=$1 + shift + local mnt_opts="$@" + local failover_facet=$(get_failover_facet $facet) + + log "Mounting $device on $facet..." + start $facet $device $mnt_opts || return ${PIPESTATUS[0]} + + log "Unmounting $device on $facet..." + stop $facet || return ${PIPESTATUS[0]} + + log "Mounting $device on $failover_facet..." + start $failover_facet $device $mnt_opts || return ${PIPESTATUS[0]} + + return 0 +} + +# Mount the shared target on the failover server after rebooting +# the primary server. +mount_after_reboot() { + local device=$1 + shift + local facet=$1 + shift + local mnt_opts="$@" + local failover_facet=$(get_failover_facet $facet) + local rc=0 + + log "Mounting $device on $facet..." + start $facet $device $mnt_opts || return ${PIPESTATUS[0]} + + if [ "$FAILURE_MODE" = "HARD" ]; then + shutdown_facet $facet + reboot_facet $facet + wait_for_facet $facet + else + replay_barrier_nodf $facet + fi + + log "Mounting $device on $failover_facet..." + start $failover_facet $device $mnt_opts + rc=${PIPESTATUS[0]} + if [ $rc -ne 0 ]; then + error_noexit "mount $device on $failover_facet should succeed" + stop $facet || return ${PIPESTATUS[0]} + return $rc + fi + + return 0 +} + +# Run e2fsck on the Lustre server target. +run_e2fsck() { + local facet=$1 + shift + local device=$1 + shift + local opts="$@" + + log "Running e2fsck on the device $device on $facet..." + do_facet $facet "$E2FSCK $opts $device" + return ${PIPESTATUS[0]} +} + +# Check whether there are failover pairs for MDS and OSS servers. +check_failover_pair() { + [ "$MMP_MDS" = "$MMP_MDS_FAILOVER" -o "$MMP_OSS" = "$MMP_OSS_FAILOVER" ] \ + && { skip_env "failover pair is needed" && return 1; } + return 0 +} + +mmp_init + +# Test 1 - two mounts at the same time. +test_1() { + check_failover_pair || return 0 + + mount_after_interval 0 0 || return ${PIPESTATUS[0]} + stop_services primary || return ${PIPESTATUS[0]} +} +run_test 1 "two mounts at the same time" + +# Test 2 - one mount delayed by mmp update interval. +test_2() { + check_failover_pair || return 0 + + local mdt_interval=$(get_mmp_update_interval $MMP_MDS $MMP_MDSDEV) + local ost_interval=$(get_mmp_update_interval $MMP_OSS $MMP_OSTDEV) + + mount_after_interval $mdt_interval $ost_interval || return ${PIPESTATUS[0]} + stop_services primary || return ${PIPESTATUS[0]} +} +run_test 2 "one mount delayed by mmp update interval" + +# Test 3 - one mount delayed by 2x mmp check interval. +test_3() { + check_failover_pair || return 0 + + local mdt_interval=$(get_mmp_check_interval $MMP_MDS $MMP_MDSDEV) + local ost_interval=$(get_mmp_check_interval $MMP_OSS $MMP_OSTDEV) + + mdt_interval=$((2 * $mdt_interval + 1)) + ost_interval=$((2 * $ost_interval + 1)) + + mount_after_interval $mdt_interval $ost_interval || return ${PIPESTATUS[0]} + stop_services primary || return ${PIPESTATUS[0]} +} +run_test 3 "one mount delayed by 2x mmp check interval" + +# Test 4 - one mount delayed by > 2x mmp check interval. +test_4() { + check_failover_pair || return 0 + + local mdt_interval=$(get_mmp_check_interval $MMP_MDS $MMP_MDSDEV) + local ost_interval=$(get_mmp_check_interval $MMP_OSS $MMP_OSTDEV) + + mdt_interval=$((4 * $mdt_interval)) + ost_interval=$((4 * $ost_interval)) + + mount_after_interval $mdt_interval $ost_interval || return ${PIPESTATUS[0]} + stop_services primary || return ${PIPESTATUS[0]} +} +run_test 4 "one mount delayed by > 2x mmp check interval" + +# Test 5 - mount during unmount of the first filesystem. +test_5() { + local rc=0 + check_failover_pair || return 0 + + mount_during_unmount $MMP_MDSDEV $MMP_MDS $MDS_MOUNT_OPTS || \ + return ${PIPESTATUS[0]} + + echo + start $MMP_MDS $MMP_MDSDEV $MDS_MOUNT_OPTS || return ${PIPESTATUS[0]} + mount_during_unmount $MMP_OSTDEV $MMP_OSS $OST_MOUNT_OPTS + rc=${PIPESTATUS[0]} + if [ $rc -ne 0 ]; then + stop $MMP_MDS || return ${PIPESTATUS[0]} + return $rc + fi + + stop $MMP_MDS || return ${PIPESTATUS[0]} +} +run_test 5 "mount during unmount of the first filesystem" + +# Test 6 - mount after clean unmount. +test_6() { + local rc=0 + check_failover_pair || return 0 + + mount_after_unmount $MMP_MDSDEV $MMP_MDS $MDS_MOUNT_OPTS || \ + return ${PIPESTATUS[0]} + + echo + mount_after_unmount $MMP_OSTDEV $MMP_OSS $OST_MOUNT_OPTS + rc=${PIPESTATUS[0]} + if [ $rc -ne 0 ]; then + stop $MMP_MDS_FAILOVER || return ${PIPESTATUS[0]} + return $rc + fi + + stop_services failover || return ${PIPESTATUS[0]} +} +run_test 6 "mount after clean unmount" + +# Test 7 - mount after reboot. +test_7() { + local rc=0 + check_failover_pair || return 0 + + mount_after_reboot $MMP_MDSDEV $MMP_MDS $MDS_MOUNT_OPTS || \ + return ${PIPESTATUS[0]} + + echo + mount_after_reboot $MMP_OSTDEV $MMP_OSS $OST_MOUNT_OPTS + rc=${PIPESTATUS[0]} + if [ $rc -ne 0 ]; then + stop $MMP_MDS || return ${PIPESTATUS[0]} + stop $MMP_MDS_FAILOVER || return ${PIPESTATUS[0]} + return $rc + fi + + stop_services failover || return ${PIPESTATUS[0]} + stop_services primary || return ${PIPESTATUS[0]} +} +run_test 7 "mount after reboot" + +# Test 8 - mount during e2fsck (should never succeed). +test_8() { + local e2fsck_pid + + run_e2fsck $MMP_MDS $MMP_MDSDEV "-fy" & + e2fsck_pid=$! + sleep 1 + + log "Mounting $MMP_MDSDEV on $MMP_MDS_FAILOVER..." + if start $MMP_MDS_FAILOVER $MMP_MDSDEV $MDS_MOUNT_OPTS; then + error_noexit "mount $MMP_MDSDEV on $MMP_MDS_FAILOVER should fail" + stop $MMP_MDS_FAILOVER || return ${PIPESTATUS[0]} + return 1 + fi + + wait $e2fsck_pid + + echo + run_e2fsck $MMP_OSS $MMP_OSTDEV "-fy" & + e2fsck_pid=$! + sleep 1 + + log "Mounting $MMP_OSTDEV on $MMP_OSS_FAILOVER..." + if start $MMP_OSS_FAILOVER $MMP_OSTDEV $OST_MOUNT_OPTS; then + error_noexit "mount $MMP_OSTDEV on $MMP_OSS_FAILOVER should fail" + stop $MMP_OSS_FAILOVER || return ${PIPESTATUS[0]} + return 2 + fi + + wait $e2fsck_pid + return 0 +} +run_test 8 "mount during e2fsck" + +# Test 9 - mount after aborted e2fsck (should never succeed). +test_9() { + local e2fsck_pid + local mdt_mmp_check_interval + local ost_mmp_check_interval + + start $MMP_MDS $MMP_MDSDEV $MDS_MOUNT_OPTS || return ${PIPESTATUS[0]} + if ! start $MMP_OSS $MMP_OSTDEV $OST_MOUNT_OPTS; then + local rc=${PIPESTATUS[0]} + stop $MMP_MDS || return ${PIPESTATUS[0]} + return $rc + fi + stop_services primary || return ${PIPESTATUS[0]} + + mdt_mmp_check_interval=$(get_mmp_check_interval $MMP_MDS $MMP_MDSDEV) + run_e2fsck $MMP_MDS_FAILOVER $MMP_MDSDEV "-fy" & + e2fsck_pid=$! + sleep $((2 * $mdt_mmp_check_interval)) + kill -s ABRT $e2fsck_pid + + log "Mounting $MMP_MDSDEV on $MMP_MDS..." + if start $MMP_MDS $MMP_MDSDEV $MDS_MOUNT_OPTS; then + error_noexit "mount $MMP_MDSDEV on $MMP_MDS should fail" + stop $MMP_MDS || return ${PIPESTATUS[0]} + return 1 + fi + + reset_mmp_block $MMP_MDS $MMP_MDSDEV || return ${PIPESTATUS[0]} + + echo + ost_mmp_check_interval=$(get_mmp_check_interval $MMP_OSS $MMP_OSTDEV) + run_e2fsck $MMP_OSS_FAILOVER $MMP_OSTDEV "-fy" & + e2fsck_pid=$! + sleep $((2 * $ost_mmp_check_interval)) + kill -s ABRT $e2fsck_pid + + log "Mounting $MMP_OSTDEV on $MMP_OSS..." + if start $MMP_OSS $MMP_OSTDEV $OST_MOUNT_OPTS; then + error_noexit "mount $MMP_OSTDEV on $MMP_OSS should fail" + stop $MMP_OSS || return ${PIPESTATUS[0]} + return 2 + fi + + reset_mmp_block $MMP_OSS $MMP_OSTDEV || return ${PIPESTATUS[0]} + return 0 +} +run_test 9 "mount after aborted e2fsck" + +# Test 10 - e2fsck with mounted filesystem. +test_10() { + local rc=0 + + log "Mounting $MMP_MDSDEV on $MMP_MDS..." + start $MMP_MDS $MMP_MDSDEV $MDS_MOUNT_OPTS || return ${PIPESTATUS[0]} + + run_e2fsck $MMP_MDS_FAILOVER $MMP_MDSDEV "-fn" + rc=${PIPESTATUS[0]} + if [ $rc -ne 8 ]; then + error_noexit "e2fsck $MMP_MDSDEV on $MMP_MDS_FAILOVER should return 8" + stop $MMP_MDS || return ${PIPESTATUS[0]} + [ $rc -ne 0 ] && return $rc || return 1 + fi + + log "Mounting $MMP_OSTDEV on $MMP_OSS..." + start $MMP_OSS $MMP_OSTDEV $OST_MOUNT_OPTS + rc=${PIPESTATUS[0]} + if [ $rc -ne 0 ]; then + stop $MMP_MDS || return ${PIPESTATUS[0]} + return $rc + fi + + run_e2fsck $MMP_OSS_FAILOVER $MMP_OSTDEV "-fn" + rc=${PIPESTATUS[0]} + if [ $rc -ne 8 ]; then + error_noexit "e2fsck $MMP_OSTDEV on $MMP_OSS_FAILOVER should return 8" + stop_services primary || return ${PIPESTATUS[0]} + [ $rc -ne 0 ] && return $rc || return 1 + fi + + stop_services primary || return ${PIPESTATUS[0]} + return 0 +} +run_test 10 "e2fsck with mounted filesystem" + +mmp_fini +FAIL_ON_ERROR=$SAVED_FAIL_ON_ERROR + +equals_msg $(basename $0): test complete +$MMP_RESTORE_MOUNT && setupall +[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && \ + grep -q FAIL $TESTSUITELOG && exit 1 || true +echo "$0: completed" diff -Nru lustre-1.8.3/lustre/tests/mpi/cascading_rw.c lustre-1.8.5+dfsg/lustre/tests/mpi/cascading_rw.c --- lustre-1.8.3/lustre/tests/mpi/cascading_rw.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/mpi/cascading_rw.c 2010-11-17 04:31:48.000000000 +0100 @@ -65,7 +65,6 @@ void rw_file(char *name, long stride, unsigned int seed) { char filename[MAX_FILENAME_LEN]; - char path[MAX_FILENAME_LEN]; char errmsg[MAX_FILENAME_LEN+20]; char *buf, *o_buf; struct lov_user_md lum = {0}; @@ -100,13 +99,6 @@ sprintf(errmsg, "close of file %s", filename); FAIL(errmsg); } - - strncpy(path, filename, MAX_FILENAME_LEN); - rc = llapi_file_get_stripe(path, &lum); - if (rc == -1) { - sprintf(errmsg, "get stripe of file %s", filename); - FAIL(errmsg); - } } MPI_Barrier(MPI_COMM_WORLD); diff -Nru lustre-1.8.3/lustre/tests/mpi/mdsrate.c lustre-1.8.5+dfsg/lustre/tests/mpi/mdsrate.c --- lustre-1.8.3/lustre/tests/mpi/mdsrate.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/mpi/mdsrate.c 2010-11-17 04:31:48.000000000 +0100 @@ -133,15 +133,13 @@ #define dmesg if (debug) printf #define DISPLAY_PROGRESS() { \ - if ((++nops % CHECK_COUNT) == 0 && verbose) { \ - curTime = time(0); \ + if (verbose && (nops % CHECK_COUNT == 0)) { \ + curTime = MPI_Wtime(); \ interval = curTime - lastTime; \ if (interval > DISPLAY_TIME || nops % DISPLAY_COUNT == 0) { \ - rate = (float)(nops - lastOps); \ - if (interval > 1) \ - rate /= (float)interval; \ - printf("Rank %d: %.2f %ss/sec %lu secs " \ - "(total: %d %ss %lu secs)\n", \ + rate = (double)(nops - lastOps)/interval; \ + printf("Rank %d: %.2f %ss/sec %.2f secs " \ + "(total: %d %ss %.2f secs)\n", \ myrank, rate, cmd, interval, \ nops, cmd, curTime - startTime); \ lastOps = nops; \ @@ -306,9 +304,9 @@ if ((*endptr != 0) || (iters <= 0)) { fatal(0, "Invalid --iters value.\n"); } - if (mode != LOOKUP && mode != OPEN && mode != STAT) { + if (mode != LOOKUP && mode != OPEN) { usage(stderr, "--iters only makes sense with " - "--lookup, --open, or --stat.\n"); + "--lookup or --open.\n"); } break; case TIME: @@ -398,9 +396,9 @@ break; case RANDOM: case READDIR: - if (mode != LOOKUP && mode != OPEN && mode != STAT) { + if (mode != LOOKUP && mode != OPEN) { fatal(0, "--%s can only be specified with " - "--lookup, --open, or --stat.\n", + "--lookup, or --open.\n", (char *)longOpts[index].name); } order = c; @@ -424,7 +422,7 @@ usage(stderr, "too many arguments %d >= %d.\n", optind, argc); } - if (mode == CREATE || mode == MKNOD || mode == UNLINK) { + if (mode == CREATE || mode == MKNOD || mode == UNLINK || mode == STAT) { if (seconds != 0) { if (nfiles == 0) nfiles = INT_MAX; @@ -432,7 +430,7 @@ usage(stderr, "--nfiles or --time must be specified " "with %s.\n", cmd); } - } else if (mode == LOOKUP || mode == OPEN || mode == STAT) { + } else if (mode == LOOKUP || mode == OPEN) { if (seconds != 0) { if (iters == 0) iters = INT_MAX; @@ -545,9 +543,13 @@ int main(int argc, char *argv[]) { - int i, j, fd, rc, nops, lastOps, ag_ops; - float rate, ag_rate; - time_t startTime, lastTime, curTime, interval; + int i, j, fd, rc, nops, lastOps; + int ag_ops = 0; + double ag_interval = 0; + double ag_rate = 0; + double rate, avg_rate, effective_rate; + double startTime, curTime, lastTime, interval; + time_t timestamp; char * file; rc = MPI_Init(&argc, &argv); @@ -564,10 +566,10 @@ process_args(argc, argv); - startTime = time(0); + timestamp = time(0); if ((myrank == 0) || debug) { printf("%d: %s starting at %s", - myrank, hostname, ctime(&startTime)); + myrank, hostname, ctime(×tamp)); } /* if we're not measuring creation rates then precreate @@ -605,10 +607,10 @@ dir, strerror(rc)); } - startTime = time(0); + timestamp = time(0); j = random() % nfiles; dmesg("%d: %s initializing dir offset %u: %s", - myrank, hostname, j, ctime(&startTime)); + myrank, hostname, j, ctime(×tamp)); for (i = 0; i <= j; i++) { if ((dir_entry = readdir(directory)) == NULL) { @@ -617,17 +619,13 @@ } } - lastTime = time(0); + timestamp = time(0); dmesg("%d: index %d, filename %s, offset %ld: " "%s initialization complete: %s", myrank, i, dir_entry->d_name, telldir(directory), - hostname, ctime(&lastTime)); + hostname, ctime(×tamp)); } - rc = MPI_Barrier(MPI_COMM_WORLD); - if (rc != MPI_SUCCESS) - fatal(myrank, "prep MPI_Barrier failed: %d\n", rc); - if (seconds) { act.sa_handler = sigalrm_handler; (void)sigemptyset(&act.sa_mask); @@ -636,7 +634,11 @@ alarm(seconds); } - startTime = lastTime = time(0); + rc = MPI_Barrier(MPI_COMM_WORLD); + if (rc != MPI_SUCCESS) + fatal(myrank, "prep MPI_Barrier failed: %d\n", rc); + + startTime = lastTime = MPI_Wtime(); nops = lastOps = 0; switch (mode) { @@ -651,6 +653,7 @@ } close(fd); + nops++; DISPLAY_PROGRESS(); } @@ -675,6 +678,7 @@ "error: %s\n", filename, strerror(rc)); } + nops++; DISPLAY_PROGRESS(); } break; @@ -690,6 +694,7 @@ filename, strerror(rc)); } + nops++; DISPLAY_PROGRESS(); } break; @@ -705,19 +710,24 @@ close(fd); + nops++; DISPLAY_PROGRESS(); } break; case STAT: - for (; nops < iters && !alarm_caught;) { - rc = stat(file = next_file(), &statbuf); + for (; begin <= end && !alarm_caught; begin += dirthreads) { + sprintf(filename, filefmt, begin); + rc = stat(filename, &statbuf); if (rc) { if (((rc = errno) == EINTR) && alarm_caught) break; + if (((rc = errno) == ENOENT) && ignore) + continue; fatal(myrank, "stat(%s) error: %s\n", - file, strerror(rc)); + filename, strerror(rc)); } + nops++; DISPLAY_PROGRESS(); } break; @@ -734,16 +744,18 @@ filename, strerror(rc)); } + nops++; DISPLAY_PROGRESS(); } break; } - curTime = time(0); + rc = MPI_Barrier(MPI_COMM_WORLD); + if (rc != MPI_SUCCESS) + fatal(myrank, "prep MPI_Barrier failed: %d\n", rc); + curTime = MPI_Wtime(); interval = curTime - startTime; - rate = (float)(nops); - if (interval != 0) - rate /= (float)interval; + rate = (double) (nops) / interval; rc = MPI_Reduce(&nops, &ag_ops, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); @@ -751,15 +763,29 @@ fatal(myrank, "Failure in MPI_Reduce of total ops.\n"); } - rc = MPI_Reduce(&rate, &ag_rate, 1, MPI_FLOAT, MPI_SUM, 0, + rc = MPI_Reduce(&interval, &ag_interval, 1, MPI_DOUBLE, MPI_SUM, 0, + MPI_COMM_WORLD); + if (rc != MPI_SUCCESS) { + fatal(myrank, "Failure in MPI_Reduce of total interval.\n"); + } + + rc = MPI_Reduce(&rate, &ag_rate, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (rc != MPI_SUCCESS) { fatal(myrank, "Failure in MPI_Reduce of aggregated rate.\n"); } if (myrank == 0) { - printf("Rate: %.2f %ss/sec (total: %d threads %d %ss %lu secs)" - "\n", ag_rate, cmd, nthreads, ag_ops, cmd, interval); + + curTime = MPI_Wtime(); + interval = curTime - startTime; + effective_rate = (double) ag_ops / interval; + avg_rate = (double) ag_ops / ag_interval; + + printf("Rate: %.2f eff %.2f aggr %.2f avg client %ss/sec " + "(total: %d threads %d %ss %d dirs %d threads/dir %.2f secs)\n", + effective_rate, ag_rate, avg_rate, cmd, nthreads, ag_ops, + cmd, ndirs, dirthreads, interval); } if (recreate) { @@ -777,10 +803,10 @@ } } - curTime = time(0); + timestamp = time(0); if ((myrank == 0) || debug) { printf("%d: %s finished at %s", - myrank, hostname, ctime(&curTime)); + myrank, hostname, ctime(×tamp)); } MPI_Finalize(); diff -Nru lustre-1.8.3/lustre/tests/mpi/write_disjoint.c lustre-1.8.5+dfsg/lustre/tests/mpi/write_disjoint.c --- lustre-1.8.3/lustre/tests/mpi/write_disjoint.c 2010-02-01 11:00:35.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/tests/mpi/write_disjoint.c 2010-07-05 05:16:14.000000000 +0200 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -88,6 +88,7 @@ ssize_t ret; char *filename = "/mnt/lustre/write_disjoint"; int numloops = 1000; + int random = 0; error = MPI_Init(&argc, &argv); if (error != MPI_SUCCESS) @@ -133,12 +134,23 @@ if (ret != 0) rprintf(rank, n, "truncate() returned %s\n", strerror(errno) ); + random = rand(); } - CHUNK_SIZE(n) = rand() % CHUNK_MAX_SIZE; + MPI_Bcast(&random, 1, MPI_INT, 0, MPI_COMM_WORLD); + CHUNK_SIZE(n) = random % CHUNK_MAX_SIZE; if (n % 1000 == 0 && rank == 0) printf("loop %d: chunk_size %lu\n", n, CHUNK_SIZE(n)); + if (stat(filename, &stat_buf) < 0) + rprintf(rank, n, "error stating %s: %s\n", + filename, strerror(errno)); + + if (stat_buf.st_size != 0) + rprintf(rank, n, "filesize = %lu. " + "Should be zero after truncate\n", + stat_buf.st_size); + MPI_Barrier(MPI_COMM_WORLD); /* Do the race */ @@ -149,10 +161,11 @@ do { ret = write(fd, chunk_buf[rank] + done, CHUNK_SIZE(n) - done); - if (ret < 0) + if (ret < 0 && errno != EINTR) rprintf(rank, n, "write() returned %s\n", strerror(errno)); - done += ret; + if (ret > 0) + done += ret; } while (done != CHUNK_SIZE(n)); MPI_Barrier(MPI_COMM_WORLD); diff -Nru lustre-1.8.3/lustre/tests/obdfilter-survey.sh lustre-1.8.5+dfsg/lustre/tests/obdfilter-survey.sh --- lustre-1.8.3/lustre/tests/obdfilter-survey.sh 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/tests/obdfilter-survey.sh 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,200 @@ +#!/bin/bash +#set -x +set -e + +LUSTRE=${LUSTRE:-`dirname $0`/..} +. $LUSTRE/tests/test-framework.sh +init_test_env $@ + +nobjhi=${nobjhi:-1} +thrhi=${thrhi:-16} +size=${size:-1024} + +# the summary file a bit smaller than OSTSIZE +. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} + +[ "$SLOW" = no ] && { nobjhi=1; thrhi=4; } +thrlo=${thrlo:-$(( thrhi / 2))} + +# Skip these tests +ALWAYS_EXCEPT="$OBDFILTER_SURVEY_EXCEPT" + +OBDSURVEY=${OBDSURVEY:-$(which obdfilter-survey)} + +build_test_filter +check_and_setup_lustre + +min_ost_size () { + $LCTL get_param -n osc.*.kbytesavail | sort -n | head -n1 +} + +# FIXME: the summary file a bit smaller than OSTSIZE, add estimation +minsize=$(min_ost_size) +if [ $(( size * 1024 )) -ge $minsize ]; then + size=$((minsize * 10 / 1024 / 12 )) + echo min kbytesavail: $minsize using size=${size} MBytes per obd instance +fi + +get_targets () { + local targets + local devs + local oss + + for oss in $(osts_nodes); do + devs=$(do_node $oss "lctl dl |grep obdfilter |sort" | awk '{print $4}') + for d in $devs; do + # if oss is local -- obdfilter-survey needs dev wo/ host + target=$d + [[ $oss = `hostname` ]] || target=$oss:$target + targets="$targets $target" + done + done + + echo $targets +} + +obdflter_survey_targets () { + local case=$1 + local targets + + case $case in + disk) targets=$(get_targets);; + netdisk) targets=$(get_targets);; + network) targets="$(osts_nodes)";; + *) error "unknown obdflter-survey case!" ;; + esac + echo $targets +} + +obdflter_survey_run () { + local case=$1 + + rm -f ${TMP}/obdfilter_survey* + + local targets=$(obdflter_survey_targets $case) + local cmd="NETTYPE=$NETTYPE thrlo=$thrlo nobjhi=$nobjhi thrhi=$thrhi size=$size case=$case rslt_loc=${TMP} targets=\"$targets\" sh $OBDSURVEY" + echo + $cmd + eval $cmd + + cat ${TMP}/obdfilter_survey* +} +test_1a () { + obdflter_survey_run disk +} +run_test 1a "Object Storage Targets survey" + +print_jbd () { + local file=$1 + local facet=$2 + local varsvc=${facet}_svc + local dev=$(basename $(do_facet $facet lctl get_param -n *.${!varsvc}.mntdev)) + + # ext4: /proc/fs/jbd2/sda1:8/history + # ext3: /proc/fs/jbd/sdb1/history + + do_facet $facet cat /proc/fs/jbd*/${dev}*/$file +} + +check_jbd_values () { + local facet=$1 + local thrhi=$2 + + # last two lines from history + # $4: run >= 5000 + # $8: hndls >= thrhi * 2 + local hist=("$(print_jbd history $facet | tail -3 | head -2)") + echo "$hist" + local run=($(echo "${hist[*]}" | awk '{print $4}')) + local hndls=($(echo "${hist[*]}" | awk '{print $8}')) + + local rc=0 + for (( i=0; i<1; i++)); do + [[ ${run[i]} -lt 5000 ]] && \ + error "$facet: run expected 5000, have ${run[i]}" && rc=1 + [[ ${hndls[i]} -lt $((thrhi * 2)) ]] && \ + error "$facet: hndls expected > $((thrhi * 2)), have ${hndls[i]}" && rc=2 + done + return $rc +} + +check_jbd_values_facets () { + local facets=$1 + local thrhi=$2 + local facet + local rc=0 + for facet in ${facets//,/ }; do + check_jbd_values $facet $thrhi || rc=$((rc+$?)) + done + return $rc +} + +test_1b () { + local major=$(get_mds_kernel_major) + local minor=$(get_mds_kernel_minor) + [ "$major"=="2.6" -a $minor -eq 32 ] && \ + skip "There is no jbd history in this kernel version." && return + local param_file=$TMP/$tfile-params + + do_nodesv $(comma_list $(osts_nodes)) lctl get_param obdfilter.${FSNAME}-*.sync_journal + + save_lustre_params $(comma_list $(osts_nodes)) "obdfilter.${FSNAME}-*.sync_journal" >$param_file + do_nodesv $(comma_list $(osts_nodes)) lctl set_param obdfilter.${FSNAME}-*.sync_journal=0 + + thrlo=4 nobjhi=1 thrhi=4 obdflter_survey_run disk + + check_jbd_values_facets $(get_facets OST) 4 || rc=$((rc+$?)) + + restore_lustre_params < $param_file + + rm -f $param_file + return $rc +} +run_test 1b "Object Storage Targets survey, async journal" + +test_2a () { + obdflter_survey_run netdisk +} +run_test 2a "Stripe F/S over the Network" + +test_2b () { + local major=$(get_mds_kernel_major) + local minor=$(get_mds_kernel_minor) + [ "$major"=="2.6" -a $minor -eq 32 ] && \ + skip "There is no jbd history in this kernel version." && return + local param_file=$TMP/$tfile-params + + do_nodesv $(comma_list $(osts_nodes)) lctl get_param obdfilter.${FSNAME}-*.sync_journal + + save_lustre_params $(comma_list $(osts_nodes)) "obdfilter.${FSNAME}-*.sync_journal" >$param_file + do_nodesv $(comma_list $(osts_nodes)) lctl set_param obdfilter.${FSNAME}-*.sync_journal=0 + + thrlo=4 nobjhi=1 thrhi=4 obdflter_survey_run netdisk + + check_jbd_values_facets $(get_facets OST) 4 || rc=$((rc+$?)) + + restore_lustre_params < $param_file + + rm -f $param_file + return $rc +} +run_test 2b "Stripe F/S over the Network, async journal" + + +# README.obdfilter-survey: In network test only automated run is supported. +test_3a () { + remote_servers || { skip "Local servers" && return 0; } + + # The Network survey test needs: + # Start lctl and check for the device list. The device list must be empty. + cleanupall + + obdflter_survey_run network + + setupall +} +run_test 3a "Network survey" + +equals_msg `basename $0`: test complete, cleaning up +cleanup_echo_devs +check_and_cleanup_lustre +[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && grep -q FAIL $TESTSUITELOG && exit 1 || true diff -Nru lustre-1.8.3/lustre/tests/ost-pools.sh lustre-1.8.5+dfsg/lustre/tests/ost-pools.sh --- lustre-1.8.3/lustre/tests/ost-pools.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/ost-pools.sh 2010-11-17 04:31:48.000000000 +0100 @@ -926,71 +926,79 @@ } run_test 17 "Referencing an empty pool" -create_perf_one() { - local dir=$1/d +create_perf() { + local cdir=$1/d local numfiles=$2 local time - mkdir -p $dir + mkdir -p $cdir sync; sleep 5 # give pending IO a chance to go to disk - stat=$(createmany -o $dir/${tfile} $numfiles) - rm -rf $dir + stat=$(createmany -o $cdir/${tfile} $numfiles | tail -1) + rm -rf $cdir sync time=$(echo $stat | cut -f 5 -d ' ') - echo $stat > /dev/stderr + echo $stat >> /dev/stderr echo $time } -create_perf() { - local t1=$(create_perf_one $1 $2) - local t2=$(create_perf_one $1 $2) - local t3=$(create_perf_one $1 $2) - local time=$(echo "scale=2; ( $t1 + $t2 + $t3 ) / 3" | bc) - - echo "$time" -} - test_18() { local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir} - local numfiles=10000 - local i=0 - local time1 - local time2 - local time3 - local dir=$POOL_ROOT/dir - local stat - local diff - - time1=$(create_perf $dir $numfiles) + local numfiles=9877 + local plaindir=$POOL_ROOT/plaindir + local pooldir=$POOL_ROOT/pooldir + local t1=0 + local t2=0 + local t3=0 + local diff - create_pool_nofail $POOL - - add_pool $POOL $TGT_ALL "$TGT_UUID" + for i in $(seq 1 3); + do + echo "Create performance, iteration $i, $numfiles files x 3" - create_dir $dir $POOL - time2=$(create_perf $dir $numfiles) + time1=$(create_perf $plaindir $numfiles) + echo "iter $i: $numfiles creates without pool: $time1" + t1=$(echo "scale=2; $t1 + $time1" | bc) + + create_pool_nofail $POOL > /dev/null + add_pool $POOL $TGT_ALL "$TGT_UUID" > /dev/null + create_dir $pooldir $POOL + time2=$(create_perf $pooldir $numfiles) + echo "iter $i: $numfiles creates with pool: $time2" + t2=$(echo "scale=2; $t2 + $time2" | bc) + + destroy_pool $POOL > /dev/null + time3=$(create_perf $pooldir $numfiles) + echo "iter $i: $numfiles creates with missing pool: $time3" + t3=$(echo "scale=2; $t3 + $time3" | bc) - destroy_pool $POOL + echo + done - time3=$(create_perf $dir $numfiles) + time1=$(echo "scale=2; $t1 / $i" | bc) + echo Avg time taken for $numfiles creates without pool: $time1 + time2=$(echo "scale=2; $t2 / $i" | bc) + echo Avg time taken for $numfiles creates with pool: $time2 + time3=$(echo "scale=2; $t3 / $i" | bc) + echo Avg time taken for $numfiles creates with missing pool: $time3 + + # Set this high until we establish a baseline for what the degradation + # is / should be + max=15 + diff=$(echo "scale=2; ($time2 - $time1) * 100 / $time1" | bc) + echo "No pool to wide pool: $diff %." + deg=$(echo "scale=2; $diff > $max" | bc) + [ "$deg" == "1" ] && error_ignore 23408 "Degradation with wide pool is $diff % (> $max %)" + + max=30 + diff=$(echo "scale=2; ($time3 - $time1) * 100 / $time1" | bc) + echo "No pool to missing pool: $diff %." + deg=$(echo "scale=2; $diff > $max" | bc) + [ "$deg" == "1" ] && error_ignore 23408 "Degradation with missing pool is $diff % (> $max %)" - echo Time taken for $numfiles creates without pools: $time1 - echo Time taken for $numfiles creates with pools: $time2 - echo Time taken for $numfiles creates without pools: $time3 - - deg=$(echo "scale=2; (($time2 - $time3) * 100 / $time3) > 5" | bc) - diff=$(echo "scale=2; ($time2 - $time3) * 100 / $time3" | bc) - - if [[ "$deg" == "1" ]]; then - error "Performance degradation with pools is $diff %." - else - echo "Performance degradation with pools is $diff %." - fi return 0 } run_test 18 "File create in a directory which references a deleted pool" - test_19() { local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir} local numfiles=12 @@ -1319,11 +1327,20 @@ wait_osc_import_state mds ost FULL clients_up - # Veriy that the pool got created and is usable - df $POOL_ROOT - echo "Creating a file in pool$i" - create_file $POOL_ROOT/file$i pool$i || break - check_file_in_pool $POOL_ROOT/file$i pool$i || break + # Verify that the pool got created and is usable + df $POOL_ROOT > /dev/null + sleep 5 + # Make sure OST0 can be striped on + $SETSTRIPE -o 0 -c 1 $POOL_ROOT/$tfile + STR=$($GETSTRIPE $POOL_ROOT/$tfile | grep 0x | cut -f2 | tr -d " ") + rm $POOL_ROOT/$tfile + if [[ "$STR" == "0" ]]; then + echo "Creating a file in pool$i" + create_file $POOL_ROOT/file$i pool$i || break + check_file_in_pool $POOL_ROOT/file$i pool$i || break + else + echo "OST 0 seems to be unavailable. Try later." + fi done rm -rf $POOL_ROOT diff -Nru lustre-1.8.3/lustre/tests/parallel-scale.sh lustre-1.8.5+dfsg/lustre/tests/parallel-scale.sh --- lustre-1.8.3/lustre/tests/parallel-scale.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/parallel-scale.sh 2010-11-17 04:31:48.000000000 +0100 @@ -247,22 +247,42 @@ local savePWD=$PWD cd $cnt_DIR - # -f a quick functionality test - # -a run basic, general, special, and lock tests + # + # cthon options (must be in this order) + # # -N numpasses - will be passed to the runtests script. This argument # is optional. It specifies the number of times to run # through the tests. + # + # One of these test types + # -b basic + # -g general + # -s special + # -l lock + # -a all of the above + # + # -f a quick functionality test + # - local cmd="./runtests -N $cnt_NRUN -a -f $testdir" - - log "$cmd" + tests="-b -g -s" + # Include lock tests unless we're running on nfsv4 + local fstype=$(df -TP $testdir | awk 'NR==2 {print $2}') + echo "$testdir: $fstype" + if [[ $fstype != "nfs4" ]]; then + tests="$tests -l" + fi + echo "tests: $tests" + for test in $tests; do + local cmd="./runtests -N $cnt_NRUN $test -f $testdir" + local rc=0 - local rc=0 - eval $cmd - rc=$? + log "$cmd" + eval $cmd + rc=$? + [ $rc = 0 ] || error "connectathon failed: $rc" + done cd $savePWD - [ $rc = 0 ] || error "connectathon failed: $rc" rm -rf $testdir } run_test connectathon "connectathon" diff -Nru lustre-1.8.3/lustre/tests/recovery-double-scale.sh lustre-1.8.5+dfsg/lustre/tests/recovery-double-scale.sh --- lustre-1.8.3/lustre/tests/recovery-double-scale.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/recovery-double-scale.sh 2010-11-17 04:31:48.000000000 +0100 @@ -29,11 +29,13 @@ set -x [ "$SHARED_DIRECTORY" ] || \ - { skip "$0: Empty SHARED_DIRECTORY" && exit 0; } + { FAIL_ON_ERROR=true skip_env "$0 Empty SHARED_DIRECTORY" && exit 0; } + +[ -n "$CLIENTS" ] || \ + { FAIL_ON_ERROR=true skip_env "$0 Need two or more remote clients" && exit 0; } -[ -n "$CLIENTS" ] || { skip "$0 Need two or more remote clients" && exit 0; } [ $CLIENTCOUNT -ge 3 ] || \ - { skip "$0 Need two or more remote clients, have $CLIENTCOUNT" && exit 0; } + { FAIL_ON_ERROR=true skip_env "$0 Need two or more remote clients, have $((CLIENTCOUNT - 1))" && exit 0; } END_RUN_FILE=${END_RUN_FILE:-$SHARED_DIRECTORY/end_run_file} LOAD_PID_FILE=${LOAD_PID_FILE:-$TMP/client-load.pid} @@ -43,6 +45,9 @@ check_timeout || exit 1 +[[ $FAILURE_MODE = SOFT ]] && \ + log "WARNING: $0 is not functional with FAILURE_MODE = SOFT, bz22797" + build_test_filter check_and_setup_lustre @@ -73,7 +78,7 @@ # MDS, OST item contains the facet case $nodetype in MDS|OST ) facet_failover $item - [ "$SERIAL" ] && wait_recovery_complete $item $((timeout * 4)) || true + [ "$SERIAL" ] && wait_recovery_complete $item || true ;; clients) for c in ${item//,/ }; do shutdown_client $c diff -Nru lustre-1.8.3/lustre/tests/recovery-mds-scale.sh lustre-1.8.5+dfsg/lustre/tests/recovery-mds-scale.sh --- lustre-1.8.3/lustre/tests/recovery-mds-scale.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/recovery-mds-scale.sh 2010-11-17 04:31:48.000000000 +0100 @@ -27,11 +27,13 @@ set -x [ "$SHARED_DIRECTORY" ] || \ - { skip "$0: Empty SHARED_DIRECTORY" && exit 0; } + { FAIL_ON_ERROR=true skip_env "$0 Empty SHARED_DIRECTORY" && exit 0; } + +[ -n "$CLIENTS" ] || \ + { FAIL_ON_ERROR=true skip_env "$0 Need two or more remote clients" && exit 0; } -[ -n "$CLIENTS" ] || { skip "$0 Need two or more remote clients" && exit 0; } [ $CLIENTCOUNT -ge 3 ] || \ - { skip "$0 Need two or more remote clients, have $CLIENTCOUNT" && exit 0; } + { FAIL_ON_ERROR=true skip_env "$0 Need two or more remote clients, have $((CLIENTCOUNT - 1))" && exit 0; } END_RUN_FILE=${END_RUN_FILE:-$SHARED_DIRECTORY/end_run_file} LOAD_PID_FILE=${LOAD_PID_FILE:-$TMP/client-load.pid} @@ -223,11 +225,10 @@ fi log "Wait $SERVERFACET recovery complete before doing next failover ...." - if [[ $(server_numfailovers $SERVERFACET) != 0 ]]; then - if ! wait_recovery_complete $SERVERFACET ; then - echo "$SERVERFACET recovery is not completed!" - exit 7 - fi + + if ! wait_recovery_complete $SERVERFACET ; then + echo "$SERVERFACET recovery is not completed!" + exit 7 fi log "Checking clients are in FULL state before doing next failover" diff -Nru lustre-1.8.3/lustre/tests/recovery-random-scale.sh lustre-1.8.5+dfsg/lustre/tests/recovery-random-scale.sh --- lustre-1.8.3/lustre/tests/recovery-random-scale.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/recovery-random-scale.sh 2010-11-17 04:31:48.000000000 +0100 @@ -31,22 +31,29 @@ set -x [ "$SHARED_DIRECTORY" ] || \ - { skip "$0: Empty SHARED_DIRECTORY" && exit 0; } + { FAIL_ON_ERROR=true skip_env "$0 Empty SHARED_DIRECTORY" && exit 0; } + +[ -n "$CLIENTS" ] || \ + { FAIL_ON_ERROR=true skip_env "$0 Need two or more remote clients" && exit 0; } -[ -n "$CLIENTS" ] || { skip "$0 Need two or more remote clients" && exit 0; } [ $CLIENTCOUNT -ge 3 ] || \ - { skip "$0 Need two or more clients, have $CLIENTCOUNT" && exit 0; } + { FAIL_ON_ERROR=true skip_env "$0 Need two or more remote clients, have $((CLIENTCOUNT - 1))" && exit 0; } END_RUN_FILE=${END_RUN_FILE:-$SHARED_DIRECTORY/end_run_file} LOAD_PID_FILE=${LOAD_PID_FILE:-$TMP/client-load.pid} remote_mds_nodsh && skip "remote MDS with nodsh" && exit 0 +[[ $FAILURE_MODE = SOFT ]] && \ + log "WARNING: $0 is not functional with FAILURE_MODE = SOFT, bz22797" + build_test_filter check_and_setup_lustre rm -rf $DIR/[df][0-9]* +max_recov_time=$(max_recovery_time) + # the test node needs to be insulated from a lustre failure as much as possible, # so not even loading the lustre modules is ideal. # -- umount lustre @@ -239,7 +246,7 @@ log "Starting failover on $SERVERFACET" facet_failover "$SERVERFACET" || exit 1 - if ! wait_recovery_complete $SERVERFACET $((TIMEOUT * 10)); then + if ! wait_recovery_complete $SERVERFACET ; then echo "$SERVERFACET recovery is not completed!" exit 7 fi @@ -290,6 +297,7 @@ log "WARNING: failover, client reintegration and check_client_loads time exceeded SERVER_FAILOVER_PERIOD - MINSLEEP ! Failed to load the filesystem with I/O for a minimum period of $MINSLEEP $reqfail times ( REQFAIL=$REQFAIL ). This iteration, the load was only applied for sleep=$sleep seconds. +Estimated max recovery time : $max_recov_time Probably the hardware is taking excessively long to boot. Try to increase SERVER_FAILOVER_PERIOD (current is $SERVER_FAILOVER_PERIOD), bug 20918" [ $reqfail -gt $REQFAIL ] && exit 6 diff -Nru lustre-1.8.3/lustre/tests/recovery-small.sh lustre-1.8.5+dfsg/lustre/tests/recovery-small.sh --- lustre-1.8.3/lustre/tests/recovery-small.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/recovery-small.sh 2010-11-17 04:31:48.000000000 +0100 @@ -13,13 +13,6 @@ remote_mds_nodsh && skip "remote MDS with nodsh" && exit 0 -if [ "$FAILURE_MODE" = "HARD" ] && mixed_ost_devs; then - CONFIG_EXCEPTIONS="52" - echo -n "Several ost services on one ost node are used with FAILURE_MODE=$FAILURE_MODE. " - echo "Except the tests: $CONFIG_EXCEPTIONS" - ALWAYS_EXCEPT="$ALWAYS_EXCEPT $CONFIG_EXCEPTIONS" -fi - # also long tests: 19, 21a, 21e, 21f, 23, 27 # 1 2.5 2.5 4 4 (min)" [ "$SLOW" = "no" ] && EXCEPT_SLOW="17 26a 26b 50 51 57" @@ -300,6 +293,7 @@ ost_evict_client # force reconnect + sleep 1 df $MOUNT > /dev/null 2>&1 sleep 2 # my understanding is that there should be nothing in the page @@ -336,6 +330,7 @@ # lost reply to connect request do_facet ost1 lctl set_param fail_loc=0x80000225 # force reconnect + sleep 1 df $MOUNT > /dev/null 2>&1 sleep 2 # my understanding is that there should be nothing in the page @@ -762,12 +757,8 @@ #define OBD_FAIL_OSC_SHUTDOWN 0x407 do_facet mds lctl set_param fail_loc=0x80000407 # need to wait for reconnect - echo -n waiting for fail_loc - while [ $(do_facet mds lctl get_param -n fail_loc) -eq -2147482617 ]; do - sleep 1 - echo -n . - done - do_facet mds lctl get_param -n fail_loc + echo waiting for fail_loc + wait_update_facet mds "lctl get_param -n fail_loc" "-2147482617" facet_failover mds #no crashes allowed! kill -USR1 $CLIENT_PID diff -Nru lustre-1.8.3/lustre/tests/replay-dual.sh lustre-1.8.5+dfsg/lustre/tests/replay-dual.sh --- lustre-1.8.3/lustre/tests/replay-dual.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/replay-dual.sh 2010-11-17 04:31:48.000000000 +0100 @@ -13,13 +13,6 @@ MOUNT_2=${MOUNT_2:-"yes"} . $LUSTRE/tests/test-framework.sh -if [ "$FAILURE_MODE" = "HARD" ] && mixed_ost_devs; then - CONFIG_EXCEPTIONS="17" - echo -n "Several ost services on one ost node are used with FAILURE_MODE=$FAILURE_MODE. " - echo "Except the tests: $CONFIG_EXCEPTIONS" - ALWAYS_EXCEPT="$ALWAYS_EXCEPT $CONFIG_EXCEPTIONS" -fi - init_test_env $@ . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} @@ -241,7 +234,7 @@ kill -USR1 $MULTIPID || return 3 wait $MULTIPID || return 4 - # drop close + # drop close do_facet mds lctl set_param fail_loc=0x80000115 facet_failover mds do_facet mds lctl set_param fail_loc=0 @@ -256,6 +249,12 @@ run_test 13 "close resend timeout" test_14a() { + # interop 18 <-> 20 + local lustre_version=$(get_lustre_version mds) + if [[ $lustre_version != 1.8* ]]; then + skip "mds is running $lustre_version, test is obsoleted" + return 0 + fi replay_barrier mds createmany -o $MOUNT1/$tfile- 25 createmany -o $MOUNT2/$tfile-2- 1 @@ -287,14 +286,17 @@ umount $MOUNT2 fail mds + wait_recovery_complete mds || error "MDS recovery isn't done" # first 25 files should have been replayed unlinkmany $MOUNT1/$tfile- 5 || return 2 unlinkmany $MOUNT1/$tfile-3- 5 || return 3 zconf_mount `hostname` $MOUNT2 || error "mount $MOUNT2 fail" - # give ost time to process llogs - sleep 3 + + wait_mds_ost_sync || return 5 + wait_destroy_complete || return 6 + AFTERUSED=`df -P $DIR | tail -1 | awk '{ print $3 }'` log "before $BEFOREUSED, after $AFTERUSED" [ $AFTERUSED -ne $BEFOREUSED ] && \ @@ -303,7 +305,7 @@ } run_test 14b "delete ost orphans if gap occured in objids due to VBR" -test_15a() { # was test_15 +test_15a() { # was test_15 replay_barrier mds createmany -o $MOUNT1/$tfile- 25 createmany -o $MOUNT2/$tfile-2- 1 diff -Nru lustre-1.8.3/lustre/tests/replay-ost-single.sh lustre-1.8.5+dfsg/lustre/tests/replay-ost-single.sh --- lustre-1.8.3/lustre/tests/replay-ost-single.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/replay-ost-single.sh 2010-11-17 04:31:48.000000000 +0100 @@ -16,11 +16,6 @@ remote_ost_nodsh && skip "remote OST with nodsh" && exit 0 -if [ "$FAILURE_MODE" = "HARD" ] && mixed_ost_devs; then - skip_env "$0: Several ost services on one ost node are used with FAILURE_MODE=$FAILURE_MODE. " - exit 0 -fi - # Tests that fail on uml CPU=`awk '/model/ {print $4}' /proc/cpuinfo` [ "$CPU" = "UML" ] && EXCEPT="$EXCEPT 6" @@ -124,7 +119,7 @@ # need to check iozone output on "complete" local iozonelog=$TMP/${TESTSUITE}.iozone.log rm -f $iozonelog - cat $tmppipe | while read line ; do + cat $tmppipe | while read line ; do echo "$line" echo "$line" >>$iozonelog done; @@ -138,7 +133,7 @@ fi rm -f $tmppipe rm -f $iozonelog - return $rc + return $rc } test_5() { @@ -158,7 +153,7 @@ local pid=$! echo iozone bg pid=$pid - + sleep 8 fail ost1 local rc=0 @@ -187,7 +182,7 @@ get_stripe_info client $f sync - sleep 2 # ensure we have a fresh statfs + sleep 2 # ensure we have a fresh statfs sync #define OBD_FAIL_MDS_REINT_NET_REP 0x119 do_facet mds "lctl set_param fail_loc=0x80000119" @@ -196,10 +191,12 @@ (( $before > $after_dd )) || return 1 rm -f $f fail ost$((stripe_index + 1)) + wait_recovery_complete ost$((stripe_index + 1)) || error "OST recovery isn't done" $CHECKSTAT -t file $f && return 2 || true sync # let the delete happen - sleep 5 + wait_mds_ost_sync || return 4 + wait_destroy_complete || return 5 after=`kbytesfree` log "before: $before after: $after" (( $before <= $after + 40 )) || return 3 # take OST logs into account @@ -213,7 +210,7 @@ before=`kbytesfree` dd if=/dev/urandom bs=4096 count=1280 of=$f || return 4 sync - sleep 2 # ensure we have a fresh statfs + sleep 2 # ensure we have a fresh statfs sync after_dd=`kbytesfree` log "before: $before after_dd: $after_dd" @@ -221,13 +218,15 @@ replay_barrier ost1 rm -f $f fail ost1 + wait_recovery_complete ost1 || error "OST recovery isn't done" $CHECKSTAT -t file $f && return 2 || true sync # let the delete happen - sleep 2 + wait_mds_ost_sync || return 4 + wait_destroy_complete || return 5 after=`kbytesfree` log "before: $before after: $after" - (( $before <= $after + 40 )) || return 3 # take OST logs into account + (( $before <= $after + 40 )) || return 3 # take OST logs into account } run_test 7 "Fail OST before obd_destroy" diff -Nru lustre-1.8.3/lustre/tests/replay-single.sh lustre-1.8.5+dfsg/lustre/tests/replay-single.sh --- lustre-1.8.3/lustre/tests/replay-single.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/replay-single.sh 2010-11-17 04:31:48.000000000 +0100 @@ -22,13 +22,6 @@ # bug number: ALWAYS_EXCEPT="$REPLAY_SINGLE_EXCEPT" -if [ "$FAILURE_MODE" = "HARD" ] && mixed_ost_devs; then - CONFIG_EXCEPTIONS="0b 42 47 61a 61c" - echo -n "Several ost services on one ost node are used with FAILURE_MODE=$FAILURE_MODE. " - echo "Except the tests: $CONFIG_EXCEPTIONS" - ALWAYS_EXCEPT="$ALWAYS_EXCEPT $CONFIG_EXCEPTIONS" -fi - # 63 min 7 min AT AT AT AT" [ "$SLOW" = "no" ] && EXCEPT_SLOW="1 2 3 4 6 12 16 44a 44b 65 66 67 68" @@ -411,13 +404,8 @@ client_up || client_up || true # reconnect fail mds # start orphan recovery - wait_recovery_complete mds || error "MDS recovery not done" - - # For interop with 2.0 only: - # FIXME just because recovery is done doesn't mean we've finished - # orphan cleanup. Fake it with a sleep for now... - sleep 10 - + wait_recovery_complete mds || error "MDS recovery isn't done" + wait_mds_ost_sync || return 3 AFTERUSED=`df -P $DIR | tail -1 | awk '{ print $3 }'` log "before $BEFOREUSED, after $AFTERUSED" [ $AFTERUSED -gt $((BEFOREUSED + 20)) ] && \ @@ -1061,6 +1049,7 @@ # bug 3462 - simultaneous MDC requests test_53a() { + cancel_lru_locks mdc # lock cleanup mkdir -p $DIR/${tdir}-1 mkdir -p $DIR/${tdir}-2 multiop $DIR/${tdir}-1/f O_c & @@ -1088,6 +1077,7 @@ run_test 53a "|X| close request while two MDC requests in flight" test_53b() { + cancel_lru_locks mdc # lock cleanup rm -rf $DIR/${tdir}-1 $DIR/${tdir}-2 mkdir -p $DIR/$tdir-1 @@ -1120,6 +1110,7 @@ run_test 53b "|X| open request while two MDC requests in flight" test_53c() { + cancel_lru_locks mdc # lock cleanup rm -rf $DIR/${tdir}-1 $DIR/${tdir}-2 mkdir -p $DIR/${tdir}-1 @@ -1153,6 +1144,7 @@ run_test 53c "|X| open request and close request while two MDC requests in flight" test_53d() { + cancel_lru_locks mdc # lock cleanup rm -rf $DIR/${tdir}-1 $DIR/${tdir}-2 mkdir -p $DIR/${tdir}-1 @@ -1182,6 +1174,7 @@ run_test 53d "|X| close reply while two MDC requests in flight" test_53e() { + cancel_lru_locks mdc # lock cleanup rm -rf $DIR/${tdir}-1 $DIR/${tdir}-2 mkdir -p $DIR/$tdir-1 @@ -1213,6 +1206,7 @@ run_test 53e "|X| open reply while two MDC requests in flight" test_53f() { + cancel_lru_locks mdc # lock cleanup rm -rf $DIR/${tdir}-1 $DIR/${tdir}-2 mkdir -p $DIR/${tdir}-1 @@ -1246,6 +1240,7 @@ run_test 53f "|X| open reply and close reply while two MDC requests in flight" test_53g() { + cancel_lru_locks mdc # lock cleanup rm -rf $DIR/${tdir}-1 $DIR/${tdir}-2 mkdir -p $DIR/${tdir}-1 @@ -1279,6 +1274,7 @@ run_test 53g "|X| drop open reply and close request while close and open are both in flight" test_53h() { + cancel_lru_locks mdc # lock cleanup rm -rf $DIR/${tdir}-1 $DIR/${tdir}-2 mkdir -p $DIR/${tdir}-1 @@ -1479,9 +1475,9 @@ #define OBD_FAIL_OBD_LLOG_SETUP 0x605 stop mgs do_facet mgs "lctl set_param fail_loc=0x80000605" - start mgs $MGSDEV $mgs_MOUNT_OPTS && error "mgs start should have failed" + start mgs $MGSDEV $MGS_MOUNT_OPTS && error "mgs start should have failed" do_facet mgs "lctl set_param fail_loc=0" - start mgs $MGSDEV $mgs_MOUNT_OPTS || error "cannot restart mgs" + start mgs $MGSDEV $MGS_MOUNT_OPTS || error "cannot restart mgs" } run_test 61d "error in llog_setup should cleanup the llog context correctly" @@ -1599,6 +1595,8 @@ $LCTL dk > /dev/null # Slow down a request to the current service time, this is critical # because previous tests may have caused this value to increase. + lfs setstripe $DIR/$tfile --index=0 --count=1 + multiop $DIR/$tfile Ow1yc REQ_DELAY=`lctl get_param -n osc.${FSNAME}-OST0000-osc-*.timeouts | awk '/portal 6/ {print $5}'` REQ_DELAY=$((${REQ_DELAY} + ${REQ_DELAY} / 4 + 5)) @@ -1698,7 +1696,7 @@ CONN1=$(lctl get_param -n osc.*.stats | awk '/_connect/ {total+=$2} END {print total}') # exhaust precreations on ost1 - local OST=$(lfs osts | grep 0": " | awk '{print $2}' | sed -e 's/_UUID$//') + local OST=$(lfs osts | grep ^0": " | awk '{print $2}' | sed -e 's/_UUID$//') local mdtosc=$(get_mdtosc_proc_path $OST) local last_id=$(do_facet mds lctl get_param -n osc.$mdtosc.prealloc_last_id) local next_id=$(do_facet mds lctl get_param -n osc.$mdtosc.prealloc_next_id) @@ -1796,6 +1794,24 @@ } run_test 70a "check multi client t-f" +check_dbench_load () { + local clients=${1//,/ } + local client= + + for client in $clients; do + if ! do_node $client "ps ax | grep -v grep | awk '{ print $6 }' | grep -q rundbench"; then + error_noexit "rundbench load on $client failed!" + return 1 + fi + done + return 0 +} + +kill_dbench_load () { + local clients=${1:-$(hostname)} + do_nodes $clients "killall dbench" +} + test_70b () { local clients=${CLIENTS:-$HOSTNAME} @@ -1817,6 +1833,10 @@ START_TS=$(date +%s) CURRENT_TS=$START_TS while [ $ELAPSED -lt $duration ]; do + if ! check_dbench_load $clients; then + kill_dbench_load $clients + break + fi sleep 1 replay_barrier mds sleep 1 # give clients a time to do operations @@ -2105,24 +2125,21 @@ test_85a() { #bug 16774 lctl set_param -n ldlm.cancel_unused_locks_before_replay "1" - for i in `seq 100`; do - echo "tag-$i" > $DIR/$tfile-$i - grep -q "tag-$i" $DIR/$tfile-$i || error "f2-$i" - done + createmany -o $DIR/$tfile- 100 + ls -l $DIR/ > /dev/null lov_id=`lctl dl | grep "clilov"` addr=`echo $lov_id | awk '{print $4}' | awk -F '-' '{print $3}'` count=`lctl get_param -n ldlm.namespaces.*MDT0000*$addr.lock_unused_count` echo "before recovery: unused locks count = $count" + [ $count -ne 0 ] || error "unused locks should not be zero before recovery" fail mds count2=`lctl get_param -n ldlm.namespaces.*MDT0000*$addr.lock_unused_count` echo "after recovery: unused locks count = $count2" - if [ $count2 -ge $count ]; then - error "unused locks are not canceled" - fi + [ $count2 -lt $count ] || error "unused locks are not canceled" } run_test 85a "check the cancellation of unused locks during recovery(IBITS)" @@ -2159,12 +2176,90 @@ test_86() { local dev=$(get_mds_mdt_device_proc_path) - umount $MOUNT + local clients=${CLIENTS:-$HOSTNAME} + + zconf_umount_clients $clients $MOUNT do_facet mds lctl set_param $dev.${FSNAME}-MDT*.exports.clear=0 - fail mds + remount_facet mds + zconf_mount_clients $clients $MOUNT } run_test 86 "umount server after clear nid_stats should not hit LBUG" +test_87() { #bug 17485 + mkdir -p $DIR/$tdir + mkdir -p $TMP/$tdir + + lfs setstripe $DIR/$tdir -o 0 -c 1 || error "setstripe" + + replay_barrier ost1 + replay_barrier mds + + # exhaust precreations on ost1 + local OST=$(lfs osts | grep ^0": " | awk '{print $2}' | sed -e 's/_UUID$//') + local mdtosc=$(get_mdtosc_proc_path $OST) + local last_id=$(do_facet mds lctl get_param -n osc.$mdtosc.prealloc_last_id) + local next_id=$(do_facet mds lctl get_param -n osc.$mdtosc.prealloc_next_id) + echo "before test: last_id = $last_id, next_id = $next_id" + + echo "Creating to objid $last_id on ost $OST..." + createmany -o $DIR/$tdir/f-%d $next_id $((last_id - next_id + 2)) + + #create some files to use some uncommitted objids + last_id=$(($last_id + 1)) + createmany -o $DIR/$tdir/f-%d $last_id 8 + + last_id2=$(do_facet mds lctl get_param -n osc.$mdtosc.prealloc_last_id) + next_id2=$(do_facet mds lctl get_param -n osc.$mdtosc.prealloc_next_id) + echo "before recovery: last_id = $last_id2, next_id = $next_id2" + + shutdown_facet mds + shutdown_facet ost1 + + reboot_facet mds + change_active mds + wait_for_facet mds + mount_facet mds || error "Restart of mds failed" + + reboot_facet ost1 + change_active ost1 + wait_for_facet ost1 + mount_facet ost1 || error "Restart of ost1 failed" + + clients_up + + last_id2=$(do_facet mds lctl get_param -n osc.$mdtosc.prealloc_last_id) + next_id2=$(do_facet mds lctl get_param -n osc.$mdtosc.prealloc_next_id) + echo "after recovery: last_id = $last_id2, next_id = $next_id2" + + # create new files, which should use new objids, and ensure the orphan + # cleanup phase for ost1 is completed at the same time + for i in `seq 8`; do + file_id=$(($last_id + 10 + $i)) + dd if=/dev/urandom of=$DIR/$tdir/f-$file_id bs=4096 count=128 + done + + # if the objids were not recreated, then "ls" will failed for -ENOENT + ls -l $DIR/$tdir/* || error "can't get the status of precreated files" + + local file_id + # write into previously created files + for i in `seq 8`; do + file_id=$(($last_id + $i)) + dd if=/dev/urandom of=$DIR/$tdir/f-$file_id bs=4096 count=128 + cp -f $DIR/$tdir/f-$file_id $TMP/$tdir/ + done + + # compare the content + for i in `seq 8`; do + file_id=$(($last_id + $i)) + cmp $TMP/$tdir/f-$file_id $DIR/$tdir/f-$file_id || error "the content" \ + "of file is modified!" + done + + rm -fr $TMP/$tdir +} +run_test 87 "MDS should not assign same objid to different files " + equals_msg `basename $0`: test complete, cleaning up check_and_cleanup_lustre [ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && grep -q FAIL $TESTSUITELOG && exit 1 || true diff -Nru lustre-1.8.3/lustre/tests/replay-vbr.sh lustre-1.8.5+dfsg/lustre/tests/replay-vbr.sh --- lustre-1.8.3/lustre/tests/replay-vbr.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/replay-vbr.sh 2010-11-17 04:31:48.000000000 +0100 @@ -84,6 +84,12 @@ do_facet mds $LCTL --device $mds_svc getobjversion $fid } +# interop 18 <-> 20 +lustre_version=$(get_lustre_version mds) +if [[ $lustre_version != 1.8* ]]; then + mds20="yes" +fi + test_0a() { local file=$DIR/$tfile local pre @@ -143,7 +149,7 @@ do_node $CLIENT1 mkfifo $DIR/$tfile post=$(get_version $CLIENT1 $DIR) if (($pre == $post)); then - error "version not changed: pre $pre, post $post" + [ -n "$mds20" ] || error "version not changed: pre $pre, post $post" fi } run_test 0d "VBR: create changes version of parent" @@ -175,7 +181,7 @@ do_node $CLIENT1 rm $DIR/$tfile post=$(get_version $CLIENT1 $DIR) if (($pre == $post)); then - error "version not changed: pre $pre, post $post" + [ -n "$mds20" ] || error "version not changed: pre $pre, post $post" fi } run_test 0f "VBR: unlink changes version of parent" @@ -206,7 +212,7 @@ do_node $CLIENT1 mcreate $file pre=$(get_version $CLIENT1 $file) - do_node $CLIENT1 chown $RUNAS_ID $file + do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $file post=$(get_version $CLIENT1 $file) if (($pre == $post)); then error "version not changed: pre $pre, post $post" @@ -221,7 +227,7 @@ do_node $CLIENT1 mcreate $file pre=$(get_version $CLIENT1 $file) - do_node $CLIENT1 chown :$RUNAS_ID $file + do_node $CLIENT1 chgrp $RUNAS_GID $file post=$(get_version $CLIENT1 $file) if (($pre == $post)); then error "version not changed: pre $pre, post $post" @@ -236,8 +242,8 @@ do_node $CLIENT1 mcreate $file replay_barrier mds - do_node $CLIENT2 chown :$RUNAS_ID $file - do_node $CLIENT1 chown $RUNAS_ID $file + do_node $CLIENT2 chgrp $RUNAS_GID $file + do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $file zconf_umount $CLIENT2 $MOUNT facet_failover mds @@ -256,8 +262,8 @@ do_node $CLIENT1 mcreate $file replay_barrier mds - do_node $CLIENT2 chown $RUNAS_ID $file - do_node $CLIENT1 chown :$RUNAS_ID $file + do_node $CLIENT2 chown $RUNAS_ID:$RUNAS_GID $file + do_node $CLIENT1 chgrp $RUNAS_GID $file zconf_umount $CLIENT2 $MOUNT facet_failover mds @@ -291,7 +297,7 @@ do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file replay_barrier mds - do_node $CLIENT2 chown :$RUNAS_ID $file + do_node $CLIENT2 chgrp $RUNAS_GID $file do_node $CLIENT1 chmod 666 $file zconf_umount $CLIENT2 $MOUNT facet_failover mds @@ -446,7 +452,8 @@ error "version of source not changed: pre $pre, post $post" fi if (($tp_pre == $tp_post)); then - error "version of target parent not changed: pre $tp_pre, post $tp_post" + [ -n "$mds20" ] || \ + error "version of target parent not changed: pre $tp_pre, post $tp_post" fi } run_test 0s "VBR: link changes versions of source and target parent" @@ -503,10 +510,12 @@ sp_post=$(get_version $CLIENT1 $DIR) tp_post=$(get_version $CLIENT1 $DIR/$tdir) if (($sp_pre == $sp_post)); then - error "version of source parent not changed: pre $sp_pre, post $sp_post" + [ -n "$mds20" ] || \ + error "version of source parent not changed: pre $sp_pre, post $sp_post" fi if (($tp_pre == $tp_post)); then - error "version of target parent not changed: pre $tp_pre, post $tp_post" + [ -n "$mds20" ] || \ + error "version of target parent not changed: pre $tp_pre, post $tp_post" fi } run_test 0v "VBR: rename changes versions of source parent and target parent" @@ -520,7 +529,8 @@ do_node $CLIENT1 mv $DIR/$tfile $DIR/$tfile-new post=$(get_version $CLIENT1 $DIR) if (($pre == $post)); then - error "version of parent not changed: pre $pre, post $post" + [ -n "$mds20" ] || \ + error "version of parent not changed: pre $pre, post $post" fi } run_test 0w "VBR: rename within same dir changes version of parent" @@ -659,11 +669,11 @@ replay_barrier mds do_node $CLIENT1 chmod 666 $DIR/$tfile-a # R do_node $CLIENT2 chmod 666 $DIR1/$tfile-b # R - do_node $CLIENT2 chown :$RUNAS_ID $DIR2/$tfile-a # U - do_node $CLIENT1 chown $RUNAS_ID $DIR/$tfile-a # J + do_node $CLIENT2 chgrp $RUNAS_GID $DIR2/$tfile-a # U + do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $DIR/$tfile-a # J do_node $CLIENT2 truncate $DIR2/$tfile-b 1 # U - do_node $CLIENT2 chown :$RUNAS_ID $DIR1/$tfile-b # R - do_node $CLIENT1 chown $RUNAS_ID $DIR/$tfile-b # R + do_node $CLIENT2 chgrp $RUNAS_GID $DIR1/$tfile-b # R + do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $DIR/$tfile-b # R zconf_umount $CLIENT2 $MOUNT2 facet_failover mds @@ -688,7 +698,7 @@ do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$UID -g \\\#$UID \ $DIR1/$tfile-a || error "$DIR/$tfile-a: unexpected state" - do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$RUNAS_ID -g \\\#$RUNAS_ID \ + do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$RUNAS_ID -g \\\#$RUNAS_GID \ $DIR1/$tfile-b || error "$DIR/$tfile-b: unexpected state" zconf_umount $CLIENT2 $MOUNT1 diff -Nru lustre-1.8.3/lustre/tests/sanity-benchmark.sh lustre-1.8.5+dfsg/lustre/tests/sanity-benchmark.sh --- lustre-1.8.3/lustre/tests/sanity-benchmark.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/sanity-benchmark.sh 2010-11-17 04:31:48.000000000 +0100 @@ -11,6 +11,9 @@ init_test_env $@ . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} +# bug number: +ALWAYS_EXCEPT="$SANITY_BENCHMARK_EXCEPT" + MAX_THREADS=${MAX_THREADS:-20} RAMKB=`awk '/MemTotal:/ { print $2 }' /proc/meminfo` if [ -z "$THREADS" ]; then @@ -56,9 +59,11 @@ $DEBUG_OFF myUID=$RUNAS_ID + myGID=$RUNAS_GID myRUNAS=$RUNAS - FAIL_ON_ERROR=false check_runas_id_ret $myUID $myUID $myRUNAS || { myRUNAS="" && myUID=$UID; } - chown $myUID:$myUID $DBENCHDIR + FAIL_ON_ERROR=false check_runas_id_ret $myUID $myGID $myRUNAS || \ + { myRUNAS="" && myUID=$UID && myGID=`id -g $USER`; } + chown $myUID:$myGID $DBENCHDIR local duration="" [ "$SLOW" = "no" ] && duration=" -t 120" if [ "$SLOW" != "no" -o $DB_THREADS -eq 1 ]; then @@ -89,10 +94,12 @@ log "min OST has ${MIN}kB available, using ${SIZE}kB file size" $DEBUG_OFF myUID=$RUNAS_ID + myGID=$RUNAS_GID myRUNAS=$RUNAS - FAIL_ON_ERROR=false check_runas_id_ret $myUID $myUID $myRUNAS || { myRUNAS="" && myUID=$UID; } - chown $myUID:$myUID $BONDIR - $myRUNAS bonnie++ -f -r 0 -s$((SIZE / 1024)) -n 10 -u$myUID:$myUID -d$BONDIR + FAIL_ON_ERROR=false check_runas_id_ret $myUID $myGID $myRUNAS || \ + { myRUNAS="" && myUID=$UID && myGID=`id -$USER`; } + chown $myUID:$myGID $BONDIR + $myRUNAS bonnie++ -f -r 0 -s$((SIZE / 1024)) -n 10 -u$myUID:$myGID -d$BONDIR $DEBUG_ON } run_test bonnie "bonnie++" @@ -119,9 +126,11 @@ # $SPACE was calculated with all OSTs $DEBUG_OFF myUID=$RUNAS_ID + myGID=$RUNAS_GID myRUNAS=$RUNAS - FAIL_ON_ERROR=false check_runas_id_ret $myUID $myUID $myRUNAS || { myRUNAS="" && myUID=$UID; } - chown $myUID:$myUID $IOZDIR + FAIL_ON_ERROR=false check_runas_id_ret $myUID $myGID $myRUNAS || \ + { myRUNAS="" && myUID=$UID && myGID=`id -g $USER`; } + chown $myUID:$myGID $IOZDIR $myRUNAS iozone $IOZONE_OPTS -s $SIZE -f $IOZFILE 2>&1 | tee $IOZLOG tail -1 $IOZLOG | grep -q complete || \ { error "iozone (1) failed" && return 1; } @@ -206,22 +215,39 @@ echo $num } -space_check () { - # space estimation +pios_file_size () { + # pios.c: check_device_size () # /* Adding 10% to total test size for filesystem overhead */ - # size = size + (double)(size) * (double) (0.1); - # - # total_test_size = runarg->stream[n - 1].max_offset + - # runarg->regionsize; + # size = size + (double)(size) * (double) (0.1); + # pios.c: set_actual_streams () + # total_test_size = runarg->regioncount * runarg->regionsize - local space=$(df -P $DIR | tail -n 1 | awk '{ print $4 }') local size=$(($(iterpr_KMGT $pios_REGIONCOUNT) * \ - $(iterpr_KMGT $pios_OFFSET) + \ $(iterpr_KMGT $pios_REGIONSIZE) )) + echo $size +} + +space_check () { + local space=$(df -P $DIR | tail -n 1 | awk '{ print $4 }') + local size=$(pios_file_size) size=$(( size + size / 10 )) - if [ $((space * 1024)) -le $size ]; then - echo "Need free space atleast $size, have $((space * 1024))" - return 10 + # we can not use pios --cleanup|-x because we need the files exist for pios --verify, + # so, we need space available for each of pios_THREADCOUNT value run + local num_runs=$(echo ${pios_THREADCOUNT//,/ } | wc -w) + size=$(( size * $num_runs)) + space=$((space * 1024)) + echo size=$size space=$space + if [ $space -le $size ]; then + local ratio=$(( size / space + 1 )) + echo "Need free space atleast $size, available $space, ratio=$ratio" + local rgcount=$(( pios_REGIONCOUNT / ratio )) + echo "reducing pios_REGIONCOUNT=$pios_REGIONCOUNT on $ratio" + if [ $rgcount -eq 0 ]; then + echo "fs is too small, reduced pios_REGIONCOUNT=$rgcount" + return 10 + fi + pios_REGIONCOUNT=$(( pios_REGIONCOUNT / ratio )) + echo using pios_REGIONCOUNT=$pios_REGIONCOUNT size=$(pios_file_size) fi } @@ -232,20 +258,24 @@ stripes=1 [ "$1" == "--stripe" ] && stripes=-1 $LFS setstripe $testdir -c $stripes - echo "Test directory stripe count: $stripes" + echo "Test directory $testdir stripe count: $stripes" } pios_cleanup() { local rc=$1 local testdir=$DIR/$tdir - [ $rc = 0 ] && rm -rf $testdir + if [ $rc -eq 0 ]; then + echo cleanup: testdir=$testdir rc=$rc + rm -rf $testdir + wait_delete_completed || true + fi } run_pios () { local testdir=$DIR/$tdir local cmd="$PIOSBIN -t $pios_THREADCOUNT -n $pios_REGIONCOUNT \ -c $pios_CHUNKSIZE -s $pios_REGIONSIZE \ - -o $pios_OFFSET $@ -p $testdir" + -o $pios_OFFSET $@ -p $testdir" if [ ! -d $testdir ]; then error "No test directory created, setup_pios must have failed" diff -Nru lustre-1.8.3/lustre/tests/sanityN.sh lustre-1.8.5+dfsg/lustre/tests/sanityN.sh --- lustre-1.8.3/lustre/tests/sanityN.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/sanityN.sh 2010-11-17 04:31:48.000000000 +0100 @@ -61,7 +61,7 @@ # $RUNAS_ID may get set incorrectly somewhere else [ $UID -eq 0 -a $RUNAS_ID -eq 0 ] && error "\$RUNAS_ID set to 0, but \$UID is also 0!" -check_runas_id $RUNAS_ID $RUNAS_ID $RUNAS +check_runas_id $RUNAS_ID $RUNAS_GID $RUNAS build_test_filter @@ -483,13 +483,13 @@ chmod 0755 $DIR1/$tdir/f1 || error "chmod 0755 $DIR1/$tdir/f1" $RUNAS $CHECKSTAT $DIR2/$tdir/f1 || error "checkstat $DIR2/$tdir/f1 #1" - setfacl -m u:$RUNAS_ID:--- $DIR1/$tdir || error "setfacl $DIR2/$tdir #1" + setfacl -m u:$RUNAS_ID:--- -m g:$RUNAS_GID:--- $DIR1/$tdir || error "setfacl $DIR2/$tdir #1" $RUNAS $CHECKSTAT $DIR2/$tdir/f1 && error "checkstat $DIR2/$tdir/f1 #2" - setfacl -m u:$RUNAS_ID:r-x $DIR1/$tdir || error "setfacl $DIR2/$tdir #2" + setfacl -m u:$RUNAS_ID:r-x -m g:$RUNAS_GID:r-x $DIR1/$tdir || error "setfacl $DIR2/$tdir #2" $RUNAS $CHECKSTAT $DIR2/$tdir/f1 || error "checkstat $DIR2/$tdir/f1 #3" - setfacl -m u:$RUNAS_ID:--- $DIR1/$tdir || error "setfacl $DIR2/$tdir #3" + setfacl -m u:$RUNAS_ID:--- -m g:$RUNAS_GID:--- $DIR1/$tdir || error "setfacl $DIR2/$tdir #3" $RUNAS $CHECKSTAT $DIR2/$tdir/f1 && error "checkstat $DIR2/$tdir/f1 #4" - setfacl -x u:$RUNAS_ID: $DIR1/$tdir || error "setfacl $DIR2/$tdir #4" + setfacl -x u:$RUNAS_ID: -x g:$RUNAS_GID: $DIR1/$tdir || error "setfacl $DIR2/$tdir #4" $RUNAS $CHECKSTAT $DIR2/$tdir/f1 || error "checkstat $DIR2/$tdir/f1 #5" rm -rf $DIR1/$tdir @@ -698,13 +698,22 @@ } run_test 32b "lockless i/o" +get_ost_lock_timeouts() { + local nodes=${1:-$(comma_list $(osts_nodes))} + + local locks=$(do_nodes $nodes \ + "lctl get_param -n ldlm.namespaces.filter-*.lock_timeouts" | calc_sum) + + echo $locks +} + test_33() { #16129 local OPER local lock_in local lock_out for OPER in notimeout timeout ; do rm $DIR1/$tfile 2>/dev/null - lock_in=$(do_nodes $(osts_nodes) "lctl get_param -n ldlm.namespaces.filter-*.lock_timeouts" | calc_sum) + lock_in=$(get_ost_lock_timeouts) if [ $OPER == "timeout" ] ; then for j in `seq $OSTCOUNT`; do #define OBD_FAIL_PTLRPC_HPREQ_TIMEOUT 0x511 @@ -725,7 +734,7 @@ dd of=/dev/null if=$DIR2/$tfile > /dev/null 2>&1 # wait for a lock timeout sleep 4 - lock_out=$(do_nodes $(osts_nodes) "lctl get_param -n ldlm.namespaces.filter-*.lock_timeouts" | calc_sum) + lock_out=$(get_ost_lock_timeouts) if [ $OPER == "timeout" ] ; then if [ $lock_in == $lock_out ]; then error "no lock timeout happened" diff -Nru lustre-1.8.3/lustre/tests/sanity-quota.sh lustre-1.8.5+dfsg/lustre/tests/sanity-quota.sh --- lustre-1.8.3/lustre/tests/sanity-quota.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/sanity-quota.sh 2010-11-17 04:31:48.000000000 +0100 @@ -96,7 +96,7 @@ set_blk_tunesz() { local btune=$(($1 * BLK_SZ)) # set btune size on all obdfilters - do_facet ost1 "lctl set_param lquota.${FSNAME}-OST*.quota_btune_sz=$btune" + do_nodes $(comma_list $(osts_nodes)) "lctl set_param lquota.${FSNAME}-OST*.quota_btune_sz=$btune" # set btune size on mds do_facet mds "lctl set_param lquota.*${FSNAME}-MDT*.quota_btune_sz=$btune" } @@ -105,7 +105,7 @@ set_blk_unitsz() { local bunit=$(($1 * BLK_SZ)) # set bunit size on all obdfilters - do_facet ost1 "lctl set_param lquota.${FSNAME}-OST*.quota_bunit_sz=$bunit" + do_nodes $(comma_list $(osts_nodes)) "lctl set_param lquota.${FSNAME}-OST*.quota_bunit_sz=$bunit" # set bunit size on mds do_facet mds "lctl set_param lquota.*${FSNAME}-MDT*.quota_bunit_sz=$bunit" } @@ -113,8 +113,6 @@ # set_file_tunesz(itune_sz) set_file_tunesz() { local itune=$1 - # set itune size on all obdfilters - do_facet ost1 "lctl set_param lquota.${FSNAME}-OST*.quota_itune_sz=$itune" # set itune size on mds do_facet mds "lctl set_param lquota.*${FSNAME}-MDT*.quota_itune_sz=$itune" } @@ -122,8 +120,6 @@ # set_file_unitsz(iunit_sz) set_file_unitsz() { local iunit=$1 - # set iunit size on all obdfilters - do_facet ost1 "lctl set_param lquota.${FSNAME}-OST*.quota_iunit_sz=$iunit" # set iunit size on mds do_facet mds "lctl set_param lquota.*${FSNAME}-MDT*.quota_iunit_sz=$iunit" } @@ -237,6 +233,36 @@ log "$*" } +# +# get quota info for a user or a group +# usage: getquota -u|-g | global| bhardlimit|bsoftlimit|bgrace|ihardlimit|isoftlimit|igrace +# +getquota() { + local spec + local uuid + + [ "$#" != 4 ] && error "getquota: wrong number of arguments: $#" + [ "$1" != "-u" -a "$1" != "-g" ] && error "getquota: wrong u/g specifier $1 passed" + + uuid="$3" + + case $4 in + curspace) spec=1;; + bsoftlimit) spec=2;; + bhardlimit) spec=3;; + bgrace) spec=4;; + curinodes) spec=5;; + isoftlimit) spec=6;; + ihardlimit) spec=7;; + igrace) spec=8;; + *) error "unknown quota parameter $4";; + esac + + [ "$uuid" = "global" ] && uuid=$DIR + + $LFS quota -v "$1" "$2" $DIR | awk 'BEGIN { num='$spec' } { if ($1 == "'$uuid'") { if (NF == 1) { getline } else { num++ } ; print $num;} }' +} + quota_show_check() { LOCAL_BF=$1 LOCAL_UG=$2 @@ -246,7 +272,7 @@ $LFS quota -v -$LOCAL_UG $LOCAL_ID $DIR if [ "$LOCAL_BF" == "a" -o "$LOCAL_BF" == "b" ]; then - USAGE="`$LFS quota -$LOCAL_UG $LOCAL_ID $DIR | awk '/^.*'$PATTERN'.*[[:digit:]+][[:space:]+]/ { print $2 }'`" + USAGE=`getquota -$LOCAL_UG $LOCAL_ID global curspace` if [ -z $USAGE ]; then quota_error $LOCAL_UG $LOCAL_ID "System is error when query quota for block ($LOCAL_UG:$LOCAL_ID)." else @@ -255,7 +281,7 @@ fi if [ "$LOCAL_BF" == "a" -o "$LOCAL_BF" == "f" ]; then - USAGE="`$LFS quota -$LOCAL_UG $LOCAL_ID $DIR | awk '/^.*'$PATTERN'.*[[:digit:]+][[:space:]+]/ { print $6 }'`" + USAGE=`getquota -$LOCAL_UG $LOCAL_ID global curinodes` if [ -z $USAGE ]; then quota_error $LOCAL_UG $LOCAL_ID "System is error when query quota for file ($LOCAL_UG:$LOCAL_ID)." else @@ -311,7 +337,7 @@ rm -f $TESTFILE sync; sleep 1; sync; OST0_UUID=`do_facet ost1 $LCTL dl | grep -m1 obdfilter | awk '{print $((NF-1))}'` - OST0_QUOTA_USED=`$LFS quota -q -o $OST0_UUID -u $TSTUSR $DIR | awk '{ print $1 }'` + OST0_QUOTA_USED=`getquota -u $TSTUSR $OST0_UUID curspace` echo $OST0_QUOTA_USED [ $OST0_QUOTA_USED -ne 0 ] && \ ($SHOW_QUOTA_USER; quota_error u $TSTUSR "(usr) quota deleted isn't released") @@ -342,7 +368,7 @@ rm -f $TESTFILE sync; sleep 1; sync; OST0_UUID=`do_facet ost1 $LCTL dl | grep -m1 obdfilter | awk '{print $((NF-1))}'` - OST0_QUOTA_USED=`$LFS quota -q -o $OST0_UUID -g $TSTUSR $DIR | awk '{ print $1 }'` + OST0_QUOTA_USED=`getquota -g $TSTUSR $OST0_UUID curspace` echo $OST0_QUOTA_USED [ $OST0_QUOTA_USED -ne 0 ] && \ ($SHOW_QUOTA_GROUP; quota_error g $TSTUSR "(grp) quota deleted isn't released") @@ -399,7 +425,8 @@ # interop 18 <-> 20 local dev=$(get_mds_mdt_device_proc_path) MDS_UUID=`do_facet mds $LCTL dl | grep -m1 " $dev " | awk '{print $((NF-1))}'` - MDS_QUOTA_USED=`$LFS quota -q -o $MDS_UUID -u $TSTUSR $DIR | awk '{ print $5 }'` + MDS_QUOTA_USED=`getquota -u $TSTUSR $MDS_UUID curinodes` + echo $MDS_QUOTA_USED [ $MDS_QUOTA_USED -ne 0 ] && \ ($SHOW_QUOTA_USER; quota_error u $TSTUSR "(usr) quota deleted isn't released") @@ -427,7 +454,8 @@ sync; sleep 1; sync; MDS_UUID=`do_facet mds $LCTL dl | grep -m1 " $dev " | awk '{print $((NF-1))}'` - MDS_QUOTA_USED=`$LFS quota -q -o $MDS_UUID -g $TSTUSR $DIR | awk '{ print $5 }'` + MDS_QUOTA_USED=`getquota -g $TSTUSR $MDS_UUID curinodes` + echo $MDS_QUOTA_USED [ $MDS_QUOTA_USED -ne 0 ] && \ ($SHOW_QUOTA_GROUP; quota_error g $TSTUSR "(grp) quota deleted isn't released") @@ -775,7 +803,7 @@ while [ $((count--)) -gt 0 ]; do sync && sleep 5 - OST0_QUOTA_HOLD=`$LFS quota -q -o $OST0_UUID -u $TSTUSR $DIR | awk '{ print $3 }'` + OST0_QUOTA_HOLD=`getquota -u $TSTUSR $OST0_UUID bhardlimit` if [ -z $OST0_QUOTA_HOLD ]; then error "System is error when query quota for block (U:$TSTUSR)." else @@ -791,7 +819,7 @@ while [ $((count--)) -gt 0 ]; do sync && sleep 5 - OST0_QUOTA_HOLD=`$LFS quota -q -o $OST0_UUID -g $TSTUSR $DIR | awk '{ print $3 }'` + OST0_QUOTA_HOLD=`getquota -g $TSTUSR $OST0_UUID bhardlimit` if [ -z $OST0_QUOTA_HOLD ]; then error "System is error when query quota for block (G:$TSTUSR)." else @@ -856,13 +884,13 @@ # check limits PATTERN="`echo $DIR | sed 's/\//\\\\\//g'`" - TOTAL_LIMIT="`$LFS quota -v -u $TSTUSR $DIR | awk '/^.*'$PATTERN'.*[[:digit:]+][[:space:]+]/ { print $4 }'`" + TOTAL_LIMIT=`getquota -u $TSTUSR global bhardlimit` [ $TOTAL_LIMIT -eq $LIMIT ] || error "total limits not recovery!" echo " total limits = $TOTAL_LIMIT" OST0_UUID=`do_facet ost1 "$LCTL dl | grep -m1 obdfilter" | awk '{print $((NF-1))}'` [ -z "$OST0_UUID" ] && OST0_UUID=`do_facet ost1 "$LCTL dl | grep -m1 obdfilter" | awk '{print $((NF-1))}'` - OST0_LIMIT="`$LFS quota -q -o $OST0_UUID -u $TSTUSR $DIR | awk '{ print $3 }'`" + OST0_LIMIT=`getquota -u $TSTUSR $OST0_UUID bhardlimit` [ $OST0_LIMIT -eq $BUNIT_SZ ] || error "high limits not released!" echo " limits on $OST0_UUID = $OST0_LIMIT" @@ -1227,14 +1255,14 @@ # test for user $LFS setquota -u $TSTUSR -b 0 -B $LIMIT -i 0 -I 0 $DIR - TOTAL_LIMIT="`$LFS quota -v -u $TSTUSR $DIR | awk '/^.*'$PATTERN'.*[[:digit:]+][[:space:]+]/ { print $4 }'`" + TOTAL_LIMIT=`getquota -u $TSTUSR global bhardlimit` [ $TOTAL_LIMIT -eq $LIMIT ] || error " (user)total limits = $TOTAL_LIMIT; limit = $LIMIT, failed!" echo " (user)total limits = $TOTAL_LIMIT; limit = $LIMIT, successful!" resetquota -u $TSTUSR # test for group $LFS setquota -g $TSTUSR -b 0 -B $LIMIT -i 0 -I 0 $DIR - TOTAL_LIMIT="`$LFS quota -v -g $TSTUSR $DIR | awk '/^.*'$PATTERN'.*[[:digit:]+][[:space:]+]/ { print $4 }'`" + TOTAL_LIMIT=`getquota -g $TSTUSR global bhardlimit` [ $TOTAL_LIMIT -eq $LIMIT ] || error " (group)total limits = $TOTAL_LIMIT; limit = $LIMIT, failed!" echo " (group)total limits = $TOTAL_LIMIT; limit = $LIMIT, successful!" @@ -1532,7 +1560,7 @@ fi DDPID=$! - do_facet mds "$LCTL conf_param ${FSNAME}-MDT*.mdt.quota_type=ug" + do_facet mds "$LCTL conf_param ${FSNAME}-MDT*.$(get_md_name).quota_type=ug" log "failing mds for $((2 * timeout)) seconds" fail mds $((2 * timeout)) @@ -1664,9 +1692,10 @@ --inode-hardlimit ${LSTR[3]} \ $MOUNT || error "could not set quota limits" - ($LFS quota -v -u $TSTUSR $MOUNT | \ - grep -E '^ *'$MOUNT' *[0-9]+\** *'${LVAL[0]}' *'${LVAL[1]}' *- *[0-9]+\** *'${LVAL[2]}' *'${LVAL[3]}) \ - || error "lfs quota output is unexpected" + [ "`getquota -u $TSTUSR global bsoftlimit`" = "${LVAL[0]}" ] || error "bsoftlimit was not set properly" + [ "`getquota -u $TSTUSR global bhardlimit`" = "${LVAL[1]}" ] || error "bhardlimit was not set properly" + [ "`getquota -u $TSTUSR global isoftlimit`" = "${LVAL[2]}" ] || error "isoftlimit was not set properly" + [ "`getquota -u $TSTUSR global ihardlimit`" = "${LVAL[3]}" ] || error "ihardlimit was not set properly" resetquota -u $TSTUSR } @@ -1804,7 +1833,7 @@ rm -f $TESTFILE wait_delete_completed OST0_UUID=`do_facet ost1 $LCTL dl | grep -m1 obdfilter | awk '{print $((NF-1))}'` - OST0_QUOTA_USED=`$LFS quota -q -o $OST0_UUID -u $TSTUSR $DIR | awk '{ print $1 }'` + OST0_QUOTA_USED=`getquota -u $TSTUSR $OST0_UUID curspace` echo $OST0_QUOTA_USED [ $OST0_QUOTA_USED -ne 0 ] && \ ($SHOW_QUOTA_USER; quota_error u $TSTUSR "quota deleted isn't released") @@ -1893,10 +1922,11 @@ local dev=$(get_mds_mdt_device_proc_path) MDS_UUID=`do_facet mds $LCTL dl | grep -m1 " $dev " | awk '{print $((NF-1))}'` OST0_UUID=`do_facet ost1 $LCTL dl | grep -m1 obdfilter | awk '{print $((NF-1))}'` - MDS_QUOTA_USED_OLD=`$LFS quota -q -o $MDS_UUID $1 $TSTUSR $DIR | awk '{ print $5 }'` - OST0_QUOTA_USED_OLD=`$LFS quota -q -o $OST0_UUID $1 $TSTUSR $DIR | awk '{ print $1 }'` - MDS_QUOTA_USED2_OLD=`$LFS quota -q -o $MDS_UUID $1 $TSTUSR2 $DIR | awk '{ print $5 }'` - OST0_QUOTA_USED2_OLD=`$LFS quota -q -o $OST0_UUID $1 $TSTUSR2 $DIR | awk '{ print $1 }'` + + MDS_QUOTA_USED_OLD=`getquota $1 $TSTUSR $MDS_UUID curinodes` + OST0_QUOTA_USED_OLD=`getquota $1 $TSTUSR $OST0_UUID curspace` + MDS_QUOTA_USED2_OLD=`getquota $1 $TSTUSR2 $MDS_UUID curinodes` + OST0_QUOTA_USED2_OLD=`getquota $1 $TSTUSR2 $OST0_UUID curspace` # TSTUSR write 4M log "$TSTUSR write 4M to $TESTFILE" @@ -1904,10 +1934,10 @@ sync show_quota $1 $TSTUSR show_quota $1 $TSTUSR2 - MDS_QUOTA_USED_NEW=`$LFS quota -q -o $MDS_UUID $1 $TSTUSR $DIR | awk '{ print $5 }'` + MDS_QUOTA_USED_NEW=`getquota $1 $TSTUSR $MDS_UUID curinodes` [ $MDS_QUOTA_USED_NEW -ne $((MDS_QUOTA_USED_OLD + 1)) ] && \ quota_error a $TSTUSR "$TSTUSR inode quota usage error: [$MDS_QUOTA_USED_OLD|$MDS_QUOTA_USED_NEW]" - OST0_QUOTA_USED_NEW=`$LFS quota -q -o $OST0_UUID $1 $TSTUSR $DIR | awk '{ print $1 }'` + OST0_QUOTA_USED_NEW=`getquota $1 $TSTUSR $OST0_UUID curspace` OST0_QUOTA_USED_DELTA=$((OST0_QUOTA_USED_NEW - OST0_QUOTA_USED_OLD)) [ $OST0_QUOTA_USED_DELTA -lt 4096 ] && \ quota_error a $TSTUSR "$TSTUSR block quota usage error: [$OST0_QUOTA_USED_OLD|$OST0_QUOTA_USED_NEW]" @@ -1923,19 +1953,19 @@ sync show_quota $1 $TSTUSR show_quota $1 $TSTUSR2 - MDS_QUOTA_USED2_NEW=`$LFS quota -q -o $MDS_UUID $1 $TSTUSR2 $DIR | awk '{ print $5 }'` + MDS_QUOTA_USED2_NEW=`getquota $1 $TSTUSR2 $MDS_UUID curinodes` [ $MDS_QUOTA_USED2_NEW -ne $((MDS_QUOTA_USED2_OLD + 1)) ] && \ quota_error a $TSTUSR2 "$TSTUSR2 inode quota usage transfer from $TSTUSR to $TSTUSR2 failed: [$MDS_QUOTA_USED2_OLD|$MDS_QUOTA_USED2_NEW]" - OST0_QUOTA_USED2_NEW=`$LFS quota -q -o $OST0_UUID $1 $TSTUSR2 $DIR | awk '{ print $1 }'` + OST0_QUOTA_USED2_NEW=`getquota $1 $TSTUSR2 $OST0_UUID curspace` # when chown, the quota on ost could be displayed out of quota temporarily. Delete the '*' in this situation. b=20433 OST0_QUOTA_USED2_NEW=${OST0_QUOTA_USED2_NEW%\*} OST0_QUOTA_USED2_DELTA=$((OST0_QUOTA_USED2_NEW - OST0_QUOTA_USED2_OLD)) [ $OST0_QUOTA_USED2_DELTA -ne $OST0_QUOTA_USED_DELTA ] && \ quota_error a $TSTUSR2 "$TSTUSR2 block quota usage transfer from $TSTUSR to $TSTUSR2 failed: [$OST0_QUOTA_USED2_OLD|$OST0_QUOTA_USED2_NEW]" - MDS_QUOTA_USED_NEW=`$LFS quota -q -o $MDS_UUID $1 $TSTUSR $DIR | awk '{ print $5 }'` + MDS_QUOTA_USED_NEW=`getquota $1 $TSTUSR $MDS_UUID curinodes` [ $MDS_QUOTA_USED_NEW -ne $MDS_QUOTA_USED_OLD ] && \ quota_error a $TSTUSR "$TSTUSR inode quota usage transfer from $TSTUSR to $TSTUSR2 failed: [$MDS_QUOTA_USED_OLD|$MDS_QUOTA_USED_NEW]" - OST0_QUOTA_USED_NEW=`$LFS quota -q -o $OST0_UUID $1 $TSTUSR $DIR | awk '{ print $1 }'` + OST0_QUOTA_USED_NEW=`getquota $1 $TSTUSR $OST0_UUID curspace` [ $OST0_QUOTA_USED_NEW -ne $OST0_QUOTA_USED_OLD ] && \ quota_error a $TSTUSR "$TSTUSR block quota usage transfer from $TSTUSR to $TSTUSR2 failed: [$OST0_QUOTA_USED_OLD|$OST0_QUOTA_USED_NEW]" @@ -2122,20 +2152,35 @@ local TESTFILE="$DIR/$tdir/$tfile" local GRACE=10 + set_blk_tunesz 512 + set_blk_unitsz 1024 + mkdir -p $DIR/$tdir chmod 0777 $DIR/$tdir + $LFS setstripe $TESTFILE -i 0 -c 1 + chown $TSTUSR.$TSTUSR $TESTFILE + $LFS setquota -t -u --block-grace $GRACE --inode-grace $MAX_IQ_TIME $DIR $LFS setquota -u $TSTUSR -b $LIMIT -B 0 -i 0 -I 0 $DIR $RUNAS dd if=/dev/zero of=$TESTFILE bs=1024 count=$((LIMIT * 2)) || true cancel_lru_locks osc sleep $GRACE $LFS setquota -u $TSTUSR -B 0 $DIR + # over-quota flag has not yet settled since we do not trigger async events + # based on grace time period expiration + $SHOW_QUOTA_USER + $RUNAS dd if=/dev/zero of=$TESTFILE conv=notrunc oflag=append bs=1048576 count=1 || true + cancel_lru_locks osc + # now over-quota flag should be settled and further writes should fail $SHOW_QUOTA_USER - $RUNAS dd if=/dev/zero of=$TESTFILE oflag=append bs=1024 count=1 && error "grace times were reset" + $RUNAS dd if=/dev/zero of=$TESTFILE conv=notrunc oflag=append bs=1048576 count=1 && error "grace times were reset" rm -f $TESTFILE resetquota -u $TSTUSR $LFS setquota -t -u --block-grace $MAX_DQ_TIME --inode-grace $MAX_IQ_TIME $DIR + + set_blk_unitsz $((128 * 1024)) + set_blk_tunesz $((128 * 1024 / 2)) } run_test_with_stat 30 "hard limit updates should not reset grace times ================" @@ -2187,6 +2232,80 @@ } run_test_with_stat 31 "test duplicate quota releases ===" +# check hash_cur_bits +check_quota_hash_cur_bits() { + local bits=$1 + + # check quota_hash_cur_bits on all obdfilters + for num in `seq $OSTCOUNT`; do + cb=`do_facet ost$num "cat /sys/module/lquota/parameters/hash_lqs_cur_bits"` + if [ $cb -gt $bits ]; then + echo "hash_lqs_cur_bits of ost$num is too large(cur_bits=$cb)" + return 1; + fi + done + # check quota_hash_cur_bits on mds + cb=`do_facet mds "cat /sys/module/lquota/parameters/hash_lqs_cur_bits"` + if [ $cb -gt $bits ]; then + echo "hash_lqs_cur_bits of mds is too large(cur_bits=$cb)" + return 1; + fi + return 0; +} + +# check lqs hash +check_lqs_hash() { + # check distribution of all obdfilters + for num in `seq $OSTCOUNT`; do + do_facet ost$num "lctl get_param obdfilter.${FSNAME}-OST*.hash_stats | grep LQS_HASH" | while read line; do + rehash_count=`echo $line | awk '{print $9}'` + if [ $rehash_count -eq 0 ]; then + echo -e "ost$num:\n $line" + error "Rehearsh didn't happen" + fi + done + done + # check distribution of mds + do_facet mds "lctl get_param mds.${FSNAME}-MDT*.hash_stats | grep LQS_HASH" | while read line; do + rehash_count=`echo $line | awk '{print $9}'` + if [ $rehash_count -eq 0 ]; then + echo -e "mdt:\n $line" + error "Rehearsh didn't happen" + fi + done +} + +test_32() +{ + # reset system so that quota_hash_cur_bits==3 + echo "Reset system ..." + local LMR_orig=$LOAD_MODULES_REMOTE + LOAD_MODULES_REMOTE=true + cleanup_and_setup_lustre + LOAD_MODULES_REMOTE=$LMR_orig + + for user in $SANITY_QUOTA_USERS; do + check_runas_id_ret $user quota_usr "runas -u $user -g quota_usr" >/dev/null 2>/dev/null || \ + missing_users="$missing_users $user" + done + [ -n "$missing_users" ] && { skip_env "the following users are missing: $missing_users" ; return 0 ; } + check_quota_hash_cur_bits 3 || { skip_env "hash_lqs_cur_bits isn't set properly"; return 0;} + + $LFS quotaoff -ug $DIR + $LFS quotacheck -ug $DIR + + for user in $SANITY_QUOTA_USERS; do + $LFS setquota -u $user --block-hardlimit 1048576 $DIR + done + + check_lqs_hash + + for user in $SANITY_QUOTA_USERS; do + resetquota -u $user + done +} +run_test 32 "check lqs hash(bug 21846) ==========================================" + # # run 98 at the end because of reformatall # diff -Nru lustre-1.8.3/lustre/tests/sanity.sh lustre-1.8.5+dfsg/lustre/tests/sanity.sh --- lustre-1.8.3/lustre/tests/sanity.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/sanity.sh 2010-11-17 04:31:48.000000000 +0100 @@ -10,7 +10,7 @@ ONLY=${ONLY:-"$*"} # bug number for skipped test: 13297 2108 9789 3637 9789 3561 12622 15528/2330 5188 10764 16410 -ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-"27u 42a 42b 42c 42d 45 51d 62 68 75 76 $SANITY_EXCEPT"} +ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-"27u 42a 42b 42c 42d 45 51d 62 68 75 $SANITY_EXCEPT"} # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT! # Tests that fail on uml, maybe elsewhere, FIXME @@ -123,7 +123,7 @@ # $RUNAS_ID may get set incorrectly somewhere else [ $UID -eq 0 -a $RUNAS_ID -eq 0 ] && error "\$RUNAS_ID set to 0, but \$UID is also 0!" -check_runas_id $RUNAS_ID $RUNAS_ID $RUNAS +check_runas_id $RUNAS_ID $RUNAS_GID $RUNAS build_test_filter @@ -291,16 +291,16 @@ $RUNAS mkdir $DIR/d6g/d || error chmod g+s $DIR/d6g/d || error mkdir $DIR/d6g/d/subdir - $CHECKSTAT -g \#$RUNAS_ID $DIR/d6g/d/subdir || error + $CHECKSTAT -g \#$RUNAS_GID $DIR/d6g/d/subdir || error } run_test 6g "Is new dir in sgid dir inheriting group?" test_6h() { # bug 7331 [ $RUNAS_ID -eq $UID ] && skip_env "RUNAS_ID = UID = $UID -- skipping" && return touch $DIR/f6h || error "touch failed" - chown $RUNAS_ID:$RUNAS_ID $DIR/f6h || error "initial chown failed" - $RUNAS -G$RUNAS_ID chown $RUNAS_ID:0 $DIR/f6h && error "chown worked" - $CHECKSTAT -t file -u \#$RUNAS_ID -g \#$RUNAS_ID $DIR/f6h || error + chown $RUNAS_ID:$RUNAS_GID $DIR/f6h || error "initial chown failed" + $RUNAS -G$RUNAS_GID chown $RUNAS_ID:0 $DIR/f6h && error "chown worked" + $CHECKSTAT -t file -u \#$RUNAS_ID -g \#$RUNAS_GID $DIR/f6h || error } run_test 6h "$RUNAS chown RUNAS_ID.0 .../f6h (should return error)" @@ -540,13 +540,13 @@ test_22() { WDIR=$DIR/$tdir mkdir -p $WDIR - chown $RUNAS_ID $WDIR + chown $RUNAS_ID:$RUNAS_GID $WDIR (cd $WDIR || error "cd $WDIR failed"; $RUNAS tar cf - /etc/hosts /etc/sysconfig/network | \ $RUNAS tar xf -) ls -lR $WDIR/etc || error "ls -lR $WDIR/etc failed" $CHECKSTAT -t dir $WDIR/etc || error "checkstat -t dir failed" - $CHECKSTAT -u \#$RUNAS_ID $WDIR/etc || error "checkstat -u failed" + $CHECKSTAT -u \#$RUNAS_ID -g \#$RUNAS_GID $WDIR/etc || error "checkstat -u failed" } run_test 22 "unpack tar archive as non-root user ===============" @@ -768,6 +768,20 @@ } run_test 24u "create stripe file" +test_24w() { # bug21506 + SZ1=234852 + dd if=/dev/zero of=$DIR/$tfile bs=1M count=1 seek=4096 || \ + error "First write failed." + dd if=/dev/zero bs=$SZ1 count=1 >> $DIR/$tfile || \ + error "Second write failed." + dd if=$DIR/$tfile of=$DIR/${tfile}_left bs=1M skip=4097 || \ + error "Reading the file failed." + SZ2=`ls -l $DIR/${tfile}_left | awk '{print $5}'` + [ "$SZ1" = "$SZ2" ] || \ + error "Error reading at the end of the file $tfile" +} +run_test 24w "Reading a file larger than 4Gb" + test_25a() { echo '== symlink sanity =============================================' @@ -1238,6 +1252,22 @@ } run_test 27y "create files while OST0 is degraded and the rest inactive" +test_27z() { # b=19102 + local restore_size=`$GETSTRIPE -s $MOUNT` + local restore_count=`$GETSTRIPE -c $MOUNT` + local restore_offset=`$GETSTRIPE -o $MOUNT` + $SETSTRIPE -c 0 -o -1 -s 0 $MOUNT + local default_size=`$GETSTRIPE -s $MOUNT` + local default_count=`$GETSTRIPE -c $MOUNT` + local default_offset=`$GETSTRIPE -o $MOUNT` + local dsize=$((1024 * 1024)) + [ $default_size -eq $dsize ] || error "stripe size $default_size != $dsize" + [ $default_count -eq 1 ] || error "stripe count $default_count != 1" + [ $default_offset -eq -1 ] || error "stripe offset $default_offset != -1" + $SETSTRIPE -c $restore_count -o $restore_offset -s $restore_size $MOUNT +} +run_test 27z "check filesystem-wide default LOV EA values" + # createtest also checks that device nodes are created and # then visible correctly (#2091) test_28() { # bug 2091 @@ -2551,17 +2581,6 @@ } run_test 54e "console/tty device works in lustre ======================" -check_fstype() { - grep -q $FSTYPE /proc/filesystems && return 1 - modprobe $FSTYPE - grep -q $FSTYPE /proc/filesystems && return 1 - insmod ../$FSTYPE/$FSTYPE.o - grep -q $FSTYPE /proc/filesystems && return 1 - insmod ../$FSTYPE/$FSTYPE.ko - grep -q $FSTYPE /proc/filesystems && return 1 - return 0 -} - test_55() { rm -rf $DIR/d55 mkdir $DIR/d55 @@ -2703,8 +2722,8 @@ test_56i() { tdir=${tdir}i mkdir -p $DIR/$tdir - UUID=`$LFS osts $DIR/$tdir | awk '/0: / { print $2 }'` - OUT="`$LFIND -ost $UUID $DIR/$tdir`" + UUID=$(ostuuid_from_index 0 $DIR/$tdir) + OUT=$($LFIND -obd $UUID $DIR/$tdir) [ "$OUT" ] && error "$LFIND returned directory '$OUT'" || true } run_test 56i "check 'lfs find -ost UUID' skips directories =======" @@ -2807,14 +2826,14 @@ setup_56 $NUMFILES $NUMDIRS - chgrp $RUNAS_ID $TDIR/file* || error "chown $DIR/${tdir}g/file$i failed" + chgrp $RUNAS_GID $TDIR/file* || error "chown $DIR/${tdir}g/file$i failed" EXPECTED=$NUMFILES - NUMS="`$LFIND -gid $RUNAS_ID $TDIR | wc -l`" + NUMS="`$LFIND -gid $RUNAS_GID $TDIR | wc -l`" [ $NUMS -eq $EXPECTED ] || \ error "lfs find -gid $TDIR wrong: found $NUMS, expected $EXPECTED" EXPECTED=$(( ($NUMFILES+1) * $NUMDIRS + 1)) - NUMS="`$LFIND ! -gid $RUNAS_ID $TDIR | wc -l`" + NUMS="`$LFIND ! -gid $RUNAS_GID $TDIR | wc -l`" [ $NUMS -eq $EXPECTED ] || \ error "lfs find ! -gid $TDIR wrong: found $NUMS, expected $EXPECTED" @@ -2822,6 +2841,39 @@ } run_test 56q "check lfs find -gid and ! -gid ===============================" +test_56r() { + setup_56 $NUMFILES $NUMDIRS + TDIR=$DIR/${tdir}g + + EXPECTED=12 + NUMS=`$LFIND -size 0 -t f $TDIR | wc -l` + [ $NUMS -eq $EXPECTED ] || \ + error "lfs find $TDIR -size 0 wrong: found $NUMS, expected $EXPECTED" + EXPECTED=0 + NUMS=`$LFIND ! -size 0 -t f $TDIR | wc -l` + [ $NUMS -eq $EXPECTED ] || \ + error "lfs find $TDIR ! -size 0 wrong: found $NUMS, expected $EXPECTED" + echo "test" > $TDIR/5chars + EXPECTED=1 + NUMS=`$LFIND -size 5 -t f $TDIR | wc -l` + [ $NUMS -eq $EXPECTED ] || \ + error "lfs find $TDIR -size 5 wrong: found $NUMS, expected $EXPECTED" + EXPECTED=1 + NUMS=`$LFIND -size +5 -t f $TDIR | wc -l` + [ $NUMS -eq $EXPECTED ] || \ + error "lfs find $TDIR -size +5 wrong: found $NUMS, expected $EXPECTED" + EXPECTED=13 + NUMS=`$LFIND -size +0 -t f $TDIR | wc -l` + [ $NUMS -eq $EXPECTED ] || \ + error "lfs find $TDIR -size +0 wrong: found $NUMS, expected $EXPECTED" + EXPECTED=0 + NUMS=`$LFIND ! -size -5 -t f $TDIR | wc -l` + [ $NUMS -eq $EXPECTED ] || \ + error "lfs find $TDIR ! -size -5 wrong: found $NUMS, expected $EXPECTED" +} + +run_test 56r "check lfs find -size works ==========================" + test_57a() { remote_mds_nodsh && skip "remote MDS with nodsh" && return @@ -3171,8 +3223,8 @@ check_kernel_version 35 || return 0 mkdir -p $DIR/$tdir chmod 771 $DIR/$tdir - chgrp $RUNAS_ID $DIR/$tdir - $RUNAS -u $RUNAS_ID -g $(($RUNAS_ID + 1)) -G1,2,$RUNAS_ID ls $DIR/$tdir + chgrp $RUNAS_GID $DIR/$tdir + $RUNAS -u $RUNAS_ID -g $(($RUNAS_GID + 1)) -G1,2,$RUNAS_GID ls $DIR/$tdir RC=$? GROUP_UPCALL=$(do_facet mds lctl get_param -n mds.*.group_upcall) [ -z "$GROUP_UPCALL" ] && \ @@ -3327,7 +3379,7 @@ [ "$RUNAS_ID" = "$UID" ] && skip_env "RUNAS_ID = UID = $UID -- skipping" && return # Check that testing environment is properly set up. Skip if not - FAIL_ON_ERROR=false check_runas_id_ret $RUNAS_ID $RUNAS_ID $RUNAS || { + FAIL_ON_ERROR=false check_runas_id_ret $RUNAS_ID $RUNAS_GID $RUNAS || { skip_env "User $RUNAS_ID does not exist - skipping" return 0 } @@ -3511,9 +3563,21 @@ awk '/lustre_inode_cache/ {print $2; exit}' /proc/slabinfo } -test_76() { # bug 1443 - DETH=$(grep deathrow /proc/kallsyms /proc/ksyms 2> /dev/null | wc -l) - [ $DETH -eq 0 ] && skip "No _iget." && return 0 +get_inode_slab_tunables() { + awk '/lustre_inode_cache/ {print $9," ",$10," ",$11; exit}' /proc/slabinfo +} + +set_inode_slab_tunables() { + echo "lustre_inode_cache $1" > /proc/slabinfo +} + +test_76() { # Now for bug 20433, added originally in bug 1443 + local SLAB_SETTINGS=`get_inode_slab_tunables` + local CPUS=`getconf _NPROCESSORS_ONLN` + # we cannot set limit below 1 which means 1 inode in each + # per-cpu cache is still allowed + set_inode_slab_tunables "1 1 0" + cancel_lru_locks osc BEFORE_INODES=`num_inodes` echo "before inodes: $BEFORE_INODES" local COUNT=1000 @@ -3522,13 +3586,22 @@ touch $DIR/$tfile rm -f $DIR/$tfile done + cancel_lru_locks osc AFTER_INODES=`num_inodes` echo "after inodes: $AFTER_INODES" - [ $AFTER_INODES -gt $((BEFORE_INODES + 32)) ] && \ - error "inode slab grew from $BEFORE_INODES to $AFTER_INODES" - true + local wait=0 + while [ $((AFTER_INODES-1*CPUS)) -gt $BEFORE_INODES ]; do + sleep 2 + AFTER_INODES=`num_inodes` + wait=$((wait+2)) + echo "wait $wait seconds inodes: $AFTER_INODES" + if [ $wait -gt 30 ]; then + error "inode slab grew from $BEFORE_INODES to $AFTER_INODES" + fi + done + set_inode_slab_tunables "$SLAB_SETTINGS" } -run_test 76 "destroy duplicate inodes in client inode cache ====" +run_test 76 "confirm clients recycle inodes properly ====" export ORIG_CSUM="" set_checksums() @@ -4363,7 +4436,7 @@ local default_size=`$GETSTRIPE -s $test_kdir` local default_count=`$GETSTRIPE -c $test_kdir` local default_offset=`$GETSTRIPE -o $test_kdir` - $SETSTRIPE -s 65536 -i 1 -c 2 $test_kdir || error 'dir setstripe failed' + $SETSTRIPE -s 65536 -i 1 -c $OSTCOUNT $test_kdir || error 'dir setstripe failed' setfattr -n trusted.lov $test_kdir local stripe_size=`$GETSTRIPE -s $test_kdir` local stripe_count=`$GETSTRIPE -c $test_kdir` @@ -5612,6 +5685,7 @@ [ -z "$DEV" ] && error "can't access mds mntdev" EFBIG=27 LDPROC=/proc/fs/ldiskfs/$DEV/max_dir_size + do_facet mds "test -e /sys/fs/ldiskfs/$DEV/max_dir_size" && LDPROC=/sys/fs/ldiskfs/$DEV/max_dir_size MAX=16384 do_facet mds "echo $MAX > $LDPROC" @@ -5902,6 +5976,132 @@ } run_test 130e "FIEMAP (test continuation FIEMAP calls)" +check_stats() { + local res + local count + case $1 in + mds) local dev=$(get_mds_mdt_device_proc_path) + res=`do_facet mds $LCTL get_param $dev.$FSNAME-MDT0000.stats | grep "$2"` + ;; + ost) res=`do_facet ost0 $LCTL get_param obdfilter.$FSNAME-OST0000.stats | grep "$2"` + ;; + *) error "Wrong argument $1" ;; + esac + echo $res + count=`echo $res | awk '{print $2}'` + [ -z "$res" ] && error "The counter for $2 on $1 was not incremented" + # if the argument $3 is zero, it means any stat increment is ok. + if [ $3 -gt 0 ] ; then + [ $count -ne $3 ] && error "The $2 counter on $1 is wrong - expected $3" + fi +} + +test_133a() { + # interop 18 <-> 20 + local lustre_version=$(get_lustre_version mds) + if [[ $lustre_version != 1.8* ]]; then + skip mds running $lustre_version, no stats, bz22378 + return 0 + fi + + local testdir=$DIR/${tdir}/stats_testdir + mkdir -p $DIR/${tdir} + + # clear stats. + local dev=$(get_mds_mdt_device_proc_path) + do_facet mds $LCTL set_param $dev.*.stats=clear + do_facet ost $LCTL set_param obdfilter.*.stats=clear + + # verify mdt stats first. + mkdir ${testdir} || error "mkdir failed" + check_stats mds "mkdir" 1 + touch ${testdir}/${tfile} || "touch failed" + # LPROC_MDS_OPEN is incremented by 2 - in mds_open() and mds_intent_policy() + check_stats mds "open" 2 + check_stats mds "close" 1 + mknod ${testdir}/${tfile}-pipe p || "mknod failed" + check_stats mds "mknod" 1 + rm -f ${testdir}/${tfile}-pipe || "pipe remove failed" + check_stats mds "unlink" 1 + rm -f ${testdir}/${tfile} || error "file remove failed" + check_stats mds "unlink" 2 + + # remove working dir and check mdt stats again. + rmdir ${testdir} || error "rmdir failed" + check_stats mds "rmdir" 1 + + rm -rf $DIR/${tdir} +} +run_test 133a "Verifying MDT stats ========================================" + +test_133b() { + # interop 18 <-> 20 + local lustre_version=$(get_lustre_version mds) + if [[ $lustre_version != 1.8* ]]; then + skip mds running $lustre_version, no stats, bz22378 + return 0 + fi + + local testdir=$DIR/${tdir}/stats_testdir + mkdir -p ${testdir} || error "mkdir failed" + touch ${testdir}/${tfile} || "touch failed" + + # clear stats. + local dev=$(get_mds_mdt_device_proc_path) + do_facet mds $LCTL set_param $dev.*.stats=clear + do_facet ost $LCTL set_param obdfilter.*.stats=clear + + # extra mdt stats verification. + stat ${testdir}/${tfile} || error "stat failed" + check_stats mds "getattr" 1 + chmod 444 ${testdir}/${tfile} || error "chmod failed" + check_stats mds "setattr" 1 + $LFS df || error "lfs failed" + check_stats mds "statfs" 1 + + rm -rf $DIR/${tdir} +} +run_test 133b "Verifying extra MDT stats ==================================" + +test_133c() { + # interop 18 <-> 20 + local lustre_version=$(get_lustre_version mds) + if [[ $lustre_version != 1.8* ]]; then + skip mds running $lustre_version, no stats, bz22378 + return 0 + fi + + local testdir=$DIR/${tdir}/stats_testdir + mkdir -p ${testdir} || error "mkdir failed" + + # verify obdfilter stats. + $LFS setstripe -c 1 -o 0 ${testdir}/${tfile} + sync + cancel_lru_locks osc + + # clear stats. + local dev=$(get_mds_mdt_device_proc_path) + do_facet mds $LCTL set_param $dev.*.stats=clear + do_facet ost $LCTL set_param obdfilter.*.stats=clear + + dd if=/dev/zero of=${testdir}/${tfile} bs=1024k count=1 || error "dd failed" + sync + cancel_lru_locks osc + check_stats ost "write" 1 + + dd if=${testdir}/${tfile} of=/dev/null bs=1k count=1 || error "dd failed" + check_stats ost "read" 1 + + > ${testdir}/${tfile} || error "truncate failed" + check_stats ost "punch" 1 + + rm -f ${testdir}/${tfile} || error "file remove failed" + check_stats ost "destroy" 1 + + rm -rf $DIR/${tdir} +} +run_test 133c "Verifying OST stats ========================================" + test_140() { #bug-17379 mkdir -p $DIR/$tdir || error "Creating dir $DIR/$tdir" cd $DIR/$tdir || error "Changing to $DIR/$tdir" diff -Nru lustre-1.8.3/lustre/tests/sgpdd-survey.sh lustre-1.8.5+dfsg/lustre/tests/sgpdd-survey.sh --- lustre-1.8.3/lustre/tests/sgpdd-survey.sh 1970-01-01 01:00:00.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre/tests/sgpdd-survey.sh 2010-11-17 04:31:48.000000000 +0100 @@ -0,0 +1,72 @@ +#!/bin/bash +#set -x +set -e + +LUSTRE=${LUSTRE:-`dirname $0`/..} +. $LUSTRE/tests/test-framework.sh +init_test_env $@ + +# QE uses the following parameters: +# size=128 crghi=16 thrhi=32 +crghi=${crghi:-2} +thrhi=${thrhi:-16} +size=${size:-1024} + +. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} + +[ "$SLOW" = no ] && { crghi=2; thrhi=2; } + +# Skip these tests +ALWAYS_EXCEPT="$SGPDD_SURVEY_EXCEPT" + +SGPDDSURVEY=${SGPDDSURVEY:-$(which sgpdd-survey)} + +build_test_filter + +init_facets_vars + +cleanupall + +run_sgpdd_host () { + local host=$1 + local devs=$2 + + local params="size=$size crghi=$crghi thrhi=$thrhi" + do_rpc_nodes $host run_sgpdd $devs "$params" +} + +test_1 () { + local facet=mds + + local host=$(facet_host $facet) + local dev=${facet}_dev + echo "=== $facet === $host === ${!dev} ===" + run_sgpdd_host $host ${!dev} +} +run_test 1 "sgpdd-survey, mds, scsidevs" + +test_2 () { + local facet + + local osts=$(get_facets OST) + + local ostshosts + for facet in ${osts//,/ }; do + local host=$(facet_host $facet) + local dev=${facet}_dev + local var=${host}_devs + eval ${var}=$(expand_list ${!var} ${!dev}) + ostshosts=$(expand_list $ostshosts $host) + done + + for host in ${ostshosts//,/ }; do + var=${host}_devs + echo "=== osts === $host === ${!var} ===" + local scsidevs=${!var} + run_sgpdd_host $host ${scsidevs} + done +} +run_test 2 "sgpdd-survey, osts, scsidevs" + +equals_msg `basename $0`: test complete, cleaning up +[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG || true diff -Nru lustre-1.8.3/lustre/tests/test-framework.sh lustre-1.8.5+dfsg/lustre/tests/test-framework.sh --- lustre-1.8.3/lustre/tests/test-framework.sh 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/tests/test-framework.sh 2010-11-17 04:31:48.000000000 +0100 @@ -99,6 +99,23 @@ export E2LABEL=${E2LABEL:-e2label} export DUMPE2FS=${DUMPE2FS:-dumpe2fs} export E2FSCK=${E2FSCK:-e2fsck} + export LFSCK_BIN=${LFSCK_BIN:-lfsck} + export LFSCK_ALWAYS=${LFSCK_ALWAYS:-"no"} # check filesystem after each test suit + export SKIP_LFSCK=${SKIP_LFSCK:-"yes"} # bug 13698, change to "no" when fixed + export SHARED_DIRECTORY=${SHARED_DIRECTORY:-"/tmp"} + export FSCK_MAX_ERR=4 # File system errors left uncorrected + if [ "$SKIP_LFSCK" == "no" ]; then + if [ ! -x `which $LFSCK_BIN` ]; then + log "$($E2FSCK -V)" + error_exit "$E2FSCK does not support lfsck" + fi + + export MDSDB=${MDSDB:-$SHARED_DIRECTORY/mdsdb} + export OSTDB=${OSTDB:-$SHARED_DIRECTORY/ostdb} + export MDSDB_OPT="--mdsdb $MDSDB" + export OSTDB_OPT="--ostdb $OSTDB-\$ostidx" + fi + declare -a OSTDEVS #[ -d /r ] && export ROOT=${ROOT:-/r} export TMP=${TMP:-$ROOT/tmp} @@ -112,6 +129,7 @@ fi export LST=${LST:-"$LUSTRE/../lnet/utils/lst"} [ ! -f "$LST" ] && export LST=$(which lst) + export SGPDDSURVEY=${SGPDDSURVEY:-$(which sgpdd-survey)} export MDSRATE=${MDSRATE:-"$LUSTRE/tests/mpi/mdsrate"} [ ! -f "$MDSRATE" ] && export MDSRATE=$(which mdsrate 2> /dev/null) if ! echo $PATH | grep -q $LUSTRE/tests/racer; then @@ -122,7 +140,6 @@ fi export RSYNC_RSH=${RSYNC_RSH:-rsh} export LCTL=${LCTL:-"$LUSTRE/utils/lctl"} - export LFS=${LFS:-"$LUSTRE/utils/lfs"} [ ! -f "$LCTL" ] && export LCTL=$(which lctl) export LFS=${LFS:-"$LUSTRE/utils/lfs"} [ ! -f "$LFS" ] && export LFS=$(which lfs) @@ -149,6 +166,7 @@ export RPWD=${RPWD:-$PWD} export I_MOUNTED=${I_MOUNTED:-"no"} if [ ! -f /lib/modules/$(uname -r)/kernel/fs/lustre/mds.ko -a \ + ! -f /lib/modules/$(uname -r)/updates/kernel/fs/lustre/mds.ko -a \ ! -f `dirname $0`/../mds/mds.ko ]; then export CLIENTMODSONLY=yes fi @@ -274,7 +292,7 @@ load_module lvfs/lvfs load_module obdclass/obdclass load_module ptlrpc/ptlrpc - [ "$USE_QUOTA" = "yes" ] && load_module quota/lquota + [ "$USE_QUOTA" = "yes" ] && load_module quota/lquota $LQUOTAOPTS load_module mdc/mdc load_module osc/osc load_module lov/lov @@ -693,12 +711,18 @@ fi" } -shudown_node_hard () { +shutdown_node () { + local node=$1 + echo + $POWER_DOWN $node + $POWER_DOWN $node +} + +shutdown_node_hard () { local host=$1 local attempts=3 for i in $(seq $attempts) ; do - $POWER_DOWN $host + shutdown_node $host sleep 1 ping -w 3 -c 1 $host > /dev/null 2>&1 || return 0 echo "waiting for $host to fail attempts=$attempts" @@ -713,25 +737,55 @@ local attempts=3 if [ "$FAILURE_MODE" = HARD ]; then - shudown_node_hard $client + shutdown_node_hard $client else zconf_umount_clients $client $mnt -f fi } +facets_on_host () { + local host=$1 + local facets="$(get_facets OST),$(get_facets MDS)" + local affected + + combined_mgs_mds || facets="$facets,mgs" + + for facet in ${facets//,/ }; do + if [ $(facet_active_host $facet) == $host ]; then + affected="$affected $facet" + fi + done + + echo $(comma_list $affected) +} + shutdown_facet() { local facet=$1 + if [ "$FAILURE_MODE" = HARD ]; then - shudown_node_hard $(facet_active_host $facet) - elif [ "$FAILURE_MODE" = SOFT ]; then + shutdown_node_hard $(facet_active_host $facet) + else stop $facet fi } +reboot_node() { + local node=$1 + echo + $POWER_UP $node + $POWER_UP $node +} + +remount_facet() { + local facet=$1 + + stop $facet + mount_facet $facet +} + reboot_facet() { - facet=$1 + local facet=$1 if [ "$FAILURE_MODE" = HARD ]; then - $POWER_UP `facet_active_host $facet` + reboot_node $(facet_active_host $facet) else sleep 10 fi @@ -740,7 +794,7 @@ boot_node() { local node=$1 if [ "$FAILURE_MODE" = HARD ]; then - $POWER_UP $node + reboot_node $node wait_for_host $node fi } @@ -956,48 +1010,129 @@ sleep 1 TOTAL=`lctl get_param -n osc.*.kbytesavail | \ awk 'BEGIN{total=0}; {total+=$1}; END{print total}'` - [ "$TOTAL" -eq "$TOTALPREV" ] && break + [ "$TOTAL" -eq "$TOTALPREV" ] && return 0 echo "Waiting delete completed ... prev: $TOTALPREV current: $TOTAL " TOTALPREV=$TOTAL WAIT=$(( WAIT + 1)) done - echo "Delete completed." + echo "Delete is not completed in $MAX_WAIT sec" + return 1 } wait_for_host() { - local host=$1 - check_network "$host" 900 - while ! do_node $host hostname > /dev/null; do sleep 5; done + local hostlist=$1 + + # we can use "for" here because we are waiting the slowest + for host in ${hostlist//,/ }; do + check_network "$host" 900 + done + while ! do_nodes $hostlist hostname > /dev/null; do sleep 5; done } -wait_for() { - local facet=$1 - local host=`facet_active_host $facet` - wait_for_host $host +wait_for_facet() { + local facetlist=$1 + local hostlist + + for facet in ${facetlist//,/ }; do + hostlist=$(expand_list $hostlist $(facet_active_host $facet)) + done + wait_for_host $hostlist } -wait_recovery_complete () { - local facet=$1 +_wait_recovery_complete () { + local param=$1 # Use default policy if $2 is not passed by caller. local MAX=${2:-$(max_recovery_time)} - local var_svc=${facet}_svc - local procfile="*.${!var_svc}.recovery_status" local WAIT=0 local STATUS= while [ $WAIT -lt $MAX ]; do - STATUS=$(do_facet $facet lctl get_param -n $procfile | grep status) - [[ $STATUS = "status: COMPLETE" ]] && return 0 + STATUS=$(lctl get_param -n $param | grep status) + echo $param $STATUS + [[ $STATUS = "status: COMPLETE" || $STATUS = "status: INACTIVE" ]] && return 0 sleep 5 WAIT=$((WAIT + 5)) - echo "Waiting $((MAX - WAIT)) secs for $facet recovery done. $STATUS" + echo "Waiting $((MAX - WAIT)) secs for $param recovery done. $STATUS" + done + echo "$param recovery not done in $MAX sec. $STATUS" + return 1 +} + +wait_recovery_complete () { + local facet=$1 + + # with an assumption that at_max is the same on all nodes + local MAX=${2:-$(max_recovery_time)} + + local facets=$facet + if [ "$FAILURE_MODE" = HARD ]; then + facets=$(facets_on_host $(facet_active_host $facet)) + fi + echo affected facets: $facets + + # we can use "for" here because we are waiting the slowest + for facet in ${facets//,/ }; do + local var_svc=${facet}_svc + local param="*.${!var_svc}.recovery_status" + + local host=$(facet_active_host $facet) + do_rpc_nodes $host _wait_recovery_complete $param $MAX + done +} + +wait_mds_ost_sync () { + # just because recovery is done doesn't mean we've finished + # orphan cleanup. Wait for llogs to get synchronized. + echo "Waiting for orphan cleanup..." + # MAX value includes time needed for MDS-OST reconnection + local MAX=$(( TIMEOUT * 2 )) + local WAIT=0 + while [ $WAIT -lt $MAX ]; do + local -a sync=($(do_nodes $(comma_list $(osts_nodes)) \ + "$LCTL get_param -n obdfilter.*.mds_sync")) + local con=1 + for ((i=0; i<${#sync[@]}; i++)); do + [ ${sync[$i]} -eq 0 ] && continue + # there is a not finished MDS-OST synchronization + con=0 + break; + done + sleep 2 # increase waiting time and cover statfs cache + [ ${con} -eq 1 ] && return 0 + echo "Waiting $WAIT secs for $facet mds-ost sync done." + WAIT=$((WAIT + 2)) done echo "$facet recovery not done in $MAX sec. $STATUS" return 1 } +wait_destroy_complete () { + echo "Waiting for destroy to be done..." + # MAX value shouldn't be big as this mean server responsiveness + # never increase this just to make test pass but investigate + # why it takes so long time + local MAX=5 + local WAIT=0 + while [ $WAIT -lt $MAX ]; do + local -a RPCs=($($LCTL get_param -n osc.*.destroys_in_flight)) + local con=1 + for ((i=0; i<${#RPCs[@]}; i++)); do + [ ${RPCs[$i]} -eq 0 ] && continue + # there are still some destroy RPCs in flight + con=0 + break; + done + sleep 1 + [ ${con} -eq 1 ] && return 0 # done waiting + echo "Waiting $WAIT secs for destroys to be done." + WAIT=$((WAIT + 1)) + done + echo "Destroys weren't done in $MAX sec." + return 1 +} + wait_exit_ST () { local facet=$1 @@ -1092,19 +1227,40 @@ facet_failover() { local facet=$1 local sleep_time=$2 - echo "Failing $facet on node `facet_active_host $facet`" + local host=$(facet_active_host $facet) + + echo "Failing $facet on node $host" + + local affected=$facet + + if [ "$FAILURE_MODE" = HARD ]; then + affected=$(facets_on_host $host) + fi + shutdown_facet $facet + + echo affected facets: $affected + [ -n "$sleep_time" ] && sleep $sleep_time + reboot_facet $facet clients_up & - DFPID=$! + local dfpid=$! RECOVERY_START_TIME=`date +%s` - echo "df pid is $DFPID" - change_active $facet - local TO=`facet_active_host $facet` - echo "Failover $facet to $TO" - wait_for $facet - mount_facet $facet || error "Restart of $facet failed" + echo "df pid is $dfpid" + + change_active $affected + + wait_for_facet $affected + # start mgs first if it is affected + if ! combined_mgs_mds && list_member $affected mgs; then + mount_facet mgs || error "Restart of mgs failed" + fi + # FIXME; has to be changed to mount all facets concurrently + affected=$(exclude_items_from_list $affected mgs) + for facet in ${affected//,/ }; do + mount_facet $facet || error "Restart of $facet on node $host failed!" + done } obd_name() { @@ -1265,10 +1421,16 @@ } change_active() { - local facet=$1 + local facetlist=$1 + local facet + + facetlist=$(exclude_items_from_list $facetlist mgs) + + for facet in ${facetlist//,/ }; do local failover=${facet}failover - host=`facet_host $failover` + local host=`facet_host $failover` [ -z "$host" ] && return + local curactive=`facet_active $facet` if [ -z "${curactive}" -o "$curactive" == "$failover" ] ; then eval export ${facet}active=$facet @@ -1278,6 +1440,9 @@ # save the active host for this facet local activevar=${facet}active echo "$activevar=${!activevar}" > $TMP/$activevar + local TO=`facet_active_host $facet` + echo "Failover $facet to $TO" + done } do_node() { @@ -1365,10 +1530,12 @@ $myPDSH $rnodes $LCTL mark "$@" > /dev/null 2>&1 || : fi - if $verbose ; then + # do not replace anything from pdsh output if -N is used + # -N Disable hostname: prefix on lines of output. + if $verbose || [[ $myPDSH = *-N* ]]; then $myPDSH $rnodes "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")" else - $myPDSH $rnodes "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")" | sed -re "s/\w+:\s//g" + $myPDSH $rnodes "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")" | sed -re "s/^[^:]*: //g" fi return ${PIPESTATUS[0]} } @@ -1447,10 +1614,21 @@ return 0 } +cleanup_echo_devs () { + local devs=$($LCTL dl | grep echo | awk '{print $4}') + + for dev in $devs; do + $LCTL --device $dev cleanup + $LCTL --device $dev detach + done +} + cleanupall() { nfs_client_mode && return stopall $* + cleanup_echo_devs + unload_modules } @@ -1458,6 +1636,53 @@ [[ $MDSDEV = $MGSDEV ]] && [[ $mds_HOST = $mgs_HOST ]] } +mkfs_opts () { + local facet=$1 + + local tgt=$(echo $facet | tr -d [:digit:] | tr "[:lower:]" "[:upper:]") + local optvar=${tgt}_MKFS_OPTS + local opt=${!optvar} + + # FIXME: ! combo mgs/mds + mgsfailover is not supported yet + [[ $facet = mgs ]] && echo $opt && return + + # 1. + # --failnode options + local var=${facet}failover_HOST + if [ x"${!var}" != x ] && [ x"${!var}" != x$(facet_host $facet) ] ; then + local failnode=$(h2$NETTYPE ${!var}) + failnode="--failnode=$failnode" + # options does not contain + # or contains wrong --failnode= + if [[ $opt != *${failnode}* ]]; then + opt=$(echo $opt | sed 's/--failnode=.* / /') + opt="$opt $failnode" + fi + fi + + # 2. + # --mgsnode options + # no additional mkfs mds "--mgsnode" option for this configuration + if [[ $facet = mds ]] && combined_mgs_mds; then + echo $opt + return + fi + + # additional mkfs "--mgsnode" + local mgsnode="--mgsnode=$MGSNID" + opt=${opt//$mgsnode } + for nid in ${MGSNID//:/ }; do + local mgsnode="--mgsnode=$nid" + # options does not contain + # --mgsnode=$nid + if [[ $opt != *${mgsnode}" "* ]]; then + opt="$opt --mgsnode=$nid" + fi + done + + echo $opt +} + formatall() { [ "$FSTYPE" ] && FSTYPE_OPT="--backfstype $FSTYPE" @@ -1467,20 +1692,22 @@ [ "$CLIENTONLY" ] && return echo Formatting mgs, mds, osts if ! combined_mgs_mds ; then - add mgs $mgs_MKFS_OPTS $FSTYPE_OPT --reformat $MGSDEV || exit 10 + add mgs $(mkfs_opts mgs) $FSTYPE_OPT --reformat $MGSDEV || exit 10 fi if $VERBOSE; then - add mds $MDS_MKFS_OPTS $FSTYPE_OPT --reformat $MDSDEV || exit 10 + add mds $(mkfs_opts mds) $FSTYPE_OPT --reformat $MDSDEV || exit 10 else - add mds $MDS_MKFS_OPTS $FSTYPE_OPT --reformat $MDSDEV > /dev/null || exit 10 + add mds $(mkfs_opts mds) $FSTYPE_OPT --reformat $MDSDEV > /dev/null || exit 10 fi + # the ost-s could have different OST_MKFS_OPTS + # because of different failnode-s for num in `seq $OSTCOUNT`; do if $VERBOSE; then - add ost$num $OST_MKFS_OPTS $FSTYPE_OPT --reformat `ostdevname $num` || exit 10 + add ost$num $(mkfs_opts ost${num}) $FSTYPE_OPT --reformat `ostdevname $num` || exit 10 else - add ost$num $OST_MKFS_OPTS $FSTYPE_OPT --reformat `ostdevname $num` > /dev/null || exit 10 + add ost$num $(mkfs_opts ost${num}) $FSTYPE_OPT --reformat `ostdevname $num` > /dev/null || exit 10 fi done } @@ -1525,7 +1752,7 @@ writeconf_all if ! combined_mgs_mds ; then - start mgs $MGSDEV $mgs_MOUNT_OPTS + start mgs $MGSDEV $MGS_MOUNT_OPTS fi start mds $MDSDEV $MDS_MOUNT_OPTS @@ -1610,6 +1837,8 @@ remote_mds_nodsh || init_facet_vars mds $MDSDEV $MDS_MOUNT_OPTS + combined_mgs_mds || init_facet_vars mgs $MGSDEV $MGS_MOUNT_OPTS + remote_ost_nodsh && return for num in `seq $OSTCOUNT`; do @@ -1720,6 +1949,20 @@ echo $mounted' ' | grep -w -q $mntpt' ' } +is_empty_dir() { + [ $(find $1 -maxdepth 1 -print | wc -l) = 1 ] && return 0 + return 1 +} + +# empty lustre filesystem may have empty directories lost+found and .lustre +is_empty_fs() { + [ $(find $1 -maxdepth 1 -name lost+found -o -name .lustre -prune -o \ + -print | wc -l) = 1 ] || return 1 + [ ! -d $1/lost+found ] || is_empty_dir $1/lost+found && return 0 + [ ! -d $1/.lustre ] || is_empty_dir $1/.lustre && return 0 + return 1 +} + check_and_setup_lustre() { nfs_client_mode && return @@ -1810,7 +2053,117 @@ check_and_setup_lustre } +# Get all of the server target devices from a given server node and type. +get_mnt_devs() { + local node=$1 + local type=$2 + local obd_type + local devs + local dev + + case $type in + mdt) obd_type="osd" ;; + ost) obd_type="obdfilter" ;; # needs to be fixed when OST also uses an OSD + *) echo "invalid server type" && return 1 ;; + esac + + devs=$(do_node $node "lctl get_param -n $obd_type.*.mntdev") + for dev in $devs; do + case $dev in + *loop*) do_node $node "losetup $dev" | \ + sed -e "s/.*(//" -e "s/).*//" ;; + *) echo $dev ;; + esac + done +} + +# Get all of the server target devices. +get_svr_devs() { + local i + + # OST devices + i=0 + for node in $(osts_nodes); do + OSTDEVS[i]=$(get_mnt_devs $node ost) + i=$((i + 1)) + done +} + +# Run e2fsck on MDT or OST device. +run_e2fsck() { + local node=$1 + local target_dev=$2 + local ostidx=$3 + local ostdb_opt=$4 + + df > /dev/null # update statfs data on disk + local cmd="$E2FSCK -d -v -f -n $MDSDB_OPT $ostdb_opt $target_dev" + echo $cmd + local rc=0 + do_node $node $cmd || rc=$? + [ $rc -le $FSCK_MAX_ERR ] || \ + error_exit "$cmd returned $rc, should be <= $FSCK_MAX_ERR" + return 0 +} + +# Run e2fsck on MDT and OST(s) to generate databases used for lfsck. +generate_db() { + local i + local ostidx + local dev + local tmp_file + + tmp_file=$(mktemp -p $SHARED_DIRECTORY || + error_exit "fail to create file in $SHARED_DIRECTORY") + + # make sure everything gets to the backing store + local list=$(comma_list $CLIENTS $(facet_host mds) $(osts_nodes)) + do_nodes $list "sync; sleep 2; sync" + + do_nodes $list ls $tmp_file || \ + error_exit "$SHARED_DIRECTORY is not a shared directory" + rm $tmp_file + + run_e2fsck $(facet_host mds) $MDSDEV + + i=0 + ostidx=0 + OSTDB_LIST="" + for node in $(osts_nodes); do + for dev in ${OSTDEVS[i]}; do + local ostdb_opt=`eval echo $OSTDB_OPT` + run_e2fsck $node $dev $ostidx "$ostdb_opt" + OSTDB_LIST="$OSTDB_LIST $OSTDB-$ostidx" + ostidx=$((ostidx + 1)) + done + i=$((i + 1)) + done +} + +run_lfsck() { + local cmd="$LFSCK_BIN -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT" + echo $cmd + local rc=0 + eval $cmd || rc=$? + [ $rc -le $FSCK_MAX_ERR ] || \ + error_exit "$cmd returned $rc, should be <= $FSCK_MAX_ERR" + echo "lfsck finished with rc=$rc" + + rm -rvf $MDSDB* $OSTDB* || true + return 0 +} + check_and_cleanup_lustre() { + if [ "$LFSCK_ALWAYS" = "yes" ]; then + get_svr_devs + generate_db + if [ "$SKIP_LFSCK" == "no" ]; then + run_lfsck + else + echo "skip lfsck" + fi + fi + if is_mounted $MOUNT; then [ -n "$DIR" ] && rm -rf $DIR/[Rdfs][0-9]* [ "$ENABLE_QUOTA" ] && restore_quota_type || true @@ -1868,6 +2221,12 @@ echo "$*" | tr -s " " "\n" | sort -b -u | tr "\n" " " | sed 's/ \([^$]\)/,\1/g' } +list_member () { + local list=$1 + local item=$2 + echo $list | grep -qw $item +} + # list, excluded are the comma separated lists exclude_items_from_list () { local list=$1 @@ -1916,19 +2275,22 @@ } get_facets () { - local name=$(echo $1 | tr "[:upper:]" "[:lower:]") - local type=$(echo $1 | tr "[:lower:]" "[:upper:]") + local types=${1:-"OST MDS MGS"} local list="" - - case $type in - MDS ) list=mds;; - OST ) for ((i=1; i<=$OSTCOUNT; i++)) do - list="$list ${name}$i" - done;; - * ) error "Invalid facet type" + for entry in $types; do + local name=$(echo $entry | tr "[:upper:]" "[:lower:]") + local type=$(echo $entry | tr "[:lower:]" "[:upper:]") + + case $type in + MDS|MGS ) list="$list $name";; + OST ) for ((i=1; i<=$OSTCOUNT; i++)) do + list="$list ${name}$i" + done;; + * ) error "Invalid facet type" exit 1;; - esac + esac + done echo $(comma_list $list) } @@ -2115,6 +2477,8 @@ error_noexit() { local TYPE=${TYPE:-"FAIL"} local ERRLOG + local tmp=$TMP + [ -d "$SHARED_DIR_LOGS" ] && tmp=$SHARED_DIR_LOGS local dump=true # do not dump logs if $1=false @@ -2126,7 +2490,7 @@ log " ${TESTSUITE} ${TESTNAME}: @@@@@@ ${TYPE}: $@ " if $dump; then - ERRLOG=$TMP/lustre_${TESTSUITE}_${TESTNAME}.$(date +%s) + ERRLOG=$tmp/lustre_${TESTSUITE}_${TESTNAME}.$(date +%s) echo "Dumping lctl log to $ERRLOG" # We need to dump the logs on all nodes do_nodes $(comma_list $(nodes_list)) $NODE $LCTL dk $ERRLOG @@ -2336,12 +2700,6 @@ (cd `dirname $1`; echo $PWD/`basename $1`) } -sync_clients() { - [ -d $DIR1 ] && cd $DIR1 && sync; sleep 1; sync - [ -d $DIR2 ] && cd $DIR2 && sync; sleep 1; sync - cd $SAVE_PWD -} - check_grant() { export base=`basetest $1` [ "$CHECK_GRANT" == "no" ] && return 0 @@ -2350,39 +2708,33 @@ [ ${!testname}x == x ] && return 0 echo -n "checking grant......" - cd $SAVE_PWD - # write some data to sync client lost_grant - rm -f $DIR1/${tfile}_check_grant_* 2>&1 - for i in `seq $OSTCOUNT`; do - $LFS setstripe $DIR1/${tfile}_check_grant_$i -i $(($i -1)) -c 1 - dd if=/dev/zero of=$DIR1/${tfile}_check_grant_$i bs=4k \ - count=1 > /dev/null 2>&1 - done + + local clients=$CLIENTS + [ -z $clients ] && clients=$(hostname) + # sync all the data and make sure no pending data on server - sync_clients + do_nodes $clients sync - #get client grant and server grant - client_grant=0 - for d in `lctl get_param -n osc.*.cur_grant_bytes`; do - client_grant=$((client_grant + $d)) - done - server_grant=0 - for d in `lctl get_param -n obdfilter.*.tot_granted`; do - server_grant=$((server_grant + $d)) - done - - # cleanup the check_grant file - for i in `seq $OSTCOUNT`; do - rm $DIR1/${tfile}_check_grant_$i - done - - #check whether client grant == server grant - if [ $client_grant != $server_grant ]; then - echo "failed: client:${client_grant} server: ${server_grant}" - return 1 - else - echo "pass" - fi + # get client grant + client_grant=`do_nodes $clients \ + "$LCTL get_param -n osc.${FSNAME}-*.cur_*grant_bytes" | \ + awk '{total += $1} END{print total}'` + + # get server grant + server_grant=`do_nodes $(comma_list $(osts_nodes)) \ + "$LCTL get_param -n obdfilter.${FSNAME}-OST*.tot_granted" | \ + awk '{total += $1} END{print total}'` + + # check whether client grant == server grant + if [ $client_grant -ne $server_grant ]; then + echo "failed: client:${client_grant} server: ${server_grant}." + do_nodes $(comma_list $(osts_nodes)) \ + "$LCTL get_param obdfilter.${FSNAME}-OST*.tot*" + do_nodes $clients "$LCTL get_param osc.${FSNAME}-*.cur_*_bytes" + return 1 + else + echo "pass: client:${client_grant} server: ${server_grant}" + fi } ######################## @@ -2398,6 +2750,11 @@ echo $ost } +ostuuid_from_index() +{ + $LFS osts $2 | awk '/^'$1'/ { print $2 }' +} + remote_node () { local node=$1 [ "$node" != "$(hostname)" ] @@ -2446,19 +2803,30 @@ $(single_local_node $(comma_list $(nodes_list))) } -osts_nodes () { - local OSTNODES=$(facet_host ost1) +facets_nodes () { + local facets=$1 + local nodes local NODES_sort - for num in `seq $OSTCOUNT`; do - local myOST=$(facet_host ost$num) - OSTNODES="$OSTNODES $myOST" + for facet in ${facets//,/ }; do + if [ "$FAILURE_MODE" = HARD ]; then + nodes="$nodes $(facet_active_host $facet)" + else + nodes="$nodes $(facet_host $facet)" + fi done - NODES_sort=$(for i in $OSTNODES; do echo $i; done | sort -u) + NODES_sort=$(for i in $nodes; do echo $i; done | sort -u) echo $NODES_sort } +osts_nodes () { + local facets=$(get_facets OST) + local nodes=$(facets_nodes $facets) + + echo $nodes +} + nodes_list () { # FIXME. We need a list of clients local myNODES=$HOSTNAME @@ -2468,7 +2836,7 @@ [ -n "$CLIENTS" ] && myNODES=${CLIENTS//,/ } if [ "$PDSH" -a "$PDSH" != "no_dsh" ]; then - myNODES="$myNODES $(osts_nodes) $mds_HOST" + myNODES="$myNODES $(facets_nodes $(get_facets))" fi myNODES_sort=$(for i in $myNODES; do echo $i; done | sort -u) @@ -2649,6 +3017,10 @@ echo $IFree } +mdsrate_inodes_available () { + echo $(($(inodes_available) - 1)) +} + # reset llite stat counters clear_llite_stats(){ lctl set_param -n llite.*.stats 0 @@ -2760,13 +3132,28 @@ echo $version | awk -F. '{print $4}' } +get_kernel_version () { + local facet=${1:-"mds"} + do_facet $facet uname -r | awk -F "-" '{print $1}' +} + +get_mds_kernel_major () { + local version=$(get_kernel_version mds) + echo $version | awk -F. '{print $1"."$2}' +} + +get_mds_kernel_minor () { + local version=$(get_kernel_version mds) + echo $version | awk -F. '{print $3}' +} + get_mds_fsstat_proc_path() { local major=$(get_mds_version_major) local minor=$(get_mds_version_minor) if [ $major -le 1 -a $minor -le 8 ] ; then echo "mds" else - echo "osd" + echo "osd*" fi } @@ -2838,7 +3225,7 @@ get_clientosc_proc_path() { local ost=$1 - echo "{$1}-osc-*" + echo "${1}-osc-*" } get_osc_import_name() { @@ -2855,33 +3242,37 @@ return 0 } -wait_import_state () { +_wait_import_state () { local expected=$1 local CONN_PROC=$2 + local maxtime=${3:-max_recovery_time} local CONN_STATE local i=0 CONN_STATE=$($LCTL get_param -n $CONN_PROC 2>/dev/null | cut -f2) while [ "${CONN_STATE}" != "${expected}" ]; do - if [ "${expected}" == "DISCONN" ]; then - # for disconn we can check after proc entry is removed - [ "x${CONN_STATE}" == "x" ] && return 0 - # with AT we can have connect request timeout ~ reconnect timeout - # and test can't see real disconnect - [ "${CONN_STATE}" == "CONNECTING" ] && return 0 - fi - # disconnect rpc should be wait not more obd_timeout - [ $i -ge $(($TIMEOUT * 3 / 2)) ] && \ - error "can't put import for $CONN_PROC into ${expected} state" && return 1 + [ $i -ge $maxtime ] && \ + error "can't put import for $CONN_PROC into ${expected} state after $i sec, have ${CONN_STATE}" && \ + return 1 sleep 1 CONN_STATE=$($LCTL get_param -n $CONN_PROC 2>/dev/null | cut -f2) i=$(($i + 1)) done - log "$CONN_PROC now in ${CONN_STATE} state" + log "$CONN_PROC in ${CONN_STATE} state after $i sec" return 0 } +wait_import_state() { + local state=$1 + local params=$2 + local maxtime=${3:-max_recovery_time} + local param + + for param in ${params//,/ }; do + _wait_import_state $state $param $maxtime || return + done +} wait_osc_import_state() { local facet=$1 local ost_facet=$2 @@ -2905,7 +3296,7 @@ [ $i -ge $(($TIMEOUT * 3 / 2)) ] && \ error "can't put import for ${ost}(${ost_facet}) into ${expected} state" && return 1 sleep 1 - CONN_STATE=$(do_facet $facet lctl get_param -n $CONN_PROC | cut -f2) + CONN_STATE=$(do_facet $facet lctl get_param -n $CONN_PROC 2>/dev/null | cut -f2) i=$(($i + 1)) done @@ -2921,15 +3312,22 @@ local list=$1 shift - do_nodesv $list "PATH=$LUSTRE/tests/:$PATH sh rpc.sh $@ " + local RPATH="PATH=$LUSTRE/tests/:$PATH" + do_nodesv $list "${RPATH} NAME=${NAME} sh rpc.sh $@ " } wait_clients_import_state () { local list=$1 local facet=$2 local expected=$3 - shift + local facets=$facet + + if [ "$FAILURE_MODE" = HARD ]; then + facets=$(facets_on_host $(facet_active_host $facet)) + fi + + for facet in ${facets//,/ }; do local label=$(convert_facet2label $facet) local proc_path case $facet in @@ -2937,8 +3335,10 @@ mds* ) proc_path="mdc.$(get_clientmdc_proc_path $label).mds_server_uuid" ;; *) error "unknown facet!" ;; esac + local params=$(expand_list $params $proc_path) + done - if ! do_rpc_nodes $list wait_import_state $expected $proc_path; then + if ! do_rpc_nodes $list wait_import_state $expected $params; then error "import is not in ${expected} state" return 1 fi @@ -3081,3 +3481,67 @@ echo $service_time } + +remove_mdt_files() { + local facet=$1 + local mdtdev=$2 + shift 2 + local files="$@" + local mntpt=${MOUNT%/*}/$facet + + echo "removing files from $mdtdev on $facet: $files" + mount -t $FSTYPE $MDS_MOUNT_OPTS $mdtdev $mntpt || return $? + rc=0; + for f in $files; do + rm $mntpt/ROOT/$f || { rc=$?; break; } + done + umount -f $mntpt || return $? + return $rc +} + +duplicate_mdt_files() { + local facet=$1 + local mdtdev=$2 + shift 2 + local files="$@" + local mntpt=${MOUNT%/*}/$facet + + echo "duplicating files on $mdtdev on $facet: $files" + mkdir -p $mntpt || return $? + mount -t $FSTYPE $MDS_MOUNT_OPTS $mdtdev $mntpt || return $? + + do_umount() { + trap 0 + popd > /dev/null + rm $tmp + umount -f $mntpt + } + trap do_umount EXIT + + tmp=$(mktemp $TMP/setfattr.XXXXXXXXXX) + pushd $mntpt/ROOT > /dev/null || return $? + rc=0 + for f in $files; do + touch $f.bad || return $? + getfattr -n trusted.lov $f | sed "s#$f#&.bad#" > $tmp + rc=${PIPESTATUS[0]} + [ $rc -eq 0 ] || return $rc + setfattr --restore $tmp || return $? + done + do_umount +} + +run_sgpdd () { + local devs=${1//,/ } + shift + local params=$@ + local rslt=$TMP/sgpdd_survey + + # sgpdd-survey cleanups ${rslt}.* files + + local cmd="rslt=$rslt $params scsidevs=\"$devs\" $SGPDDSURVEY" + echo + $cmd + eval $cmd + cat ${rslt}.detail +} + diff -Nru lustre-1.8.3/lustre/utils/lctl.c lustre-1.8.5+dfsg/lustre/utils/lctl.c --- lustre-1.8.3/lustre/utils/lctl.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/lctl.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -131,11 +131,12 @@ "abort recovery on a restarting MDT or OST device\n"}, {"set_timeout", jt_lcfg_set_timeout, 0, "usage: conf_param obd_timeout=\n"}, - {"conf_param", jt_lcfg_mgsparam, 0, "set a permanent config param. " + {"conf_param", jt_lcfg_mgsparam, 0,"set a permanent config parameter.\n" "This command must be run on the MGS node\n" - "usage: conf_param ...\n"}, + "usage: conf_param [-d] \n" + " -d Remove the permanent setting."}, {"local_param", jt_lcfg_param, 0, "set a temporary, local param\n" - "usage: local_param ...\n"}, + "usage: local_param \n"}, {"get_param", jt_lcfg_getparam, 0, "get the Lustre or LNET parameter\n" "usage: get_param [-n | -N | -F] \n" "Get the value of Lustre or LNET parameter from the specified path.\n" @@ -149,6 +150,13 @@ "usage: set_param [-n] \n" "Set the value of the Lustre or LNET parameter at the specified path\n" " -n Disable printing of the key name when printing values."}, + {"list_param", jt_lcfg_listparam, 0, + "list the Lustre or LNET parameter name\n" + "usage: list_param [-FR] \n" + "List the name of Lustre or LNET parameter from the specified path.\n" + " -F Add '/', '@' or '=' for dirs, symlinks and writeable files,\n" + "respectively.\n" + " -R Recursively list all parameters under the specified path.\n"}, /* Debug commands */ {"==== debugging control ===", jt_noop, 0, "debug"}, diff -Nru lustre-1.8.3/lustre/utils/lfs.c lustre-1.8.5+dfsg/lustre/utils/lfs.c --- lustre-1.8.3/lustre/utils/lfs.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/lfs.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -105,24 +105,24 @@ "Create a new file with a specific striping pattern or\n" "set the default striping pattern on an existing directory or\n" "delete the default striping pattern from an existing directory\n" - "usage: setstripe [--size|-s stripe_size] [--offset|-o start_ost]\n" - " [--count|-c stripe_count] [--pool|-p ]\n" - " \n" + "usage: setstripe [--size|-s stripe_size] [--count|-c stripe_count]\n" + " [--index|-i|--offset|-o start_ost_index]\n" + " [--pool|-p ] \n" " or \n" - " setstripe -d (to delete default striping)\n" + " setstripe -d (to delete default striping)\n" "\tstripe_size: Number of bytes on each OST (0 filesystem default)\n" "\t Can be specified with k, m or g (in KB, MB and GB\n" "\t respectively)\n" - "\tstart_ost: OST index of first stripe (-1 filesystem default)\n" + "\tstart_ost_index: OST index of first stripe (-1 default)\n" "\tstripe_count: Number of OSTs to stripe over (0 default, -1 all)\n" - "\tpool: Name of OST pool"}, + "\tpool: Name of OST pool to use (default none)"}, {"getstripe", lfs_getstripe, 0, "To list the striping info for a given file or files in a\n" "directory or recursively for all files in a directory tree.\n" "usage: getstripe [--obd|-O ] [--quiet | -q] [--verbose | -v]\n" - " [--count | -c ] [--size | -s ] [--index | -i ]\n" - " [--offset | -o ] [--pool | -p ]\n" - " [--recursive | -r] ..."}, + " [--count | -c ] [--index | -i | --offset | -o]\n" + " [--size | -s ] [--pool | -p ] [--directory | -d]\n" + " [--recursive | -r] ..."}, {"pool_list", lfs_poollist, 0, "List pools or pool OSTs\n" "usage: pool_list [.] | \n"}, @@ -150,7 +150,8 @@ {"join", lfs_join, 0, "join two lustre files into one - join A, B, will be like cat B >> A & del B\n" "usage: join \n"}, - {"osts", lfs_osts, 0, "osts"}, + {"osts", lfs_osts, 0, "list OSTs connected to client " + "[for specified path only]\n" "usage: osts [path]"}, {"df", lfs_df, 0, "report filesystem disk space usage or inodes usage" "of each MDS and all OSDs or a batch belonging to a specific pool .\n" @@ -326,7 +327,7 @@ } /* get the stripe offset */ if (stripe_off_arg != NULL) { - st_offset = strtoul(stripe_off_arg, &end, 0); + st_offset = strtol(stripe_off_arg, &end, 0); if (*end != '\0') { fprintf(stderr, "error: %s: bad stripe offset '%s'\n", argv[0], stripe_off_arg); @@ -454,7 +455,6 @@ int c, ret; time_t t; struct find_param param = { .maxdepth = -1 }; - char str[1024]; struct option long_opts[] = { /* New find options. */ {"atime", required_argument, 0, 'A'}, @@ -536,29 +536,20 @@ case 'A': xtime = ¶m.atime; xsign = ¶m.asign; + param.exclude_atime = !!neg_opt; case 'C': if (c == 'C') { xtime = ¶m.ctime; xsign = ¶m.csign; + param.exclude_ctime = !!neg_opt; } case 'M': if (c == 'M') { xtime = ¶m.mtime; xsign = ¶m.msign; + param.exclude_mtime = !!neg_opt; } new_fashion = 1; - if (neg_opt) { - if (optarg[0] == '-') - optarg[0] = '+'; - else if (optarg[0] == '+') - optarg[0] = '-'; - else { - str[0] = '-'; - str[1] = '\0'; - strcat(str, optarg); - optarg = str; - } - } ret = set_time(&t, xtime, optarg); if (ret == INT_MAX) return -1; @@ -689,18 +680,6 @@ }; break; case 's': - if (neg_opt) { - if (optarg[0] == '-') - optarg[0] = '+'; - else if (optarg[0] == '+') - optarg[0] = '-'; - else { - str[0] = '-'; - str[1] = '\0'; - strcat(str, optarg); - optarg = str; - } - } if (optarg[0] == '+') param.size_sign = -1; else if (optarg[0] == '-') @@ -715,6 +694,7 @@ optarg); return ret; } + param.exclude_size = !!neg_opt; param.size_check = 1; break; case 'v': @@ -868,20 +848,33 @@ static int lfs_osts(int argc, char **argv) { - char mntdir[PATH_MAX] = {'\0'}; + char mntdir[PATH_MAX] = {'\0'}, path[PATH_MAX] = {'\0'}; struct find_param param; int index = 0, rc = 0; - if (argc != 1) + if (argc > 2) return CMD_HELP; - while (llapi_search_mounts(NULL, index++, mntdir, NULL) == 0) { + if (argc == 2 && !realpath(argv[1], path)) { + rc = -errno; + fprintf(stderr, "error: invalid path '%s': %s\n", + argv[1], strerror(-rc)); + return rc; + } + + while (!llapi_search_mounts(path, index++, mntdir, NULL)) { + /* Check if we have a mount point */ + if (mntdir[0] == '\0') + continue; + memset(¶m, 0, sizeof(param)); rc = llapi_ostlist(mntdir, ¶m); if (rc) { fprintf(stderr, "error: %s: failed on %s\n", argv[0], mntdir); } + if (path[0] != '\0') + break; memset(mntdir, 0, PATH_MAX); } @@ -1094,16 +1087,15 @@ printf("\n"); showdf(mntdir, &sum, "filesystem summary:", ishow, cooked, NULL, 0,0); - + printf("\n"); return 0; } static int lfs_df(int argc, char **argv) { - char *path = NULL; - char *mntdir = NULL; + char mntdir[PATH_MAX] = {'\0'}, path[PATH_MAX] = {'\0'}; int ishow = 0, cooked = 0; - int c, rc = 0; + int c, rc = 0, index = 0; char fsname[PATH_MAX] = "", *pool_name = NULL; struct option long_opts[] = { {"pool", required_argument, 0, 'p'}, @@ -1126,45 +1118,26 @@ return CMD_HELP; } } - if (optind < argc ) - path = argv[optind]; - if ((mntdir = malloc(PATH_MAX)) == NULL) { - fprintf(stderr, "error: cannot allocate %d bytes\n", - PATH_MAX); - return -ENOMEM; - } - memset(mntdir, 0, PATH_MAX); - - if (path) { - char rpath[PATH_MAX] = {'\0'}; - - if (!realpath(path, rpath)) { - rc = -errno; - fprintf(stderr, "error: invalid path '%s': %s\n", - path, strerror(-rc)); - return rc; - } + if (optind < argc && !realpath(argv[optind], path)) { + rc = -errno; + fprintf(stderr, "error: invalid path '%s': %s\n", + argv[optind], strerror(-rc)); + return rc; + } - rc = llapi_search_mounts(rpath, 0, mntdir, fsname); - if (rc == 0 && mntdir[0] != '\0') { - rc = mntdf(mntdir, fsname, pool_name, ishow, cooked); - printf("\n"); - } - } else { - int index = 0; + while (!llapi_search_mounts(path, index++, mntdir, fsname)) { + /* Check if we have a mount point */ + if (mntdir[0] == '\0') + continue; - while (!llapi_search_mounts(NULL, index++, mntdir, fsname)) { - rc = mntdf(mntdir, fsname, pool_name, ishow, cooked); - if (rc) - break; - printf("\n"); - fsname[0] = '\0'; /* avoid matching in next loop */ - mntdir[0] = '\0'; /* avoid matching in next loop */ - } + rc = mntdf(mntdir, fsname, pool_name, ishow, cooked); + if (rc || path[0] != '\0') + break; + fsname[0] = '\0'; /* avoid matching in next loop */ + mntdir[0] = '\0'; /* avoid matching in next loop */ } - free(mntdir); return rc; } @@ -2077,7 +2050,7 @@ ? LPU64 : "["LPU64"]", dqb->dqb_bsoftlimit); else - sprintf(numbuf[1], "%s", ""); + sprintf(numbuf[1], "%s", "-"); sprintf(numbuf[2], (dqb->dqb_valid & QIF_BLIMITS) ? LPU64 : "["LPU64"]", dqb->dqb_bhardlimit); printf(" %7s%c %6s %7s %7s", @@ -2094,13 +2067,15 @@ ? LPU64 : "["LPU64"]", dqb->dqb_isoftlimit); else - sprintf(numbuf[1], "%s", ""); + sprintf(numbuf[1], "%s", "-"); sprintf(numbuf[2], (dqb->dqb_valid & QIF_ILIMITS) ? LPU64 : "["LPU64"]", dqb->dqb_ihardlimit); if (type != OST_QUOTA_INFO) printf(" %7s%c %6s %7s %7s", numbuf[0], iover ? '*' : ' ', numbuf[1], numbuf[2], iover > 1 ? timebuf : "-"); + else + printf(" %7s %7s %7s %7s", "-", "-", "-", "-"); printf("\n"); } } else if (qctl->qc_cmd == LUSTRE_Q_GETINFO || diff -Nru lustre-1.8.3/lustre/utils/l_getgroups.c lustre-1.8.5+dfsg/lustre/utils/l_getgroups.c --- lustre-1.8.3/lustre/utils/l_getgroups.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/l_getgroups.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -94,16 +94,17 @@ int get_groups_local(struct mds_grp_downcall_data **grp) { struct mds_grp_downcall_data *param; - int i, maxgroups, size; + int i, maxgroups, size, saved_errno; struct passwd *pw; struct group *gr; CHECK_DURATION_START; pw = getpwuid((*grp)->mgd_uid); + saved_errno = errno; CHECK_DURATION_END("getpwuid", 2); if (!pw) { errlog("no such user %u\n", (*grp)->mgd_uid); - (*grp)->mgd_err = errno ? errno : EIDRM; + (*grp)->mgd_err = saved_errno ? saved_errno : EIDRM; return sizeof(*param); } (*grp)->mgd_gid = pw->pw_gid; diff -Nru lustre-1.8.3/lustre/utils/liblustreapi.c lustre-1.8.5+dfsg/lustre/utils/liblustreapi.c --- lustre-1.8.3/lustre/utils/liblustreapi.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/liblustreapi.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -594,7 +594,7 @@ { int want = WANT_PATH, idx = -1; - if (!pathname) { + if (!pathname || pathname[0] == '\0') { want |= WANT_INDEX; idx = index; } else @@ -1337,27 +1337,20 @@ return ret; } -static int cb_ostlist(char *path, DIR *parent, DIR *d, void *data, - struct dirent64 *de) + +int llapi_ostlist(char *path, struct find_param *param) { - struct find_param *param = (struct find_param *)data; + DIR *dir; int ret; - LASSERT(parent != NULL || d != NULL); - - /* Prepare odb. */ - ret = setup_obd_uuid(d ? d : parent, path, param); + dir = opendir(path); + if (dir == NULL) + return -errno; - /* We don't want to actually traverse the directory tree, - * so return a positive value from sem_init to terminate - * the traversal before it starts. - */ - return ret == 0 ? 1 : ret; -} + ret = setup_obd_uuid(dir, path, param); + closedir(dir); -int llapi_ostlist(char *path, struct find_param *param) -{ - return param_callback(path, cb_ostlist, cb_common_fini, param); + return ret; } static void lov_dump_user_lmm_header(struct lov_user_md *lum, char *path, @@ -1389,8 +1382,14 @@ if (verbose & ~VERBOSE_COUNT) llapi_printf(LLAPI_MSG_NORMAL, "%sstripe_count: ", prefix); - llapi_printf(LLAPI_MSG_NORMAL, "%u%c", - (int)lum->lmm_stripe_count, nl); + if (is_dir) + llapi_printf(LLAPI_MSG_NORMAL, "%d%c", + lum->lmm_stripe_count == + (typeof(lum->lmm_stripe_count))(-1) ? -1 : + lum->lmm_stripe_count, nl); + else + llapi_printf(LLAPI_MSG_NORMAL, "%u%c", + (int)lum->lmm_stripe_count, nl); } if (verbose & VERBOSE_SIZE) { @@ -1410,8 +1409,14 @@ if (verbose & ~VERBOSE_OFFSET) llapi_printf(LLAPI_MSG_NORMAL, "%sstripe_offset: ", prefix); - llapi_printf(LLAPI_MSG_NORMAL, "%u%c", - lum->lmm_objects[0].l_ost_idx, nl); + if (is_dir) + llapi_printf(LLAPI_MSG_NORMAL, "%d%c", + lum->lmm_stripe_offset == + (typeof(lum->lmm_stripe_offset))(-1) ? -1 : + lum->lmm_stripe_offset, nl); + else + llapi_printf(LLAPI_MSG_NORMAL, "%u%c", + lum->lmm_objects[0].l_ost_idx, nl); } if ((verbose & VERBOSE_POOL) && (pool_name != NULL)) { @@ -1567,6 +1572,8 @@ int fd, rc = 0; fname = strrchr(path, '/'); + if (strlen(fname) + 1 < sizeof(struct lov_user_md)) + return ENAMETOOLONG; /* It should be a file (or other non-directory) */ if (fname == NULL) { @@ -1648,28 +1655,26 @@ * Note: 5th actually means that the value is within the interval * (limit - margin, limit]. */ static int find_value_cmp(unsigned int file, unsigned int limit, int sign, - unsigned long long margin, int mds) + int negopt, unsigned long long margin, int mds) { - if (sign > 0) { - if (file < limit) - return mds ? 0 : 1; - } + int ret = -1; - if (sign == 0) { - if (file <= limit && file + margin > limit) - return mds ? 0 : 1; - if (file + margin <= limit) - return mds ? 0 : -1; - } - - if (sign < 0) { - if (file > limit) - return 1; - if (mds) - return 0; + if (sign > 0) { + if (file <= limit) + ret = mds ? 0 : 1; + } else if (sign == 0) { + if (file <= limit && file + margin >= limit) + ret = mds ? 0 : 1; + else if (file + margin <= limit) + ret = mds ? 0 : -1; + } else if (sign < 0) { + if (file >= limit) + ret = 1; + else if (mds) + ret = 0; } - return -1; + return negopt ? ~ret + 1 : ret; } /* Check if the file time matches all the given criteria (e.g. --atime +/-N). @@ -1687,7 +1692,8 @@ /* Check if file is accepted. */ if (param->atime) { ret = find_value_cmp(st->st_atime, param->atime, - param->asign, 24 * 60 * 60, mds); + param->asign, param->exclude_atime, + 24 * 60 * 60, mds); if (ret < 0) return ret; rc = ret; @@ -1695,7 +1701,8 @@ if (param->mtime) { ret = find_value_cmp(st->st_mtime, param->mtime, - param->msign, 24 * 60 * 60, mds); + param->msign, param->exclude_mtime, + 24 * 60 * 60, mds); if (ret < 0) return ret; @@ -1707,7 +1714,8 @@ if (param->ctime) { ret = find_value_cmp(st->st_ctime, param->ctime, - param->csign, 24 * 60 * 60, mds); + param->csign, param->exclude_ctime, + 24 * 60 * 60, mds); if (ret < 0) return ret; @@ -1966,10 +1974,11 @@ goto decided; } - if (param->size_check) + if (param->size_check) { decision = find_value_cmp(st->st_size, param->size, - param->size_sign, param->size_units, - 0); + param->size_sign, param->exclude_size, + param->size_units, 0); + } if (decision != -1) { llapi_printf(LLAPI_MSG_NORMAL, "%s", path); diff -Nru lustre-1.8.3/lustre/utils/loadgen.c lustre-1.8.5+dfsg/lustre/utils/loadgen.c --- lustre-1.8.3/lustre/utils/loadgen.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/loadgen.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -669,7 +669,7 @@ { struct kid_t *kid; char oname[10], ename[10]; - int thread = (long)threadvp, dev; + int thread = (long)threadvp, dev = 0; int rc = 0, err; if (o_verbose > 2) diff -Nru lustre-1.8.3/lustre/utils/lustre_cfg.c lustre-1.8.5+dfsg/lustre/utils/lustre_cfg.c --- lustre-1.8.3/lustre/utils/lustre_cfg.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/lustre_cfg.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -469,20 +469,49 @@ } /* Param set in config log on MGS */ -/* conf_param key1=value1 [key2=value2...] */ +/* conf_param key=value */ +/* Note we can actually send mgc conf_params from clients, but currently + * that's only done for default file striping (see ll_send_mgc_param), + * and not here. */ +/* After removal of a parameter (-d) Lustre will use the default + * AT NEXT REBOOT, not immediately. */ int jt_lcfg_mgsparam(int argc, char **argv) { - int i, rc; + int rc; + int del = 0; struct lustre_cfg_bufs bufs; struct lustre_cfg *lcfg; + char *buf = NULL; - if ((argc >= LUSTRE_CFG_MAX_BUFCOUNT) || (argc <= 1)) + /* mgs_setparam processes only lctl buf #1 */ + if ((argc > 3) || (argc <= 1)) return CMD_HELP; + while ((rc = getopt(argc, argv, "d")) != -1) { + switch (rc) { + case 'd': + del = 1; + break; + default: + return CMD_HELP; + } + } + lustre_cfg_bufs_reset(&bufs, NULL); - for (i = 1; i < argc; i++) { - lustre_cfg_bufs_set_string(&bufs, i, argv[i]); + if (del) { + char *ptr; + + /* for delete, make it "=\0" */ + buf = malloc(strlen(argv[optind]) + 2); + /* put an '=' on the end in case it doesn't have one */ + sprintf(buf, "%s=", argv[optind]); + /* then truncate after the first '=' */ + ptr = strchr(buf, '='); + *(++ptr) = '\0'; + lustre_cfg_bufs_set_string(&bufs, 1, buf); + } else { + lustre_cfg_bufs_set_string(&bufs, 1, argv[optind]); } /* We could put other opcodes here. */ @@ -490,6 +519,8 @@ rc = lcfg_mgs_ioctl(argv[0], OBD_DEV_ID, lcfg); lustre_cfg_free(lcfg); + if (buf) + free(buf); if (rc < 0) { fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -527,11 +558,11 @@ /* append the indicator to entries*/ if (show_type) { if (S_ISDIR(st.st_mode)) - filename[strlen(filename)] = '/'; + strcat(filename, "/"); else if (S_ISLNK(st.st_mode)) - filename[strlen(filename)] = '@'; + strcat(filename, "@"); else if (st.st_mode & S_IWUSR) - filename[strlen(filename)] = '='; + strcat(filename, "="); } return filename; @@ -595,8 +626,114 @@ int only_path; int show_path; int show_type; + int recursive; }; +static int listparam_cmdline(int argc, char **argv, struct param_opts *popt) +{ + int ch; + popt->show_path = 1; + popt->only_path = 1; + popt->show_type = 0; + popt->recursive = 0; + + while ((ch = getopt(argc, argv, "FR")) != -1) { + switch (ch) { + case 'F': + popt->show_type = 1; + break; + case 'R': + popt->recursive = 1; + break; + default: + return -1; + } + } + + return optind; +} + +static int listparam_display(struct param_opts *popt, char *pattern) +{ + int rc; + int i; + glob_t glob_info; + char filename[PATH_MAX + 1]; /* extra 1 byte for file type */ + + rc = glob(pattern, GLOB_BRACE | (popt->recursive ? GLOB_MARK : 0), + NULL, &glob_info); + if (rc) { + fprintf(stderr, "error: list_param: %s: %s\n", + pattern, globerrstr(rc)); + return -ESRCH; + } + + for (i = 0; i < glob_info.gl_pathc; i++) { + char *valuename; + int last; + + /* Trailing '/' will indicate recursion into directory */ + last = strlen(glob_info.gl_pathv[i]) - 1; + + /* Remove trailing '/' or it will be converted to '.' */ + if (last > 0 && glob_info.gl_pathv[i][last] == '/') + glob_info.gl_pathv[i][last] = '\0'; + else + last = 0; + strcpy(filename, glob_info.gl_pathv[i]); + valuename = display_name(filename, popt->show_type); + if (valuename) + printf("%s\n", valuename); + if (last) { + strcpy(filename, glob_info.gl_pathv[i]); + strcat(filename, "/*"); + listparam_display(popt, filename); + } + } + + globfree(&glob_info); + return rc; +} + +int jt_lcfg_listparam(int argc, char **argv) +{ + int fp; + int rc = 0, i; + struct param_opts popt; + char pattern[PATH_MAX]; + char *path; + + rc = listparam_cmdline(argc, argv, &popt); + if (rc == argc && popt.recursive) { + rc--; /* we know at least "-R" is a parameter */ + argv[rc] = "*"; + } else if (rc < 0 || rc >= argc) { + return CMD_HELP; + } + + for (i = rc; i < argc; i++) { + path = argv[i]; + + clean_path(path); + + /* If the entire path is specified as input */ + fp = open(path, O_RDONLY); + if (fp < 0) { + snprintf(pattern, PATH_MAX, + "/proc/{fs,sys}/{lnet,lustre}/%s", path); + } else { + strcpy(pattern, path); + close(fp); + } + + rc = listparam_display(&popt, pattern); + if (rc < 0) + return rc; + } + + return 0; +} + static int getparam_cmdline(int argc, char **argv, struct param_opts *popt) { int ch; diff -Nru lustre-1.8.3/lustre/utils/Makefile.am lustre-1.8.5+dfsg/lustre/utils/Makefile.am --- lustre-1.8.3/lustre/utils/Makefile.am 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/Makefile.am 2010-11-17 04:31:48.000000000 +0100 @@ -6,7 +6,7 @@ LIBPTLCTL := $(top_builddir)/lnet/utils/libptlctl.a -sbin_scripts = lrun +sbin_scripts = lrun bin_scripts = llstat llobdstat plot-llstat if UTILS @@ -28,12 +28,12 @@ lib_LIBRARIES = liblustreapi.a lctl_SOURCES = parser.c obd.c lustre_cfg.c lctl.c parser.h obdctl.h platform.h -lctl_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS) +lctl_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) lctl_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a lfs_SOURCES = lfs.c parser.c lustre_cfg.c obd.c -lfs_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS) -lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a +lfs_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) +lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a loadgen_SOURCES = loadgen.c lustre_cfg.c obd.c loadgen_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS) @@ -45,7 +45,7 @@ EXT2FSLIB = -lext2fs E2PLIB = -le2p else -E2PLIB = +E2PLIB = EXT2FSLIB = endif diff -Nru lustre-1.8.3/lustre/utils/Makefile.in lustre-1.8.5+dfsg/lustre/utils/Makefile.in --- lustre-1.8.3/lustre/utils/Makefile.in 2010-04-10 02:29:12.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/Makefile.in 2010-11-17 04:32:03.000000000 +0100 @@ -304,7 +304,7 @@ LIBPTLCTL := $(top_builddir)/lnet/utils/libptlctl.a -sbin_scripts = lrun +sbin_scripts = lrun bin_scripts = llstat llobdstat plot-llstat @UTILS_TRUE@noinst_PROGRAMS = obdio obdbarrier @@ -322,12 +322,12 @@ lib_LIBRARIES = liblustreapi.a lctl_SOURCES = parser.c obd.c lustre_cfg.c lctl.c parser.h obdctl.h platform.h -lctl_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS) +lctl_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) lctl_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a lfs_SOURCES = lfs.c parser.c lustre_cfg.c obd.c -lfs_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS) -lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a +lfs_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) +lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a loadgen_SOURCES = loadgen.c lustre_cfg.c obd.c loadgen_LDADD := $(LIBREADLINE) liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS) diff -Nru lustre-1.8.3/lustre/utils/mkfs_lustre.c lustre-1.8.5+dfsg/lustre/utils/mkfs_lustre.c --- lustre-1.8.3/lustre/utils/mkfs_lustre.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/mkfs_lustre.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -88,6 +88,7 @@ #define INDEX_UNASSIGNED 0xFFFF #define MO_IS_LOOP 0x01 #define MO_FORCEFORMAT 0x02 +#define min(x,y) ((x)<(y) ? (x) : (y)) /* used to describe the options to format the lustre disk, not persistent */ struct mkfs_opts { @@ -517,7 +518,13 @@ int maj_high, maj_low, min; int ret; - strscat(mop->mo_mkfsopts, " -O dir_index,extents", sizeof(mop->mo_mkfsopts)); + if (IS_OST(&mop->mo_ldd)) { + strscat(mop->mo_mkfsopts, " -O dir_index,extents", + sizeof(mop->mo_mkfsopts)); + } else { + strscat(mop->mo_mkfsopts, " -O dir_index", + sizeof(mop->mo_mkfsopts)); + } /* Upstream e2fsprogs called our uninit_groups feature uninit_bg, * check for both of them when testing e2fsprogs features. */ @@ -582,6 +589,11 @@ return EINVAL; } block_count = mop->mo_device_sz / (L_BLOCK_SIZE >> 10); + /* If the LUN size is just over 2^32 blocks, limit the + * filesystem size to 2^32-1 blocks to avoid problems with + * ldiskfs/mkfs not handling this size. Bug 22906 */ + if (block_count > 0xffffffffULL && block_count < 0x100002000ULL) + block_count = 0xffffffffULL; } if ((mop->mo_ldd.ldd_mount_type == LDD_MT_EXT3) || diff -Nru lustre-1.8.3/lustre/utils/mount_lustre.c lustre-1.8.5+dfsg/lustre/utils/mount_lustre.c --- lustre-1.8.3/lustre/utils/mount_lustre.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/mount_lustre.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -69,7 +69,7 @@ int fake = 0; int force = 0; int retry = 0; -int md_stripe_cache_size = 2048; +int md_stripe_cache_size = 16384; char *progname = NULL; void usage(FILE *out) @@ -485,7 +485,8 @@ int main(int argc, char *const argv[]) { char default_options[] = ""; - char *usource, *source, *target, *ptr; + char *usource, *source; + char target[PATH_MAX] = {'\0'}; char *options, *optcopy, *orig_options = default_options; int i, nargs = 3, opt, rc, flags, optlen; static struct option long_opt[] = { @@ -553,11 +554,11 @@ usage(stderr); } - target = argv[optind + 1]; - ptr = target + strlen(target) - 1; - while ((ptr > target) && (*ptr == '/')) { - *ptr = 0; - ptr--; + if (realpath(argv[optind + 1], target) == NULL) { + rc = errno; + fprintf(stderr, "warning: %s: cannot resolve: %s\n", + argv[optind + 1], strerror(errno)); + return rc; } if (verbose) { diff -Nru lustre-1.8.3/lustre/utils/mount_utils.c lustre-1.8.5+dfsg/lustre/utils/mount_utils.c --- lustre-1.8.3/lustre/utils/mount_utils.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/mount_utils.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -142,7 +142,8 @@ } else { verrprint("%s: Unable to read %d.%d config %s.\n", progname, LUSTRE_MAJOR, LUSTRE_MINOR, filepnm); - goto out_close; + ret = 1; + goto out_rmdir; } out_close: diff -Nru lustre-1.8.3/lustre/utils/obd.c lustre-1.8.5+dfsg/lustre/utils/obd.c --- lustre-1.8.3/lustre/utils/obd.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/obd.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -543,8 +543,7 @@ (prev_time.tv_sec + prev_time.tv_usec / 1000000.0); if (prev_valid && - live_threads == total_threads && - secs > 0.0) /* someone screwed with the time? */ + secs > 1.0) /* someone screwed with the time? */ printf("%d/%d Total: %f/second\n", non_zero, total_threads, total / secs); memcpy(counter_snapshot[1], counter_snapshot[0], @@ -725,7 +724,7 @@ thread = i; argv[2] = "--device"; - return jt_opt_device(argc - 2, argv + 2); + exit(jt_opt_device(argc - 2, argv + 2)); } else if (be_verbose(verbose, NULL, i, &next_thread, threads)) printf("%s: thread #%d (PID %d) started\n", argv[0], i, rc); diff -Nru lustre-1.8.3/lustre/utils/obdctl.h lustre-1.8.5+dfsg/lustre/utils/obdctl.h --- lustre-1.8.3/lustre/utils/obdctl.h 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/obdctl.h 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -113,6 +113,7 @@ int jt_lcfg_mgsparam(int argc, char **argv); int jt_lcfg_getparam(int argc, char **argv); int jt_lcfg_setparam(int argc, char **argv); +int jt_lcfg_listparam(int argc, char **argv); int obd_add_uuid(char *uuid, lnet_nid_t nid); diff -Nru lustre-1.8.3/lustre/utils/wirecheck.c lustre-1.8.5+dfsg/lustre/utils/wirecheck.c --- lustre-1.8.3/lustre/utils/wirecheck.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/wirecheck.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -330,6 +330,8 @@ CHECK_CDEFINE(OBD_FL_CKSUM_CRC32); CHECK_CDEFINE(OBD_FL_CKSUM_ADLER); CHECK_CDEFINE(OBD_FL_SHRINK_GRANT); + CHECK_CDEFINE(OBD_FL_MMAP); + CHECK_CDEFINE(OBD_FL_RECOV_RESEND); CHECK_CVALUE(OBD_CKSUM_CRC32); CHECK_CVALUE(OBD_CKSUM_ADLER); } diff -Nru lustre-1.8.3/lustre/utils/wiretest.c lustre-1.8.5+dfsg/lustre/utils/wiretest.c --- lustre-1.8.3/lustre/utils/wiretest.c 2010-04-10 02:28:57.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre/utils/wiretest.c 2010-11-17 04:31:48.000000000 +0100 @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -721,6 +721,8 @@ CLASSERT(OBD_FL_CKSUM_CRC32 == (0x00001000)); CLASSERT(OBD_FL_CKSUM_ADLER == (0x00002000)); CLASSERT(OBD_FL_SHRINK_GRANT == (0x00020000)); + CLASSERT(OBD_FL_MMAP == (0x00040000)); + CLASSERT(OBD_FL_RECOV_RESEND == (0x00080000)); CLASSERT(OBD_CKSUM_CRC32 == 1); CLASSERT(OBD_CKSUM_ADLER == 2); diff -Nru lustre-1.8.3/lustre-iokit/Makefile.in lustre-1.8.5+dfsg/lustre-iokit/Makefile.in --- lustre-1.8.3/lustre-iokit/Makefile.in 2010-04-10 02:29:16.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre-iokit/Makefile.in 2010-11-17 04:32:07.000000000 +0100 @@ -345,7 +345,7 @@ || exit 1; \ fi; \ done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + -find $(distdir) -type d ! -perm -755 -exec chmod a+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ diff -Nru lustre-1.8.3/lustre-iokit/obdfilter-survey/libecho lustre-1.8.5+dfsg/lustre-iokit/obdfilter-survey/libecho --- lustre-1.8.3/lustre-iokit/obdfilter-survey/libecho 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre-iokit/obdfilter-survey/libecho 2010-09-07 04:57:51.000000000 +0200 @@ -49,6 +49,7 @@ DSH=${DSH:-"ssh"} +NETTYPE=${NETTYPE:-tcp} dsh () { local node="$1" @@ -56,9 +57,7 @@ shift 2 local command="$@" - local here=$(pwd) - - command="cd $here; export PATH=/sbin:/usr/sbin:\$PATH; $command" + command="export PATH=/sbin:/usr/sbin:\$PATH; $command" case $DSH in ssh) @@ -308,7 +307,7 @@ local server_nid=$1 local ocsname=$2 local oscuuid=$3 - $lctl add_uuid echo_UUID $server_nid@tcp >/dev/null 2>&1 + $lctl add_uuid echo_UUID $server_nid@$NETTYPE >/dev/null 2>&1 $lctl </dev/null 2>&1 + $lctl add_uuid ${host_name}_UUID $ost_nid@$NETTYPE >/dev/null 2>&1 $lctl < $host_vmstatf - remote_shell $host "vmstat 5 >> $host_vmstatf" & + remote_shell $host "vmstat 5 >> $host_vmstatf" &> /dev/null & pid=$! vmstatpids[$pidcount]=$pid pidcount=$((pidcount+1)) - do_unload_obdecho[$host]=0 - if obdecho_loaded $host; then - continue - fi - load_obdecho $host - if obdecho_loaded $host; then - do_unload_obdecho[$host]=1 - continue - fi - echo "Can't load obdecho on $host" 1>&2 - exit 1 done # get all the echo_client device numbers and names for ((i=0; i < $ndevs; i++)); do @@ -390,6 +385,8 @@ echo "no devices or hosts specified" cleanup 0 $clean_srv_OSS $cleanup_oscs fi +# Buffers will be spread out among all hosts, so allow for that +max_buffer_mem=$(( ${max_buffer_mem} * ${#unique_hosts[@]} )) print_summary "$(date) Obdfilter-survey for case=$case from $(hostname)" for ((rsz = $rszlo; rsz <= $rszhi; rsz*=2)); do for ((nobj = $nobjlo; nobj <= $nobjhi; nobj*=2)); do @@ -501,9 +498,10 @@ tmpfi="${tmpf}_$idx" echo "=============> $test $client_name" >> $workf host="${host_names[$idx]}" - remote_shell $host cat $tmpfi >> $workf - get_stats $tmpfi >> $tmpf - rm $tmpfi + remote_shell $host cat $tmpfi > ${tmpfi}_local + cat ${tmpfi}_local >> $workf + get_stats ${tmpfi}_local >> $tmpf + rm -f $tmpfi ${tmpfi}_local done # compute/display global min/max stats echo "=============> $test global" >> $workf diff -Nru lustre-1.8.3/lustre-iokit/sgpdd-survey/sgpdd-survey lustre-1.8.5+dfsg/lustre-iokit/sgpdd-survey/sgpdd-survey --- lustre-1.8.3/lustre-iokit/sgpdd-survey/sgpdd-survey 2010-01-11 04:29:50.000000000 +0100 +++ lustre-1.8.5+dfsg/lustre-iokit/sgpdd-survey/sgpdd-survey 2010-07-28 08:46:06.000000000 +0200 @@ -65,7 +65,7 @@ devs[$i]=`sg_map | awk "{if (\\\$2 == \"$d\") print \\\$1}"` if [ -z "${devs[i]}" ]; then echo "Can't find SG device for $d, testing for partition" - pt=`echo $d | sed 's/[0-9]$//'` + pt=`echo $d | sed 's/[0-9]*$//'` # Try again devs[$i]=`sg_map | awk "{if (\\\$2 == \"$pt\") print \\\$1}"` if [ -z "${devs[i]}" ]; then diff -Nru lustre-1.8.3/lustre.spec lustre-1.8.5+dfsg/lustre.spec --- lustre-1.8.3/lustre.spec 2010-04-10 02:29:24.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre.spec 2010-11-17 04:32:15.000000000 +0100 @@ -1,14 +1,40 @@ # lustre.spec -%{!?version: %define version 1.8.3} +%{!?version: %define version 1.8.5} %{!?kversion: %define kversion } %{!?release: %define release } %{!?lustre_name: %define lustre_name lustre} %{!?build_lustre_tests: %define build_lustre_tests 1} +# in order to get kernel symset and/or kernel module dependencies into +# the RPM, in order to support weak-modules, the internal dependency gen- +# erator needs to be disabled +# this is done with (reduce the double % down to a single %): +# +# %%global _use_internal_dependency_generator 0 +# +# on SLES10, /usr/lib/rpm/macros already sets this, so no harm in also +# defining it here (until Suse changes their mind) +# +# on RHEL5, however, we do need to explicitly disable the internal dep- +# endency generator and allow the external one be used +# but since RedHat's kABI is only a subset of the total kernel ABI, it +# doesn't include all of the symbols we (or OFED for that matter) need +# until RedHat includes all of the symbols we need in their symsets we +# cannot support weak-modules +# we did e-mail the maintainer of all of this stuff @redhat but got no +# response from them +#%%global _use_internal_dependency_generator 0 + %define is_client %(bash -c "if [[ %{lustre_name} = *-client ]]; then echo -n '1'; else echo -n '0'; fi") # for those uses that don't want the -smp/-bigsmp on the end of %kversion %define krequires %(bash -c "echo %{kversion} | sed -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/-ppc64$//' -e 's/-default$//'") +%define sles10 %(bash -c "if [ "%sles_version" = "10" ]; then echo -n '1'; else echo -n '0'; fi") + +%if %sles10 +%define flavor %(bash -c "echo %{kversion} | sed -e 's/^.*-//'") +%endif + Summary: Lustre File System Name: %{lustre_name} Version: %{version} @@ -28,7 +54,11 @@ %package modules Summary: Kernel Lustre modules for Linux %{kversion} -Requires: modutils >= 2.4.10, kernel = %{krequires} +# for RHEL5 and SLES11, we need nothing here +# for SLES10, we need (where %{flavor} is, i.e. smp): +%if %sles10 +Requires: kernel-%{flavor} +%endif Group: Development/Kernel %description modules @@ -86,6 +116,9 @@ This package contains a set of test binaries and scripts that are intended to be used by the Lustre testing framework. +%if 0%{?suse_version} +%debug_package +%endif %prep %setup -qn lustre-%{version} ln lustre/ChangeLog ChangeLog-lustre @@ -124,14 +157,14 @@ # hack to avoid changing the libsysio code for "make install" rm -f $RPM_BUILD_ROOT%{_libdir}/libsysio.a # Remove ldiskfs module(s) - they are packaged by the ldiskfs .spec. -rm -rf $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre-ldiskfs +rm -rf $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre-ldiskfs # hack to include the llog_test module in lustre-tests llog_base=$RPM_BUILD_DIR/lustre-%{version}/lustre/obdclass/llog_test if [ -e ${llog_base}.ko ]; then - cp ${llog_base}.ko $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre + cp ${llog_base}.ko $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre elif [ -e ${llog_base}.o ]; then - cp ${llog_base}.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre + cp ${llog_base}.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre fi # Create the pristine source directory. @@ -191,7 +224,7 @@ %if %{build_lustre_tests} echo '%attr(-, root, root) %{_libdir}/lustre/tests/*' >lustre-tests.files -echo '%attr(-, root, root) /lib/modules/%{kversion}/kernel/fs/lustre/llog_test.*' >>lustre-tests.files +echo '%attr(-, root, root) /lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.*' >>lustre-tests.files modules_excludes="|llog_test" if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/liblustre/tests ] ; then echo '%attr(-, root, root) %{_libdir}/lustre/liblustre/tests/*' >>lustre-tests.files @@ -199,7 +232,7 @@ %endif pushd $RPM_BUILD_ROOT >/dev/null -find lib/modules/%{kversion}/kernel -type f | awk "!/(ZZZZZZZZZZ$modules_excludes)/ {print \"%attr(-, root, root) /\"\$0}" >>$RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files +find lib/modules/%{kversion}/updates -type f | awk "!/(ZZZZZZZZZZ$modules_excludes)/ {print \"%attr(-, root, root) /\"\$0}" >>$RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files popd >/dev/null %files -f lustre.files @@ -226,9 +259,22 @@ else depmod -ae %{kversion} || exit 0 fi + +# "weak modules" support +# Suse +if [ -x /usr/lib/module-init-tools/weak-modules ]; then + rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' | + /usr/lib/module-init-tools/weak-modules --add-modules +fi +# RedHat +if [ -x /sbin/weak-modules ]; then + rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' | + /sbin/weak-modules --add-modules +fi + cat < /var/run/%{name}-modules + %postun modules if [ -f /boot/System.map-%{kversion} ]; then depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0 @@ -278,6 +327,19 @@ depmod -ae %{kversion} || exit 0 fi +# "weak modules" support +# Suse +if [ -x /usr/lib/module-init-tools/weak-modules ]; then + cat /var/run/%{name}-modules | grep '\.ko$' | + /usr/lib/module-init-tools/weak-modules --remove-modules +fi +# RedHat +if [ -x /sbin/weak-modules ]; then + cat /var/run/%{name}-modules | grep '\.ko$' | + /sbin/weak-modules --remove-modules +fi +rm /var/run/%{name}-modules + %if %{build_lustre_tests} %post tests if [ -f /boot/System.map-%{kversion} ]; then diff -Nru lustre-1.8.3/lustre.spec.in lustre-1.8.5+dfsg/lustre.spec.in --- lustre-1.8.3/lustre.spec.in 2010-04-10 02:28:56.000000000 +0200 +++ lustre-1.8.5+dfsg/lustre.spec.in 2010-11-17 04:31:48.000000000 +0100 @@ -5,10 +5,36 @@ %{!?lustre_name: %define lustre_name lustre} %{!?build_lustre_tests: %define build_lustre_tests 1} +# in order to get kernel symset and/or kernel module dependencies into +# the RPM, in order to support weak-modules, the internal dependency gen- +# erator needs to be disabled +# this is done with (reduce the double % down to a single %): +# +# %%global _use_internal_dependency_generator 0 +# +# on SLES10, /usr/lib/rpm/macros already sets this, so no harm in also +# defining it here (until Suse changes their mind) +# +# on RHEL5, however, we do need to explicitly disable the internal dep- +# endency generator and allow the external one be used +# but since RedHat's kABI is only a subset of the total kernel ABI, it +# doesn't include all of the symbols we (or OFED for that matter) need +# until RedHat includes all of the symbols we need in their symsets we +# cannot support weak-modules +# we did e-mail the maintainer of all of this stuff @redhat but got no +# response from them +#%%global _use_internal_dependency_generator 0 + %define is_client %(bash -c "if [[ %{lustre_name} = *-client ]]; then echo -n '1'; else echo -n '0'; fi") # for those uses that don't want the -smp/-bigsmp on the end of %kversion %define krequires %(bash -c "echo %{kversion} | sed -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/-ppc64$//' -e 's/-default$//'") +%define sles10 %(bash -c "if [ "%sles_version" = "10" ]; then echo -n '1'; else echo -n '0'; fi") + +%if %sles10 +%define flavor %(bash -c "echo %{kversion} | sed -e 's/^.*-//'") +%endif + Summary: Lustre File System Name: %{lustre_name} Version: %{version} @@ -28,7 +54,11 @@ %package modules Summary: Kernel Lustre modules for Linux %{kversion} -Requires: modutils >= 2.4.10, kernel = %{krequires} +# for RHEL5 and SLES11, we need nothing here +# for SLES10, we need (where %{flavor} is, i.e. smp): +%if %sles10 +Requires: kernel-%{flavor} +%endif Group: Development/Kernel %description modules @@ -86,6 +116,9 @@ This package contains a set of test binaries and scripts that are intended to be used by the Lustre testing framework. +%if 0%{?suse_version} +%debug_package +%endif %prep %setup -qn lustre-%{version} ln lustre/ChangeLog ChangeLog-lustre @@ -124,14 +157,14 @@ # hack to avoid changing the libsysio code for "make install" rm -f $RPM_BUILD_ROOT%{_libdir}/libsysio.a # Remove ldiskfs module(s) - they are packaged by the ldiskfs .spec. -rm -rf $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre-ldiskfs +rm -rf $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre-ldiskfs # hack to include the llog_test module in lustre-tests llog_base=$RPM_BUILD_DIR/lustre-%{version}/lustre/obdclass/llog_test if [ -e ${llog_base}.ko ]; then - cp ${llog_base}.ko $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre + cp ${llog_base}.ko $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre elif [ -e ${llog_base}.o ]; then - cp ${llog_base}.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre + cp ${llog_base}.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre fi # Create the pristine source directory. @@ -191,7 +224,7 @@ %if %{build_lustre_tests} echo '%attr(-, root, root) %{_libdir}/lustre/tests/*' >lustre-tests.files -echo '%attr(-, root, root) /lib/modules/%{kversion}/kernel/fs/lustre/llog_test.*' >>lustre-tests.files +echo '%attr(-, root, root) /lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.*' >>lustre-tests.files modules_excludes="|llog_test" if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/liblustre/tests ] ; then echo '%attr(-, root, root) %{_libdir}/lustre/liblustre/tests/*' >>lustre-tests.files @@ -199,7 +232,7 @@ %endif pushd $RPM_BUILD_ROOT >/dev/null -find lib/modules/%{kversion}/kernel -type f | awk "!/(ZZZZZZZZZZ$modules_excludes)/ {print \"%attr(-, root, root) /\"\$0}" >>$RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files +find lib/modules/%{kversion}/updates -type f | awk "!/(ZZZZZZZZZZ$modules_excludes)/ {print \"%attr(-, root, root) /\"\$0}" >>$RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files popd >/dev/null %files -f lustre.files @@ -226,9 +259,22 @@ else depmod -ae %{kversion} || exit 0 fi + +# "weak modules" support +# Suse +if [ -x /usr/lib/module-init-tools/weak-modules ]; then + rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' | + /usr/lib/module-init-tools/weak-modules --add-modules +fi +# RedHat +if [ -x /sbin/weak-modules ]; then + rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' | + /sbin/weak-modules --add-modules +fi + cat < /var/run/%{name}-modules + %postun modules if [ -f /boot/System.map-%{kversion} ]; then depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0 @@ -278,6 +327,19 @@ depmod -ae %{kversion} || exit 0 fi +# "weak modules" support +# Suse +if [ -x /usr/lib/module-init-tools/weak-modules ]; then + cat /var/run/%{name}-modules | grep '\.ko$' | + /usr/lib/module-init-tools/weak-modules --remove-modules +fi +# RedHat +if [ -x /sbin/weak-modules ]; then + cat /var/run/%{name}-modules | grep '\.ko$' | + /sbin/weak-modules --remove-modules +fi +rm /var/run/%{name}-modules + %if %{build_lustre_tests} %post tests if [ -f /boot/System.map-%{kversion} ]; then diff -Nru lustre-1.8.3/tree_status lustre-1.8.5+dfsg/tree_status --- lustre-1.8.3/tree_status 2010-04-10 02:29:43.000000000 +0200 +++ lustre-1.8.5+dfsg/tree_status 2010-11-17 04:32:34.000000000 +0100 @@ -1,2 +1,2 @@ PRISTINE = 1 -MTIME = 1270859383 +MTIME = 1289964754