Hi Chris, I found the same problem on 2.6.32-0.33.rc5.git1 with btrfs-progs 0.19. This problem is already fixed? Thanks ---- Gustavo Junior Alves Specchio Soluções em TI http://specchio.inf.br Tel: +55 19 9223-0500> From: Chris Mason <chris.mason_ät_oracle.com> > Date: Tue, 07 Apr 2009 07:35:56 -0400 > > On Mon, 2009-04-06 at 18:41 +0100, Hugo Mills wrote: > > There seems to be some issue over changing the names of the device > > that a btrfs filesystem lives on: > > > > # lvcreate scratch -n fstest -L 2G > > Logical volume "fstest" created > > # mkfs -t btrfs /dev/scratch/fstest > > > > WARNING! - Btrfs v0.18-ge3b0f66 IS EXPERIMENTAL > > WARNING! - see http://btrfs.wiki.kernel.org before using > > > > fs created label (null) on /dev/scratch/fs1 > > nodesize 4096 leafsize 4096 sectorsize 4096 size 2.00GB > > Btrfs v0.18-ge3b0f66 > > > > # mount /dev/scratch/fstest /mnt > > # umount /mnt > > > > # lvrename scratch fstest derek > > Renamed "fstest" to "derek" in volume group "scratch" > > # mount /dev/scratch/derek /mnt > > mount: /dev/mapper/scratch-derek: can''t read superblock > > > > # lvrename scratch derek fstest > > Renamed "derek" to "fstest" in volume group "scratch" > > # mount /dev/scratch/fstest /mnt > > [success] > > > > The rename works properly on a completely virgin filesystem, but > > not on one that''s been mounted and unmounted (as above). > > Whoops, we need to reset the pathname when a probe finds a given dev > uuid on a given device. I''ll patch it up when I get back next week. > > Thanks for this bug report. > > -chris-- 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
TARUISI Hiroaki
2010-Feb-09  03:48 UTC
[PATCH]btrfs: Update existing btrfs_device for renaming device
This patch updates device name in btrfs device.
We can mount a device if its name are changed.
Signed-off-by: TARUISI Hiroaki <taruishi.hiroak@jp.fujitsu.com>
---
 fs/btrfs/volumes.c |    7 +++++++
 1 file changed, 7 insertions(+)
Index: b/fs/btrfs/volumes.c
==================================================================---
a/fs/btrfs/volumes.c	2010-02-09 12:11:33.000000000 +0900
+++ b/fs/btrfs/volumes.c	2010-02-09 12:43:29.000000000 +0900
@@ -365,6 +365,7 @@ static noinline int device_list_add(cons
 	struct btrfs_device *device;
 	struct btrfs_fs_devices *fs_devices;
 	u64 found_transid = btrfs_super_generation(disk_super);
+	char *name;
 	fs_devices = find_fsid(disk_super->fsid);
 	if (!fs_devices) {
@@ -411,6 +412,12 @@ static noinline int device_list_add(cons
 		device->fs_devices = fs_devices;
 		fs_devices->num_devices++;
+	} else if (strcmp(device->name, path)) {
+		name = kstrdup(path, GFP_NOFS);
+		if (!device->name)
+			return -ENOMEM;
+		kfree(device->name);
+		device->name = name;
 	}
 	if (found_transid > fs_devices->latest_trans) {
(2009/11/08 6:44), Gustavo Alves wrote:> Hi Chris,
> 
> I found the same problem on 2.6.32-0.33.rc5.git1 with btrfs-progs
> 0.19. This problem is already fixed?
> 
> Thanks
> 
> ----
> Gustavo Junior Alves
> Specchio Soluções em TI
> http://specchio.inf.br
> Tel: +55 19 9223-0500
> 
> 
>> From: Chris Mason <chris.mason_ät_oracle.com>
>> Date: Tue, 07 Apr 2009 07:35:56 -0400
>>
>> On Mon, 2009-04-06 at 18:41 +0100, Hugo Mills wrote:
>>> There seems to be some issue over changing the names of the device
>>> that a btrfs filesystem lives on:
>>>
>>> # lvcreate scratch -n fstest -L 2G
>>> Logical volume "fstest" created
>>> # mkfs -t btrfs /dev/scratch/fstest
>>>
>>> WARNING! - Btrfs v0.18-ge3b0f66 IS EXPERIMENTAL
>>> WARNING! - see http://btrfs.wiki.kernel.org before using
>>>
>>> fs created label (null) on /dev/scratch/fs1
>>> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.00GB
>>> Btrfs v0.18-ge3b0f66
>>>
>>> # mount /dev/scratch/fstest /mnt
>>> # umount /mnt
>>>
>>> # lvrename scratch fstest derek
>>> Renamed "fstest" to "derek" in volume group
"scratch"
>>> # mount /dev/scratch/derek /mnt
>>> mount: /dev/mapper/scratch-derek: can''t read superblock
>>>
>>> # lvrename scratch derek fstest
>>> Renamed "derek" to "fstest" in volume group
"scratch"
>>> # mount /dev/scratch/fstest /mnt
>>> [success]
>>>
>>> The rename works properly on a completely virgin filesystem, but
>>> not on one that''s been mounted and unmounted (as above).
>>
>> Whoops, we need to reset the pathname when a probe finds a given dev
>> uuid on a given device. I''ll patch it up when I get back next
week.
>>
>> Thanks for this bug report.
>>
>> -chris
> --
> 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
-- 
taruisi
--
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
Yang Hongyang
2010-Feb-09  05:23 UTC
Re: [PATCH]btrfs: Update existing btrfs_device for renaming device
TARUISI Hiroaki wrote:> This patch updates device name in btrfs device. > We can mount a device if its name are changed. > > Signed-off-by: TARUISI Hiroaki <taruishi.hiroak@jp.fujitsu.com> > --- > fs/btrfs/volumes.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > Index: b/fs/btrfs/volumes.c > ==================================================================> --- a/fs/btrfs/volumes.c 2010-02-09 12:11:33.000000000 +0900 > +++ b/fs/btrfs/volumes.c 2010-02-09 12:43:29.000000000 +0900 > @@ -365,6 +365,7 @@ static noinline int device_list_add(cons > struct btrfs_device *device; > struct btrfs_fs_devices *fs_devices; > u64 found_transid = btrfs_super_generation(disk_super); > + char *name; > > fs_devices = find_fsid(disk_super->fsid); > if (!fs_devices) { > @@ -411,6 +412,12 @@ static noinline int device_list_add(cons > > device->fs_devices = fs_devices; > fs_devices->num_devices++; > + } else if (strcmp(device->name, path)) { > + name = kstrdup(path, GFP_NOFS); > + if (!device->name)It should be "if (!name)" here?> + return -ENOMEM; > + kfree(device->name); > + device->name = name; > } > > if (found_transid > fs_devices->latest_trans) { > > (2009/11/08 6:44), Gustavo Alves wrote: >> Hi Chris, >> >> I found the same problem on 2.6.32-0.33.rc5.git1 with btrfs-progs >> 0.19. This problem is already fixed? >> >> Thanks >> >> ---- >> Gustavo Junior Alves >> Specchio Soluções em TI >> http://specchio.inf.br >> Tel: +55 19 9223-0500 >> >> >>> From: Chris Mason <chris.mason_ät_oracle.com> >>> Date: Tue, 07 Apr 2009 07:35:56 -0400 >>> >>> On Mon, 2009-04-06 at 18:41 +0100, Hugo Mills wrote: >>>> There seems to be some issue over changing the names of the device >>>> that a btrfs filesystem lives on: >>>> >>>> # lvcreate scratch -n fstest -L 2G >>>> Logical volume "fstest" created >>>> # mkfs -t btrfs /dev/scratch/fstest >>>> >>>> WARNING! - Btrfs v0.18-ge3b0f66 IS EXPERIMENTAL >>>> WARNING! - see http://btrfs.wiki.kernel.org before using >>>> >>>> fs created label (null) on /dev/scratch/fs1 >>>> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.00GB >>>> Btrfs v0.18-ge3b0f66 >>>> >>>> # mount /dev/scratch/fstest /mnt >>>> # umount /mnt >>>> >>>> # lvrename scratch fstest derek >>>> Renamed "fstest" to "derek" in volume group "scratch" >>>> # mount /dev/scratch/derek /mnt >>>> mount: /dev/mapper/scratch-derek: can''t read superblock >>>> >>>> # lvrename scratch derek fstest >>>> Renamed "derek" to "fstest" in volume group "scratch" >>>> # mount /dev/scratch/fstest /mnt >>>> [success] >>>> >>>> The rename works properly on a completely virgin filesystem, but >>>> not on one that''s been mounted and unmounted (as above). >>> Whoops, we need to reset the pathname when a probe finds a given dev >>> uuid on a given device. I''ll patch it up when I get back next week. >>> >>> Thanks for this bug report. >>> >>> -chris >> -- >> 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 > >-- Regards Yang Hongyang -- 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
TARUISI Hiroaki
2010-Feb-09  06:28 UTC
Re: [PATCH]btrfs: Update existing btrfs_device for renaming device
Yes, exactly. I''ll fix this. Thanks. Regards, taruisi (2010/02/09 14:23), Yang Hongyang wrote:> TARUISI Hiroaki wrote: >> This patch updates device name in btrfs device. >> We can mount a device if its name are changed. >> >> Signed-off-by: TARUISI Hiroaki <taruishi.hiroak@jp.fujitsu.com> >> --- >> fs/btrfs/volumes.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> Index: b/fs/btrfs/volumes.c >> ==================================================================>> --- a/fs/btrfs/volumes.c 2010-02-09 12:11:33.000000000 +0900 >> +++ b/fs/btrfs/volumes.c 2010-02-09 12:43:29.000000000 +0900 >> @@ -365,6 +365,7 @@ static noinline int device_list_add(cons >> struct btrfs_device *device; >> struct btrfs_fs_devices *fs_devices; >> u64 found_transid = btrfs_super_generation(disk_super); >> + char *name; >> >> fs_devices = find_fsid(disk_super->fsid); >> if (!fs_devices) { >> @@ -411,6 +412,12 @@ static noinline int device_list_add(cons >> >> device->fs_devices = fs_devices; >> fs_devices->num_devices++; >> + } else if (strcmp(device->name, path)) { >> + name = kstrdup(path, GFP_NOFS); >> + if (!device->name) > > It should be "if (!name)" here? > >> + return -ENOMEM; >> + kfree(device->name); >> + device->name = name; >> } >> >> if (found_transid > fs_devices->latest_trans) { >> >> (2009/11/08 6:44), Gustavo Alves wrote: >>> Hi Chris, >>> >>> I found the same problem on 2.6.32-0.33.rc5.git1 with btrfs-progs >>> 0.19. This problem is already fixed? >>> >>> Thanks >>> >>> ---- >>> Gustavo Junior Alves >>> Specchio Soluções em TI >>> http://specchio.inf.br >>> Tel: +55 19 9223-0500 >>> >>> >>>> From: Chris Mason <chris.mason_ät_oracle.com> >>>> Date: Tue, 07 Apr 2009 07:35:56 -0400 >>>> >>>> On Mon, 2009-04-06 at 18:41 +0100, Hugo Mills wrote: >>>>> There seems to be some issue over changing the names of the device >>>>> that a btrfs filesystem lives on: >>>>> >>>>> # lvcreate scratch -n fstest -L 2G >>>>> Logical volume "fstest" created >>>>> # mkfs -t btrfs /dev/scratch/fstest >>>>> >>>>> WARNING! - Btrfs v0.18-ge3b0f66 IS EXPERIMENTAL >>>>> WARNING! - see http://btrfs.wiki.kernel.org before using >>>>> >>>>> fs created label (null) on /dev/scratch/fs1 >>>>> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.00GB >>>>> Btrfs v0.18-ge3b0f66 >>>>> >>>>> # mount /dev/scratch/fstest /mnt >>>>> # umount /mnt >>>>> >>>>> # lvrename scratch fstest derek >>>>> Renamed "fstest" to "derek" in volume group "scratch" >>>>> # mount /dev/scratch/derek /mnt >>>>> mount: /dev/mapper/scratch-derek: can''t read superblock >>>>> >>>>> # lvrename scratch derek fstest >>>>> Renamed "derek" to "fstest" in volume group "scratch" >>>>> # mount /dev/scratch/fstest /mnt >>>>> [success] >>>>> >>>>> The rename works properly on a completely virgin filesystem, but >>>>> not on one that''s been mounted and unmounted (as above). >>>> Whoops, we need to reset the pathname when a probe finds a given dev >>>> uuid on a given device. I''ll patch it up when I get back next week. >>>> >>>> Thanks for this bug report. >>>> >>>> -chris >>> -- >>> 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 >> >> > >-- 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
TARUISI Hiroaki
2010-Feb-09  06:36 UTC
[PATCH v2]btrfs: Update existing btrfs_device for renaming device
This patch updates device name in btrfs device information.
We can mount a device if its name are changed.
Signed-off-by: TARUISI Hiroaki <taruishi.hiroak@jp.fujitsu.com>
---
 fs/btrfs/volumes.c |    7 +++++++
 1 file changed, 7 insertions(+)
Index: b/fs/btrfs/volumes.c
==================================================================---
a/fs/btrfs/volumes.c	2010-02-09 12:11:33.000000000 +0900
+++ b/fs/btrfs/volumes.c	2010-02-09 13:54:39.000000000 +0900
@@ -365,6 +365,7 @@ static noinline int device_list_add(cons
 	struct btrfs_device *device;
 	struct btrfs_fs_devices *fs_devices;
 	u64 found_transid = btrfs_super_generation(disk_super);
+	char *name;
 	fs_devices = find_fsid(disk_super->fsid);
 	if (!fs_devices) {
@@ -411,6 +412,12 @@ static noinline int device_list_add(cons
 		device->fs_devices = fs_devices;
 		fs_devices->num_devices++;
+	} else if (strcmp(device->name, path)) {
+		name = kstrdup(path, GFP_NOFS);
+		if (!name)
+			return -ENOMEM;
+		kfree(device->name);
+		device->name = name;
 	}
 	if (found_transid > fs_devices->latest_trans) {
(2009/11/08 6:44), Gustavo Alves wrote:> Hi Chris,
> 
> I found the same problem on 2.6.32-0.33.rc5.git1 with btrfs-progs
> 0.19. This problem is already fixed?
> 
> Thanks
> 
> ----
> Gustavo Junior Alves
> Specchio Soluções em TI
> http://specchio.inf.br
> Tel: +55 19 9223-0500
> 
> 
>> From: Chris Mason <chris.mason_ät_oracle.com>
>> Date: Tue, 07 Apr 2009 07:35:56 -0400
>>
>> On Mon, 2009-04-06 at 18:41 +0100, Hugo Mills wrote:
>>> There seems to be some issue over changing the names of the device
>>> that a btrfs filesystem lives on:
>>>
>>> # lvcreate scratch -n fstest -L 2G
>>> Logical volume "fstest" created
>>> # mkfs -t btrfs /dev/scratch/fstest
>>>
>>> WARNING! - Btrfs v0.18-ge3b0f66 IS EXPERIMENTAL
>>> WARNING! - see http://btrfs.wiki.kernel.org before using
>>>
>>> fs created label (null) on /dev/scratch/fs1
>>> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.00GB
>>> Btrfs v0.18-ge3b0f66
>>>
>>> # mount /dev/scratch/fstest /mnt
>>> # umount /mnt
>>>
>>> # lvrename scratch fstest derek
>>> Renamed "fstest" to "derek" in volume group
"scratch"
>>> # mount /dev/scratch/derek /mnt
>>> mount: /dev/mapper/scratch-derek: can''t read superblock
>>>
>>> # lvrename scratch derek fstest
>>> Renamed "derek" to "fstest" in volume group
"scratch"
>>> # mount /dev/scratch/fstest /mnt
>>> [success]
>>>
>>> The rename works properly on a completely virgin filesystem, but
>>> not on one that''s been mounted and unmounted (as above).
>>
>> Whoops, we need to reset the pathname when a probe finds a given dev
>> uuid on a given device. I''ll patch it up when I get back next
week.
>>
>> Thanks for this bug report.
>>
>> -chris
> --
> 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
-- 
taruisi
--
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