From 279a9a65b2b92bada2db886bbb546d276987b677 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 22 May 2013 18:20:53 -0500 Subject: [PATCH] Remove i_mutex (not really worth the extra time/memory I think) --- include/wimlib/dentry.h | 8 -------- src/dentry.c | 8 -------- src/mount_image.c | 19 ++++--------------- 3 files changed, 4 insertions(+), 31 deletions(-) diff --git a/include/wimlib/dentry.h b/include/wimlib/dentry.h index 0871edc2..9e24529a 100644 --- a/include/wimlib/dentry.h +++ b/include/wimlib/dentry.h @@ -10,10 +10,6 @@ #include #include /* uid_t, gid_t */ -#ifdef WITH_FUSE -# include -#endif - struct wim_lookup_table; struct wim_lookup_table_entry; struct wimfs_fd; @@ -382,10 +378,6 @@ struct wim_inode { u16 i_num_opened_fds; u16 i_num_allocated_fds; struct wimfs_fd **i_fds; - /* This mutex protects the inode's file descriptors table during - * read-only mounts. Read-write mounts are still restricted to 1 - * thread. */ - pthread_mutex_t i_mutex; #endif }; diff --git a/src/dentry.c b/src/dentry.c index d6eb8a5c..451d412f 100644 --- a/src/dentry.c +++ b/src/dentry.c @@ -983,13 +983,6 @@ new_timeless_inode(void) inode->i_next_stream_id = 1; inode->i_not_rpfixed = 1; INIT_LIST_HEAD(&inode->i_list); - #ifdef WITH_FUSE - if (pthread_mutex_init(&inode->i_mutex, NULL) != 0) { - ERROR_WITH_ERRNO("Error initializing mutex"); - FREE(inode); - return NULL; - } - #endif INIT_LIST_HEAD(&inode->i_dentry); } return inode; @@ -1131,7 +1124,6 @@ free_inode(struct wim_inode *inode) #ifdef WITH_FUSE wimlib_assert(inode->i_num_opened_fds == 0); FREE(inode->i_fds); - pthread_mutex_destroy(&inode->i_mutex); #endif /* HACK: This may instead delete the inode from i_list, but the * hlist_del() behaves the same as list_del(). */ diff --git a/src/mount_image.c b/src/mount_image.c index a207b42a..d9a03a99 100644 --- a/src/mount_image.c +++ b/src/mount_image.c @@ -194,8 +194,6 @@ alloc_wimfs_fd(struct wim_inode *inode, static const u16 max_fds = 0xffff; int ret; - pthread_mutex_lock(&inode->i_mutex); - DEBUG("Allocating fd for stream ID %u from inode %#"PRIx64" " "(open = %u, allocated = %u)", stream_id, inode->i_ino, inode->i_num_opened_fds, @@ -247,7 +245,6 @@ alloc_wimfs_fd(struct wim_inode *inode, } } out: - pthread_mutex_unlock(&inode->i_mutex); return ret; } @@ -255,9 +252,6 @@ static void inode_put_fd(struct wim_inode *inode, struct wimfs_fd *fd) { wimlib_assert(inode != NULL); - - pthread_mutex_lock(&inode->i_mutex); - wimlib_assert(fd->f_inode == inode); wimlib_assert(inode->i_num_opened_fds != 0); wimlib_assert(fd->idx < inode->i_num_allocated_fds); @@ -265,12 +259,8 @@ inode_put_fd(struct wim_inode *inode, struct wimfs_fd *fd) inode->i_fds[fd->idx] = NULL; FREE(fd); - if (--inode->i_num_opened_fds == 0 && inode->i_nlink == 0) { - pthread_mutex_unlock(&inode->i_mutex); + if (--inode->i_num_opened_fds == 0 && inode->i_nlink == 0) free_inode(inode); - } else { - pthread_mutex_unlock(&inode->i_mutex); - } } static int @@ -2475,12 +2465,11 @@ wimlib_mount_image(WIMStruct *wim, int image, const char *dir, goto out_free_message_queue_names; argc = 0; - argv[argc++] = "imagex"; + argv[argc++] = IMAGEX_PROGNAME; argv[argc++] = dir_copy; - /* disable multi-threaded operation for read-write mounts */ - if (mount_flags & WIMLIB_MOUNT_FLAG_READWRITE) - argv[argc++] = "-s"; + /* disable multi-threaded operation */ + argv[argc++] = "-s"; if (mount_flags & WIMLIB_MOUNT_FLAG_DEBUG) argv[argc++] = "-d"; -- 2.43.0