static void find_subpartitions(phantom_disk_partition_t *p) { if( 0 == lookup_fs(p) ) return; lookup_old_pc_partitions(p); //lookup_phantom_fs(p); }
int make_dir(char * name){ if(lookup_fs(name, DIRECTORY)){ printk("\nAlready exist dir"); return 0; } inode * inode_i ; int new_inode_number ; int new_inode_sector ; int dir_index=find_parent_index(name); if(dir_index== -1){ printk("\n Required PARENT Directory doesn't Exist :: Create one and try again"); return 0; } new_inode_number = get_free_inode_block(); new_inode_sector = get_inode_sector(new_inode_number); printk("\n %d %d", new_inode_number, new_inode_sector); read(&abar->ports[0], new_inode_sector, 0, 1, (uint64_t) inode_mgmt_buffer_p); inode_i = (inode *)inode_mgmt_buffer; inode_i += (new_inode_number-1)%3; inode_i->inode_num = new_inode_number; strcpy(inode_i->filename, name); inode_i->size = 0 ; inode_i->type = DIRECTORY; inode_i->perm = 0; int i = 0; for(i=0; i<10; i++) inode_i->sector_loc[i] = 0; write_superblock(); write(&abar->ports[0], new_inode_sector, 0, 1, (uint64_t) inode_mgmt_buffer_p); printk("\n sata_fs_count = [%d]",sata_fs_count); add_inode_to_table(inode_i); return 1; }
struct file * file_open(char *filename,int flag){ int inode_num = lookup_fs(filename, flag); inode * inode_i ; int i=0; kern_init_desc(); if(inode_num != 0 ){ inode_i = read_inode(inode_num); if(flag==DIRECTORY) printk("\nDIrectory EXISTS"); else printk("\nFile EXISTS"); printk("\nsize %d\n", inode_i->size); } else if(inode_num==0 && flag==FILE_TYPE){ int dir_index=find_parent_index(filename); if(dir_index== -1){ printk("\n Required Directory doesn't Exist :: Create one and try again"); return NULL; } int new_inode_number = get_free_inode_block(); int new_inode_sector = get_inode_sector(new_inode_number); printk("\n %d %d", new_inode_number, new_inode_sector); read(&abar->ports[0], new_inode_sector, 0, 1, (uint64_t) inode_mgmt_buffer_p); printk("\n %x %x", inode_mgmt_buffer, inode_mgmt_buffer_p); inode_i = (inode *)inode_mgmt_buffer; inode_i += (new_inode_number-1)%3; inode_i->inode_num = new_inode_number; strcpy(inode_i->filename, filename); inode_i->size = 0 ; inode_i->type = FILE_TYPE; inode_i->perm = 0; for(i=0;i<10;i++) inode_i->sector_loc[i]=0; sata_fs[dir_index].number_of_dentry +=1; add_inode_to_table(inode_i); write_superblock(); write(&abar->ports[0], new_inode_sector, 0, 1, (uint64_t) inode_mgmt_buffer_p); } else if(inode_num==0 && flag==DIRECTORY){ printk("\n NO Directory Exists"); return NULL; } else return NULL; sata_vfs_fd.inode_num=inode_i->inode_num; strcpy(sata_vfs_fd.filename, inode_i->filename); sata_vfs_fd.perm=inode_i->perm; sata_vfs_fd.size=inode_i->size; sata_vfs_fd.type=inode_i->type; sata_vfs_fd.location=FS_LOC; for(i=0;i<10;i++) sata_vfs_fd.sector_loc[i]=inode_i->sector_loc[i]; for(i=0;i<sata_fs_count;i++){ if(inode_i->inode_num==sata_fs[i].inode_num && inode_i->type==flag){ sata_vfs_fd.tarfs_table_index=i; break; } } return &sata_vfs_fd; }