• Home
  • Raw
  • Download

Lines Matching refs:mydata

106 static int flush_dirty_fat_buffer(fsdata *mydata)  in flush_dirty_fat_buffer()  argument
109 __u32 fatlength = mydata->fatlength; in flush_dirty_fat_buffer()
110 __u8 *bufptr = mydata->fatbuf; in flush_dirty_fat_buffer()
111 __u32 startblock = mydata->fatbufnum * FATBUFBLOCKS; in flush_dirty_fat_buffer()
113 debug("debug: evicting %d, dirty: %d\n", mydata->fatbufnum, in flush_dirty_fat_buffer()
114 (int)mydata->fat_dirty); in flush_dirty_fat_buffer()
116 if ((!mydata->fat_dirty) || (mydata->fatbufnum == -1)) in flush_dirty_fat_buffer()
123 startblock += mydata->fat_sect; in flush_dirty_fat_buffer()
133 startblock += mydata->fatlength; in flush_dirty_fat_buffer()
139 mydata->fat_dirty = 0; in flush_dirty_fat_buffer()
213 static int is_next_clust(fsdata *mydata, dir_entry *dentptr);
214 static void flush_dir_table(fsdata *mydata, dir_entry **dentptr);
221 fill_dir_slot(fsdata *mydata, dir_entry **dentptr, const char *l_name) in fill_dir_slot() argument
244 if (is_next_clust(mydata, *dentptr)) { in fill_dir_slot()
246 flush_dir_table(mydata, dentptr); in fill_dir_slot()
254 if (is_next_clust(mydata, *dentptr)) { in fill_dir_slot()
256 flush_dir_table(mydata, dentptr); in fill_dir_slot()
272 get_long_file_name(fsdata *mydata, int curclust, __u8 *cluster, in get_long_file_name() argument
278 __u8 *buflimit = cluster + mydata->sect_size * ((curclust == 0) ? in get_long_file_name()
280 mydata->clust_size); in get_long_file_name()
301 curclust = get_fatent(mydata, dir_curclust); in get_long_file_name()
302 if (CHECK_CLUST(curclust, mydata->fatsize)) { in get_long_file_name()
310 if (get_cluster(mydata, curclust, get_contents_vfatname_block, in get_long_file_name()
311 mydata->clust_size * mydata->sect_size) != 0) { in get_long_file_name()
354 mydata->clust_size * mydata->sect_size); in get_long_file_name()
365 static int set_fatent_value(fsdata *mydata, __u32 entry, __u32 entry_value) in set_fatent_value() argument
370 switch (mydata->fatsize) { in set_fatent_value()
389 if (bufnum != mydata->fatbufnum) { in set_fatent_value()
391 __u8 *bufptr = mydata->fatbuf; in set_fatent_value()
392 __u32 fatlength = mydata->fatlength; in set_fatent_value()
399 if (flush_dirty_fat_buffer(mydata) < 0) in set_fatent_value()
402 startblock += mydata->fat_sect; in set_fatent_value()
408 mydata->fatbufnum = bufnum; in set_fatent_value()
412 mydata->fat_dirty = 1; in set_fatent_value()
415 switch (mydata->fatsize) { in set_fatent_value()
417 ((__u32 *) mydata->fatbuf)[offset] = cpu_to_le32(entry_value); in set_fatent_value()
420 ((__u16 *) mydata->fatbuf)[offset] = cpu_to_le16(entry_value); in set_fatent_value()
428 ((__u16 *)mydata->fatbuf)[off16] &= ~0xfff; in set_fatent_value()
429 ((__u16 *)mydata->fatbuf)[off16] |= val1; in set_fatent_value()
435 ((__u16 *)mydata->fatbuf)[off16] &= ~0xf000; in set_fatent_value()
436 ((__u16 *)mydata->fatbuf)[off16] |= (val1 << 12); in set_fatent_value()
438 ((__u16 *)mydata->fatbuf)[off16 + 1] &= ~0xff; in set_fatent_value()
439 ((__u16 *)mydata->fatbuf)[off16 + 1] |= val2; in set_fatent_value()
445 ((__u16 *)mydata->fatbuf)[off16] &= ~0xff00; in set_fatent_value()
446 ((__u16 *)mydata->fatbuf)[off16] |= (val1 << 8); in set_fatent_value()
448 ((__u16 *)mydata->fatbuf)[off16 + 1] &= ~0xf; in set_fatent_value()
449 ((__u16 *)mydata->fatbuf)[off16 + 1] |= val2; in set_fatent_value()
453 ((__u16 *)mydata->fatbuf)[off16] &= ~0xfff0; in set_fatent_value()
454 ((__u16 *)mydata->fatbuf)[off16] |= (val1 << 4); in set_fatent_value()
472 static __u32 determine_fatent(fsdata *mydata, __u32 entry) in determine_fatent() argument
477 next_fat = get_fatent(mydata, next_entry); in determine_fatent()
480 set_fatent_value(mydata, entry, next_entry); in determine_fatent()
486 mydata->fatsize, entry, next_entry); in determine_fatent()
496 set_cluster(fsdata *mydata, __u32 clustnum, __u8 *buffer, in set_cluster() argument
504 startsect = clust_to_sect(mydata, clustnum); in set_cluster()
506 startsect = mydata->rootdir_sect; in set_cluster()
511 ALLOC_CACHE_ALIGN_BUFFER(__u8, tmpbuf, mydata->sect_size); in set_cluster()
515 while (size >= mydata->sect_size) { in set_cluster()
516 memcpy(tmpbuf, buffer, mydata->sect_size); in set_cluster()
523 buffer += mydata->sect_size; in set_cluster()
524 size -= mydata->sect_size; in set_cluster()
526 } else if (size >= mydata->sect_size) { in set_cluster()
527 idx = size / mydata->sect_size; in set_cluster()
535 idx *= mydata->sect_size; in set_cluster()
541 ALLOC_CACHE_ALIGN_BUFFER(__u8, tmpbuf, mydata->sect_size); in set_cluster()
557 static int find_empty_cluster(fsdata *mydata) in find_empty_cluster() argument
562 fat_val = get_fatent(mydata, entry); in find_empty_cluster()
574 static void flush_dir_table(fsdata *mydata, dir_entry **dentptr) in flush_dir_table() argument
578 if (set_cluster(mydata, dir_curclust, in flush_dir_table()
580 mydata->clust_size * mydata->sect_size) != 0) { in flush_dir_table()
584 dir_newclust = find_empty_cluster(mydata); in flush_dir_table()
585 set_fatent_value(mydata, dir_curclust, dir_newclust); in flush_dir_table()
586 if (mydata->fatsize == 32) in flush_dir_table()
587 set_fatent_value(mydata, dir_newclust, 0xffffff8); in flush_dir_table()
588 else if (mydata->fatsize == 16) in flush_dir_table()
589 set_fatent_value(mydata, dir_newclust, 0xfff8); in flush_dir_table()
590 else if (mydata->fatsize == 12) in flush_dir_table()
591 set_fatent_value(mydata, dir_newclust, 0xff8); in flush_dir_table()
595 if (flush_dirty_fat_buffer(mydata) < 0) in flush_dir_table()
599 mydata->clust_size * mydata->sect_size); in flush_dir_table()
607 static int clear_fatent(fsdata *mydata, __u32 entry) in clear_fatent() argument
611 while (!CHECK_CLUST(entry, mydata->fatsize)) { in clear_fatent()
612 fat_val = get_fatent(mydata, entry); in clear_fatent()
614 set_fatent_value(mydata, entry, 0); in clear_fatent()
622 if (flush_dirty_fat_buffer(mydata) < 0) in clear_fatent()
635 set_contents(fsdata *mydata, dir_entry *dentptr, __u8 *buffer, in set_contents() argument
639 unsigned int bytesperclust = mydata->clust_size * mydata->sect_size; in set_contents()
665 newclust = determine_fatent(mydata, endclust); in set_contents()
670 if (CHECK_CLUST(newclust, mydata->fatsize)) { in set_contents()
681 if (set_cluster(mydata, curclust, buffer, (int)actsize) != 0) { in set_contents()
688 if (mydata->fatsize == 12) in set_contents()
690 else if (mydata->fatsize == 16) in set_contents()
692 else if (mydata->fatsize == 32) in set_contents()
694 set_fatent_value(mydata, endclust, newclust); in set_contents()
698 if (set_cluster(mydata, curclust, buffer, (int)actsize) != 0) { in set_contents()
706 if (CHECK_CLUST(newclust, mydata->fatsize)) { in set_contents()
719 static void set_start_cluster(const fsdata *mydata, dir_entry *dentptr, in set_start_cluster() argument
722 if (mydata->fatsize == 32) in set_start_cluster()
731 static void fill_dentry(fsdata *mydata, dir_entry *dentptr, in fill_dentry() argument
734 set_start_cluster(mydata, dentptr, start_cluster); in fill_dentry()
747 static int check_overflow(fsdata *mydata, __u32 clustnum, loff_t size) in check_overflow() argument
752 startsect = clust_to_sect(mydata, clustnum); in check_overflow()
754 startsect = mydata->rootdir_sect; in check_overflow()
757 sect_num = div_u64_rem(size, mydata->sect_size, &offset); in check_overflow()
770 static int is_next_clust(fsdata *mydata, dir_entry *dentptr) in is_next_clust() argument
776 if (cur_position >= mydata->clust_size * mydata->sect_size) in is_next_clust()
788 static dir_entry *find_directory_entry(fsdata *mydata, int startsect, in find_directory_entry() argument
791 __u32 curclust = sect_to_clust(mydata, startsect); in find_directory_entry()
800 if (get_cluster(mydata, curclust, get_dentfromdir_block, in find_directory_entry()
801 mydata->clust_size * mydata->sect_size) != 0) { in find_directory_entry()
816 if (is_next_clust(mydata, dentptr)) in find_directory_entry()
823 get_long_file_name(mydata, curclust, in find_directory_entry()
830 if (is_next_clust(mydata, dentptr)) in find_directory_entry()
848 if (is_next_clust(mydata, dentptr)) in find_directory_entry()
876 if (mydata->fatsize != 32 && (int)curclust <= 1) { in find_directory_entry()
887 curclust = get_fatent(mydata, dir_curclust); in find_directory_entry()
888 if (IS_LAST_CLUST(curclust, mydata->fatsize)) { in find_directory_entry()
892 if (CHECK_CLUST(curclust, mydata->fatsize)) { in find_directory_entry()
911 fsdata *mydata = &datablock; in do_fat_write() local
919 if (read_bootsectandvi(&bs, &volinfo, &mydata->fatsize)) { in do_fat_write()
928 if (mydata->fatsize == 32) in do_fat_write()
929 mydata->fatlength = bs.fat32_length; in do_fat_write()
931 mydata->fatlength = bs.fat_length; in do_fat_write()
933 mydata->fat_sect = bs.reserved; in do_fat_write()
935 cursect = mydata->rootdir_sect in do_fat_write()
936 = mydata->fat_sect + mydata->fatlength * bs.fats; in do_fat_write()
939 mydata->sect_size = (bs.sector_size[1] << 8) + bs.sector_size[0]; in do_fat_write()
940 mydata->clust_size = bs.cluster_size; in do_fat_write()
942 if (mydata->fatsize == 32) { in do_fat_write()
943 mydata->data_begin = mydata->rootdir_sect - in do_fat_write()
944 (mydata->clust_size * 2); in do_fat_write()
951 mydata->sect_size; in do_fat_write()
952 mydata->data_begin = mydata->rootdir_sect + in do_fat_write()
954 (mydata->clust_size * 2); in do_fat_write()
957 mydata->fatbufnum = -1; in do_fat_write()
958 mydata->fat_dirty = 0; in do_fat_write()
959 mydata->fatbuf = memalign(ARCH_DMA_MINALIGN, FATBUFSIZE); in do_fat_write()
960 if (mydata->fatbuf == NULL) { in do_fat_write()
966 (mydata->fatsize == 32) ? in do_fat_write()
967 (mydata->clust_size) : in do_fat_write()
982 startsect = mydata->rootdir_sect; in do_fat_write()
983 retdent = find_directory_entry(mydata, startsect, in do_fat_write()
992 ret = check_overflow(mydata, start_cluster, in do_fat_write()
1000 ret = clear_fatent(mydata, start_cluster); in do_fat_write()
1007 set_start_cluster(mydata, retdent, 0); in do_fat_write()
1009 ret = start_cluster = find_empty_cluster(mydata); in do_fat_write()
1015 ret = check_overflow(mydata, start_cluster, size); in do_fat_write()
1021 set_start_cluster(mydata, retdent, start_cluster); in do_fat_write()
1026 fill_dir_slot(mydata, &empty_dentptr, filename); in do_fat_write()
1029 ret = start_cluster = find_empty_cluster(mydata); in do_fat_write()
1035 ret = check_overflow(mydata, start_cluster, size); in do_fat_write()
1045 fill_dentry(mydata, empty_dentptr, filename, in do_fat_write()
1051 ret = set_contents(mydata, retdent, buffer, size, actwrite); in do_fat_write()
1059 ret = flush_dirty_fat_buffer(mydata); in do_fat_write()
1066 ret = set_cluster(mydata, dir_curclust, get_dentfromdir_block, in do_fat_write()
1067 mydata->clust_size * mydata->sect_size); in do_fat_write()
1072 free(mydata->fatbuf); in do_fat_write()