filesystems: fix checks for file existance

This commit is contained in:
Matheus
2022-10-17 15:04:24 -03:00
parent 7aa645fd7b
commit 3d6098f9a9
2 changed files with 15 additions and 9 deletions
+4 -1
View File
@@ -98,6 +98,9 @@ void devfs_init(){
int devfs_newdevice(char* name, int type, dev_t dev, mode_t mode){
if(hashtable_get(&devnodes, name))
return EEXIST;
vnode_t* node = vfs_newnode(name, fs, 0);
if(!node)
return ENOMEM;
@@ -106,7 +109,7 @@ int devfs_newdevice(char* name, int type, dev_t dev, mode_t mode){
vfs_destroynode(node);
return ENOMEM;
}
node->st.st_rdev = dev;
node->st.st_mode = MAKETYPE(type) | mode;
node->st.st_ino = fs->data;
+11 -8
View File
@@ -239,15 +239,16 @@ int vfs_create(dirnode_t* ref, char* path, mode_t mode){
int result = vfs_resolvepath(&buff, &parent, ref, path, name);
if(buff){
spinlock_release(&lock);
return EEXIST;
}
if(!parent){
spinlock_release(&lock);
return result;
}
if(buff){
spinlock_release(&lock);
return EEXIST;
}
result = parent->vnode.fs->calls->create(parent, name, mode);
spinlock_release(&lock);
@@ -268,14 +269,16 @@ int vfs_mkdir(dirnode_t* ref, char* path, mode_t mode){
int result = vfs_resolvepath(&buff, &parent, ref, path, name);
if(!parent){
spinlock_release(&lock);
return result;
}
if(buff){
spinlock_release(&lock);
return EEXIST;
}
if(!parent){
spinlock_release(&lock);
return result;
}
result = parent->vnode.fs->calls->mkdir(parent, name, mode);