sysdep.c 1.01 KB
Newer Older
Linus Torvalds's avatar
Linus Torvalds committed
1 2 3 4 5 6 7 8 9 10
/*
 *  linux/fs/hfs/sysdep.c
 *
 * Copyright (C) 1996  Paul H. Hargrove
 * (C) 2003 Ardis Technologies <roman@ardistech.com>
 * This file may be distributed under the terms of the GNU General Public License.
 *
 * This file contains the code to do various system dependent things.
 */

11
#include <linux/namei.h>
Linus Torvalds's avatar
Linus Torvalds committed
12 13 14 15
#include "hfs_fs.h"

/* dentry case-handling: just lowercase everything */

16
static int hfs_revalidate_dentry(struct dentry *dentry, unsigned int flags)
Linus Torvalds's avatar
Linus Torvalds committed
17
{
18
	struct inode *inode;
Linus Torvalds's avatar
Linus Torvalds committed
19 20
	int diff;

21
	if (flags & LOOKUP_RCU)
22 23
		return -ECHILD;

24
	inode = d_inode(dentry);
Linus Torvalds's avatar
Linus Torvalds committed
25 26 27 28 29 30 31 32 33 34 35 36 37 38
	if(!inode)
		return 1;

	/* fix up inode on a timezone change */
	diff = sys_tz.tz_minuteswest * 60 - HFS_I(inode)->tz_secondswest;
	if (diff) {
		inode->i_ctime.tv_sec += diff;
		inode->i_atime.tv_sec += diff;
		inode->i_mtime.tv_sec += diff;
		HFS_I(inode)->tz_secondswest += diff;
	}
	return 1;
}

39
const struct dentry_operations hfs_dentry_operations =
Linus Torvalds's avatar
Linus Torvalds committed
40 41 42 43 44 45
{
	.d_revalidate	= hfs_revalidate_dentry,
	.d_hash		= hfs_hash_dentry,
	.d_compare	= hfs_compare_dentry,
};