Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Jan 2008 14:44:57 -0500
From:      David Schultz <das@FreeBSD.ORG>
To:        Adam <urbansnap@gmail.com>
Cc:        freebsd-current@FreeBSD.ORG
Subject:   Re: Reading and Writing to Block from di_spare
Message-ID:  <20080117194457.GA84887@VARK.MIT.EDU>
In-Reply-To: <485228D5-8D0B-4CD5-9FB7-B0D551B172DA@gmail.com>

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

On Thu, Jan 17, 2008, Adam wrote:
> Hi, I am working on a project for where I want to take the standard  
> UFS/FFS file system that BSD ships with and add several blocks of  
> information to the dinode.  The simplest way of doing it seemed to be  
> to allocate blocks to di_spare.  I believe that I have figured out how  
> to do that:
> 
> ffs_alloc(inode, 0 , 0, (int)(inode->i_fs->fs_bsize), td->td_ucred,  
> &addr);
> dinode->di_spare[1]=(int64_t)addr;
> 
> I'm having problems taking that block address and reading/writing to  
> it.   As far as I can tell most of the buffer read routines (getblk,  
> bread) seem to be geared toward reading and writing direct and  
> indirect blocks in an inode.
> 
> How do I read and write a block that is neither a direct nor an  
> indirect block?

Maybe I'm misunderstanding your question, but I don't see how you
could expect FreeBSD to have routines to read and write things
that don't exist in FreeBSD. :)

See extattr(2). It may be possible that the "extra information"
you want to store with files can be stored in user space using the
relatively standard extended attributes API.


home | help

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