c
// In lpfc_findnode_did
struct lpfc_nodelist *lpfc_findnode_did(struct lpfc_vport *vport, uint32_t did)
{
    struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
    struct lpfc_nodelist *ndlp;
    unsigned long iflags;

    // Acquire an exclusive lock
    spin_lock_irqsave(&vport->exclusive_lock, iflags);
    ndlp = __lpfc_findnode_did(vport, did);
    spin_unlock_irqrestore(&vport->exclusive_lock, iflags);

    return ndlp;
}

// In lpfc_vport_delete
int lpfc_vport_delete(struct fc_vport *fc_vport)
{
    // ...

    // Attempt to acquire the exclusive lock
    if (!spin_trylock_irqsave(&vport->exclusive_lock, iflags)) {
        // Cannot delete, exclusive lock is held
        return -EBUSY;
    }

    // Proceed with deletion
    // ...
}
