linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Btrfs: create the uuid tree on remount rw
@ 2013-09-21  2:33 Josef Bacik
  2013-09-21  7:11 ` Stefan Behrens
  0 siblings, 1 reply; 2+ messages in thread
From: Josef Bacik @ 2013-09-21  2:33 UTC (permalink / raw)
  To: linux-btrfs

Users have been complaining of the uuid tree stuff warning that there is no uuid
root when trying to do snapshot operations.  This is because if you mount -o ro
we will not create the uuid tree.  But then if you mount -o rw,remount we will
still not create it and then any subsequent snapshot/subvol operations you try
to do will fail gloriously.  Fix this by creating the uuid_root on remount rw if
it was not already there.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
---
 fs/btrfs/super.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 6ab0df5..05cfd79 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -1383,6 +1383,16 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data)
 			pr_warn("btrfs: failed to resume dev_replace\n");
 			goto restore;
 		}
+
+		if (!fs_info->uuid_root) {
+			pr_info("btrfs: creating UUID tree\n");
+			ret = btrfs_create_uuid_tree(fs_info);
+			if (ret) {
+				pr_warn("btrfs: failed to create the uuid "
+					"%d\n", ret);
+				goto restore;
+			}
+		}
 		sb->s_flags &= ~MS_RDONLY;
 	}
 out:
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] Btrfs: create the uuid tree on remount rw
  2013-09-21  2:33 [PATCH] Btrfs: create the uuid tree on remount rw Josef Bacik
@ 2013-09-21  7:11 ` Stefan Behrens
  0 siblings, 0 replies; 2+ messages in thread
From: Stefan Behrens @ 2013-09-21  7:11 UTC (permalink / raw)
  To: Josef Bacik, linux-btrfs

On 09/21/2013 04:33, Josef Bacik wrote:
> Users have been complaining of the uuid tree stuff warning that there is no uuid
> root when trying to do snapshot operations.  This is because if you mount -o ro
> we will not create the uuid tree.  But then if you mount -o rw,remount we will
> still not create it and then any subsequent snapshot/subvol operations you try
> to do will fail gloriously.  Fix this by creating the uuid_root on remount rw if
> it was not already there.  Thanks,
>
> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
> ---
>   fs/btrfs/super.c | 10 ++++++++++
>   1 file changed, 10 insertions(+)
>
> diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
> index 6ab0df5..05cfd79 100644
> --- a/fs/btrfs/super.c
> +++ b/fs/btrfs/super.c
> @@ -1383,6 +1383,16 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data)
>   			pr_warn("btrfs: failed to resume dev_replace\n");
>   			goto restore;
>   		}
> +
> +		if (!fs_info->uuid_root) {
> +			pr_info("btrfs: creating UUID tree\n");
> +			ret = btrfs_create_uuid_tree(fs_info);
> +			if (ret) {
> +				pr_warn("btrfs: failed to create the uuid "
> +					"%d\n", ret);

pr_warn("btrfs: failed to create the uuid tree "
                                           ^^^^

And I'm just wondering what would happen if you remount -o ro,remount 
(or umount -rf or shutdown on a busy filesystem which also causes a ro 
remount) while the uuid tree create/check thread is running. There is no 
code to stop the thread. There is only code for the regulat umount case 
that waits for this thread to complete. But that's not related to your 
patch. I'll put it on my todo list.


> +				goto restore;
> +			}
> +		}
>   		sb->s_flags &= ~MS_RDONLY;
>   	}
>   out:
>



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-09-21  7:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-21  2:33 [PATCH] Btrfs: create the uuid tree on remount rw Josef Bacik
2013-09-21  7:11 ` Stefan Behrens

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).