Hi,

Please code review the following simple fix (two lines changed):
http://cr.opensolaris.org/~aragorn/6887666-6887889-INTR/

6887666 mmap() on NFSv4 mounted filesystem can be not interruptible
6887889 Possible not interruptible hang in nfs4_write() with directio, append 
and intr

Background
==========

Both CRs are about wrong usage of INTR() macro in the NFSv4 client sources.
Instead, the INTR4() macro should be used. This problem affects NFSv4 mounts
with "intr" mount flag set on (default). Under some circumstances we can lead
to situation where the userspace process is not interruptible.

The problem is that in the NFSv4 domain the INTR() macro usage is plain wrong
because both mntinfo4_t and mntinfo_t structures differs significantly. At
least the offset of mi_flags is different.

This ends up in situation where the nfs_rw_enter_sig() calls cv_wait() instead
of correct cv_wait_sig().

>From the mount_nfs(1M) man page:

         intr | nointr

             Allow (do not allow) keyboard interrupts to  kill  a
             process that is hung while waiting for a response on
             a hard-mounted file system.  The  default  is  intr,
             which  makes  it  possible  for clients to interrupt
             applications that can be waiting for a remote mount.



Thanks for your time.

-- 
Marcel Telka
Solaris RPE

Reply via email to