@@ -105,8 +105,8 @@ int btrfs_insert_xattr_item(struct btrfs_trans_handle *trans,
105
105
* to use for the second index (if one is created).
106
106
* Will return 0 or -ENOMEM
107
107
*/
108
- int btrfs_insert_dir_item (struct btrfs_trans_handle * trans , const char * name ,
109
- int name_len , struct btrfs_inode * dir ,
108
+ int btrfs_insert_dir_item (struct btrfs_trans_handle * trans ,
109
+ const struct qstr * name , struct btrfs_inode * dir ,
110
110
struct btrfs_key * location , u8 type , u64 index )
111
111
{
112
112
int ret = 0 ;
@@ -122,17 +122,17 @@ int btrfs_insert_dir_item(struct btrfs_trans_handle *trans, const char *name,
122
122
123
123
key .objectid = btrfs_ino (dir );
124
124
key .type = BTRFS_DIR_ITEM_KEY ;
125
- key .offset = btrfs_name_hash (name , name_len );
125
+ key .offset = btrfs_name_hash (name -> name , name -> len );
126
126
127
127
path = btrfs_alloc_path ();
128
128
if (!path )
129
129
return - ENOMEM ;
130
130
131
131
btrfs_cpu_key_to_disk (& disk_key , location );
132
132
133
- data_size = sizeof (* dir_item ) + name_len ;
133
+ data_size = sizeof (* dir_item ) + name -> len ;
134
134
dir_item = insert_with_overflow (trans , root , path , & key , data_size ,
135
- name , name_len );
135
+ name -> name , name -> len );
136
136
if (IS_ERR (dir_item )) {
137
137
ret = PTR_ERR (dir_item );
138
138
if (ret == - EEXIST )
@@ -144,11 +144,11 @@ int btrfs_insert_dir_item(struct btrfs_trans_handle *trans, const char *name,
144
144
btrfs_set_dir_item_key (leaf , dir_item , & disk_key );
145
145
btrfs_set_dir_type (leaf , dir_item , type );
146
146
btrfs_set_dir_data_len (leaf , dir_item , 0 );
147
- btrfs_set_dir_name_len (leaf , dir_item , name_len );
147
+ btrfs_set_dir_name_len (leaf , dir_item , name -> len );
148
148
btrfs_set_dir_transid (leaf , dir_item , trans -> transid );
149
149
name_ptr = (unsigned long )(dir_item + 1 );
150
150
151
- write_extent_buffer (leaf , name , name_ptr , name_len );
151
+ write_extent_buffer (leaf , name -> name , name_ptr , name -> len );
152
152
btrfs_mark_buffer_dirty (leaf );
153
153
154
154
second_insert :
@@ -159,7 +159,7 @@ int btrfs_insert_dir_item(struct btrfs_trans_handle *trans, const char *name,
159
159
}
160
160
btrfs_release_path (path );
161
161
162
- ret2 = btrfs_insert_delayed_dir_index (trans , name , name_len , dir ,
162
+ ret2 = btrfs_insert_delayed_dir_index (trans , name -> name , name -> len , dir ,
163
163
& disk_key , type , index );
164
164
out_free :
165
165
btrfs_free_path (path );
@@ -208,25 +208,26 @@ static struct btrfs_dir_item *btrfs_lookup_match_dir(
208
208
struct btrfs_dir_item * btrfs_lookup_dir_item (struct btrfs_trans_handle * trans ,
209
209
struct btrfs_root * root ,
210
210
struct btrfs_path * path , u64 dir ,
211
- const char * name , int name_len ,
211
+ const struct qstr * name ,
212
212
int mod )
213
213
{
214
214
struct btrfs_key key ;
215
215
struct btrfs_dir_item * di ;
216
216
217
217
key .objectid = dir ;
218
218
key .type = BTRFS_DIR_ITEM_KEY ;
219
- key .offset = btrfs_name_hash (name , name_len );
219
+ key .offset = btrfs_name_hash (name -> name , name -> len );
220
220
221
- di = btrfs_lookup_match_dir (trans , root , path , & key , name , name_len , mod );
221
+ di = btrfs_lookup_match_dir (trans , root , path , & key , name -> name ,
222
+ name -> len , mod );
222
223
if (IS_ERR (di ) && PTR_ERR (di ) == - ENOENT )
223
224
return NULL ;
224
225
225
226
return di ;
226
227
}
227
228
228
229
int btrfs_check_dir_item_collision (struct btrfs_root * root , u64 dir ,
229
- const char * name , int name_len )
230
+ const struct qstr * name )
230
231
{
231
232
int ret ;
232
233
struct btrfs_key key ;
@@ -242,9 +243,10 @@ int btrfs_check_dir_item_collision(struct btrfs_root *root, u64 dir,
242
243
243
244
key .objectid = dir ;
244
245
key .type = BTRFS_DIR_ITEM_KEY ;
245
- key .offset = btrfs_name_hash (name , name_len );
246
+ key .offset = btrfs_name_hash (name -> name , name -> len );
246
247
247
- di = btrfs_lookup_match_dir (NULL , root , path , & key , name , name_len , 0 );
248
+ di = btrfs_lookup_match_dir (NULL , root , path , & key , name -> name ,
249
+ name -> len , 0 );
248
250
if (IS_ERR (di )) {
249
251
ret = PTR_ERR (di );
250
252
/* Nothing found, we're safe */
@@ -264,11 +266,8 @@ int btrfs_check_dir_item_collision(struct btrfs_root *root, u64 dir,
264
266
goto out ;
265
267
}
266
268
267
- /*
268
- * see if there is room in the item to insert this
269
- * name
270
- */
271
- data_size = sizeof (* di ) + name_len ;
269
+ /* See if there is room in the item to insert this name. */
270
+ data_size = sizeof (* di ) + name -> len ;
272
271
leaf = path -> nodes [0 ];
273
272
slot = path -> slots [0 ];
274
273
if (data_size + btrfs_item_size (leaf , slot ) +
@@ -305,8 +304,7 @@ struct btrfs_dir_item *
305
304
btrfs_lookup_dir_index_item (struct btrfs_trans_handle * trans ,
306
305
struct btrfs_root * root ,
307
306
struct btrfs_path * path , u64 dir ,
308
- u64 index , const char * name , int name_len ,
309
- int mod )
307
+ u64 index , const struct qstr * name , int mod )
310
308
{
311
309
struct btrfs_dir_item * di ;
312
310
struct btrfs_key key ;
@@ -315,17 +313,17 @@ btrfs_lookup_dir_index_item(struct btrfs_trans_handle *trans,
315
313
key .type = BTRFS_DIR_INDEX_KEY ;
316
314
key .offset = index ;
317
315
318
- di = btrfs_lookup_match_dir (trans , root , path , & key , name , name_len , mod );
316
+ di = btrfs_lookup_match_dir (trans , root , path , & key , name -> name ,
317
+ name -> len , mod );
319
318
if (di == ERR_PTR (- ENOENT ))
320
319
return NULL ;
321
320
322
321
return di ;
323
322
}
324
323
325
324
struct btrfs_dir_item *
326
- btrfs_search_dir_index_item (struct btrfs_root * root ,
327
- struct btrfs_path * path , u64 dirid ,
328
- const char * name , int name_len )
325
+ btrfs_search_dir_index_item (struct btrfs_root * root , struct btrfs_path * path ,
326
+ u64 dirid , const struct qstr * name )
329
327
{
330
328
struct btrfs_dir_item * di ;
331
329
struct btrfs_key key ;
@@ -340,7 +338,7 @@ btrfs_search_dir_index_item(struct btrfs_root *root,
340
338
break ;
341
339
342
340
di = btrfs_match_dir_item_name (root -> fs_info , path ,
343
- name , name_len );
341
+ name -> name , name -> len );
344
342
if (di )
345
343
return di ;
346
344
}
0 commit comments