xref: /openbmc/linux/fs/hfs/sysdep.c (revision e16404ed)
11da177e4SLinus Torvalds /*
21da177e4SLinus Torvalds  *  linux/fs/hfs/sysdep.c
31da177e4SLinus Torvalds  *
41da177e4SLinus Torvalds  * Copyright (C) 1996  Paul H. Hargrove
51da177e4SLinus Torvalds  * (C) 2003 Ardis Technologies <roman@ardistech.com>
61da177e4SLinus Torvalds  * This file may be distributed under the terms of the GNU General Public License.
71da177e4SLinus Torvalds  *
81da177e4SLinus Torvalds  * This file contains the code to do various system dependent things.
91da177e4SLinus Torvalds  */
101da177e4SLinus Torvalds 
111da177e4SLinus Torvalds #include "hfs_fs.h"
121da177e4SLinus Torvalds 
131da177e4SLinus Torvalds /* dentry case-handling: just lowercase everything */
141da177e4SLinus Torvalds 
151da177e4SLinus Torvalds static int hfs_revalidate_dentry(struct dentry *dentry, struct nameidata *nd)
161da177e4SLinus Torvalds {
171da177e4SLinus Torvalds 	struct inode *inode = dentry->d_inode;
181da177e4SLinus Torvalds 	int diff;
191da177e4SLinus Torvalds 
201da177e4SLinus Torvalds 	if(!inode)
211da177e4SLinus Torvalds 		return 1;
221da177e4SLinus Torvalds 
231da177e4SLinus Torvalds 	/* fix up inode on a timezone change */
241da177e4SLinus Torvalds 	diff = sys_tz.tz_minuteswest * 60 - HFS_I(inode)->tz_secondswest;
251da177e4SLinus Torvalds 	if (diff) {
261da177e4SLinus Torvalds 		inode->i_ctime.tv_sec += diff;
271da177e4SLinus Torvalds 		inode->i_atime.tv_sec += diff;
281da177e4SLinus Torvalds 		inode->i_mtime.tv_sec += diff;
291da177e4SLinus Torvalds 		HFS_I(inode)->tz_secondswest += diff;
301da177e4SLinus Torvalds 	}
311da177e4SLinus Torvalds 	return 1;
321da177e4SLinus Torvalds }
331da177e4SLinus Torvalds 
34e16404edSAl Viro const struct dentry_operations hfs_dentry_operations =
351da177e4SLinus Torvalds {
361da177e4SLinus Torvalds 	.d_revalidate	= hfs_revalidate_dentry,
371da177e4SLinus Torvalds 	.d_hash		= hfs_hash_dentry,
381da177e4SLinus Torvalds 	.d_compare	= hfs_compare_dentry,
391da177e4SLinus Torvalds };
401da177e4SLinus Torvalds 
41