fixed 2 bugs and changed inode count
This commit is contained in:
parent
fb961a9cd5
commit
a527cb6328
@ -14,7 +14,7 @@
|
|||||||
#define IO_BLOCK_SIZE 4096
|
#define IO_BLOCK_SIZE 4096
|
||||||
#define INDIRECT_BLOCKS 512
|
#define INDIRECT_BLOCKS 512
|
||||||
|
|
||||||
#define NUM_INODE_BLOCKS 1023
|
#define NUM_INODE_BLOCKS 262143
|
||||||
|
|
||||||
#define INODE_SIZE 512
|
#define INODE_SIZE 512
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ INode_Data *FilesOperation::create_new_inode(u_int64_t parent_inode_number,
|
|||||||
bool allocated = false;
|
bool allocated = false;
|
||||||
INode_Data *new_inode = new INode_Data();
|
INode_Data *new_inode = new INode_Data();
|
||||||
fs->inode_manager->new_inode(getuid(), getgid(), mode, new_inode);
|
fs->inode_manager->new_inode(getuid(), getgid(), mode, new_inode);
|
||||||
//printf("%llu\n",new_inode->inode_num);
|
printf("NEW INODE %llu %llu %llu %o\n",new_inode->inode_num, new_inode->metadata.uid, new_inode->metadata.gid, (mode_t)new_inode->metadata.permissions);
|
||||||
if ((mode & S_IFMT) == S_IFDIR) {
|
if ((mode & S_IFMT) == S_IFDIR) {
|
||||||
create_dot_dotdot(new_inode, parent_inode_number);
|
create_dot_dotdot(new_inode, parent_inode_number);
|
||||||
fs->inode_manager->save_inode(new_inode);
|
fs->inode_manager->save_inode(new_inode);
|
||||||
@ -423,6 +423,7 @@ int FilesOperation::fischl_getattr(const char *path, struct stat *stbuf,
|
|||||||
stbuf->st_nlink = inode.metadata.reference_count;
|
stbuf->st_nlink = inode.metadata.reference_count;
|
||||||
stbuf->st_uid = inode.metadata.uid;
|
stbuf->st_uid = inode.metadata.uid;
|
||||||
stbuf->st_gid = inode.metadata.gid;
|
stbuf->st_gid = inode.metadata.gid;
|
||||||
|
//printf("GETATTR %llu %llu %llu %o\n", inode.inode_num, inode.metadata.uid, inode.metadata.gid, (mode_t)inode.metadata.permissions);
|
||||||
stbuf->st_atime = (time_t)(inode.metadata.access_time / 1000000000ULL);
|
stbuf->st_atime = (time_t)(inode.metadata.access_time / 1000000000ULL);
|
||||||
stbuf->st_mtime = (time_t)(inode.metadata.modification_time / 1000000000ULL);
|
stbuf->st_mtime = (time_t)(inode.metadata.modification_time / 1000000000ULL);
|
||||||
stbuf->st_size = inode.metadata.size;
|
stbuf->st_size = inode.metadata.size;
|
||||||
@ -610,8 +611,12 @@ int FilesOperation::fischl_chown(const char *path, uid_t uid, gid_t gid,
|
|||||||
INode_Data inode;
|
INode_Data inode;
|
||||||
inode.inode_num = fh;
|
inode.inode_num = fh;
|
||||||
fs->inode_manager->load_inode(&inode);
|
fs->inode_manager->load_inode(&inode);
|
||||||
inode.metadata.uid = uid;
|
if(uid != (uid_t)(-1)){
|
||||||
inode.metadata.gid = gid;
|
inode.metadata.uid = uid;
|
||||||
|
}
|
||||||
|
if(gid != (gid_t)(-1)){
|
||||||
|
inode.metadata.gid = gid;
|
||||||
|
}
|
||||||
fs->inode_manager->save_inode(&inode);
|
fs->inode_manager->save_inode(&inode);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ static const struct fuse_opt option_spec[] = {
|
|||||||
|
|
||||||
void* fischl_init(struct fuse_conn_info *conn, struct fuse_config *cfg) {
|
void* fischl_init(struct fuse_conn_info *conn, struct fuse_config *cfg) {
|
||||||
cfg->use_ino = 1;
|
cfg->use_ino = 1;
|
||||||
|
conn->want &= ~FUSE_CAP_ATOMIC_O_TRUNC;
|
||||||
options.fsop->initialize(options.load);
|
options.fsop->initialize(options.load);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user