| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
It is documented that GF_REF_PUT() returns a 0 in case the call resulted
in free'ing the structure. However the implementations did not have a
return value, so nothing can actually use it.
Change-Id: Ic57091f5ddd7e0b80929dc335a5b6d37f5fe1b2e
BUG: 1433405
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: https://review.gluster.org/16910
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
There are no real users of the counter. It was thought of a handy tool
to track and debug refcounting, but it is not used at all. Some parts of
the code would benefit from a pointer getting returned instead.
BUG: 1399780
Change-Id: I97e52c48420fed61be942ea27ff4849b803eed12
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/15971
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
 | 
|   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   | 
Checks for compiler supported atomic operations comes from client_t.h.
An example usage of this change can be found in adding reference
counting to "struct auth_cache_entry" in http://review.gluster.org/11023
Basic usage looks like this:
   #include "refcount.h"
   struct my_struct {
       GF_REF_DECL;
       ... /* more members */
   }
   void my_destructor (void *data)
   {
       struct my_struct *my_ptr = (struct my_struct *) data;
       ... /* do some more cleanups */
       GF_FREE (my_ptr);
   }
   void init_ptr (struct parent *parent)
   {
       struct my_struct *my_ptr = malloc (sizeof (struct my_struct));
       GF_REF_INIT (my_ptr, my_destructor); /* refcount is set to 1 */
       ... /* my_ptr probably gets added to some parent structure */
       parent_add_ptr (parent, my_ptr);
   }
   void do_something (struct parent *parent)
   {
       struct my_struct *my_ptr = NULL;
       /* likely need to lock parent, depends on its access pattern */
       my_ptr = parent_remove_first_ptr (parent);
       /* unlock parent */
       ... /* do something */
       GF_REF_PUT (my_ptr); /* calls my_destructor on refcount = 0 */
   }
URL: http://thread.gmane.org/gmane.comp.file-systems.gluster.devel/11202
Change-Id: Idb98a5861a44c31676108ed8876db12c320912ef
BUG: 1228157
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/11022
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
 |