diff mbox

[v2] Btrfs: return EPERM when deleting a default subvolume

Message ID 1394562258-17024-1-git-send-email-guangyu.sun@oracle.com (mailing list archive)
State Accepted
Headers show

Commit Message

Guangyu Sun March 11, 2014, 6:24 p.m. UTC
The error message is confusing:

 # btrfs sub delete /mnt/mysub/
 Delete subvolume '/mnt/mysub'
 ERROR: cannot delete '/mnt/mysub' - Directory not empty

The error message does not make sense to me: It's not about deleting a
directory but it's a subvolume, and it doesn't matter if the subvolume is
empty or not.

Maybe EPERM or is more appropriate in this case, combined with an explanatory
kernel log message. (e.g. "subvolume with ID 123 cannot be deleted because
it is configured as default subvolume.")

Reported-by: Koen De Wit <koen.de.wit@oracle.com>
Signed-off-by: Guangyu Sun <guangyu.sun@oracle.com>
---
 fs/btrfs/ioctl.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Duncan March 12, 2014, 7:58 a.m. UTC | #1
Guangyu Sun posted on Tue, 11 Mar 2014 11:24:18 -0700 as excerpted:

> The error message does not make sense to me: [snip]

The subject says v2, which explains why I was getting deja vu reading the 
description, but there's no listing of what changed from v1, as is 
customary when a revision is posted.  See pretty much any other patch 
with multiple revisions.
David Sterba March 12, 2014, 12:33 p.m. UTC | #2
On Tue, Mar 11, 2014 at 11:24:18AM -0700, Guangyu Sun wrote:
> The error message is confusing:
> 
>  # btrfs sub delete /mnt/mysub/
>  Delete subvolume '/mnt/mysub'
>  ERROR: cannot delete '/mnt/mysub' - Directory not empty
> 
> The error message does not make sense to me: It's not about deleting a
> directory but it's a subvolume, and it doesn't matter if the subvolume is
> empty or not.
> 
> Maybe EPERM or is more appropriate in this case, combined with an explanatory
> kernel log message. (e.g. "subvolume with ID 123 cannot be deleted because
> it is configured as default subvolume.")
> 
> Reported-by: Koen De Wit <koen.de.wit@oracle.com>
> Signed-off-by: Guangyu Sun <guangyu.sun@oracle.com>

Reviewed-by: David Sterba <dsterba@suse.cz>
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index a6d8efa..0751c0f 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -1797,7 +1797,9 @@  static noinline int may_destroy_subvol(struct btrfs_root *root)
 	if (di && !IS_ERR(di)) {
 		btrfs_dir_item_key_to_cpu(path->nodes[0], di, &key);
 		if (key.objectid == root->root_key.objectid) {
-			ret = -ENOTEMPTY;
+			ret = -EPERM;
+			btrfs_err(root->fs_info, "deleting default subvolume "
+				  "%llu is not allowed", key.objectid);
 			goto out;
 		}
 		btrfs_release_path(path);