diff -urpN source.rhel6//block/Kconfig source/block/Kconfig --- source.rhel6//block/Kconfig 2012-11-21 12:24:27.625510977 +0100 +++ source/block/Kconfig 2012-11-21 16:09:02.796206772 +0100 @@ -99,6 +99,8 @@ config BLK_DEV_THROTTLING See Documentation/cgroups/blkio-controller.txt for more information. +source block/mars/kernel/Kconfig + endif # BLOCK config BLOCK_COMPAT diff -urpN source.rhel6//block/Makefile source/block/Makefile --- source.rhel6//block/Makefile 2012-11-21 12:24:27.625510977 +0100 +++ source/block/Makefile 2012-11-21 16:09:55.384556249 +0100 @@ -18,3 +18,6 @@ obj-$(CONFIG_IOSCHED_CFQ) += cfq-iosched obj-$(CONFIG_BLOCK_COMPAT) += compat_ioctl.o obj-$(CONFIG_BLK_DEV_INTEGRITY) += blk-integrity.o + +obj-$(CONFIG_MARS) += mars/kernel/ + diff -urpN source.rhel6//fs/aio.c source/fs/aio.c --- source.rhel6//fs/aio.c 2012-11-21 12:24:35.721563886 +0100 +++ source/fs/aio.c 2012-11-21 16:13:54.634146459 +0100 @@ -1304,6 +1304,8 @@ out: return ret; } +EXPORT_SYMBOL(sys_io_setup); + /* sys_io_destroy: * Destroy the aio_context specified. May cancel any outstanding * AIOs and block on completion. Will fail with -ENOSYS if not @@ -1321,6 +1323,8 @@ SYSCALL_DEFINE1(io_destroy, aio_context_ return -EINVAL; } +EXPORT_SYMBOL(sys_io_destroy); + static void aio_advance_iovec(struct kiocb *iocb, ssize_t ret) { struct iovec *iov = &iocb->ki_iovec[iocb->ki_cur_seg]; @@ -1927,6 +1931,8 @@ SYSCALL_DEFINE3(io_submit, aio_context_t return do_io_submit(ctx_id, nr, iocbpp, 0); } +EXPORT_SYMBOL(sys_io_submit); + /* lookup_kiocb * Finds a given iocb for cancellation. */ @@ -2006,6 +2012,8 @@ SYSCALL_DEFINE3(io_cancel, aio_context_t return ret; } +EXPORT_SYMBOL(sys_io_cancel); + /* io_getevents: * Attempts to read at least min_nr events and up to nr events from * the completion queue for the aio_context specified by ctx_id. May @@ -2036,3 +2044,5 @@ SYSCALL_DEFINE5(io_getevents, aio_contex asmlinkage_protect(5, ret, ctx_id, min_nr, nr, events, timeout); return ret; } + +EXPORT_SYMBOL(sys_io_getevents); diff -urpN source.rhel6//fs/open.c source/fs/open.c --- source.rhel6//fs/open.c 2012-11-21 12:24:38.097579412 +0100 +++ source/fs/open.c 2012-11-21 16:16:34.083206503 +0100 @@ -611,6 +611,8 @@ out: return error; } +EXPORT_SYMBOL(sys_lchown); + SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group) { struct file * file; diff -urpN source.rhel6//fs/utimes.c source/fs/utimes.c --- source.rhel6//fs/utimes.c 2012-11-21 12:24:38.249580405 +0100 +++ source/fs/utimes.c 2012-11-21 16:20:22.144720576 +0100 @@ -1,3 +1,4 @@ +#include #include #include #include @@ -184,6 +185,8 @@ out: return error; } +EXPORT_SYMBOL(do_utimes); + SYSCALL_DEFINE4(utimensat, int, dfd, char __user *, filename, struct timespec __user *, utimes, int, flags) { diff -urpN source.rhel6//include/linux/major.h source/include/linux/major.h --- source.rhel6//include/linux/major.h 2012-11-21 12:24:38.717583463 +0100 +++ source/include/linux/major.h 2012-11-21 16:21:14.865066525 +0100 @@ -146,6 +146,7 @@ #define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT) #define DRBD_MAJOR 147 +#define MARS_MAJOR 148 #define RTF_MAJOR 150 #define RAW_MAJOR 162 diff -urpN source.rhel6//include/linux/sched.h source/include/linux/sched.h --- source.rhel6//include/linux/sched.h 2012-11-21 12:24:38.953585006 +0100 +++ source/include/linux/sched.h 2012-11-21 16:22:31.845571806 +0100 @@ -1532,6 +1532,9 @@ struct task_struct { /* mutex deadlock detection */ struct mutex_waiter *blocked_on; #endif +#ifdef CONFIG_DEBUG_SPINLOCK + atomic_t lock_count; +#endif #ifdef CONFIG_TRACE_IRQFLAGS unsigned int irq_events; int hardirqs_enabled; diff -urpN source.rhel6//lib/debug_locks.c source/lib/debug_locks.c --- source.rhel6//lib/debug_locks.c 2012-11-21 12:24:39.849590860 +0100 +++ source/lib/debug_locks.c 2012-11-21 16:24:06.234191565 +0100 @@ -44,3 +44,5 @@ int debug_locks_off(void) } return 0; } + +EXPORT_SYMBOL(debug_locks_off); diff -urpN source.rhel6//mm/init-mm.c source/mm/init-mm.c --- source.rhel6//mm/init-mm.c 2012-11-21 12:24:39.929591383 +0100 +++ source/mm/init-mm.c 2012-11-21 16:25:35.382777139 +0100 @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -18,5 +19,10 @@ struct mm_struct init_mm = { .page_table_lock = __SPIN_LOCK_UNLOCKED(init_mm.page_table_lock), .mmlist = LIST_HEAD_INIT(init_mm.mmlist), .cpu_vm_mask = CPU_MASK_ALL, +#ifdef CONFIG_AIO + .ioctx_lock = __SPIN_LOCK_UNLOCKED(init_mm.ioctx_lock), + .ioctx_list = HLIST_HEAD_INIT, + .get_unmapped_area = arch_get_unmapped_area, +#endif }; EXPORT_SYMBOL(init_mm); diff -urpN source.rhel6//mm/mmu_context.c source/mm/mmu_context.c --- source.rhel6//mm/mmu_context.c 2012-11-21 12:24:39.969591645 +0100 +++ source/mm/mmu_context.c 2012-11-21 16:26:42.839220361 +0100 @@ -7,6 +7,7 @@ #include #include #include +#include #include diff -urpN source.rhel6//mm/page_alloc.c source/mm/page_alloc.c --- source.rhel6//mm/page_alloc.c 2012-11-21 12:24:39.985591749 +0100 +++ source/mm/page_alloc.c 2012-11-21 16:29:13.160208474 +0100 @@ -168,6 +168,7 @@ static char * const zone_names[MAX_NR_ZO * tuned according to the amount of memory in the system. */ int min_free_kbytes = 1024; +EXPORT_SYMBOL(min_free_kbytes); /* * Extra memory for the system to try freeing between the min and @@ -5125,6 +5126,8 @@ void setup_per_zone_wmarks(void) calculate_totalreserve_pages(); } +EXPORT_SYMBOL(setup_per_zone_wmarks); + /* * The inactive anon list should be small enough that the VM never has to * do too much work, but large enough that each inactive page has a chance