diff mbox

btrfs-porgs: fix xfstest btrfs/023 random failure

Message ID 1405589304-7174-1-git-send-email-anand.jain@oracle.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Anand Jain July 17, 2014, 9:28 a.m. UTC
xfstest btrfs/023 which does the following tests

create_group_profile "raid0"
check_group_profile "RAID0"

create_group_profile "raid1"
check_group_profile "RAID1"

create_group_profile "raid10"
check_group_profile "RAID10"

create_group_profile "raid5"
check_group_profile "RAID5"

create_group_profile "raid6"
check_group_profile "RAID6"

fails randomly with the error as below

 ERROR: device scan failed '/dev/sde' - Invalid argument

since failure is at random group profile it indicates to me that
btrfs kernel did not see the newly created btrfs on the device

To note: I have the following patch on the kernel which
is not yet integrated, but its not related to this bug.

btrfs: RFC: code optimize use btrfs_get_bdev_and_sb() at btrfs_scan_one_device
btrfs: looping 'mkfs.btrfs -f <dev>' may fail with EBUSY
btrfs: check generation as replace duplicates devid+uuid

This patch calls fsync() at btrfs_prepare_device().

With this btrfs/023 has NOT failed consistently for several long
iterations.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 utils.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

David Sterba July 29, 2014, 12:57 p.m. UTC | #1
On Thu, Jul 17, 2014 at 05:28:24PM +0800, Anand Jain wrote:
> xfstest btrfs/023 which does the following tests
> 
> create_group_profile "raid0"
> check_group_profile "RAID0"
> 
> create_group_profile "raid1"
> check_group_profile "RAID1"
> 
> create_group_profile "raid10"
> check_group_profile "RAID10"
> 
> create_group_profile "raid5"
> check_group_profile "RAID5"
> 
> create_group_profile "raid6"
> check_group_profile "RAID6"
> 
> fails randomly with the error as below
> 
>  ERROR: device scan failed '/dev/sde' - Invalid argument
> 
> since failure is at random group profile it indicates to me that
> btrfs kernel did not see the newly created btrfs on the device
> 
> To note: I have the following patch on the kernel which
> is not yet integrated, but its not related to this bug.
> 
> btrfs: RFC: code optimize use btrfs_get_bdev_and_sb() at btrfs_scan_one_device

I guess the error was caused by this patch, and the fsync just made the
race window smaller. If you still think the fsync is useful, please
update the changelog.
--
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
Anand Jain July 31, 2014, 7:07 a.m. UTC | #2
On 29/07/2014 20:57, David Sterba wrote:
> On Thu, Jul 17, 2014 at 05:28:24PM +0800, Anand Jain wrote:
>> xfstest btrfs/023 which does the following tests
>>
>> create_group_profile "raid0"
>> check_group_profile "RAID0"
>>
>> create_group_profile "raid1"
>> check_group_profile "RAID1"
>>
>> create_group_profile "raid10"
>> check_group_profile "RAID10"
>>
>> create_group_profile "raid5"
>> check_group_profile "RAID5"
>>
>> create_group_profile "raid6"
>> check_group_profile "RAID6"
>>
>> fails randomly with the error as below
>>
>>   ERROR: device scan failed '/dev/sde' - Invalid argument
>>
>> since failure is at random group profile it indicates to me that
>> btrfs kernel did not see the newly created btrfs on the device
>>
>> To note: I have the following patch on the kernel which
>> is not yet integrated, but its not related to this bug.
>>
>> btrfs: RFC: code optimize use btrfs_get_bdev_and_sb() at btrfs_scan_one_device
>
> I guess the error was caused by this patch,

   Yep. I got that understanding when you mentioned about the patch
       btrfs: access superblock via pagecache in scan_one_device

 > and the fsync just made the race window smaller. If you still think
 > the fsync is useful, please update the changelog.

   You mean I should put fsync at more correct places ?

Thanks, Anand

> --
> 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
David Sterba July 31, 2014, 12:01 p.m. UTC | #3
On Thu, Jul 31, 2014 at 03:07:39PM +0800, Anand Jain wrote:
> > and the fsync just made the race window smaller. If you still think
> > the fsync is useful, please update the changelog.
> 
>   You mean I should put fsync at more correct places ?

The fsync should not be necessary, but I haven't looked very closely.
--
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/utils.c b/utils.c
index fbc5bde..e144dfd 100644
--- a/utils.c
+++ b/utils.c
@@ -741,6 +741,8 @@  int btrfs_prepare_device(int fd, char *file, int zero_end, u64 *block_count_ret,
 	}
 	*block_count_ret = block_count;
 
+	fsync(fd);
+
 zero_dev_error:
 	if (ret < 0) {
 		fprintf(stderr, "ERROR: failed to zero device '%s' - %s\n",