Lines Matching full:es
37 struct exfat_entry_set_cache es; in exfat_get_uniname_from_ext_entry() local
40 err = exfat_get_dentry_set(&es, sb, p_dir, entry, ES_ALL_ENTRIES); in exfat_get_uniname_from_ext_entry()
50 for (i = ES_IDX_FIRST_FILENAME; i < es.num_entries; i++) { in exfat_get_uniname_from_ext_entry()
51 struct exfat_dentry *ep = exfat_get_dentry_cached(&es, i); in exfat_get_uniname_from_ext_entry()
64 exfat_put_dentry_set(&es, false); in exfat_get_uniname_from_ext_entry()
423 void exfat_init_dir_entry(struct exfat_entry_set_cache *es, in exfat_init_dir_entry() argument
427 struct super_block *sb = es->sb; in exfat_init_dir_entry()
431 ep = exfat_get_dentry_cached(es, ES_IDX_FILE); in exfat_init_dir_entry()
450 ep = exfat_get_dentry_cached(es, ES_IDX_STREAM); in exfat_init_dir_entry()
473 void exfat_init_ext_entry(struct exfat_entry_set_cache *es, int num_entries, in exfat_init_ext_entry() argument
480 es->num_entries = num_entries; in exfat_init_ext_entry()
481 ep = exfat_get_dentry_cached(es, ES_IDX_FILE); in exfat_init_ext_entry()
484 ep = exfat_get_dentry_cached(es, ES_IDX_STREAM); in exfat_init_ext_entry()
489 ep = exfat_get_dentry_cached(es, i); in exfat_init_ext_entry()
494 exfat_update_dir_chksum(es); in exfat_init_ext_entry()
497 void exfat_remove_entries(struct inode *inode, struct exfat_entry_set_cache *es, in exfat_remove_entries() argument
503 for (i = order; i < es->num_entries; i++) { in exfat_remove_entries()
504 ep = exfat_get_dentry_cached(es, i); in exfat_remove_entries()
512 if (order < es->num_entries) in exfat_remove_entries()
513 es->modified = true; in exfat_remove_entries()
516 void exfat_update_dir_chksum(struct exfat_entry_set_cache *es) in exfat_update_dir_chksum() argument
522 for (i = ES_IDX_FILE; i < es->num_entries; i++) { in exfat_update_dir_chksum()
523 ep = exfat_get_dentry_cached(es, i); in exfat_update_dir_chksum()
528 ep = exfat_get_dentry_cached(es, ES_IDX_FILE); in exfat_update_dir_chksum()
530 es->modified = true; in exfat_update_dir_chksum()
533 int exfat_put_dentry_set(struct exfat_entry_set_cache *es, int sync) in exfat_put_dentry_set() argument
537 if (es->modified) in exfat_put_dentry_set()
538 err = exfat_update_bhs(es->bh, es->num_bh, sync); in exfat_put_dentry_set()
540 for (i = 0; i < es->num_bh; i++) in exfat_put_dentry_set()
542 bforget(es->bh[i]); in exfat_put_dentry_set()
544 brelse(es->bh[i]); in exfat_put_dentry_set()
546 if (IS_DYNAMIC_ES(es)) in exfat_put_dentry_set()
547 kfree(es->bh); in exfat_put_dentry_set()
672 struct exfat_entry_set_cache *es, int num) in exfat_get_dentry_cached() argument
674 int off = es->start_off + num * DENTRY_SIZE; in exfat_get_dentry_cached()
675 struct buffer_head *bh = es->bh[EXFAT_B_TO_BLK(off, es->sb)]; in exfat_get_dentry_cached()
676 char *p = bh->b_data + EXFAT_BLK_OFFSET(off, es->sb); in exfat_get_dentry_cached()
691 * It will be set to es->num_entries if it is not 0.
692 * If num_entries is 0, es->num_entries will be obtained
695 * es: pointer of entry set on success.
700 static int __exfat_get_dentry_set(struct exfat_entry_set_cache *es, in __exfat_get_dentry_set() argument
719 memset(es, 0, sizeof(*es)); in __exfat_get_dentry_set()
720 es->sb = sb; in __exfat_get_dentry_set()
721 es->modified = false; in __exfat_get_dentry_set()
722 es->start_off = off; in __exfat_get_dentry_set()
723 es->bh = es->__bh; in __exfat_get_dentry_set()
728 es->bh[es->num_bh++] = bh; in __exfat_get_dentry_set()
733 ep = exfat_get_dentry_cached(es, ES_IDX_FILE); in __exfat_get_dentry_set()
742 es->num_entries = num_entries; in __exfat_get_dentry_set()
745 if (num_bh > ARRAY_SIZE(es->__bh)) { in __exfat_get_dentry_set()
746 es->bh = kmalloc_objs(*es->bh, num_bh, GFP_NOFS); in __exfat_get_dentry_set()
747 if (!es->bh) { in __exfat_get_dentry_set()
751 es->bh[0] = bh; in __exfat_get_dentry_set()
769 es->bh[es->num_bh++] = bh; in __exfat_get_dentry_set()
775 exfat_put_dentry_set(es, false); in __exfat_get_dentry_set()
779 int exfat_get_dentry_set(struct exfat_entry_set_cache *es, in exfat_get_dentry_set() argument
787 ret = __exfat_get_dentry_set(es, sb, p_dir, entry, num_entries); in exfat_get_dentry_set()
792 for (i = ES_IDX_STREAM; i < es->num_entries; i++) { in exfat_get_dentry_set()
793 ep = exfat_get_dentry_cached(es, i); in exfat_get_dentry_set()
800 exfat_put_dentry_set(es, false); in exfat_get_dentry_set()
804 static int exfat_validate_empty_dentry_set(struct exfat_entry_set_cache *es) in exfat_validate_empty_dentry_set() argument
817 for (i = 0; i < es->num_entries; i++) { in exfat_validate_empty_dentry_set()
818 ep = exfat_get_dentry_cached(es, i); in exfat_validate_empty_dentry_set()
832 off = es->start_off + (i << DENTRY_SIZE_BITS); in exfat_validate_empty_dentry_set()
833 bh = es->bh[EXFAT_B_TO_BLK(off, es->sb)]; in exfat_validate_empty_dentry_set()
835 exfat_fs_error(es->sb, in exfat_validate_empty_dentry_set()
842 es->num_entries = EXFAT_B_TO_DEN(EXFAT_BLK_TO_B(es->num_bh, es->sb) - es->start_off); in exfat_validate_empty_dentry_set()
843 for (; i < es->num_entries; i++) { in exfat_validate_empty_dentry_set()
844 ep = exfat_get_dentry_cached(es, i); in exfat_validate_empty_dentry_set()
859 * es: pointer of empty dentry set on success.
866 int exfat_get_empty_dentry_set(struct exfat_entry_set_cache *es, in exfat_get_empty_dentry_set() argument
872 ret = __exfat_get_dentry_set(es, sb, p_dir, entry, num_entries); in exfat_get_empty_dentry_set()
876 ret = exfat_validate_empty_dentry_set(es); in exfat_get_empty_dentry_set()
878 exfat_put_dentry_set(es, false); in exfat_get_empty_dentry_set()
1173 struct exfat_entry_set_cache *es) in exfat_get_volume_label_dentry() argument
1213 memset(es, 0, sizeof(*es)); in exfat_get_volume_label_dentry()
1214 es->sb = sb; in exfat_get_volume_label_dentry()
1215 es->bh = es->__bh; in exfat_get_volume_label_dentry()
1216 es->bh[0] = bh; in exfat_get_volume_label_dentry()
1217 es->num_bh = 1; in exfat_get_volume_label_dentry()
1218 es->start_off = EXFAT_DEN_TO_B(i) % sb->s_blocksize; in exfat_get_volume_label_dentry()
1243 struct exfat_entry_set_cache es; in exfat_read_volume_label() local
1249 ret = exfat_get_volume_label_dentry(sb, &es); in exfat_read_volume_label()
1261 ep = exfat_get_dentry_cached(&es, 0); in exfat_read_volume_label()
1265 exfat_put_dentry_set(&es, false); in exfat_read_volume_label()
1272 exfat_put_dentry_set(&es, false); in exfat_read_volume_label()
1284 struct exfat_entry_set_cache es; in exfat_write_volume_label() local
1293 ret = exfat_get_volume_label_dentry(sb, &es); in exfat_write_volume_label()
1301 ret = exfat_find_empty_entry(root_inode, &clu, 1, &es); in exfat_write_volume_label()
1307 ep = exfat_get_dentry_cached(&es, 0); in exfat_write_volume_label()
1311 exfat_put_dentry_set(&es, 0); in exfat_write_volume_label()
1323 es.modified = true; in exfat_write_volume_label()
1325 ret = exfat_put_dentry_set(&es, IS_DIRSYNC(root_inode)); in exfat_write_volume_label()