[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