[SSI] openssi ChangeLog,1.237,1.238

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-serv26185

Modified Files:
      Tag: OPENSSI-FC
	ChangeLog 
Log Message:
Update for 2009/03/24 checkin


Index: ChangeLog
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/ChangeLog,v
retrieving revision 1.237
retrieving revision 1.238
diff -u -d -r1.237 -r1.238
--- ChangeLog	24 Mar 2009 04:32:56 -0000	1.237
+++ ChangeLog	19 May 2009 06:44:02 -0000	1.238
@@ -1,6 +1,205 @@
-2009/03/??	*** Release of OpenSSI 1.9.6 ***
+2009/06/??	*** Release of OpenSSI 1.9.6 ***
+
+2009/03/28	rogertsang <[email protected]>
 
 2009/03/24	rogertsang <[email protected]>
+	* CFS:
+	- 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.
+	- 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.
+	- 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.
+
+	* 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.
+	- 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.
+
+	* CFS (#ifdef CFS_BDI):
+	- 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).
+
+	* 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.
+	- 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.
+	- 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)
+	- Convert cnode flags to bit ops. (#ifdef CFS_FLAGS_BITOPS) [incomplete]
+
+	* CFS (#ifdef SVRTOK_KMEM_CACHE):
+	- Fix uninitialized wan_flags and/or wan_done in nrwant structure.
+
+	* CFS (#ifdef NRSVRFIFO_LINUX_LIST):
+	- Remove redundant struct nrwant ->wan_list initialization.
+
+	* CFS (#ifdef CFS_PAGEVEC):
+	- By default we no longer avoid remote scatter/gather I/O. To re-enable
+	  this feature define CFS_PAGEVEC_BUFFER_READ and CFS_PAGEVEC_BUFFER_WRITE.
+
+	* CFS (#ifdef CFSTOK_INTR):
+	- Experimental interruptible token architecture is disabled for now
+	  until we fix the req_release race brought on by kernel preemption.
+
+	* ICS:
+	- Regression:
+	  - 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.
+
+	* IPC:
+	- Fix [ ssic-linux-Bugs-2719607 ] memory leak in ipcname_gettotal() path; based on patch from John Hughes (hughesj).
+
+	* 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().
+	- 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)
+	- Fix proc_task_readdir() race with process migration.
+	- 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).
+	- Regression:
+	  - 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 performnace 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.
+	- 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).
+
+	* SSI:
+	- do_write_loadlist() fixes. (#ifdef WRITE_LOADLIST_FIX)
+	  - Increase 80 character buffer to PATH_MAX (4096).
+	  - 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)
+	- 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.
+	- Clean up code in vprocptr().
+	- 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 holding 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 (#ifdef LOADLEVEL_TABLE_LIST):
+	- is_loadlevelable() fixes.
+	  - dentry and vfsmount reference count bug.
+	  - semi-deadlock; might sleep while in atomic (holding tasklist_lock).
+
+	* VPROC (#ifdef SSI_LOOKUP_DENTRY_HASH) [incomplete]:
+	- Hash remote sockets or pipes by inode number instead of by name.
+	- ssi_lookup() no longer need to extract inode number from d_name.
+
+	* 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)
+
+	* 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().
+
+	* 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().
+
+	* 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 a result vproc_origin_list is also serialized by vproc_origin_create_mutex.
+	  - 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.
+	- Fix OOPS at new_encode_dev() bogus task->signal pointer after returning
+	  from ssi_tty_get_pgrp() in do_task_stat().
+	- New macros VOD_GET()/VOD_PUT() implement use of reference counts instead of
+	  shared read/write semaphore to track struct vproc_origin_data usage.
+
+	* VPROC (#ifdef VPROC_CARECOUNT_FIX):
+	- Fix memory leak; struct vproc_caredata leak.
+	- Kernel panic if in the unlikely case the value of vch_carecount in
+	  struct vproc_caredata is not size_t bound.
 
 	* Files in ci-linux project were modified (see ci/ChangeLog).
 FIXME some of these belong in ci-linux ChangeLog.
@@ -85,8 +284,8 @@
 
 2009/02/23	rogertsang <[email protected]>
 	* CFS:
-	- Fix cfsd_create() possible dentry leak or operating on dereferenced dentry.
-	- Fix possible server token table hash key race with PFS file handle data.
+	- 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)
@@ -605,7 +804,7 @@
 	- Upgrade vproc_list_lock mutex to shared read-write lock to reduce contention.
 	- Bug fix ssi_reset_loadlevel() skipped pid's.
 	- Bug fix possible tncvpd_scan() hang at vproc_release() for NSCVPD_DEBUG.
-	- SMP bug fix possible vproc_hash corruption due to chance of duplicate vproc release.
+	- SMP bug fix vproc_hash corruption due to duplicate vproc release.
 
 	(#ifdef VPROC_HASH_LIST) (Bug 1842982)
 


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables 
unlimited royalty-free distribution of the report engine 
for externally facing server and web deployment. 
http://p.sf.net/sfu/businessobjects
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.