diff options
Diffstat (limited to 'libglusterfs/src')
| -rw-r--r-- | libglusterfs/src/iobuf.c | 23 | ||||
| -rw-r--r-- | libglusterfs/src/iobuf.h | 2 | 
2 files changed, 24 insertions, 1 deletions
diff --git a/libglusterfs/src/iobuf.c b/libglusterfs/src/iobuf.c index 86bf697e879..a89e962673f 100644 --- a/libglusterfs/src/iobuf.c +++ b/libglusterfs/src/iobuf.c @@ -841,6 +841,29 @@ out:  } +void +iobref_clear (struct iobref *iobref) +{ +        int i = 0; + +        GF_VALIDATE_OR_GOTO ("iobuf", iobref, out); + +        for (; i < GF_IOBREF_IOBUF_COUNT; i++) { +                if (iobref->iobrefs[i] != NULL) { +                        iobuf_unref (iobref->iobrefs[i]); +                } else { +                        /** iobuf's are attched serially */ +                        break; +                } +        } + +        iobref_unref (iobref); + + out: +        return; +} + +  int  __iobref_add (struct iobref *iobref, struct iobuf *iobuf)  { diff --git a/libglusterfs/src/iobuf.h b/libglusterfs/src/iobuf.h index b9c2a380711..5595309e1cd 100644 --- a/libglusterfs/src/iobuf.h +++ b/libglusterfs/src/iobuf.h @@ -150,7 +150,7 @@ struct iobref *iobref_ref (struct iobref *iobref);  void iobref_unref (struct iobref *iobref);  int iobref_add (struct iobref *iobref, struct iobuf *iobuf);  int iobref_merge (struct iobref *to, struct iobref *from); - +void iobref_clear (struct iobref *iobref);  size_t iobuf_size (struct iobuf *iobuf);  size_t iobref_size (struct iobref *iobref);  | 
