Exemple #1
0
static void find_subpartitions(phantom_disk_partition_t *p)
{
    if( 0 == lookup_fs(p) )
        return;

    lookup_old_pc_partitions(p);
    //lookup_phantom_fs(p);
}
Exemple #2
0
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;
}
Exemple #3
0
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;
}