[SSI] openssi ChangeLog,1.241,1.242

Roger Tsang <[email protected]>
Newsgroups gmane.linux.cluster.ssic.cvs
Message-ID <[email protected]>
Update of /cvsroot/ssic-linux/openssi
In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4493

Modified Files:
      Tag: OPENSSI-FC
	ChangeLog 
Log Message:
Update


Index: ChangeLog
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/ChangeLog,v
retrieving revision 1.241
retrieving revision 1.242
diff -u -d -r1.241 -r1.242
--- ChangeLog	2 Nov 2009 03:55:00 -0000	1.241
+++ ChangeLog	17 Nov 2009 06:39:45 -0000	1.242
@@ -1,11 +1,61 @@
 2009/??/??	*** Release of OpenSSI 1.9.6 ***
 
+2009/11/17	rogertsang <[email protected]>
+	* MOSIX:
+	- Fix acquiring loadinfo_lock without disabling bottom half. Actually in
+	  OpenSSI we don't need to disable bottom half for loadinfo_lock, but we
+	  are doing this for compatiblity with openMosix code. Eventually we
+	  should clean this up for OpenSSI.
+	- Fix mosix_task->pages_i_bring race.
+	- Comment unused code.
+
+	* MOSIX (#ifdef SSI_BALANCE_MEMORY):
+	- Fix deadlock bug nesting task_lock() in
+	  write_lock_irq(&tasklist_lock).
+	- Remove inappropriate task_lock() for mm_struct->last_memsort, used,
+	  swapped.
+	- New mm_struct->memsort_lock spinlock replaces
+	  write_lock_irq(&tasklist_lock); protects mm_struct->last_memsort,
+	  used, swapped.
+
+	* VPROC:
+	- New separate spinlock for pvp_comm_de, pvp_comm_mnt deprecates
+	  task_lock(). (#ifdef VPROC_LOCK_PVP_COMM)
+
+	* Files in ci-linux project were modified (see ci/ChangeLog).
+
+	 cluster/ssi/mosixll/balance.c      |   44 +++++++++-
+	 cluster/ssi/mosixll/freemem.c      |  122 +++++++++++++++++++++--------
+	 cluster/ssi/mosixll/info.c         |   16 +++
+	 cluster/ssi/mosixll/kernel.c       |   14 ++-
+	 cluster/ssi/mosixll/load.c         |   10 +-
+	 cluster/ssi/util/load_level.c      |   35 ++++----
+	 cluster/ssi/vproc/dvp_misc.c       |   14 +--
+	 cluster/ssi/vproc/procfs_subr.c    |    3 
+	 cluster/ssi/vproc/vp_subr.c        |    3 
+	 include/cluster/ssi/mosixll/defs.h |    4 
+	 include/linux/config.h             |    4 
+	 include/linux/dpvproc.h            |   25 +++++
+	 include/linux/mosix.h              |    4 
+	 13 files changed, 229 insertions(+), 69 deletions(-)
+
+2009/11/05	rogertsang <[email protected]>
+	* VPROC:
+	- switch_exec_pids() revert switch vproc pids. glibc tst-exec4 passes
+	  and vproc handles are cleaned up properly when we don't switch vproc
+	  pids.
+
+	 kernel/pid.c |    5 +++++
+	 1 files changed, 5 insertions(+)
+
 2009/11/02	rogertsang <[email protected]>
 	* CFS:
 	- Split __cfs_lock() into do_getlk(), do_unlk(), and do_setlk().
 	- Flush data before unlocking. (#ifdef CFS_ZAP_CACHES)
-	- Fix VFS lock out of sync with server; take two. (#ifdef CFS_MIRROR_LOCK_WAIT)
-	- Fix VFS lock out of sync with server when interrupted. (#ifdef CFS_FLOCK)
+	- Fix VFS lock out of sync with server; take two. (#ifdef
+	  CFS_MIRROR_LOCK_WAIT)
+	- Fix VFS lock out of sync with server when interrupted. (#ifdef
+	  CFS_FLOCK)
 	- Comment out unused CXLOCK and related macros.
 	- Comment out unused in struct cnode.
 	- Data handlers to use GFP_NOFS flag.
@@ -178,14 +228,18 @@
 
 2009/03/28	rogertsang <[email protected]>
 	* CFS:
-	- Optimize away all directories in cfs_permission() since a recheck occurs after getting token.
+	- Optimize away all directories in cfs_permission() since a recheck
+	  occurs after getting token.
 	- Regression:
 	  - skipping cfs_permission() entirely.
 
 	* IPC:
-	- Fix [ ssic-linux-Bugs-2719607 ] memory leak in ipcname_gettotal() path; based on patch from John Hughes (hughesj).
-	  - sizing & allocation of struct ssi_nodeid_pair array now ipcname_gettotal() callers' responsibility.
-	  - now RPC encodes/decodes struct ssi_nodeid_pair array as a vector and not a buffer.
+	- Fix [ ssic-linux-Bugs-2719607 ] memory leak in ipcname_gettotal()
+	  path; based on patch from John Hughes (hughesj).
+	  - sizing & allocation of struct ssi_nodeid_pair array now
+	    ipcname_gettotal() callers' responsibility.
+	  - now RPC encodes/decodes struct ssi_nodeid_pair array as a vector and
+	    not a buffer.
 
 	 cluster/ssi/cfs/dir.c                    |    6 +-
 	 cluster/ssi/ipc/namesvr_clnt.c           |   32 ++++++-------
@@ -202,65 +256,89 @@
 
 2009/03/24	rogertsang <[email protected]>
 	* CFS:
-	- Disable cfs_is_subdir(); redundant and unsafe dereferencing of ancestors. (#ifndef CFS_ZAP_CACHES)
+	- Disable cfs_is_subdir(); redundant and unsafe dereferencing of
+	  ancestors. (#ifndef CFS_ZAP_CACHES)
 	- Fix cfs_rb_delayedunlinks() race with VFS; missing parent i_sem.
-	- Optimize away directory i_op->permission cfs_permission(); there is already a recheck after token hold.
-	- cfs_sb_start_haves() no longer shrink parent dcache; nodedown should not race with remove/rename in SSI.
-	- cfs_rb_do_phase() now requires successful igrab() of superblock root inode before getting MHOLD list.
-	- cfs_readdir_filler(), uncached_readdir() set CFS_INO_INVALID_ATIME flag on success.
+	- Optimize away directory i_op->permission cfs_permission(); there is
+	  already a recheck after token hold.
+	- cfs_sb_start_haves() no longer shrink parent dcache; nodedown should
+	  not race with remove/rename in SSI.
+	- cfs_rb_do_phase() now requires successful igrab() of superblock root
+	  inode before getting MHOLD list.
+	- cfs_readdir_filler(), uncached_readdir() set CFS_INO_INVALID_ATIME
+	  flag on success.
 	- cfs_rename() skip redundant checks already done in Linux VFS.
 	- cfs_delete_inode() re-enable truncate_inode_pages() call. John Hughes
-	  verified this call is needed on linux-2.6.14 or OOPS in clear_inode (nr_pages != 0)
-	  when renaming. However we have not seen this on linux-2.6.11.
+	  verified this call is needed on linux-2.6.14 or OOPS in clear_inode
+	  (nr_pages != 0) when renaming. However we have not seen this on
+	  linux-2.6.11.
 	- Fix cfs_clear_inode() cnode race; bogus pointer to svrcfstok structure.
 	- svrtok_dorelse() no longer call shrink_dcache_parent(); done in base.
 
 	* CFS (#ifdef CFS_EXPORT_OPS):
-	- Fix bogus iget5_locked() return value due to cfs_find_actor() not testing CFS file handle.
-	- clifhtoip() to use ilookup5() to support PFS where inode number is not unique.
-	- When generating RPC response instead of copying the whole cfs_fh structure only copy the used portion.
-	- When comparing CFS file handles we no longer inspect the possibly unused portion of cfs_fh structure.
-	- New CFS_FH_LEN macro determines actual size of CFS file handle stored in cfs_fh structure.
-	- Optimize svrhash() to no longer traverse padded (unused) portion of cfs_fh structure.
-	- cfs_get_dentry() now uses clifhtoip() to support PFS where inode number is not unique.
+	- Fix bogus iget5_locked() return value due to cfs_find_actor() not
+	  testing CFS file handle.
+	- clifhtoip() to use ilookup5() to support PFS where inode number is not
+	  unique.
+	- When generating RPC response instead of copying the whole cfs_fh
+	  structure only copy the used portion.
+	- When comparing CFS file handles we no longer inspect the possibly
+	  unused portion of cfs_fh structure.
+	- New CFS_FH_LEN macro determines actual size of CFS file handle stored
+	  in cfs_fh structure.
+	- Optimize svrhash() to no longer traverse padded (unused) portion of
+	  cfs_fh structure.
+	- cfs_get_dentry() now uses clifhtoip() to support PFS where inode
+	  number is not unique.
 
 	* CFS (#ifdef CFS_FH_TO_DENTRY_ANON):
 	- Remove #ifdef CFS_DECODE_FH deprecated by cfs_fhtohp().
-	- Refactor cfs_fhtohp(). Optimize away makehp() and call svrtok_lookup() directly.
-	- Create __cfs_get_dentry(). Returns a dentry given its superblock and CFS file handle.
+	- Refactor cfs_fhtohp(). Optimize away makehp() and call svrtok_lookup()
+	  directly.
+	- Create __cfs_get_dentry(). Returns a dentry given its superblock and
+	  CFS file handle.
 	- cfsd_proc_haverpc_0() no longer calls d_alloc_root().
 
 	* CFS (#ifdef CFS_INTR):
-	- Add support for interruptible non-chard CFS. The MI_INTR flag is set when enabled.
-	- New cfs_clnt_sigmask() / cfs_clnt_sigunmask() are used to ignore various signals.
+	- Add support for interruptible non-chard CFS. The MI_INTR flag is set
+	  when enabled.
+	- New cfs_clnt_sigmask() / cfs_clnt_sigunmask() are used to ignore
+	  various signals.
 
 	* CFS (#ifdef CFS_BDI):
-	- Fix [ ssic-linux-Bugs-1811510 ] deadlock on loop mounted fs. CFS mounts get their own backing_dev_info structure.
+	- Fix [ ssic-linux-Bugs-1811510 ] deadlock on loop mounted fs. CFS
+	  mounts get their own backing_dev_info structure.
 
 	* CFS (#ifdef RCU_CFSTOK_TABLE):
 	- Optimize away svrtok_lookup(); call hfind() directly.
 
 	* CFS (#ifndef CFS_VFSMOUNT_RACE_FIX):
 	- Fix race; bogus struct vfsmount.
-	- Fix semi-deadlock; mnt_fix_devname() might sleep while in atomic (holding vfsmount_lock).
+	- Fix semi-deadlock; mnt_fix_devname() might sleep while in atomic
+	  (holding vfsmount_lock).
 
 	* CFS (#ifdef SVRCFSTOK_SCT_FLAGS_NOLOCK):
 	- Regression:
 	  - Test for CFS_NOTOKENCACHE flag in cfstok_putiflags().
 
 	* CFS (#ifdef KERNEL2616_53):
-	- Migrate to CFS_MAX_FILE_IO_SIZE. Note 64KB limit due to ICS OOL message size (see ci-linux).
-	- cfs_lookup_revalidate() no longer ignore failure to revalidate parent dentry.
+	- Migrate to CFS_MAX_FILE_IO_SIZE. Note 64KB limit due to ICS OOL
+	  message size (see ci-linux).
+	- cfs_lookup_revalidate() no longer ignore failure to revalidate parent
+	  dentry.
 	- Re-enable cfs_is_exclusive_create().
 	- cfs_lookup() optimize away remote lookup.
 	- cfs_link() i_count reference count bug fix.
 	- cfs_rename()
 	  - i_nlink count bug fix.
-	  - skip revalidation of old and new dentries before RPC; depends on #define CFS_ZAP_CACHES.
-	  - unhash and if possible mark negative the new dentry of file to be renamed.
+	  - skip revalidation of old and new dentries before RPC; depends on
+	    #define CFS_ZAP_CACHES.
+	  - unhash and if possible mark negative the new dentry of file to be
+	    renamed.
 	- cfs_permission() optimize away write operations.
 	- cfs_lock() get lock to try local locking before going to server.
-	- Add cfs_flock(). Simulate flock() locks using posix locks. (#ifdef CFS_FLOCK)
+	- Add cfs_flock(). Simulate flock() locks using posix locks. (#ifdef
+	  CFS_FLOCK)
 	- Convert cnode flags to bit ops. (#ifdef CFS_FLAGS_BITOPS) [incomplete]
 
 	* CFS (#ifdef SVRTOK_KMEM_CACHE):
@@ -279,45 +357,59 @@
 
 	* ICS:
 	- Regression:
-	  - nsc_async_entry_alloc() semi-deadlock; might sleep inside interrupt context. (#ifdef NSC_ASYNC_ENTRY_KMEM_CACHE)
+	  - nsc_async_entry_alloc() semi-deadlock; might sleep inside interrupt
+	    context. (#ifdef NSC_ASYNC_ENTRY_KMEM_CACHE)
 
 	* ICS for TCP/IP (#ifdef LINUX_SSI_EVENT):
-	- Poll for nodeinfo event in icscli_llsend() in case nodeinfo raced on SMP.
-	  However later analysis did not identify the race. This should be reverted.
+	- Poll for nodeinfo event in icscli_llsend() in case nodeinfo raced on
+	  SMP.  However later analysis did not identify the race. This should be
+	  reverted.
 
 	* PROCFS:
-	- Disable mem_write() a potential security hazard; disabled by default in base.
-	- Optimize away calls to PVPOP_PROCFS_GETATTR(), VPROC_RELE(), vproc_is_alive() or process_is_alive().
+	- Disable mem_write() a potential security hazard; disabled by default
+	  in base.
+	- Optimize away calls to PVPOP_PROCFS_GETATTR(), VPROC_RELE(),
+	  vproc_is_alive() or process_is_alive().
 	- proc_pid_make_inode()
 	  - optimize away vproc lookup; callers already have vproc.
-	  - new requirement for callers to hold VPROC movement lock except when process is migrating in.
-	  - check whether process is alive; callers expect us to do this check now.
-	  - obtain tgid for caller; negligible overhead since we are already getting attributes.
-	- proc_pid_lookup() optimize away remote pid alive re-check; instead rely on revalidate.
-	  The old implementation skips this remote pid alive check too. (#ifdef VPROC_IS_ALIVE)
+	  - new requirement for callers to hold VPROC movement lock except when
+	    process is migrating in.
+	  - check whether process is alive; callers expect us to do this check
+	    now.
+	  - obtain tgid for caller; negligible overhead since we are already
+	    getting attributes.
+	- proc_pid_lookup() optimize away remote pid alive re-check; instead
+	  rely on revalidate.  The old implementation skips this remote pid
+	  alive check too. (#ifdef VPROC_IS_ALIVE)
 	- Fix proc_task_readdir() race with process migration.
-	- Optimize away VPROC LOCK in do_proc_links() path since caller has task_struct.
+	- Optimize away VPROC LOCK in do_proc_links() path since caller has
+	  task_struct.
 	- New macros PROC_CLUSTER_NODELIST_START and PROC_CLUSTER_NODELIST_END
 	  consolidate redundant code for "mapping" while block to cluster.
-	- Use proc_match() from base instead of doing this buggy memory compare with MAX(x,y).
+	- Use proc_match() from base instead of doing this buggy memory compare
+	  with MAX(x,y).
 	- Regression:
-	  - pid_delete_dentry(); those of zombies in dentry lru list. (#ifdef VPROC_HOLD_ZERO_GET_TASK)
+	  - pid_delete_dentry(); those of zombies in dentry lru list. (#ifdef
+	    VPROC_HOLD_ZERO_GET_TASK)
 
 	* PROCFS (#ifdef PROC_LARGE_MAXPIDS):
 	- Optimize proc_pid_readdir() for default/cluster view.
 	- Increase PROC_MAXPIDS from 20 to 8192 or VPROC_MAXPIDS.
-	- For performance we no longer initialize the pid_list buffer when allocating struct proc_root_readdir_cookie.
+	- For performance we no longer initialize the pid_list buffer when
+	  allocating struct proc_root_readdir_cookie.
 
 	* PROCFS (#ifdef PROC_CLUSTER_DIR_ENTRY_FIX):
 	- Fix proc_dir_entry race ...
 	  - in do_proc_links() calling proc_pid_readlink() without holding BKL.
 	  - missing BKL in proc_cluster_readdir(), loadlevel_write_proc(),
 	    proc_cluster_node_init(), and proc_cluster_lookup().
-	- Fix loadlevel_write_proc() unlikely but possible dentry race during backward path walk.
+	- Fix loadlevel_write_proc() unlikely but possible dentry race during
+	  backward path walk.
 	- Optimize away xlate_proc_name() path walk in proc_cluster_node_init().
 	- proc_cluster_lookup()
 	  - handle proc_mkdir() failure.
-	  - return alias of dentry if possible (unlikely without proc_cluster_revalidate).
+	  - return alias of dentry if possible (unlikely without
+	    proc_cluster_revalidate).
 
 	* SSI:
 	- do_write_loadlist() fixes. (#ifdef WRITE_LOADLIST_FIX)
@@ -325,32 +417,48 @@
 	  - Skip empty lines.
 	  - Skip duplicate entries when appending.
 	  - Optimize away kmalloc.
-	- Remove d_purge_aliases() which could race; instead use d_prune_aliases() from base.
-	- Eliminate ssidev_poll_cli_t->pc_spinlock in sys_poll()/select() path. (#ifdef RCU_SSIDEV_POLL_CLI_LIST)
-	- Add ssidev_poll_cli_ctor() constructor for struct ssidev_poll_cli_t. (#ifdef SSIDEV_POLL_CLI_KMEM_CACHE)
-	- Fix rw_verify_area() fails when doing remote I/O. File position was not updated. (#ifdef SSI_RW_VERIFY_AREA_FIX)
-	- New ssi_mask_signals() / ssi_unmask_signals() based on Linux rpc_clnt_sigmask(). (#ifdef LINUX_SSI_INTERRUPTIBLE)
+	- Remove d_purge_aliases() which could race; instead use
+	  d_prune_aliases() from base.
+	- Eliminate ssidev_poll_cli_t->pc_spinlock in sys_poll()/select() path.
+	  (#ifdef RCU_SSIDEV_POLL_CLI_LIST)
+	- Add ssidev_poll_cli_ctor() constructor for struct ssidev_poll_cli_t.
+	  (#ifdef SSIDEV_POLL_CLI_KMEM_CACHE)
+	- Fix rw_verify_area() fails when doing remote I/O. File position was
+	  not updated. (#ifdef SSI_RW_VERIFY_AREA_FIX)
+	- New ssi_mask_signals() / ssi_unmask_signals() based on Linux
+	  rpc_clnt_sigmask(). (#ifdef LINUX_SSI_INTERRUPTIBLE)
 	- ssi_wait_event() is no longer inlined.
 	- Regression:
 	  - size of kzmalloc() bound by array size INT_MAX in kcalloc().
 
 	* VPROC:
-	- Fix possible pvp_pproc race. Set pvp_pproc before adding vproc to the vproc hash chain.
-	- vproc_alloc() now sets vproc reference count to 1; save callers one VPROC_HOLD. (#ifdef VPROC_RELEASE__REFCNT_RACE_FIX)
-	- Fix dvp_set_exec() and dvp_clear_exec() race with is_loadlevelable() over pvp_comm_de and pvp_comm_mnt.
-	- Allow preemption between vproc hash chain buckets. (#ifdef VPROC_RCU_LIST)
-	- Fix bogus procfs file->private_data after being freed in ssi_proc_root_release().
-	- Fix rexecve_server_setup() and migrate_server_setup() modifying task_struct without locking.
-	- Fix set_global_root() modifying task's fs_struct without proper locking.
+	- Fix possible pvp_pproc race. Set pvp_pproc before adding vproc to the
+	  vproc hash chain.
+	- vproc_alloc() now sets vproc reference count to 1; save callers one
+	  VPROC_HOLD. (#ifdef VPROC_RELEASE__REFCNT_RACE_FIX)
+	- Fix dvp_set_exec() and dvp_clear_exec() race with is_loadlevelable()
+	  over pvp_comm_de and pvp_comm_mnt.
+	- Allow preemption between vproc hash chain buckets. (#ifdef
+	  VPROC_RCU_LIST)
+	- Fix bogus procfs file->private_data after being freed in
+	  ssi_proc_root_release().
+	- Fix rexecve_server_setup() and migrate_server_setup() modifying
+	  task_struct without locking.
+	- Fix set_global_root() modifying task's fs_struct without proper
+	  locking.
 	- Clean up code in vprocptr().
-	- Fix ssisys_ignore_halfup() modifying pvproc flags without holding FLAG LOCK.
+	- Fix ssisys_ignore_halfup() modifying pvproc flags without holding FLAG
+	  LOCK.
 	- Fix rcluster_get_mount()
 	  - traversing process namespace without locking.
-	  - dereferencing rootmnt (struct vfsmount) without bumping reference count.
-	- Fix rproc_arch_data_unload_msg() could get preempted while modifying the TLS.
+	  - dereferencing rootmnt (struct vfsmount) without bumping reference
+	    count.
+	- Fix rproc_arch_data_unload_msg() could get preempted while modifying
+	  the TLS.
 	- Regression:
-	  - vproc_release() de-allocated struct vproc even when reference count got bumped; this was accidentally introduced
-	    during cleanup of RW vproc list lock. (#ifndef VPROC_LIST_SPINLOCK)
+	  - vproc_release() de-allocated struct vproc even when reference count
+	    got bumped; this was accidentally introduced during cleanup of RW
+	    vproc list lock. (#ifndef VPROC_LIST_SPINLOCK)
 
 	* VPROC (#ifdef LOADLEVEL_TABLE_LIST):
 	- is_loadlevelable() fixes.
@@ -364,30 +472,40 @@
 	* VPROC (#if __SSI_LOCK_DEBUG):
 	- For performance with VPROC_KMEM_CACHE we no longer de-init vproc,
 	  but to support __SSI_LOCK_DEBUG we must de-init vproc.
-	  Also later kernels removed slab destructors. Thanks to John Hughes
-	  for reporting issue. (See http://www.mail-archive.com/[email protected]/msg13529.html)
+	  Also later kernels removed slab destructors. Thanks to John Hughes for
+	  reporting issue. (See
+	  http://www.mail-archive.com/[email protected]/msg13529.html)
 
 	* VPROC (#ifdef LINUX_SSI_EVENT):
-	- Call VPROC_WAIT_EVENT_SIGNAL() instead of VPROC_WAIT_EVENT_BROADCAST() when appropriate. Base doesn't wake all.
-	- Optimize away unnecessary calls to ssi_block_signals() / ssi_unblock_signals() in ssi_wait_event().
+	- Call VPROC_WAIT_EVENT_SIGNAL() instead of VPROC_WAIT_EVENT_BROADCAST()
+	  when appropriate. Base doesn't wake all.
+	- Optimize away unnecessary calls to ssi_block_signals() /
+	  ssi_unblock_signals() in ssi_wait_event().
 
 	* VPROC (#ifdef VPROC_HOLD_ZERO_GET_TASK):
 	- Fix PV_SYS flag not set in initialize_init_vproc().
 	- No longer need to hold VPROC LOCK ...
 	  - when dereferencing pvp_pproc pointer.
 	  - when calling PV_IS_ALIVE().
-	  - in pvpop_procfs_getattr() since there is no race with setpgid()/setsid().
+	  - in pvpop_procfs_getattr() since there is no race with
+	    setpgid()/setsid().
 
 	* VPROC (#ifdef VPROC_LOCKING_CONTEXT_FIX):
 	- Fix various semi-deadlock's
-	  - vpop_setup_vproc_relations() might sleep while in atomic (holding FLAG LOCK).
-	  - vproc_origin_find_nolock() might sleep while in atomic (holding vproc_origin_list_lock)
-	    in vproc_origin_inform_surrogate() code path.
-	    - As part of fix vproc_origin_list is serialized also by vproc_origin_create_mutex,
-	    - new macros VOD_GET()/VOD_PUT() implement use of reference counts for struct vproc_origin_data,
-	    - and we abandon use of shared read/write semaphore to track struct vproc_origin_data usage.
-	  - get_node() might sleep in atomic (holding tasklist_lock) in ssi_tty_get_pgrp()
-	    code path rssi_tty_get_pgrp, ssi_get_tty, devpts_get_tty, get_node.
+	  - vpop_setup_vproc_relations() might sleep while in atomic (holding
+	    FLAG LOCK).
+	  - vproc_origin_find_nolock() might sleep while in atomic (holding
+	    vproc_origin_list_lock) in vproc_origin_inform_surrogate() code
+	    path.
+	    - As part of fix vproc_origin_list is serialized also by
+	      vproc_origin_create_mutex,
+	    - new macros VOD_GET()/VOD_PUT() implement use of reference counts
+	      for struct vproc_origin_data,
+	    - and we abandon use of shared read/write semaphore to track struct
+	      vproc_origin_data usage.
+	  - get_node() might sleep in atomic (holding tasklist_lock) in
+	    ssi_tty_get_pgrp() code path rssi_tty_get_pgrp, ssi_get_tty,
+	    devpts_get_tty, get_node.
 	    - with the fix we need to prevent bogus task->signal pointer after
 	      returning from ssi_tty_get_pgrp() in do_task_stat().
 
@@ -481,56 +599,82 @@
 	* CFS:
 	- Fix cfsd_create() dentry leak or operating on unreferenced dentry.
 	- Fix server token table hash key race with PFS file handle data.
-	- Further avoid ssi_get_super() to reduce contention. We don't cross mount points.
-	- Switch to Linux get_empty_filp() to get unused file structure for svrcfstok structure.
-	- Move redundant struct svrcfstok initialization to kmem cache constructor. (#ifdef SVRCFS_TOKEN_KMEM_CACHE)
+	- Further avoid ssi_get_super() to reduce contention. We don't cross
+	  mount points.
+	- Switch to Linux get_empty_filp() to get unused file structure for
+	  svrcfstok structure.
+	- Move redundant struct svrcfstok initialization to kmem cache
+	  constructor. (#ifdef SVRCFS_TOKEN_KMEM_CACHE)
 	- Regression:
 	  - Possible busy inodes after unmounting. (#ifdef RCU_CFSTOK_TABLE)
-	  - Possible inode leak when out of memory doing export ops get_dentry. (#ifdef CFS_EXPORT_OPS)
-	  - Possibly missed drop_super() while performing export ops get_dentry. (#ifdef CFS_FH_TO_DENTRY_ANON)
+	  - Possible inode leak when out of memory doing export ops get_dentry.
+	    (#ifdef CFS_EXPORT_OPS)
+	  - Possibly missed drop_super() while performing export ops get_dentry.
+	    (#ifdef CFS_FH_TO_DENTRY_ANON)
 
 	* ICS:
-	- Fix uninitialized linked list pointers in client and server handle structures.
+	- Fix uninitialized linked list pointers in client and server handle
+	  structures.
 
 	* IPC:
-	- Fix uninitialized list_head in rmtunix_socket_info structure; SSI-1.9.0 bug. (#ifdef IPC_STALE_RMTUNIX_CACHE_FIX)
-	- Fix uninitialized spin lock in kern_ipc_perm structure (in SSI context).
-	- Fix uninitialized linked list pointers in unixnm_svr_entry and unixnm_cache_entry structures.
+	- Fix uninitialized list_head in rmtunix_socket_info structure;
+	  SSI-1.9.0 bug. (#ifdef IPC_STALE_RMTUNIX_CACHE_FIX)
+	- Fix uninitialized spin lock in kern_ipc_perm structure (in SSI
+	  context).
+	- Fix uninitialized linked list pointers in unixnm_svr_entry and
+	  unixnm_cache_entry structures.
 	- SHM dentry lookup bug fixes:
-	  - Error -ENOENT in CFS (negative dentry) due to not validating against PFS.
+	  - Error -ENOENT in CFS (negative dentry) due to not validating against
+	    PFS.
 	  - SHM negative dentry lookup could cause future memory corruption.
 	    - Did not increment inode count when instantiating dentry.
-	    - Bad dentry reference count side-effect due to incorrect return value for Linux namespace architecture.
-	- Fix shm_ids_svr table race; mutex not held or wrong mutex held. (#ifdef IPC_SHM_RACE_FIX)
-	- Downgrade NSC_IPC_WRLOCK() where appropriate; reduce contention. (#ifdef NSC_IPC_RWLOCK_DOWNGRADE)
+	    - Bad dentry reference count side-effect due to incorrect return
+	      value for Linux namespace architecture.
+	- Fix shm_ids_svr table race; mutex not held or wrong mutex held.
+	  (#ifdef IPC_SHM_RACE_FIX)
+	- Downgrade NSC_IPC_WRLOCK() where appropriate; reduce contention.
+	  (#ifdef NSC_IPC_RWLOCK_DOWNGRADE)
 
 	* IPVS:
-	- Fix uninitialized linked list pointers in ipvs_dirinfo and portweight_list structures.
+	- Fix uninitialized linked list pointers in ipvs_dirinfo and
+	  portweight_list structures.
 
 	* SSI:
-	- Fix dentry race calling __d_path() outside dcache lock. (#ifdef SSI_DCACHE_RACE_FIX)
-	- Fix uninitialized linked list pointers in structures rmtfb_cmn, ssidev_hash, fifonm_svr_entry, fifonm_cache_entry, and ssipty_svr_entry.
+	- Fix dentry race calling __d_path() outside dcache lock. (#ifdef
+	  SSI_DCACHE_RACE_FIX)
+	- Fix uninitialized linked list pointers in structures rmtfb_cmn,
+	  ssidev_hash, fifonm_svr_entry, fifonm_cache_entry, and
+	  ssipty_svr_entry.
 	- Regression:
-	  - real_lookup() possibly returning unreferenced dentry instead of -ENOENT. (#ifndef REAL_LOOKUP_SSI_1_9_3_FIXED_PLS_VERIFY)
+	  - real_lookup() possibly returning unreferenced dentry instead of
+	    -ENOENT. (#ifndef REAL_LOOKUP_SSI_1_9_3_FIXED_PLS_VERIFY)
 
 	* VPROC:
 	- Remove deprecated RW semaphore implementation of vproc list lock.
-	- VPROC_LOCATE_PID() further avoid global list lock; no longer support LVP_NOLOCK flag. (#ifdef VPROC_RCU_LIST)
-	- Fix possibly missed drop_super() during process migration exporting of file descriptors.
+	- VPROC_LOCATE_PID() further avoid global list lock; no longer support
+	  LVP_NOLOCK flag. (#ifdef VPROC_RCU_LIST)
+	- Fix possibly missed drop_super() during process migration exporting of
+	  file descriptors.
 	- Fix partially initialized proc_root_readdir_cookie structure.
-	- semundo_load_msg() handle process sysvsem.undo_list->proc_list race take two. (#ifdef VPROC_UNLOAD_SETSCHED_SMP)
-	- Move redundant struct vproc initialization to kmem cache constructor. (#ifdef VPROC_KMEM_CACHE)
+	- semundo_load_msg() handle process sysvsem.undo_list->proc_list race
+	  take two. (#ifdef VPROC_UNLOAD_SETSCHED_SMP)
+	- Move redundant struct vproc initialization to kmem cache constructor.
+	  (#ifdef VPROC_KMEM_CACHE)
 	- Regression:
-	  - semi-deadlock in vproc_slave_carelist_create(); might sleep
-	    while holding vproc list lock. (#ifdef VPROC_LIST_SPINLOCK)
-	  - VPROC_LOCATE_PID() race could corrupt vproc hash table. (#ifdef VPROC_RCU_LIST)
-	  - Process migration traversing rmtfb path while importing SHM fd's; caused by fb_svrnode macro. (#ifdef REOP_EXPORT_PATH_SVRNODE)
+	  - semi-deadlock in vproc_slave_carelist_create(); might sleep while
+	    holding vproc list lock. (#ifdef VPROC_LIST_SPINLOCK)
+	  - VPROC_LOCATE_PID() race could corrupt vproc hash table. (#ifdef
+	    VPROC_RCU_LIST)
+	  - Process migration traversing rmtfb path while importing SHM fd's;
+	    caused by fb_svrnode macro. (#ifdef REOP_EXPORT_PATH_SVRNODE)
 
 2009/02/07	rogertsang <[email protected]>
 	* IPC:
-	- Fix missing sock_hold() for sock reference in rmtunix_socket_info structure. (#ifdef IPC_STALE_RMTUNIX_CACHE_FIX)
+	- Fix missing sock_hold() for sock reference in rmtunix_socket_info
+	  structure. (#ifdef IPC_STALE_RMTUNIX_CACHE_FIX)
 	- Regression:
-	  - rmtunix_socket_info structure lookup race with dealloc. (#ifdef RCU_RMTUNIX_CACHE)
+	  - rmtunix_socket_info structure lookup race with dealloc. (#ifdef
+	    RCU_RMTUNIX_CACHE)
 
 	 cluster/ssi/cfs/cfs_ipcshm.c     |    4 -
 	 cluster/ssi/cfs/svrcfs.c         |   37 +++++----------
@@ -543,13 +687,16 @@
 
 2009/02/06	rogertsang <[email protected]>
 	* CFS:
-	- Allocate file_lock structure from stack in cfs_proc_set/getlock_0(), cfs_rb_dolocks().
+	- Allocate file_lock structure from stack in cfs_proc_set/getlock_0(),
+	  cfs_rb_dolocks().
 	- Fix possible endless loop in cfs_rb_dolocks(); need error handling.
-	- Optimize away early malloc in svrtok_lookup(). (#ifdef RCU_CFSTOK_TABLE)
+	- Optimize away early malloc in svrtok_lookup(). (#ifdef
+	  RCU_CFSTOK_TABLE)
 
 	* IPC:
 	- Regression:
-	  - Partially initialized rmtunix_socket_info structure. (#ifdef RMTUNIX_SOCK_INFO_CACHE)
+	  - Partially initialized rmtunix_socket_info structure. (#ifdef
+	    RMTUNIX_SOCK_INFO_CACHE)
 
 	* VPROC:
 	- Regression:


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.