diff options
author | rwatson <rwatson@FreeBSD.org> | 2001-01-07 23:31:51 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2001-01-07 23:31:51 +0000 |
commit | 34031fcb8d885dd05f6018d9829bbb6bf223d764 (patch) | |
tree | 0f3b5de1368573f9d0562f6df8606a392d457a66 /sys/ufs | |
parent | d0fa22cb5d8a8da1477b47ea97cbe7053b7b9842 (diff) | |
download | FreeBSD-src-34031fcb8d885dd05f6018d9829bbb6bf223d764.zip FreeBSD-src-34031fcb8d885dd05f6018d9829bbb6bf223d764.tar.gz |
o Zero the ufs_extattr_header length field (not necessary, but not a bad
idea either) in ufs_extattr_rm.
o More completely fill out the local_aio structure when writing out the
zero'd extended attribute in ufs_extattr_rm -- previoulsy, this worked
fine, but probably should not have. This corrects extraneous warnings
about inconsistent inodes following file deletion.
Reviewed by: jedgar
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ufs/ufs_extattr.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/ufs/ufs/ufs_extattr.c b/sys/ufs/ufs/ufs_extattr.c index 7d06bfb..1bb5a69 100644 --- a/sys/ufs/ufs/ufs_extattr.c +++ b/sys/ufs/ufs/ufs_extattr.c @@ -845,10 +845,17 @@ ufs_extattr_rm(struct vnode *vp, const char *name, struct ucred *cred, /* flag it as not in use */ ueh.ueh_flags = 0; + ueh.ueh_len = 0; + local_aiov.iov_base = (caddr_t) &ueh; + local_aiov.iov_len = sizeof(struct ufs_extattr_header); + local_aio.uio_iov = &local_aiov; + local_aio.uio_iovcnt = 1; + local_aio.uio_rw = UIO_WRITE; + local_aio.uio_segflg = UIO_SYSSPACE; + local_aio.uio_procp = p; local_aio.uio_offset = base_offset; local_aio.uio_resid = sizeof(struct ufs_extattr_header); - local_aio.uio_rw = UIO_WRITE; error = VOP_WRITE(attribute->uele_backing_vnode, &local_aio, IO_NODELOCKED | IO_SYNC, ump->um_extattr.uepm_ucred); |