I'm sponsoring the following fast-track for Bob Mastors.

This case is an update to PSARC 2007/456 Vnode Specific Data and adds
a new field to the vnode structure (in sys/vnode.h): v_vsd_lock.

The case seeks Minor binding which matches the binding of the original
case.  The timer expires on June 12, 2009.


Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         VSD locking update
    1.2. Name of Document Author/Supplier:
         Author:  Bob Mastors
    1.3  Date of This Document:
        05 June, 2009
4. Technical Description

PSARC 2007/456 Vnode Specific Data was created to easily associate
project specific data with a vnode.  The current implementation
requires consumers of vsd_get() and vsd_set() to hold the vnode v_lock
mutex across the calls.  However, vsd_set() may go to sleep on
kmem_alloc().  This could cause the system to deadlock if the vnode had
dirty pages that needed to be written.  This problem is described by:

  6839233 VSD usage of v_lock could cause deadlock

The solution adds a new mutex to vnode_t:

    kmutex_t    v_vsd_lock;    /* protects v_vsd field */

Consumers of vsd_get() and vsd_set() would hold v_vsd_lock across the
calls instead of v_lock.  There are no lock ordering issues since the
locks are independent and there is no reason to hold both simultaneously.

Currently, the only ON consumer of vsd_get() and vsd_set() is NFS.

    Exported Interfaces

    Interface Name | Classification | Comments
    =================================================================
                   |                |
    v_vsd_lock     | Consolidation  | New mutex in the vnode structure
                   | Private        | to protect v_vsd field

6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                ON
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


Reply via email to