From owner-freebsd-drivers@freebsd.org Thu Oct 10 05:50:09 2019 Return-Path: Delivered-To: freebsd-drivers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DCEE7147330; Thu, 10 Oct 2019 05:50:09 +0000 (UTC) (envelope-from Zhichao1.Li@dell.com) Received: from mx0b-00154904.pphosted.com (mx0b-00154904.pphosted.com [148.163.137.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 46pgCh3Shjz4c3X; Thu, 10 Oct 2019 05:50:07 +0000 (UTC) (envelope-from Zhichao1.Li@dell.com) Received: from pps.filterd (m0170394.ppops.net [127.0.0.1]) by mx0b-00154904.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x9A5nwWb018619; Thu, 10 Oct 2019 01:50:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dell.com; h=from : to : cc : subject : date : message-id : content-type : mime-version; s=smtpout1; bh=87330nmkVMd+kBTD8HOCex37+P1E6wrm1Z4EkFjt7mc=; b=EGFYq4TnIJTrTcSo+2HTovpkeb6kPJIfQHBZMsKD+4NRXp7gE9fG3h7pihK6mOYUfOpp FjI/jLsp+A9OMZk5nr8LMkkPkDw9zAMIdJBDk8ZhpYQobNNlPYHh92wN45XWjX39DdhC F6x6JKweU9BVxpLcsgT01sUh5nZL0TfVMv6BGjU7Edpnb0rXHvc2ZUzjLihm4QMKKxY2 QVc72HuGbcGFU0eBrx2PWbx9+cxDE7BpgDND1q5usEAOlV/SF888zo2MDvAfsmZsXh0i 3N1kYTxM2Ky0gSDoynDbjLj5uzcvRj+STrmfqWpIdl/x6bYSmyFDohVJCMmg/yOpkfD+ 3w== Received: from mx0a-00154901.pphosted.com (mx0a-00154901.pphosted.com [67.231.149.39]) by mx0b-00154904.pphosted.com with ESMTP id 2venr7yceb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Oct 2019 01:50:04 -0400 Received: from pps.filterd (m0134746.ppops.net [127.0.0.1]) by mx0a-00154901.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x9A5ltaB161159; Thu, 10 Oct 2019 01:50:03 -0400 Received: from ausc60ps301.us.dell.com (ausc60ps301.us.dell.com [143.166.148.206]) by mx0a-00154901.pphosted.com with ESMTP id 2vhwrfruue-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Oct 2019 01:50:03 -0400 X-LoopCount0: from 10.166.137.63 X-PREM-Routing: D-Outbound X-IronPort-AV: E=Sophos;i="5.60,349,1549951200"; d="scan'208,217";a="1361392574" From: To: , CC: Subject: a issue about getting a devfs node's fullpath Thread-Topic: a issue about getting a devfs node's fullpath Thread-Index: AdV/GGVUhjnLmzB6SsidzxkwZYw4IQ== Date: Thu, 10 Oct 2019 05:49:55 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Enabled=True; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_SiteId=945c199a-83a2-4e80-9f8c-5a91be5752dd; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Owner=Zhichao_Li1@Dell.com; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_SetDate=2019-10-10T05:49:54.0280618Z; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Name=External Public; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Application=Microsoft Azure Information Protection; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Extended_MSFT_Method=Manual; aiplabel=External Public x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.93.131.111] MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-10_03:2019-10-08,2019-10-10 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 phishscore=0 malwarescore=0 adultscore=0 priorityscore=1501 spamscore=0 impostorscore=0 mlxscore=0 suspectscore=0 mlxlogscore=939 bulkscore=0 clxscore=1031 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910100054 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 priorityscore=1501 impostorscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 spamscore=0 phishscore=0 clxscore=1031 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910100054 X-Rspamd-Queue-Id: 46pgCh3Shjz4c3X X-Spamd-Bar: ----- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=dell.com header.s=smtpout1 header.b=EGFYq4Tn; dmarc=pass (policy=none) header.from=dell.com; spf=pass (mx1.freebsd.org: domain of Zhichao1.Li@dell.com designates 148.163.137.20 as permitted sender) smtp.mailfrom=Zhichao1.Li@dell.com X-Spamd-Result: default: False [-5.89 / 15.00]; ARC_NA(0.00)[]; SUBJECT_ENDS_SPACES(0.50)[]; R_DKIM_ALLOW(-0.20)[dell.com:s=smtpout1]; HAS_XOIP(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; RCVD_COUNT_FIVE(0.00)[5]; R_SPF_ALLOW(-0.20)[+ip4:148.163.137.20]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; TO_DN_NONE(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; DWL_DNSWL_NONE(0.00)[dell.com.dwl.dnswl.org : 127.0.9.0]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[dell.com:+]; DMARC_POLICY_ALLOW(-0.50)[dell.com,none]; FROM_NO_DN(0.00)[]; IP_SCORE(-0.29)[ip: (0.01), ipnet: 148.163.137.0/24(0.01), asn: 22843(-1.42), country: US(-0.05)]; RCVD_IN_DNSWL_LOW(-0.10)[20.137.163.148.list.dnswl.org : 127.0.3.1]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ASN(0.00)[asn:22843, ipnet:148.163.137.0/24, country:US]; RCVD_TLS_LAST(0.00)[]; WHITELIST_SPF_DKIM(-3.00)[dell.com:d:+,dell.com:s:+] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-drivers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Writing device drivers for FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Oct 2019 05:50:09 -0000 Dear freebsd developers I know you're swamped, so I'll be brief. I am trying to get a node's full under /dev by calling the function 'vn_ful= lpath', when dealing with things like '/dev/null' or '/dev/usb/1.0.1', it w= orks well. However when dealing a node under more than 2 sub directories (e.g. /dev/bu= s/usb/001/002) which I made by calling 'make_dev_s' , it goes a little bit= different, I got a string "/dev/bus/usb/bus/usb/001/002" And I found the function 'devfs_vptocnp' gets the string wrongly when deali= ng multi slashes path string, I have remark the code as followed and put so= me comments would you please take a look, and tell me what the purpose this func pass t= he string that way? static int devfs_vptocnp(struct vop_vptocnp_args *ap) { struct vnode *vp =3D ap->a_vp; struct vnode **dvp =3D ap->a_vpp; struct devfs_mount *dmp; char *buf =3D ap->a_buf; int *buflen =3D ap->a_buflen; struct devfs_dirent *dd, *de; int i, error; dmp =3D VFSTODEVFS(vp->v_mount); error =3D devfs_populate_vp(vp); if (error !=3D 0) return (error); i =3D *buflen; dd =3D vp->v_data; if (vp->v_type =3D=3D VCHR) { i -=3D strlen(dd->de_cdp->cdp_c.si_name); if (i < 0) { error =3D ENOMEM; goto finished; } bcopy(dd->de_cdp->cdp_c.si_name, buf + i, strlen(dd->de_cdp->cdp_c.si_name)); /* * when dealing with VCHR * the element 'si_name' already * holds the full path string * except rootdir, why not just go * to the rootdir? */ de =3D dd->de_dir; } else if (vp->v_type =3D=3D VDIR) { if (dd =3D=3D dmp->dm_rootdir) { *dvp =3D vp; vref(*dvp); goto finished; } i -=3D dd->de_dirent->d_namlen; if (i < 0) { error =3D ENOMEM; goto finished; } bcopy(dd->de_cdp->cdp_c.si_name, buf + i, strlen(dd->de_cdp->cdp_c.si_name)); de =3D dd->de_dir; } else if (vp->v_type =3D=3D VDIR) { if (dd =3D=3D dmp->dm_rootdir) { *dvp =3D vp; vref(*dvp); goto finished; } i -=3D dd->de_dirent->d_namlen; if (i < 0) { error =3D ENOMEM; goto finished; } bcopy(dd->de_dirent->d_name, buf + i, dd->de_dirent->d_namlen); de =3D dd; } else { error =3D ENOENT; goto finished; } *buflen =3D i; de =3D devfs_parent_dirent(de); if (de =3D=3D NULL) { error =3D ENOENT; goto finished; } mtx_lock(&devfs_de_interlock); *dvp =3D de->de_vnode; if (*dvp !=3D NULL) { VI_LOCK(*dvp); mtx_unlock(&devfs_de_interlock); vholdl(*dvp); VI_UNLOCK(*dvp); vref(*dvp); vdrop(*dvp); } else { mtx_unlock(&devfs_de_interlock); error =3D ENOENT; } finished: sx_xunlock(&dmp->dm_lock); return (error); }