summaryrefslogtreecommitdiffstats
path: root/sys/fs/deadfs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs/deadfs')
-rw-r--r--sys/fs/deadfs/dead_vnops.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/sys/fs/deadfs/dead_vnops.c b/sys/fs/deadfs/dead_vnops.c
index 1bbf453..a5c359f 100644
--- a/sys/fs/deadfs/dead_vnops.c
+++ b/sys/fs/deadfs/dead_vnops.c
@@ -49,6 +49,7 @@ static vop_poll_t dead_poll;
static vop_read_t dead_read;
static vop_write_t dead_write;
static vop_getwritemount_t dead_getwritemount;
+static vop_rename_t dead_rename;
struct vop_vector dead_vnodeops = {
.vop_default = &default_vnodeops,
@@ -73,7 +74,7 @@ struct vop_vector dead_vnodeops = {
.vop_readlink = VOP_EBADF,
.vop_reclaim = VOP_NULL,
.vop_remove = VOP_PANIC,
- .vop_rename = VOP_PANIC,
+ .vop_rename = dead_rename,
.vop_rmdir = VOP_PANIC,
.vop_setattr = VOP_EBADF,
.vop_symlink = VOP_PANIC,
@@ -211,3 +212,25 @@ dead_poll(ap)
{
return (POLLHUP);
}
+
+static int
+dead_rename(ap)
+ struct vop_rename_args /* {
+ struct vnode *a_fdvp;
+ struct vnode *a_fvp;
+ struct componentname *a_fcnp;
+ struct vnode *a_tdvp;
+ struct vnode *a_tvp;
+ struct componentname *a_tcnp;
+ } */ *ap;
+{
+ if (ap->a_tvp)
+ vput(ap->a_tvp);
+ if (ap->a_tdvp == ap->a_tvp)
+ vrele(ap->a_tdvp);
+ else
+ vput(ap->a_tdvp);
+ vrele(ap->a_fdvp);
+ vrele(ap->a_fvp);
+ return (EXDEV);
+}
OpenPOWER on IntegriCloud