14
14
#define RST_TEST_NUM_DEVICES (2)
15
15
#define RST_TEST_RAID1_TYPE (BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_RAID1)
16
16
17
+ #define SZ_48K (SZ_32K + SZ_16K)
18
+
17
19
typedef int (* test_func_t )(struct btrfs_trans_handle * trans );
18
20
19
21
static struct btrfs_device * btrfs_device_by_devid (struct btrfs_fs_devices * fs_devices ,
@@ -94,32 +96,32 @@ static int test_front_delete(struct btrfs_trans_handle *trans)
94
96
goto out ;
95
97
}
96
98
97
- ret = btrfs_delete_raid_extent (trans , logical , SZ_32K );
99
+ ret = btrfs_delete_raid_extent (trans , logical , SZ_16K );
98
100
if (ret ) {
99
101
test_err ("deleting RAID extent [%llu, %llu] failed" , logical ,
100
- logical + SZ_32K );
102
+ logical + SZ_16K );
101
103
goto out ;
102
104
}
103
105
104
- len = SZ_32K ;
105
- ret = btrfs_get_raid_extent_offset (fs_info , logical + SZ_32K , & len ,
106
+ len -= SZ_16K ;
107
+ ret = btrfs_get_raid_extent_offset (fs_info , logical + SZ_16K , & len ,
106
108
map_type , 0 , & io_stripe );
107
109
if (ret ) {
108
110
test_err ("lookup of RAID extent [%llu, %llu] failed" ,
109
- logical + SZ_32K , logical + SZ_32K + len );
111
+ logical + SZ_16K , logical + SZ_64K );
110
112
goto out ;
111
113
}
112
114
113
- if (io_stripe .physical != logical + SZ_32K ) {
115
+ if (io_stripe .physical != logical + SZ_16K ) {
114
116
test_err ("invalid physical address, expected %llu, got %llu" ,
115
- logical + SZ_32K , io_stripe .physical );
117
+ logical + SZ_16K , io_stripe .physical );
116
118
ret = - EINVAL ;
117
119
goto out ;
118
120
}
119
121
120
- if (len != SZ_32K ) {
122
+ if (len != SZ_48K ) {
121
123
test_err ("invalid stripe length, expected %llu, got %llu" ,
122
- (u64 )SZ_32K , len );
124
+ (u64 )SZ_48K , len );
123
125
ret = - EINVAL ;
124
126
goto out ;
125
127
}
@@ -128,11 +130,11 @@ static int test_front_delete(struct btrfs_trans_handle *trans)
128
130
if (ret != - ENODATA ) {
129
131
ret = - EINVAL ;
130
132
test_err ("lookup of RAID extent [%llu, %llu] succeeded, should fail" ,
131
- logical , logical + SZ_32K );
133
+ logical , logical + SZ_16K );
132
134
goto out ;
133
135
}
134
136
135
- ret = btrfs_delete_raid_extent (trans , logical + SZ_32K , SZ_32K );
137
+ ret = btrfs_delete_raid_extent (trans , logical + SZ_16K , SZ_48K );
136
138
out :
137
139
btrfs_put_bioc (bioc );
138
140
return ret ;
@@ -209,14 +211,14 @@ static int test_tail_delete(struct btrfs_trans_handle *trans)
209
211
goto out ;
210
212
}
211
213
212
- ret = btrfs_delete_raid_extent (trans , logical + SZ_32K , SZ_32K );
214
+ ret = btrfs_delete_raid_extent (trans , logical + SZ_48K , SZ_16K );
213
215
if (ret ) {
214
216
test_err ("deleting RAID extent [%llu, %llu] failed" ,
215
- logical + SZ_32K , logical + SZ_64K );
217
+ logical + SZ_48K , logical + SZ_64K );
216
218
goto out ;
217
219
}
218
220
219
- len = SZ_32K ;
221
+ len = SZ_48K ;
220
222
ret = btrfs_get_raid_extent_offset (fs_info , logical , & len , map_type , 0 , & io_stripe );
221
223
if (ret ) {
222
224
test_err ("lookup of RAID extent [%llu, %llu] failed" , logical ,
@@ -231,9 +233,19 @@ static int test_tail_delete(struct btrfs_trans_handle *trans)
231
233
goto out ;
232
234
}
233
235
234
- if (len != SZ_32K ) {
236
+ if (len != SZ_48K ) {
235
237
test_err ("invalid stripe length, expected %llu, got %llu" ,
236
- (u64 )SZ_32K , len );
238
+ (u64 )SZ_48K , len );
239
+ ret = - EINVAL ;
240
+ goto out ;
241
+ }
242
+
243
+ len = SZ_16K ;
244
+ ret = btrfs_get_raid_extent_offset (fs_info , logical + SZ_48K , & len ,
245
+ map_type , 0 , & io_stripe );
246
+ if (ret != - ENODATA ) {
247
+ test_err ("lookup of RAID extent [%llu, %llu] succeeded should fail" ,
248
+ logical + SZ_48K , logical + SZ_64K );
237
249
ret = - EINVAL ;
238
250
goto out ;
239
251
}
0 commit comments