[Ocfs2-devel] [PATCH]2.6 fixes in super.c

Mark Fasheh mark.fasheh at oracle.com
Mon Feb 23 15:35:23 CST 2004


On Thu, Feb 19, 2004 at 03:37:55PM -0800, Rusty Lynch wrote:
> On Tue, Feb 17, 2004 at 07:12:17PM -0800, Rusty Lynch wrote:
> > The following patch fixes 2.6 port issues in super.c (which
> > spills into ocfs.h)
> > 
> > Specifically:
> > * The module inc/dec stuff is out for 2.6
> > * small changes in super_operations like the
> >   use of the new kstatfs struct
> > 
> 
> Here is a new patch against svn version 32.

<snip>

> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
>  
>  /*
>   * ocfs_statfs()
>   *
>   */
> +static int ocfs_statfs (struct super_block *sb, struct kstatfs *buf)
> +{
> +        ocfs_super *osb = NULL;
> +        __u32 numbits, freebits = 0;
> +        // ocfs_lock_res *pLockResource;
> +        int status = 0;
> +        ocfs_bitmap_lock *bm_lock = NULL;
> +	struct buffer_head *bh = NULL;
> +
> +        LOG_ENTRY_ARGS ("(0x%08x, 0x%08x)\n", sb, buf);
> +
> +        osb = (ocfs_super *) OCFS_GENERIC_SB_P(sb);
> +        numbits = osb->cluster_bitmap.validbits;
> + 
> +	status = ocfs_read_bh (osb, OCFS_BITMAP_LOCK_OFFSET, &bh, 0, NULL);
> +	if (status < 0) {
> +		LOG_ERROR_STR("failed to read bitmap data");
> +		return -EIO;
> +	}
> +	bm_lock = (ocfs_bitmap_lock *)OCFS_BH_GET_DATA_READ(bh); /* read */
> +
> +        if (numbits >= bm_lock->used_bits)
> +            freebits = numbits - bm_lock->used_bits;
> +
> +	/* take out the space reserved for system files */
> +	freebits -= (8 * ONE_MEGA_BYTE / osb->vol_layout.cluster_size);	
> +
> +        buf->f_type = OCFS_MAGIC;
> +        buf->f_bsize = sb->s_blocksize;
> +        buf->f_namelen = OCFS_MAX_FILENAME_LENGTH;
> +        buf->f_blocks =
> +            (sector_t) ((unsigned long) (numbits) *
> +			(unsigned long) (osb->vol_layout.cluster_size >> 9) -
> +			(8 * ONE_MEGA_BYTE / osb->vol_layout.cluster_size)); 
> +        buf->f_bfree =
> +            (sector_t) (freebits * (osb->vol_layout.cluster_size >> 9));
> +        buf->f_bavail = buf->f_bfree;
> +        buf->f_files = (sector_t) (numbits);
> +        buf->f_ffree = (sector_t) (numbits) - freebits;
> +
> +	OCFS_BH_PUT_DATA(bh);
> +	lock_buffer(bh);
> +	clear_buffer_uptodate(bh);
> +	unlock_buffer(bh);
> +	brelse(bh);
> +
> +        LOG_EXIT_LONG (0);
> +        return 0;
> +}                               /* ocfs_statfs */
> +
> +#else /* 2.4.x kernel */
> +
> +/*
> + * ocfs_statfs()
> + *
> + */
>  static int ocfs_statfs (struct super_block *sb, struct statfs *buf)
>  {
>          ocfs_super *osb = NULL;

Is there a reason why we can't just combine the 2.4 / 2.6 versions of these
functions? From a cursory glance, they seem mostly the same...
	--Mark

--
Mark Fasheh
Software Developer, Oracle Corp
mark.fasheh at oracle.com


More information about the Ocfs2-devel mailing list