On Tue, 03 Nov 2009 23:20:02 -0000, Yan, Zheng <yanzheng@xxxxxxxx> wrote:
On Wed, Nov 4, 2009 at 12:10 AM, Rui Miguel Silva <rmfrfs@xxxxxxxxx>
wrote:
In snapshot destroy the dentry used for parent was the snapshot dentry
itself. Remove d_invalidate since always return EBUSY, making possible
to remove a snapshot using the btrfsctl -D option.
This is not correct. The snapshot destroy ioctl receives two parameters.
The first one provides directory that the snapshot is in, the second one
provides the name of snapshot..
The usage of 'btrfsctl -D' is:
btrfsctl -D [name of snapshot] [directory that holds the snapshot]
Yan, Zheng
Hi,
thanks for the explanation. I just saw the usage output: " [-D dir .]"
"-D: delete snapshot" and I didn't understand it like the usage that you
explained above.
I understood it like this: btrfsctl -D relative/path/to/snapshot comparing
to the -s option "-s snap_name dir: creates a new snapshot of dir" which
is more clear.
That makes the patch completely wrong. Once again many thanks.
Cheers,
-- Rui
Signed-off-by: Rui Miguel Silva <rmfrfs@xxxxxxxxx>
---
fs/btrfs/ioctl.c | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index cdbb054..fe6ac9a 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -741,7 +741,7 @@ out:
static noinline int btrfs_ioctl_snap_destroy(struct file *file,
void __user *arg)
{
- struct dentry *parent = fdentry(file);
+ struct dentry *parent = file->f_path.dentry->d_parent;
struct dentry *dentry;
struct inode *dir = parent->d_inode;
struct inode *inode;
@@ -793,9 +793,6 @@ static noinline int btrfs_ioctl_snap_destroy(struct
file *file,
dest = BTRFS_I(inode)->root;
mutex_lock(&inode->i_mutex);
- err = d_invalidate(dentry);
- if (err)
- goto out_unlock;
down_write(&root->fs_info->subvol_sem);
@@ -827,7 +824,7 @@ static noinline int btrfs_ioctl_snap_destroy(struct
file *file,
inode->i_flags |= S_DEAD;
out_up_write:
up_write(&root->fs_info->subvol_sem);
-out_unlock:
+
mutex_unlock(&inode->i_mutex);
if (!err) {
shrink_dcache_sb(root->fs_info->sb);
--
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html