[SSI] openssi ChangeLog,1.262,1.263
Roger Tsang <[email protected]> Wed, 15 Dec 2010 08:23:40 +0000
| Newsgroups | gmane.linux.cluster.ssic.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/ssic-linux/openssi
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv28809
Modified Files:
Tag: OPENSSI-FC
ChangeLog
Log Message:
update
Index: ChangeLog
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/ChangeLog,v
retrieving revision 1.262
retrieving revision 1.263
diff -u -d -r1.262 -r1.263
--- ChangeLog 9 Nov 2010 03:04:23 -0000 1.262
+++ ChangeLog 15 Dec 2010 08:23:37 -0000 1.263
@@ -1,5 +1,552 @@
2010/??/?? *** Release of OpenSSI 2.0.0rc1 ***
+2010/12/15 rogertsang <[email protected]>
+ * CVS Tags: OPENSSI-FC-1-9-6-PRE64
+
+ * Files in ci-linux project were modified (see ci/ChangeLog).
+
+ * CFS:
+ cluster/ssi/cfs/cfstok.c
+ - cfstok_objrevoke: use cfs_wb_all() instead so that there is a
+ re-flush if server fails halfway through a flush.
+
+ cluster/ssi/cfs/dir.c
+ - cfs_renew_times: skip d_time. not used since we have directory
+ versioning.
+ - cfs_lookup_revalidate: set CFSTOK_DELAY flag since another file
+ operation is likely to occur.
+ - cfs_lookup_revalidate: no need to acquire CFSTOK_ATTR token for
+ revalidate() since results are only valid at time of lookup.
+ - cfs_lookup: no need to acquire CFSTOK_ATTR token. permissions will be
+ checked server-side anyway.
+
+ cluster/ssi/cfs/file.c
+ - cfs_file_flush: return immediately if there is no data to flush.
+ - cfs_file_flush: no need to acquire CFSTOK_ATTR token. not changing
+ attributes.
+ - cfs_file_flush: no need to revalidate since attributes are
+ piggybacked.
+ - cfs_shared_nopage: no need to acquire CFSTOK_ATTR token. not changing
+ attributes.
+ - cfs_private_nopage: no need to acquire CFSTOK_ATTR token. not
+ changing attributes.
+ - cfs_fsync: return immediately if there is no data to flush.
+ - cfs_fsync: no need to acquire CFSTOK_ATTR token. not changing
+ attributes.
+
+ cluster/ssi/cfs/inode.c
+ - cfs_clear_inode: skip cfs_wb_all(). cfstok_giveback() will flush the
+ data upon REVOKE.
+
+ cluster/ssi/cfs/svrcfs.c
+ - cfs_tokmsg: revert. do NSC_YIELD() to avoid client@server looping on
+ REVFAIL, REQFAIL.
+
+ cluster/ssi/cfs/vfs.c
+ - cfsd_lookup: assign value to variable "locked" once. reduce
+ unnecessary work.
+
+ cluster/ssi/token/msgsup.c (#ifdef RCU_MSGSUP)
+ - msgsend: panic on out of memory, don't wait for memory. revert
+ original behavior.
+ - msgsup_addid: panic on out of memory, don't wait for memory. revert
+ original behavior.
+
+ include/cluster/ssi/cfs/cfs_fs.h
+ - cfs_fhget: convert to macro. reduce stack usage.
+ - cfs_hpget: convert to macro. reduce stack usage.
+
+ cluster/ssi/cfs/cfstok.c | 12 ---
+ cluster/ssi/cfs/dir.c | 36 ++++++----
+ cluster/ssi/cfs/file.c | 103 ++-----------------------------
+ cluster/ssi/cfs/inode.c | 9 ++
+ cluster/ssi/cfs/svrcfs.c | 7 --
+ cluster/ssi/cfs/vfs.c | 14 +---
+ cluster/ssi/token/msgsup.c | 8 +-
+ include/cluster/ssi/cfs/cfs_fs.h | 4 -
+ 8 files changed, 53 insertions(+), 140 deletions(-)
+
+ * IPVS:
+ cluster/ssi/net/ipvs_svr.c
+ - __get_director: new macro to increment value of ipvs_refcnt field in
+ ipvs_dirinfo structure.
+ - put_director: use BUG_ON() macro instead of SSI_ASSERT(). when the
+ condition is not met memory corruption may occur.
+ - inaddr_any_op: release ipvs_directors_sem before calling
+ ipvs_add/del_entry() which can go remote. reduce contention with
+ del_cvip() path.
+
+ cluster/ssi/net/ipvs_svr.c (#ifdef IPVS_REGISTER_PORTS_FIX)
+ - register_port: new function based on for-loop section in
+ register_ports(). release ipvs_directors_sem before calling
+ ipvs_add/del_entry() which can go remote. reduce contention with
+ _del_cvip() path.
+ - register_ports: invoke register_port().
+
+ net/ipv4/ipvs/ip_vs_ctl.c (#ifdef CONFIG_SSI)
+ - service_add: remove unnecessary test
+ - service_del: remove unnecessary test
+
+ cluster/ssi/net/ipvs_svr.c | 94 +++++++++++++++++++++++++------------
+ net/ipv4/ipvs/ip_vs_ctl.c | 6 --
+ 2 files changed, 67 insertions(+), 33 deletions(-)
+
+ * MOSIX:
+ cluster/ssi/mosixll/load.c (#ifdef CONFIG_SSI)
+ - mosix_calc_process_loads: no need to check whether thread group cpu
+ usage exceeds maximum possible cpu time. condition never reached.
+ reduce unnecessary work.
+ - mosix_calc_process_loads: fix large value for load field in mm
+ structure if mosix_snap_load() lost the race. when this happens
+ choose() might not pick the most cpu intensive process for migration.
+ regression introduced in CVS tag OPENSSI-FC-1-9-6-PRE51
+ - mosix_calc_load: fix large "ladd" value if mosix_snap_load() lost the
+ race. Value of "ladd" indirectly affects value of MOSIX load.
+ regression introduced in CVS tag OPENSSI-FC-1-9-6-PRE51
+ - remove global variables acpuse and cpuse. not used.
+
+ include/cluster/ssi/mosixll/balance.h (#ifdef CONFIG_SSI)
+ - undeclare variable acpuse. not used.
+
+ cluster/ssi/mosixll/load.c | 36 +++++++++-----------------
+ include/cluster/ssi/mosixll/balance.h | 1
+ 2 files changed, 13 insertions(+), 24 deletions(-)
+
+2010/12/15 rogertsang <[email protected]>
+ * CVS Tags: OPENSSI-FC-1-9-6-PRE63
+
+ * Files in ci-linux project were modified (see ci/ChangeLog).
+
+ * CFS / Token Architecture:
+ cluster/ssi/cfs/cfs_subr.c
+ - cfs_rebuild_attach_cnodes: use hfind(). fast path.
+ - cfs_rebuild_attach_cnodes: no need to acquire c_statelock for c_hp
+ since CFS SB is down.
+
+ cluster/ssi/cfs/cfstok.c
+ - cfstok_req: pass TOK_REQUEST flag to tok_hold() if CFSTOK_BLOCK flag
+ is seen in cfstok_req() scope. reduce redundant code.
+ - cfstok_req: for non-blocking requests look for -EAGAIN returned from
+ tok_hold().
+ - cfstok_send: fix lost non-HAVE token messages on hard mounts that are
+ being rebuilt. clients may livelock in tok_wait() since tokens
+ messages with cta_op value 0 are ignored.
+ - cfstok_objrevoke: skip unmap_mapping_range() if object is not a file.
+ - cfstok_objrevoke: skip unmap_mapping_range() if there are no shared
+ writeable memory mappings.
+ - cfstok_objrevoke: push dirty pages to server when there is a
+ CFSTOK_EXCL to CFSTOK_SR mode change at client. fix data
+ inconsistency when other clients receive GRANT message ahead of Linux
+ page writeback.
+ - cfstok_objrevoke: skip filemap_write_and_wait() if old mode is
+ CFSTOK_SR. there are no dirty pages.
+ - decrease cfs_default_delay by one factor to reduce cross node
+ starvation. this should be tunable.
+ - rename and convert cfs_default_delay static variable to
+ CFS_DEFAULT_DELAY preprocessor macro. reduce kernel bss.
+
+ cluster/ssi/cfs/cfstok.c (#ifdef CFS_ZAP_CACHES)
+ - cfstok_objrevoke: now that pages are invalidated we no longer need to
+ set CFS_INO_INVALID_DATA flag.
+ - cfstok_objrevoke: no need to set CFS_INO_INVALID_ATTR flag since
+ attributes are piggybacked with GRANT message.
+
+ cluster/ssi/cfs/cfstok.c (#ifdef CFSTOK_INTR)
+ - cfstok_req_m: return -ERESTARTSYS instead of -EINTR
+
+ cluster/ssi/cfs/cfstok.c (#ifdef CFSTOK_KMEM_CACHE)
+ - tok_delrel_add: revert original behavior. don't wait for memory, just
+ panic.
+
+ cluster/ssi/cfs/cfstok.c (#ifdef CFSTOKHOLD_LINUX_LIST)
+ - delholdlist: use list_del() instead of list_del_init().
+
+ cluster/ssi/cfs/cfstok.c (#ifdef KERNEL2616_53)
+ - cfstok_objrevoke: remove new unused range token support since REVOKE
+ message does not include a range.
+
+ cluster/ssi/cfs/dir.c (#ifdef CFSTOK_INTR)
+ - cfs_readdir: return -ERESTARTSYS instead of -EINTR
+ - cfs_lookup: return -ERESTARTSYS instead of -EINTR
+ - cfs_create: return -ERESTARTSYS instead of -EINTR
+ - cfs_mknod: return -ERESTARTSYS instead of -EINTR
+ - cfs_mkdir: return -ERESTARTSYS instead of -EINTR
+ - cfs_symlink: return -ERESTARTSYS instead of -EINTR
+ - cfs_permission: return -ERESTARTSYS instead of -EINTR
+
+ cluster/ssi/cfs/dir.c (#ifdef SSI_CFS_SKIP)
+ - cfs_permission: don't obtain token, just force getattr(). Linux VFS
+ looks at permissions in real-time. reduce Linux link_path_walk()
+ latency when client does not have CFSTOK_EXCL mode token. avoid
+ unnecessary token architecture REVOKE on the cluster.
+
+ cluster/ssi/cfs/file.c (#ifdef CFSTOK_INTR)
+ - cfs_file_llseek: return -ERESTARTSYS instead of -EINTR
+ - cfs_shared_nopage: return -ERESTARTSYS instead of -EINTR
+ - cfs_file_flush: return -ERESTARTSYS instead of -EINTR
+ - __cfs_file_read: return -ERESTARTSYS instead of -EINTR
+ - cfs_private_nopage: return -ERESTARTSYS instead of -EINTR
+ - cfs_fsync: return -ERESTARTSYS instead of -EINTR
+ - __cfs_file_write: return -ERESTARTSYS instead of -EINTR
+
+ cluster/ssi/cfs/inode.c
+ - cfs_getattr: don't acquire CFSTOK_ATTR token. avoid unnecessary
+ REVOKE on the cluster. Linux VFS intends to grab attributes in
+ real-time.
+
+ cluster/ssi/cfs/inode.c (#ifdef CFS_ZAP_CACHES)
+ - cfs_zap_caches: don't set CFS_INO_INVALID_ATTR flag since CFS
+ piggybacks attributes.
+ - __cfs_revalidate_inode: test CFS_READTIME after invalidating pages
+ since if there were pending flushes the inode attributes would have
+ been updated after invalidating pages. optimize away getattr().
+ - __cfs_revalidate_inode: reduce number of getattr() calls per inode to
+ once every 3 seconds for CFS_INO_INVALID_ATTR flag.
+ - cfs_end_data_update: mark directories and symlinks for page cache
+ invalidation. cfs_refresh_inode() no longer sets CFS_INO_INVALID_DATA
+ flag after unlink(), mkdir(), etc.
+ - cfs_refresh_inode: no longer set various CFS_INO_INVALID_* flags.
+ avoid unnecessary flushing of page cache since token architecture
+ guarantees cache coherency.
+ - cfs_refresh_inode: clear CFS_INO_INVALID_ATIME/ATTR flags on
+ successful update of piggybacked attributes. avoid unnecessary
+ getattr() call on revalidate.
+
+ cluster/ssi/cfs/inode.c (#ifdef CFSTOK_INTR)
+ - cfs_setattr: return -ERESTARTSYS instead of -EINTR
+
+ cluster/ssi/cfs/svrcfs.c (#ifdef SSI_CFS_SKIP)
+ - cfs_tokmsg: no longer invoke NSC_YIELD() when client@server for
+ REQFAIL and REVFAIL. let the scheduler work it out.
+
+ cluster/ssi/cfs/svrcfs.c (#ifdef SSI_NOTUSED)
+ - comment out svrcfstok_sendinstall_range(); not used.
+
+ cluster/ssi/cfs/symlink.c (#ifdef CFSTOK_INTR)
+ - cfs_getlink: return -ERESTARTSYS instead of -EINTR
+
+ cluster/ssi/token/clitok.c
+ - tok_hold: return -EAGAIN for non-requests. cfstok_req() now looks for
+ -EAGAIN for non-blocking requests.
+
+ cluster/ssi/token/clitok.c (#ifdef CLITOK_KMEM_CACHE)
+ - allocnrreq: don't wait for memory, just panic. this is the original
+ behavior.
+ - allocnrreq: always inline. only one caller.
+ - allocnrreq: rename function to _allocnrreq().
+ - _allocnrrev: don't wait for memory, just panic. this is the original
+ behavior.
+
+ cluster/ssi/token/clitok.c (#ifdef TOKEN_FIFO_LINUX_LIST)
+ - _process_req: invoke NSC_YIELD() if get_hold() was unsuccessful since
+ it implies we should wait.
+
+ cluster/ssi/token/msgsup.c
+ - process_msgs: fix lost messages if low-level transport returns an
+ error other than -EREMOTE. ICS can return -EAGAIN.
+
+ cluster/ssi/token/svrtok.c (#ifdef SSI_CFS_FULLTIMES)
+ - comment out unused code.
+
+ cluster/ssi/token/svrtok.c (#ifdef NRSVRFIFO_LINUX_LIST)
+ - svrdeletefifo: comment out. no longer used. note original
+ implementation does de-queue from back of list, not really FIFO.
+ - svrtok_clear: remove needless moving back and forth between lists.
+ - use list_del() instead of list_del_init() where appropriate.
+
+ cluster/ssi/token/svrtok.c (#ifdef SVRTOK_KMEM_CACHE)
+ - allocnrwant: don't wait for memory, just panic. this is the original
+ behavior.
+ - svrallocnode: don't wait for memory, just panic. this is the original
+ behavior.
+
+ include/cluster/ssi/cfs/cfstok.h (#ifdef SSI_NOTUSED)
+ - comment out svrcfstok_sendinstall_range(); unused declaration.
+
+ * VPROC:
+ cluster/ssi/vproc/dvp_move.c
+ - setup_pid_move: now that CFS operations return -ERESTARTSYS when
+ interrupted during cfstok_req() we can check for any unblocked
+ signals. undo CVS tag OPENSSI-FC-1-9-6-PRE54 (#ifdef CFSTOK_INTR)
+ - setup_pid_move: also wake stopped processes. support memory balancing
+ of stopped processes.
+
+ cluster/ssi/vproc/nsc_initproc.c
+ - initproc_postroot_init: reduce number of sys_close() calls.
+
+ cluster/ssi/cfs/cfs_subr.c | 20 ++--
+ cluster/ssi/cfs/cfstok.c | 132 +++++++++++--------------------
+ cluster/ssi/cfs/dir.c | 29 ++++--
+ cluster/ssi/cfs/file.c | 14 +--
+ cluster/ssi/cfs/inode.c | 129 +++++++++++++++++-------------
+ cluster/ssi/cfs/svrcfs.c | 11 ++
+ cluster/ssi/cfs/symlink.c | 2
+ cluster/ssi/token/clitok.c | 20 +++-
+ cluster/ssi/token/msgsup.c | 3
+ cluster/ssi/token/svrtok.c | 110 +++++++++++++------------
+ cluster/ssi/vproc/dvp_move.c | 10 --
+ cluster/ssi/vproc/nsc_initproc.c | 5 -
+ include/cluster/ssi/cfs/cfstok.h | 2
+ 13 files changed, 251 insertions(+), 236 deletions(-)
+
+2010/12/15 rogertsang <[email protected]>
+ * CVS Tags: OPENSSI-FC-1-9-6-PRE62
+
+ * VPROC:
+ cluster/ssi/vproc/reopen.c
+ - reop_export_path: assert pointer to pathdata is NULL before returning
+ to caller to prevent double kfree().
+ - reop_export_file: fix memory leak on rmtfb_getsvr_file() error.
+
+ cluster/ssi/vproc/rproc_cli_pproc.c
+ - reopen_load_msg: fix memory leak on reop_export_file() error.
+
+ cluster/ssi/vproc/reopen.c | 22 ++++++++++++++--------
+ cluster/ssi/vproc/rproc_cli_pproc.c | 1 +
+ 2 files changed, 15 insertions(+), 8 deletions(-)
+
+ * CFS (Token Architecture):
+ - remove up to two redundant cfstokargs structures from the stack.
+ reduce stack usage in cfstok_msg() path.
+ - reduce unnecessary de-serialization / re-serialization of cfstokargs
+ structure when client@server.
+
+ include/cluster/ssi/cfs/cfstok.h
+ - __init_cfstokargs: create based on cfs_tokmsg_seq().
+
+ cluster/ssi/cfs/cfstok.c
+ - cfstok_send: use __init_cfstokargs()
+
+ cluster/ssi/cfs/cfsproc.c cluster/ssi/cfs/svrcfs.c
+ - cfstok_msg: revise function declaration. reduce number of arguments
+ to one, pointer to cfstokargs structure.
+ - _cfs_tokmsg: removed. use cfs_tokmsg() instead.
+ - cfs_tokmsg_seq: removed. eliminate yet another cfstokargs structure
+ from the stack.
+ - _cfs_tokmsg_seq: renamed to cfs_tokmsg_seq().
+ - svrcfstok_send: use __init_cfstokargs()
+ - cfstok_fail_noip: revise function declaration. reduce number of
+ arguments to one, pointer to cfstokargs structure. eliminate yet
+ another cfstokargs structure from the stack.
+
+ include/cluster/ssi/cfs/cfs_fs.h
+ include/cluster/ssi/cfs/cfsfh.h
+ - No need to include header file cluster/ssi/cfs/cfstok.h
+
+ cluster/ssi/cfs/cfsproc.c | 4
+ cluster/ssi/cfs/cfstok.c | 71 +----
+ cluster/ssi/cfs/svrcfs.c | 415 +++++++++++++------------------
+ include/cluster/ssi/cfs/cfs_fs.h | 1
+ include/cluster/ssi/cfs/cfsfh.h | 1
+ include/cluster/ssi/cfs/cfstok.h | 20 -
+ 6 files changed, 207 insertions(+), 305 deletions(-)
+
+2010/12/15 rogertsang <[email protected]>
+ * CVS Tags: OPENSSI-FC-1-9-6-PRE61
+
+ * MOSIX:
+ - choose: fix race over last_consider field in memory descriptor due to
+ updating this field outside choose_sem semaphore.
+ - mchoose: fix race over mlast_consider field in memory descriptor. use
+ mchoose_sem semaphore.
+ - mchoose: move get_jiffies_64() call outside for-loop and
+ tasklist_lock. reduce lock contention.
+ - altload: return ULONG_MAX instead of hard-coded maximum value of
+ 32-bit long because type long can be 64-bit. altruistic load values
+ probably never go that high or beyond 32-bit range, but is a bug when
+ this happens on 64-bit kernels.
+
+ cluster/ssi/mosixll/balance.c | 63 +++++++++++++++++++++-------------
+ 1 files changed, 39 insertions(+), 24 deletions(-)
+
+ * CFS:
+ - _cfs_permission: convert to macro. reduce function call overhead.
+
+ cluster/ssi/cfs/dir.c | 6 ------
+ include/cluster/ssi/cfs/cfs_fs.h | 2 +-
+ 2 files changed, 1 insertion(+), 7 deletions(-)
+
+ * VPROC:
+ cluster/ssi/vproc/rproc_svr_pproc.c
+ - signal_unload_msg: include cpu time used to migrate process in.
+
+ cluster/ssi/vproc/dvp_move.c
+ - move_start_thread: fix bad test for PM_MIGRATE_IN or
+ PM_MIGRATE_IN_DONE mh_state. bad state of migration was not detected
+ or logged.
+ - __get_move_header: return 0 or 1 for failure or success to acquire
+ reference to move_header structure. this used to return NULL or a
+ pointer to move_header structure.
+ - setup_execnode_move: check for move_header's with type MOV_IN to
+ avoid migrating out threads before the rest of the group have
+ finished moving in. add_thread_group() might not see threads that are
+ still migrating in and may result in partial thread group migration.
+ bug affects process group migration as well.
+
+ cluster/ssi/vproc/dvp_move.c | 24 ++++++++++++------------
+ cluster/ssi/vproc/rproc_svr_pproc.c | 3 ++-
+ 2 files changed, 14 insertions(+), 13 deletions(-)
+
+ cluster/ssi/vproc/rproc_cli_pproc.c
+ - ssi_recalc_locks: return to caller immediately if a non-CFS lock is
+ encountered, no need to count non-CFS locks. caller wants to know
+ whether there are file locks that cannot be migrated with the
+ process.
+ - ssi_recalc_locks: use get_files_struct()
+
+ cluster/ssi/vproc/dvp_pvpops.c
+ - pvpop_procfs_readfd: use get_files_struct()
+
+ cluster/ssi/vproc/dvp_pvpops.c | 6 +-----
+ cluster/ssi/vproc/rproc_cli_pproc.c | 25 +++++++++++++------------
+ 2 files changed, 14 insertions(+), 17 deletions(-)
+
+ - pvproc struct: use type char for pvp_loadlevel, no need for type
+ long.
+
+ fs/proc/base.c | 2 +-
+ include/linux/dpvproc.h | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+2010/12/15 rogertsang <[email protected]>
+ * CVS Tags: OPENSSI-FC-1-9-6-PRE60
+
+ * Remote File:
+ cluster/ssi/util/rmtfb.c (#ifdef RMTFB_HASH_LOCKLESS)
+ - rmtfb_getcmn: cosmetic. remove extra return statement.
+
+ * VPROC:
+ cluster/ssi/vproc/dvp_move.c
+ - use assert_spin_locked() where appropriate.
+ - add_thread_group: skip threads that are being destroyed, optimize
+ away setup_pid_move() calls. (#ifdef VPROC_RCU_MOVEMENT_LIST)
+ - check_move_list: optimize away mh_lock if we saw new processes.
+ (#ifdef VPROC_RCU_MOVEMENT_LIST)
+ - clear_task_execnode: do panic if encountered bad value in execnode
+ field in task_struct since this condition likely indicates system is
+ corrupted. we used to print a warning and continue.
+ - clear_task_execnode: no need to obtain temporary reference to
+ move_data since we have that from execnode field in task_struct.
+ - move_data_clear_execnode: convert to macro. reduce function call
+ overhead.
+ - move_data_wait_for_state_change: use wait_event_interruptible(). Wait
+ queue exclusive flag is not needed considering everybody calls
+ wake_up_all() on m_wqh field in move_data structure.
+ - move_out_daemon: skip zeroing proc_list and data_list. not necessary.
+ - move_start_thread: no need to set migrate_args.optype twice.
+ - setup_execnode_move: search and update movement_list early so we can
+ optimize away setup_pid_move() and cancel_move_out() if we lost the
+ race.
+ - setup_pid_move: no need to hold mh_lock while reading m_seen. (#ifdef
+ VPROC_RCU_MOVEMENT_LIST)
+ - setup_pid_move: reduce unnecessary work when there are no threads in
+ group.
+ - setup_pid_move: no longer hold VPROC LOCK for the duration of
+ move_data setup. Reduce latency in VPROC context. We rely on
+ alloc_lock to prevent race with exiting process in
+ clear_task_execnode().
+ - ssi_quiesce_movement: revert, don't skip test for PM_CONTINUE since
+ this state is reached when an error is encountered on migrate server.
+ - ssi_quiesce_movement: fix race over mh_dstnode when more than one
+ thread in group sees CLUSTERNODE_BEST. The race could result in
+ threads in the group migrated to different OpenSSI nodes when the
+ whole group should migrate to the same node. Auto load-balancing uses
+ CLUSTERNODE_BEST by default.
+
+ include/linux/dpvproc.h
+ - move_data, move_header struct: improve comments.
+ - move_header struct: remove mh_abort, not needed. (#ifdef
+ VPROC_RCU_MOVEMENT_LIST)
+ - move_header struct: add mh_select_node semaphore, to synchronize
+ ssi_quiesce_movement() for mh_dstnode race fix.
+
+ include/linux/vproc.h
+ - ssi_clear_task_execnode: convert to macro. reduce function call
+ overhead.
+
+ cluster/ssi/util/rmtfb.c | 2
+ cluster/ssi/vproc/dvp_move.c | 448 +++++++++++++++++------------------
+ include/linux/dpvproc.h | 30 +-
+ include/linux/vproc.h | 3
+ 4 files changed, 245 insertions(+), 238 deletions(-)
+
+ * CFS:
+ cluster/ssi/cfs/cfs_subr.c (#ifdef CFS_ZAP_CACHES)
+ - cfs_update_attr: touch CFS_READTIME().
+
+ cluster/ssi/cfs/dir.c
+ - cfs_readdir_filler, uncached_readdir: no longer set
+ CFS_INO_INVALID_ATIME c_flags since readlink() operation updates
+ i_atime.
+
+ cluster/ssi/cfs/file.c
+ - do_setlk: skip cfs_zap_caches() since attributes were piggybacked
+ during CFS flush.
+ - do_unlk, do_setlk: no need to clear the cache since token
+ architecture guarantees cache coherency.
+
+ cluster/ssi/cfs/inode.c
+ - cfs_getattr: obtain CFS token before starting CFS SB thread.
+ - cfs_getattr: remove irrelevant CFS_SB_FSOP_START/DONE dance since
+ this function is not the RPC operation.
+ - Fix [ ssic-linux-bugs 2010447 ] OpenSSI fails the glibc tst-atime
+ test
+ - cfs_getattr: force a getattr RPC operation if user cares about
+ atime. (#ifdef CFS_ZAP_CACHES)
+ - __cfs_revalidate_inode: do not do getattr too often. (#ifdef
+ CFS_REVALIDATE_GETATTR)
+ - cfs_fill_inode, __cfs_hpget: disable S_NOATIME i_flags since in
+ cfs_getattr() we force a getattr.
+
+ cluster/ssi/cfs/inode.c (#ifdef CFS_SKIP)
+ - cfs_setattr: no need to flush data since token architecture
+ guarantees cache coherency.
+
+ cluster/ssi/cfs/inode.c (#ifdef CFS_FILE_WRITE_LIVELOCK_FIX)
+ - cfs_setattr: test for ATTR_SIZE flag instead of down_write_trylock()
+ on i_alloc_sem since our caller only acquires i_alloc_sem when
+ ATTR_SIZE flag is set.
+ - cfs_setattr: no need to immediately re-acquire i_alloc_sem after
+ re-acquiring i_sem since there is no race with DIO. CFS does not
+ support DIO.
+
+ include/cluster/ssi/cfs/cfs_fs_i.h (#ifdef CFS_ZAP_CACHES)
+ - re-enable read_cache_jiffies field in cnode structure for
+ CFS_READTIME() macro used in __cfs_revalidate_inode().
+
+ include/cluster/ssi/cfs/cfs_fs.h (#ifdef CFS_ZAP_CACHES)
+ - re-enable CFS_READTIME() preprocessor macro.
+
+ include/cluster/gen/cfs.x (#ifdef CFS_REVALIDATE_GETATTR)
+ - re-activate various code for CFS_PROTO->getattr().
+
+ include/linux/config.h
+ - re-enable CFS_REVALIDATE_GETATTR preprocessor directive to activate
+ supporting code for CFS_PROTO->getattr().
+
+ cluster/ssi/cfs/cfs_subr.c | 2
+ cluster/ssi/cfs/dir.c | 6 +
+ cluster/ssi/cfs/file.c | 15 ++
+ cluster/ssi/cfs/inode.c | 155 +++++++++++++----------------
+ include/cluster/gen/cfs.x | 12 +-
+ include/cluster/ssi/cfs/cfs_fs.h | 2
+ include/cluster/ssi/cfs/cfs_fs_i.h | 4
+ include/linux/config.h | 4
+ 8 files changed, 103 insertions(+), 97 deletions(-)
+
+ * VPROC:
+ - ssi_get_tgid_list: fix livelock in certain situations when
+ nsc_async_queue() fails. This condition is very rare since
+ nsc_async_queue() rarely fails and would have to fail inside the
+ while block at wait_for_pids label. Regression introduced in CVS tag
+ OPENSSI-FC-1-9-6-PRE49.
+ - ssi_get_tgid_list_async_handler: ensure contents of
+ proc_readdir_cookie structure is visible on all CPU's before setting
+ its pids_done field.
+
+ cluster/ssi/vproc/procfs_subr.c | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
2010/11/08 rogertsang <[email protected]>
* CVS Tags: OPENSSI-FC-1-9-6-PRE59
@@ -11,9 +558,10 @@
these fields.
- Remove volatile keyword in dflags and stay fields in mosix_task
structure. No reason for volatile.
- - When traversing tasklist use get_task_mm(). Skip PF_BORROWED_MM.
- - mosix_mem_daemon: remove neutralize_my_load() call. In OpenSSI it not
- needed for kernel threads.
+ - When traversing tasklist use get_task_mm(). Skip kernel threads with
+ PF_BORROWED_MM flag.
+ - mosix_mem_daemon: remove neutralize_my_load() call. In OpenSSI it is
+ not needed for kernel threads.
* VPROC:
- common_data_load_msg, common_data_unload_msg: no longer acquire
@@ -40,7 +588,8 @@
- ssi_do_decay: fix did not operate on chosen task.
- ssi_do_decay: deprecated. consider() no longer requires
mosix_task->dctime.
- - consider: reduce excessive stack usage and useless math.
+ - consider: reduce excessive stack usage and useless math. fix stack
+ overflow when NSC_MAX_NODE_VALUE is increased.
- mosix_calc_process_loads: remove unused code.
- mosix_calc_process_loads: no need to test for interrupt context.
Caller in process context.
@@ -162,11 +711,32 @@
2010/10/25 rogertsang <[email protected]>
* CVS Tags: OPENSSI-FC-1-9-6-PRE54
- - Fix BUG at rexecve_server_setup(). This can happen if the process was
- just migrated and is doing rexecve() for this node. Solution is set
- PV_MIGRATED pvp_flag so that vproc_giveback() knows delayed dealloc
- applies and wait for final put_task_struct to touch vp_relse before
- re-using vproc struct. (#ifdef TASK_HOLD_VPROC)
+ * VPROC (#ifdef TASK_HOLD_VPROC):
+ - Fix BUG encountered non-NULL pvp_pproc field in pvproc structure at
+ rexecve_server_setup(). This happens when the process just migrated
+ out is doing rexecve() back to this node. rexecve_server_setup() got
+ to the pvproc structure before the final put_task_struct() for the
+ process that migrated out.
+
+ The solution is set PV_MIGRATED pvp_flag while migrating out. If
+ rexecve_server_setup() and similar code paths won the race and
+ acquired a reference to the vproc structure containing the pvproc
+ structure for the process that moved out, wait for the final
+ put_task_struct() before re-using the pvproc structure. We need to
+ wait for the final put_task_struct() because p_vproc field in
+ task_struct still points to the vproc structure containing the pvproc
+ structure being re-used and the pvp_pproc field in pvproc structure
+ points back to the task_struct.
+
+ vproc_giveback() is modified to test for PV_MIGRATED flag to
+ determine whether to delay deallocation of vproc structure until
+ final put_task_struct().
+
+ There is no race over PV_MIGRATED flag because the server waits for
+ the outgoing process migration to complete before checking for the
+ flag.
+
+ * VPROC:
- Remove unnecessary use of write lock on tasklist_lock in
migrate_server_setup() and rexecve_server_setup().
@@ -181,8 +751,8 @@
8 files changed, 55 insertions(+), 39 deletions(-)
- setup_pid_move() don't signal task if it has blocked all signals
- except SIGKILL, SIGINT, SIGQUIT so that CFS does not return
- error -ERESTARTSYS when the task is chosen for migration.
+ except SIGKILL, SIGINT, SIGQUIT so that CFS does not return error
+ -ERESTARTSYS when the task is chosen for migration. (#ifdef CFS_INTR)
cluster/ssi/vproc/dvp_move.c | 6 ++++++
1 files changed, 6 insertions(+)
@@ -350,7 +920,7 @@
- Upgrade loadinfo_lock read/write spinlock to spinlock.
- Re-enable interrupts for loadinfo_lock and whereto_lock. OpenSSI does
not acquire these locks in interrupt context.
- - In memory_balance() allow to kmalloc() to fail. Avoid blocking
+ - In memory_balance() allow kmalloc() to fail. Avoid blocking
ics_llunack_daemon.
- Optimize away the for-loop in release_migrations().
------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d