Patch-ID# 100075-07 Keywords: lockd, rpc.lockd, rpc.statd file locking Synopsis: lockd problems in 4.1.1 4.1 and 4.0.3 Date: 18/July/91 SunOS release: 4.1.1, 4.1 , 4.0.3 Unbundled Product: Topic: rpc.lockd jumbo patch BugId's fixed with this patch: 1056300 1061087 1061173 1057673 Architectures for which this patch is available: sun4 sun4c Sun3 and Sun3x Obsoleted by: 4.1.2 Problem Description: PROBLEMS FIXED BY 100075-07 PATCH WARNING: ------- Due to fixes for iv) v) and vii) listed below, there is a potential interoperabilty problem when 07 patch is the client and 06 patch is the server; ie. lock requests that are being queued in the 06 server may not get granted. There is no side-effect expected if the 07 patch is the server. i) Check for sanity of lock requests and return EINVAL if lock ranges is abnormal (ie. start < end). ii) Fix problem where locking to EOF request results in the last byte of the file not being locked. iii) Fix problems where lock requests tend to get lost when interruptions to the daemon hosed its internal data structures; this may also cause the daemon to core dump in certain cases. iv) Fix problems where the server lock daemon not sending back NLM_GRANTED_MSG to remote blocked clients. v) Fix protocol implementation problem with NLM_GRANTED_MSG. vi) Fixed problems where NLM_CANCEL_MSGS and KLM_CANCEL_MSG result in applications waiting forever. vii) Fix error recovery mechanism to allow clients to reclaim locks after servers crash & recover. viii) Fix the krpc call timeout to 5 sec instead of 45 sec for better response. This also fixed the potential problem where results for lock request is missed by the kernel. ix) Fix "panic iinactive" on the server. x) Fix problem where the temporary file /tmp/foo is not being removed after the client lock mgr crashes & recovers. xi) Fix panic trap data fault when more than 135 processes concurrently try an do file locking. PROBLEMS FIXED BY 100075-06 PATCH i) Fixed problems where locks were getting lost on a heavily loaded system, particularly when using shared locks or test lock calls. ii) Fixed problem where pc-nfs applications were failing with "rpc.lockd: unable to unlock a lock" and "rpc.lockd: unable to set a lock." iii) Fixed problem with automatic upgrade and downgrade of locks. iv) Fixed problem with client reboot (L1 A) and locks not being recovered after that. v) Fixed problem with signal interrupting lock calls and wrong error code returned. vi) Fixed problem with infinite retry of lock on unlinked files. vii) Fixed problem with local blocking shared locks not being granted a lock when one is available. viii) Fixed problem with u-area overwrite when doing test lock. ix) Fixed problem where messages like "klm_lockmgr: unlock denied?!" and "lock-manager: RPC error: .." no longer appear under normal operations. x) Additionally this patch allows the kernel lockf debugging code to be turned on and off dynamically by setting/unsetting the variable lock_debug_on using the following command:- #adb -w -k /vmunix /dev/mem physmem XXX lock_debug_on/W 1 ^D PROBLEMS FIXED BY 100075-05 PATCH i) Fixed problem with running out of file descriptors and getting RPC TIMEOUT errors, seen when running large number of diskless clients. ii) Fixed problem where fd and fd structure was not released when doing test lock, eventually running out of file descriptors. This problem would occur when running WP and quitting out of the window. iii) Fixed problem where rpc.lockd core dumps after a large amount of time when running "fame" application. iv) Fixed problem where restarting lockd on a client results in the server not being able to communicate with the new lockd as it has an old client handle that is associated with a now invalid port number. v) Fixed problem where upgrade from a read lock to a write lock is allowed when remote read locks are outstanding. INSTALL: Rename the original files before installing the patches For 4.1.1 and 4.1: The 4.1 files are to be used for 4.1.1. Place the files in OBJ directory in /sys/sunX/OBJ Place the new rpc.lockd in /usr/etc Rebuild a new kernel and reboot. For 4.0.3: Place the files in OBJ directory in /sys/sunX/OBJ Place the new rpc.lockd in /usr/etc Add the following line to /sys/sunX/conf/files ufs/ufs_lockf.c standard Rebuild a new kernel and reboot.