Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Dec 2005 23:01:39 +0800
From:      Bowen Zhou <zhou.bowen@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   Fwd: Object reusement implementation in 6.0release: HELP Wanted!!!
Message-ID:  <821419ca0512100701oa12651ao34f40c14cae37175@mail.gmail.com>
In-Reply-To: <821419ca0512100657u363cdfc6wbae45b207cbd71f2@mail.gmail.com>
References:  <821419ca0512072329q4ad120c5g367dd2192b91eccd@mail.gmail.com> <20051208120001.GA921@pm513-1.comsys.ntu-kpi.kiev.ua> <821419ca0512081737j1e2f1186r9931b747f1dc0691@mail.gmail.com> <821419ca0512100657u363cdfc6wbae45b207cbd71f2@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Sorry for reply myself.

I really confused by this problem.

Need your help!!!

On 12/9/05, Bowen Zhou <zhou.bowen@gmail.com> wrote:
> Thanks for concerning my question.
>
> I need to clean all the data blocks of a inode, including direct disk
> blocks, indirect disk blocks and external attributes blocks.
>
> I have tried to insert cleaning code into
> ffs_blkfree(/ufs/ffs/ffs_alloc.c), but the result was not good enough.
> After compiled the kernel(GENERIC) with my cleaning code and restarted
> the computer, I found that some data blocks of normal files which have
> not been deleted yet disappeared randomly.
>
> The following is the code I have inserted into ffs_blkfree(including
> the beginning part of the original function):
>
> void
> ffs_blkfree(ump, fs, devvp, bno, size, inum)
>        struct ufsmount *ump;
>        struct fs *fs;
>        struct vnode *devvp;
>        ufs2_daddr_t bno;
>        long size;
>        ino_t inum;
> {
>        struct cg *cgp;
>        struct buf *bp;
>        struct buf *bp1;
>        ufs1_daddr_t fragno, cgbno;
>        ufs2_daddr_t cgblkno;
>        int i, cg, blk, frags, bbase;
>        u_int8_t *blksfree;
>        struct cdev *dev;
>
>        /*object reuse starts here.*/
>        if(bread(devvp, fsbtodb(fs, bno), size, NOCRED, &bp1)){
>                brelse(bp1);
>                return;
>                }
>        bzero(bp1->b_data, size);
>        bdwrite(bp1);
>        /*object reuse ends here.*/
> ....
>
> I guess there are errors in either my cleaning code or the place I
> inserted these code.
>
> Any suggestion is welcome.
>
> On 12/8/05, Andrey Simonenko <simon@comsys.ntu-kpi.kiev.ua> wrote:
> > On Thu, Dec 08, 2005 at 03:29:07PM +0800, Bowen Zhou wrote:
> > > hello, everyone.
> > >
> > > I need solutions to implement object reusement in FreeBSD6.0.
> > >
> > > What I want to do is to clean the content of data blocks before the
> > > re-allocation of them.
> > >
> > > Then where (in which function ) should I insert my cleaning code in order to
> > > fulfill the reusement of data blocks?
> >
> > About which datablock are you asking?
> >
>


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?821419ca0512100701oa12651ao34f40c14cae37175>