Print this page
7203 unlinking a directory on tmpfs does not remove the directory entries
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Alexander Stetsenko <astetsenko@racktopsystems.com>

*** 25,34 **** --- 25,35 ---- */ /* * Copyright (c) 2015, Joyent, Inc. All rights reserved. * Copyright 2015 Nexenta Systems, Inc. All rights reserved. + * Copyright 2016 RackTop Systems. */ #include <sys/types.h> #include <sys/param.h> #include <sys/t_lock.h>
*** 1102,1112 **** rw_enter(&parent->tn_rwlock, RW_WRITER); rw_enter(&tp->tn_rwlock, RW_WRITER); if (tp->tn_type != VDIR || (error = secpolicy_fs_linkdir(cred, dvp->v_vfsp)) == 0) ! error = tdirdelete(parent, tp, nm, DR_REMOVE, cred); rw_exit(&tp->tn_rwlock); rw_exit(&parent->tn_rwlock); vnevent_remove(TNTOV(tp), dvp, nm, ct); tmpnode_rele(tp); --- 1103,1114 ---- rw_enter(&parent->tn_rwlock, RW_WRITER); rw_enter(&tp->tn_rwlock, RW_WRITER); if (tp->tn_type != VDIR || (error = secpolicy_fs_linkdir(cred, dvp->v_vfsp)) == 0) ! error = tdirdelete(parent, tp, nm, tp->tn_type == VDIR ? ! DR_RMDIR : DR_REMOVE, cred); rw_exit(&tp->tn_rwlock); rw_exit(&parent->tn_rwlock); vnevent_remove(TNTOV(tp), dvp, nm, ct); tmpnode_rele(tp);