Deleted Added
full compact
devfs_vnops.c (208717) devfs_vnops.c (208951)
1/*-
2 * Copyright (c) 2000-2004
3 * Poul-Henning Kamp. All rights reserved.
4 * Copyright (c) 1989, 1992-1993, 1995
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This code is derived from software donated to Berkeley by
8 * Jan-Simon Pendry.

--- 17 unchanged lines hidden (view full) ---

26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * @(#)kernfs_vnops.c 8.15 (Berkeley) 5/21/95
32 * From: FreeBSD: src/sys/miscfs/kernfs/kernfs_vnops.c 1.43
33 *
1/*-
2 * Copyright (c) 2000-2004
3 * Poul-Henning Kamp. All rights reserved.
4 * Copyright (c) 1989, 1992-1993, 1995
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This code is derived from software donated to Berkeley by
8 * Jan-Simon Pendry.

--- 17 unchanged lines hidden (view full) ---

26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * @(#)kernfs_vnops.c 8.15 (Berkeley) 5/21/95
32 * From: FreeBSD: src/sys/miscfs/kernfs/kernfs_vnops.c 1.43
33 *
34 * $FreeBSD: head/sys/fs/devfs/devfs_vnops.c 208717 2010-06-01 18:57:21Z jh $
34 * $FreeBSD: head/sys/fs/devfs/devfs_vnops.c 208951 2010-06-09 15:29:12Z jh $
35 */
36
37/*
38 * TODO:
39 * remove empty directories
40 * mkdir: want it ?
41 */
42

--- 182 unchanged lines hidden (view full) ---

225 bcopy(dd->de_dirent->d_name, buf + i,
226 dd->de_dirent->d_namlen);
227 de = dd;
228 } else {
229 error = ENOENT;
230 goto finished;
231 }
232 *buflen = i;
35 */
36
37/*
38 * TODO:
39 * remove empty directories
40 * mkdir: want it ?
41 */
42

--- 182 unchanged lines hidden (view full) ---

225 bcopy(dd->de_dirent->d_name, buf + i,
226 dd->de_dirent->d_namlen);
227 de = dd;
228 } else {
229 error = ENOENT;
230 goto finished;
231 }
232 *buflen = i;
233 de = TAILQ_FIRST(&de->de_dlist); /* "." */
234 de = TAILQ_NEXT(de, de_list); /* ".." */
235 de = de->de_dir;
233 de = devfs_parent_dirent(de);
234 if (de == NULL) {
235 error = ENOENT;
236 goto finished;
237 }
236 mtx_lock(&devfs_de_interlock);
237 *dvp = de->de_vnode;
238 if (*dvp != NULL) {
239 VI_LOCK(*dvp);
240 mtx_unlock(&devfs_de_interlock);
241 vholdl(*dvp);
242 VI_UNLOCK(*dvp);
243 } else {

--- 29 unchanged lines hidden (view full) ---

273 if (i < 0)
274 return (NULL);
275 buf[i] = '/';
276 i -= de->de_dirent->d_namlen;
277 if (i < 0)
278 return (NULL);
279 bcopy(de->de_dirent->d_name, buf + i,
280 de->de_dirent->d_namlen);
238 mtx_lock(&devfs_de_interlock);
239 *dvp = de->de_vnode;
240 if (*dvp != NULL) {
241 VI_LOCK(*dvp);
242 mtx_unlock(&devfs_de_interlock);
243 vholdl(*dvp);
244 VI_UNLOCK(*dvp);
245 } else {

--- 29 unchanged lines hidden (view full) ---

275 if (i < 0)
276 return (NULL);
277 buf[i] = '/';
278 i -= de->de_dirent->d_namlen;
279 if (i < 0)
280 return (NULL);
281 bcopy(de->de_dirent->d_name, buf + i,
282 de->de_dirent->d_namlen);
281 de = TAILQ_FIRST(&de->de_dlist); /* "." */
282 de = TAILQ_NEXT(de, de_list); /* ".." */
283 de = de->de_dir;
283 de = devfs_parent_dirent(de);
284 if (de == NULL)
285 return (NULL);
284 }
285 return (buf + i);
286}
287
288static int
289devfs_allocv_drop_refs(int drop_dm_lock, struct devfs_mount *dmp,
290 struct devfs_dirent *de)
291{

--- 492 unchanged lines hidden (view full) ---

784 *vpp = dvp;
785 VREF(dvp);
786 return (0);
787 }
788
789 if (flags & ISDOTDOT) {
790 if ((flags & ISLASTCN) && nameiop != LOOKUP)
791 return (EINVAL);
286 }
287 return (buf + i);
288}
289
290static int
291devfs_allocv_drop_refs(int drop_dm_lock, struct devfs_mount *dmp,
292 struct devfs_dirent *de)
293{

--- 492 unchanged lines hidden (view full) ---

786 *vpp = dvp;
787 VREF(dvp);
788 return (0);
789 }
790
791 if (flags & ISDOTDOT) {
792 if ((flags & ISLASTCN) && nameiop != LOOKUP)
793 return (EINVAL);
794 de = devfs_parent_dirent(dd);
795 if (de == NULL)
796 return (ENOENT);
792 VOP_UNLOCK(dvp, 0);
797 VOP_UNLOCK(dvp, 0);
793 de = TAILQ_FIRST(&dd->de_dlist); /* "." */
794 de = TAILQ_NEXT(de, de_list); /* ".." */
795 de = de->de_dir;
796 error = devfs_allocv(de, dvp->v_mount, vpp);
797 *dm_unlock = 0;
798 vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY);
799 return (error);
800 }
801
802 DEVFS_DMP_HOLD(dmp);
803 devfs_populate(dmp);

--- 826 unchanged lines hidden ---
798 error = devfs_allocv(de, dvp->v_mount, vpp);
799 *dm_unlock = 0;
800 vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY);
801 return (error);
802 }
803
804 DEVFS_DMP_HOLD(dmp);
805 devfs_populate(dmp);

--- 826 unchanged lines hidden ---