From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Hellwig Subject: Re: [PATCH 01/18] vfs: dentry_unhash immediately prior to rmdir Date: Tue, 10 May 2011 10:12:34 +0200 Message-ID: <20110510081234.GA12154@lst.de> References: <1305002616-16782-1-git-send-email-sage@newdream.net> <1305002616-16782-2-git-send-email-sage@newdream.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: viro@ZenIV.linux.org.uk, hch@lst.de, linux-fsdevel@vger.kernel.org To: Sage Weil Return-path: Received: from verein.lst.de ([213.95.11.211]:55508 "EHLO newverein.lst.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932399Ab1EJIMf (ORCPT ); Tue, 10 May 2011 04:12:35 -0400 Content-Disposition: inline In-Reply-To: <1305002616-16782-2-git-send-email-sage@newdream.net> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: > - dentry_unhash(dentry); > if (d_mountpoint(dentry)) > error = -EBUSY; > else { > error = security_inode_rmdir(dir, dentry); > if (!error) { > + dentry_unhash(dentry); > error = dir->i_op->rmdir(dir, dentry); > if (!error) { > dentry->d_inode->i_flags |= S_DEAD; > dont_mount(dentry); > } > + dput(dentry); > } > } > mutex_unlock(&dentry->d_inode->i_mutex); > if (!error) { > d_delete(dentry); > } > - dput(dentry); > > return error; It would be nice if you could throw in a patch later in the series to clean up the code flow, e.g. error = -EBUSY; if (d_mountpoint(dentry)) goto out; error = security_inode_rmdir(dir, dentry); if (error) goto out; dentry_unhash(dentry); error = dir->i_op->rmdir(dir, dentry); if (!error) { dentry->d_inode->i_flags |= S_DEAD; dont_mount(dentry); } dput(dentry); out: mutex_unlock(&dentry->d_inode->i_mutex); if (!error) d_delete(dentry); return error; }