projects
/
bluesky.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ee15eea
)
Fix filesystem locking when creating a new inode.
author
Michael Vrable
<mvrable@cs.ucsd.edu>
Thu, 1 Apr 2010 01:24:49 +0000
(18:24 -0700)
committer
Michael Vrable
<mvrable@cs.ucsd.edu>
Thu, 1 Apr 2010 01:24:49 +0000
(18:24 -0700)
nfs3/nfs3.c
patch
|
blob
|
history
diff --git
a/nfs3/nfs3.c
b/nfs3/nfs3.c
index
061f835
..
a0102ef
100644
(file)
--- a/
nfs3/nfs3.c
+++ b/
nfs3/nfs3.c
@@
-470,6
+470,7
@@
void nfsproc3_create_3_svc(create3args *argp, RPCRequest *req)
return;
}
return;
}
+ g_mutex_lock(fs->lock);
BlueSkyInode *file;
file = bluesky_new_inode(bluesky_fs_alloc_inode(fs), fs, BLUESKY_REGULAR);
file->nlink = 1;
BlueSkyInode *file;
file = bluesky_new_inode(bluesky_fs_alloc_inode(fs), fs, BLUESKY_REGULAR);
file->nlink = 1;
@@
-481,6
+482,7
@@
void nfsproc3_create_3_svc(create3args *argp, RPCRequest *req)
file->ntime = time;
g_mutex_lock(file->lock);
bluesky_insert_inode(fs, file);
file->ntime = time;
g_mutex_lock(file->lock);
bluesky_insert_inode(fs, file);
+ g_mutex_unlock(fs->lock);
bluesky_directory_insert(dir, argp->where.name, file->inum);
bluesky_inode_update_ctime(dir, TRUE);
bluesky_directory_insert(dir, argp->where.name, file->inum);
bluesky_inode_update_ctime(dir, TRUE);
@@
-540,6
+542,7
@@
void nfsproc3_mkdir_3_svc(mkdir3args *argp, RPCRequest *req)
return;
}
return;
}
+ g_mutex_lock(fs->lock);
BlueSkyInode *file;
file = bluesky_new_inode(bluesky_fs_alloc_inode(fs), fs, BLUESKY_DIRECTORY);
file->nlink = 1;
BlueSkyInode *file;
file = bluesky_new_inode(bluesky_fs_alloc_inode(fs), fs, BLUESKY_DIRECTORY);
file->nlink = 1;
@@
-551,6
+554,7
@@
void nfsproc3_mkdir_3_svc(mkdir3args *argp, RPCRequest *req)
file->ntime = time;
g_mutex_lock(file->lock);
bluesky_insert_inode(fs, file);
file->ntime = time;
g_mutex_lock(file->lock);
bluesky_insert_inode(fs, file);
+ g_mutex_unlock(fs->lock);
bluesky_directory_insert(dir, argp->where.name, file->inum);
set_attributes(file, &argp->attributes);
bluesky_directory_insert(dir, argp->where.name, file->inum);
set_attributes(file, &argp->attributes);
@@
-609,6
+613,7
@@
void nfsproc3_symlink_3_svc(symlink3args *argp, RPCRequest *req)
return;
}
return;
}
+ g_mutex_lock(fs->lock);
BlueSkyInode *file;
file = bluesky_new_inode(bluesky_fs_alloc_inode(fs), fs, BLUESKY_SYMLINK);
file->nlink = 1;
BlueSkyInode *file;
file = bluesky_new_inode(bluesky_fs_alloc_inode(fs), fs, BLUESKY_SYMLINK);
file->nlink = 1;
@@
-621,6
+626,7
@@
void nfsproc3_symlink_3_svc(symlink3args *argp, RPCRequest *req)
file->symlink_contents = g_strdup(argp->symlink.symlink_data);
g_mutex_lock(file->lock);
bluesky_insert_inode(fs, file);
file->symlink_contents = g_strdup(argp->symlink.symlink_data);
g_mutex_lock(file->lock);
bluesky_insert_inode(fs, file);
+ g_mutex_unlock(fs->lock);
bluesky_directory_insert(dir, argp->where.name, file->inum);
bluesky_inode_update_ctime(dir, TRUE);
bluesky_directory_insert(dir, argp->where.name, file->inum);
bluesky_inode_update_ctime(dir, TRUE);