[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