Le mardi 10 novembre 2009 08:54:50, Eric Bollengier a écrit :
> Hello,
> 
> I've already think about this optimization, the only problem is that the
> posix_fadvise argument isn't a bitwise flag. So you can't mix them like
>  that.
> 
> Perhaps you can call this function multiple times, but the documentation is
> unclear about this subject.
> 
> If you have more information on that subject, it is welcome.

An other point is that posix_fadvise is already used foreach file with the 
POSIX_FADV_WILLNEED attrib, and when closing the file with POSIX_FADV_DONTNEED.

Bye

> Bye
> 
> Le lundi 09 novembre 2009 21:22:09, Jesper Krogh a écrit :
> > Hi
> >
> > Digging through the file-daemon source-code I think that it can be a bit
> > more nice to the host and even allow the client OS to benefit a bit from
> > the following patch. The patch is in "no way" finished, since it'll most
> > likely break builds on all but Linux/FreeBSD but I'm not a very skilled
> > C-programmer, so I would hope someone with a bit more insight on this
> > would pick it up and finish it.
> >
> > POSIX_FADV_SEQUENTIAL => Allows the OS do do a larger read-ahhead.
> > POSIX_FADV_NOREUSE => Allows the OS to drop pages from the page-cache
> > after read, since they won't be used again.
> >
> > diff --git a/bacula/src/filed/backup.c b/bacula/src/filed/backup.c
> > index 38d889b..65afd99 100644
> > --- a/bacula/src/filed/backup.c
> > +++ b/bacula/src/filed/backup.c
> > @@ -772,6 +772,7 @@ static int send_data(JCR *jcr, int stream, FF_PKT
> > *ff_pkt, DIGEST *digest,
> >     uint32_t cipher_input_len;
> >     uint32_t cipher_block_size;
> >     uint32_t encrypted_len;
> > +   BFILE *bfd = &ff_pkt->bfd;
> >  #ifdef FD_NO_SEND_TEST
> >     return 1;
> >  #endif
> > @@ -882,6 +883,7 @@ static int send_data(JCR *jcr, int stream, FF_PKT
> > *ff_pkt, DIGEST *digest,
> >        rsize = (rsize/512) * 512;
> >  #endif
> >
> > +    posix_fadvise(bfd->fid,0,0,POSIX_FADV_SEQUENTIAL &
> >  POSIX_FADV_NOREUSE); /*
> >      * Read the file data
> >      */
> > diff --git a/bacula/src/filed/filed.h b/bacula/src/filed/filed.h
> > index 54905cb..c5d0423 100644
> > --- a/bacula/src/filed/filed.h
> > +++ b/bacula/src/filed/filed.h
> > @@ -78,4 +78,8 @@ typedef enum {
> >  #define uLongf uint32_t
> >  #endif
> >
> > +#define _XOPEN_SOURCE 600
> > +#include <fcntl.h>
> > +
> > +
> >  extern CLIENT *me;                    /* "Global" Client resource */
> >
> > Thanks.
> 

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Bacula-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to