diff options
Diffstat (limited to 'debian/patches/0001-libdiskfs-add-diskfs_make_node_alloc-to-allocate-fat.patch')
-rw-r--r-- | debian/patches/0001-libdiskfs-add-diskfs_make_node_alloc-to-allocate-fat.patch | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/debian/patches/0001-libdiskfs-add-diskfs_make_node_alloc-to-allocate-fat.patch b/debian/patches/0001-libdiskfs-add-diskfs_make_node_alloc-to-allocate-fat.patch deleted file mode 100644 index 8781abd6..00000000 --- a/debian/patches/0001-libdiskfs-add-diskfs_make_node_alloc-to-allocate-fat.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 433222d0178fa76e315f480321c5396e176b7103 Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Fri, 16 May 2014 23:06:33 +0200 -Subject: [PATCH 01/18] libdiskfs: add diskfs_make_node_alloc to allocate fat - nodes - -libdiskfs has two kind of nodes, struct node and struct netnode. -struct node is used to store libdiskfs specific data, while struct -netnode contains user supplied data. Previously, both objects were -allocated separatly, and a pointer from the node to the netnode -provided a mapping from the former to the latter. - -Provide a function diskfs_make_node_alloc that allocates both nodes in -a contiguous region. - -This reduces the memory allocation overhead when creating nodes. It -also makes the relation between node and netnode a simple offset -calculation. Provide two functions to compute the netnode address -from the node address and vice-versa. - -Most notably, this makes implementing a cache on top of libdiskfs -easier. Auxiliary data for the cache can be stored in the -user-defined netnode, and the fat node can be used as the value. - -* libdiskfs/node-make.c (init_node): Move initialization here. -(diskfs_make_node): Use init_node. -(diskfs_make_node_alloc): New function to allocate fat nodes. -* libdiskfs/diskfs.h (diskfs_make_node_alloc): New declaration. -(diskfs_node_netnode): Compute netnode address from node address. -(diskfs_netnode_node): And vice-versa. ---- - libdiskfs/diskfs.h | 29 +++++++++++++++++++++++++++-- - libdiskfs/node-make.c | 39 ++++++++++++++++++++++++++++++--------- - 2 files changed, 57 insertions(+), 11 deletions(-) - -diff --git a/libdiskfs/diskfs.h b/libdiskfs/diskfs.h -index 8151ddc..a3f860d 100644 ---- a/libdiskfs/diskfs.h -+++ b/libdiskfs/diskfs.h -@@ -116,9 +116,12 @@ struct node - - loff_t allocsize; - -- ino64_t cache_id; -- - int author_tracks_uid; -+ -+ /* This is the last field. We do this so that if the node is -+ allocated with the disknode in an contiguous block, it sits right -+ next to the user supplied data. */ -+ ino64_t cache_id; - }; - - struct diskfs_control -@@ -685,6 +688,28 @@ diskfs_notice_filechange (struct node *np, enum file_changed_type type, - The new node will have one hard reference and no light references. */ - struct node *diskfs_make_node (struct disknode *dn); - -+/* Create a new node structure. Also allocate SIZE bytes for the -+ disknode. The address of the disknode can be obtained using -+ diskfs_node_disknode. The new node will have one hard reference -+ and no light references. */ -+struct node *diskfs_make_node_alloc (size_t size); -+ -+/* Return the address of the disknode for NODE. NODE must have been -+ allocated using diskfs_make_node_alloc. */ -+static inline struct disknode * -+diskfs_node_disknode (struct node *node) -+{ -+ return (struct disknode *) ((char *) node + sizeof (struct node)); -+} -+ -+/* Return the address of the node for DISKNODE. DISKNODE must have -+ been allocated using diskfs_make_node_alloc. */ -+static inline struct node * -+diskfs_disknode_node (struct disknode *disknode) -+{ -+ return (struct node *) ((char *) disknode - sizeof (struct node)); -+} -+ - - /* The library also exports the following functions; they are not generally - useful unless you are redefining other functions the library provides. */ -diff --git a/libdiskfs/node-make.c b/libdiskfs/node-make.c -index 2b6ef2a..ff0cc0d 100644 ---- a/libdiskfs/node-make.c -+++ b/libdiskfs/node-make.c -@@ -19,16 +19,9 @@ - #include <fcntl.h> - - --/* Create a and return new node structure with DN as its physical disknode. -- The node will have one hard reference and no light references. */ --struct node * --diskfs_make_node (struct disknode *dn) -+static struct node * -+init_node (struct node *np, struct disknode *dn) - { -- struct node *np = malloc (sizeof (struct node)); -- -- if (np == 0) -- return 0; -- - np->dn = dn; - np->dn_set_ctime = 0; - np->dn_set_atime = 0; -@@ -52,3 +45,31 @@ diskfs_make_node (struct disknode *dn) - - return np; - } -+ -+/* Create a and return new node structure with DN as its physical disknode. -+ The node will have one hard reference and no light references. */ -+struct node * -+diskfs_make_node (struct disknode *dn) -+{ -+ struct node *np = malloc (sizeof (struct node)); -+ -+ if (np == 0) -+ return 0; -+ -+ return init_node (np, dn); -+} -+ -+/* Create a new node structure. Also allocate SIZE bytes for the -+ disknode. The address of the disknode can be obtained using -+ diskfs_node_disknode. The new node will have one hard reference -+ and no light references. */ -+struct node * -+diskfs_make_node_alloc (size_t size) -+{ -+ struct node *np = malloc (sizeof (struct node) + size); -+ -+ if (np == NULL) -+ return NULL; -+ -+ return init_node (np, diskfs_node_disknode (np)); -+} --- -2.0.0.rc2 - |