This patch removes a bug in bs_exit() of bs_sheepdog.c which caused segmentation fault.
Signed-off-by: Hitoshi Mitake <[email protected]> --- usr/bs_sheepdog.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/usr/bs_sheepdog.c b/usr/bs_sheepdog.c index 11ddce6..de66d59 100644 --- a/usr/bs_sheepdog.c +++ b/usr/bs_sheepdog.c @@ -1233,15 +1233,20 @@ static void bs_sheepdog_exit(struct scsi_lu *lu) struct sheepdog_access_info *ai = (struct sheepdog_access_info *)(info + 1); - struct sheepdog_fd_list *p; + struct sheepdog_fd_list *p, *next; bs_thread_close(info); - list_for_each_entry(p, &ai->fd_list_head, list) { + list_for_each_entry_safe(p, next, &ai->fd_list_head, list) { close(p->fd); list_del(&p->list); free(p); } + + pthread_rwlock_destroy(&ai->fd_list_lock); + pthread_rwlock_destroy(&ai->inode_lock); + + dprintf("cleaned logical unit %p safely\n", lu); } static struct backingstore_template sheepdog_bst = { -- 1.7.10.4 -- sheepdog mailing list [email protected] http://lists.wpkg.org/mailman/listinfo/sheepdog
