Re: Reading and Writing to Block from di_spare

From: David Schultz <das_at_FreeBSD.ORG>
Date: Thu, 17 Jan 2008 14:44:57 -0500
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.
Received on Thu Jan 17 2008 - 18:45:18 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:26 UTC