union_subr.c (f9e28f900353ca8681fa1815afaebaca16ef254b) union_subr.c (b4a58fbf640409a1e507d9f7b411c83a3f83a2f3)
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 1994 Jan-Simon Pendry
5 * Copyright (c) 1994
6 * The Regents of the University of California. All rights reserved.
7 * Copyright (c) 2005, 2006, 2012 Masanori Ozawa <ozawa@ongs.co.jp>, ONGS Inc.
8 * Copyright (c) 2006, 2012 Daichi Goto <daichi@freebsd.org>

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

625{
626 int error;
627
628 cn->cn_namelen = pathlen;
629 cn->cn_pnbuf = path;
630 cn->cn_nameiop = nameiop;
631 cn->cn_flags = (LOCKPARENT | LOCKLEAF | HASBUF | SAVENAME | ISLASTCN);
632 cn->cn_lkflags = LK_EXCLUSIVE;
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 1994 Jan-Simon Pendry
5 * Copyright (c) 1994
6 * The Regents of the University of California. All rights reserved.
7 * Copyright (c) 2005, 2006, 2012 Masanori Ozawa <ozawa@ongs.co.jp>, ONGS Inc.
8 * Copyright (c) 2006, 2012 Daichi Goto <daichi@freebsd.org>

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

625{
626 int error;
627
628 cn->cn_namelen = pathlen;
629 cn->cn_pnbuf = path;
630 cn->cn_nameiop = nameiop;
631 cn->cn_flags = (LOCKPARENT | LOCKLEAF | HASBUF | SAVENAME | ISLASTCN);
632 cn->cn_lkflags = LK_EXCLUSIVE;
633 cn->cn_thread = td;
634 cn->cn_cred = cnp->cn_cred;
635 cn->cn_nameptr = cn->cn_pnbuf;
636
637 if (nameiop == DELETE)
638 cn->cn_flags |= (cnp->cn_flags & (DOWHITEOUT | SAVESTART));
639 else if (RENAME == nameiop)
640 cn->cn_flags |= (cnp->cn_flags & SAVESTART);
641 else if (nameiop == CREATE)

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

970 panic("unionfs: un_path is null");
971
972 nd.ni_cnd.cn_namelen = unp->un_pathlen;
973 nd.ni_cnd.cn_pnbuf = unp->un_path;
974 nd.ni_cnd.cn_nameiop = CREATE;
975 nd.ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | HASBUF | SAVENAME |
976 ISLASTCN;
977 nd.ni_cnd.cn_lkflags = LK_EXCLUSIVE;
633 cn->cn_cred = cnp->cn_cred;
634 cn->cn_nameptr = cn->cn_pnbuf;
635
636 if (nameiop == DELETE)
637 cn->cn_flags |= (cnp->cn_flags & (DOWHITEOUT | SAVESTART));
638 else if (RENAME == nameiop)
639 cn->cn_flags |= (cnp->cn_flags & SAVESTART);
640 else if (nameiop == CREATE)

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

969 panic("unionfs: un_path is null");
970
971 nd.ni_cnd.cn_namelen = unp->un_pathlen;
972 nd.ni_cnd.cn_pnbuf = unp->un_path;
973 nd.ni_cnd.cn_nameiop = CREATE;
974 nd.ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | HASBUF | SAVENAME |
975 ISLASTCN;
976 nd.ni_cnd.cn_lkflags = LK_EXCLUSIVE;
978 nd.ni_cnd.cn_thread = td;
979 nd.ni_cnd.cn_cred = cred;
980 nd.ni_cnd.cn_nameptr = nd.ni_cnd.cn_pnbuf;
981 NDPREINIT(&nd);
982
983 vref(udvp);
984 if ((error = relookup(udvp, &vp, &nd.ni_cnd)) != 0)
985 goto unionfs_vn_create_on_upper_free_out2;
986 vrele(udvp);

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

1245
1246 cn.cn_namelen = dp->d_namlen;
1247 cn.cn_pnbuf = NULL;
1248 cn.cn_nameptr = dp->d_name;
1249 cn.cn_nameiop = LOOKUP;
1250 cn.cn_flags = LOCKPARENT | LOCKLEAF | SAVENAME |
1251 RDONLY | ISLASTCN;
1252 cn.cn_lkflags = LK_EXCLUSIVE;
977 nd.ni_cnd.cn_cred = cred;
978 nd.ni_cnd.cn_nameptr = nd.ni_cnd.cn_pnbuf;
979 NDPREINIT(&nd);
980
981 vref(udvp);
982 if ((error = relookup(udvp, &vp, &nd.ni_cnd)) != 0)
983 goto unionfs_vn_create_on_upper_free_out2;
984 vrele(udvp);

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

1243
1244 cn.cn_namelen = dp->d_namlen;
1245 cn.cn_pnbuf = NULL;
1246 cn.cn_nameptr = dp->d_name;
1247 cn.cn_nameiop = LOOKUP;
1248 cn.cn_flags = LOCKPARENT | LOCKLEAF | SAVENAME |
1249 RDONLY | ISLASTCN;
1250 cn.cn_lkflags = LK_EXCLUSIVE;
1253 cn.cn_thread = td;
1254 cn.cn_cred = cred;
1255
1256 /*
1257 * check entry in lower.
1258 * Sometimes, readdir function returns
1259 * wrong entry.
1260 */
1261 lookuperr = VOP_LOOKUP(lvp, &tvp, &cn);

--- 75 unchanged lines hidden ---
1251 cn.cn_cred = cred;
1252
1253 /*
1254 * check entry in lower.
1255 * Sometimes, readdir function returns
1256 * wrong entry.
1257 */
1258 lookuperr = VOP_LOOKUP(lvp, &tvp, &cn);

--- 75 unchanged lines hidden ---