Beispiel #1
0
static int ufs_statfs(struct dentry *dentry, struct kstatfs *buf)
{
	struct super_block *sb = dentry->d_sb;
	struct ufs_sb_private_info *uspi= UFS_SB(sb)->s_uspi;
	unsigned  flags = UFS_SB(sb)->s_flags;
	struct ufs_super_block_third *usb3;
	u64 id = huge_encode_dev(sb->s_bdev->bd_dev);

	mutex_lock(&UFS_SB(sb)->s_lock);
	usb3 = ubh_get_usb_third(uspi);
	
	if ((flags & UFS_TYPE_MASK) == UFS_TYPE_UFS2) {
		buf->f_type = UFS2_MAGIC;
		buf->f_blocks = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_dsize);
	} else {
		buf->f_type = UFS_MAGIC;
		buf->f_blocks = uspi->s_dsize;
	}
	buf->f_bfree = ufs_blkstofrags(uspi->cs_total.cs_nbfree) +
		uspi->cs_total.cs_nffree;
	buf->f_ffree = uspi->cs_total.cs_nifree;
	buf->f_bsize = sb->s_blocksize;
	buf->f_bavail = (buf->f_bfree > (((long)buf->f_blocks / 100) * uspi->s_minfree))
		? (buf->f_bfree - (((long)buf->f_blocks / 100) * uspi->s_minfree)) : 0;
	buf->f_files = uspi->s_ncg * uspi->s_ipg;
	buf->f_namelen = UFS_MAXNAMLEN;
	buf->f_fsid.val[0] = (u32)id;
	buf->f_fsid.val[1] = (u32)(id >> 32);

	mutex_unlock(&UFS_SB(sb)->s_lock);

	return 0;
}
Beispiel #2
0
static int ufs_statfs(struct dentry *dentry, struct kstatfs *buf)
{
    struct super_block *sb = dentry->d_sb;
    struct ufs_sb_private_info *uspi= UFS_SB(sb)->s_uspi;
    unsigned  flags = UFS_SB(sb)->s_flags;
    struct ufs_super_block_first *usb1;
    struct ufs_super_block_second *usb2;
    struct ufs_super_block_third *usb3;

    lock_kernel();

    usb1 = ubh_get_usb_first(uspi);
    usb2 = ubh_get_usb_second(uspi);
    usb3 = ubh_get_usb_third(uspi);

    if ((flags & UFS_TYPE_MASK) == UFS_TYPE_UFS2) {
        buf->f_type = UFS2_MAGIC;
        buf->f_blocks = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_dsize);
    } else {
        buf->f_type = UFS_MAGIC;
        buf->f_blocks = uspi->s_dsize;
    }
    buf->f_bfree = ufs_blkstofrags(uspi->cs_total.cs_nbfree) +
                   uspi->cs_total.cs_nffree;
    buf->f_ffree = uspi->cs_total.cs_nifree;
    buf->f_bsize = sb->s_blocksize;
    buf->f_bavail = (buf->f_bfree > (((long)buf->f_blocks / 100) * uspi->s_minfree))
                    ? (buf->f_bfree - (((long)buf->f_blocks / 100) * uspi->s_minfree)) : 0;
    buf->f_files = uspi->s_ncg * uspi->s_ipg;
    buf->f_namelen = UFS_MAXNAMLEN;

    unlock_kernel();

    return 0;
}