Samuel Thibault
2008-Jul-15 16:16 UTC
[Xen-devel] [PATCH] fs-backend: Fix freelist implementation
fs-backend: Fix freelist implementation Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com> diff -r 064c96848e2f tools/fs-back/fs-backend.c --- a/tools/fs-back/fs-backend.c Mon Jul 14 16:48:24 2008 +0100 +++ b/tools/fs-back/fs-backend.c Tue Jul 15 17:16:24 2008 +0100 @@ -110,9 +110,9 @@ unsigned short *freelist; requests = malloc(sizeof(struct fs_request) *nr_entries); - freelist = malloc(sizeof(unsigned short) * nr_entries); + freelist = malloc(sizeof(unsigned short) * (nr_entries + 1)); memset(requests, 0, sizeof(struct fs_request) * nr_entries); - memset(freelist, 0, sizeof(unsigned short) * nr_entries); + memset(freelist, 0, sizeof(unsigned short) * (nr_entries + 1)); for(i=0; i< nr_entries; i++) { requests[i].active = 0; --- a/tools/fs-back/fs-backend.h Mon Jul 14 16:48:24 2008 +0100 +++ b/tools/fs-back/fs-backend.h Tue Jul 15 17:16:24 2008 +0100 @@ -72,14 +72,14 @@ static inline void add_id_to_freelist(unsigned int id,unsigned short* freelist) { - freelist[id] = freelist[0]; + freelist[id + 1] = freelist[0]; freelist[0] = id; } static inline unsigned short get_id_from_freelist(unsigned short* freelist) { unsigned int id = freelist[0]; - freelist[0] = freelist[id]; + freelist[0] = freelist[id + 1]; return id; } _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel