Date: Fri, 21 Jun 2002 20:58:19 -0500 (CDT) From: Nitin Bahadur <bnitin@cs.wisc.edu> To: hackers@freebsd.org Subject: kernel file creation query... Message-ID: <Pine.GSO.4.21.0206212052130.16911-100000@alumni.cs.wisc.edu>
next in thread | raw e-mail | index | archive | help
Hi, This might be a lame query...but ... I am trying to create a file from kernel space given the vnode of the parent directory using VOP_CREATE. The code is as below. int make_file(struct vnode *dvp, struct vnode **vpp, struct proc *p, char *name) { struct componentname cnp; struct vattr va, *vap = &va; /* set component name */ cnp.cn_nameiop = CREATE; cnp.cn_flags = LOCKLEAF; cnp.cn_proc = p; cnp.cn_cred = p->p_ucred; cnp.cn_pnbuf = cnp.cn_nameptr = name; cnp.cn_namelen = cnp.cn_consume = strlen(name); /* set attributes */ VATTR_NULL(vap); vap->va_type = VREG; return VOP_CREATE(dvp, vpp, &cnp, vap); } Now the file is getting created, but if I do an ls on its parent directory, I get something like; foo: Bad file descriptor. I am sure I am doing something wrong or missing something. I tried looking at the nfs and kern code, but couldn't figure out much. Can you experts just correct me.. thanks in advance nitin To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.21.0206212052130.16911-100000>