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